arkos 1.2.12-beta → 1.2.13-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/modules/auth/auth.router.js +9 -83
- package/dist/cjs/modules/auth/auth.router.js.map +1 -1
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +10 -94
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
- package/dist/cjs/modules/error-handler/error-handler.controller.js +2 -0
- package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
- package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +6 -0
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
- package/dist/cjs/modules/file-upload/file-upload.router.js +9 -21
- package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +7 -0
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
- package/dist/cjs/modules/swagger/swagger.router.js +4 -3
- package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +3 -2
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -1
- package/dist/cjs/server.js +4 -2
- package/dist/cjs/server.js.map +1 -1
- package/dist/cjs/utils/cli/dev.js +18 -16
- package/dist/cjs/utils/cli/dev.js.map +1 -1
- package/dist/cjs/utils/cli/generate.js +1 -1
- package/dist/cjs/utils/cli/generate.js.map +1 -1
- package/dist/cjs/utils/cli/start.js +1 -1
- package/dist/cjs/utils/cli/start.js.map +1 -1
- package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
- package/dist/cjs/utils/features/api.features.js +9 -3
- package/dist/cjs/utils/features/api.features.js.map +1 -1
- package/dist/cjs/utils/helpers/global.helpers.js +4 -22
- package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/models.helpers.js +25 -9
- package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/routers.helpers.js +21 -0
- package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -0
- package/dist/cjs/utils/sheu.js +101 -125
- package/dist/cjs/utils/sheu.js.map +1 -1
- package/dist/esm/modules/auth/auth.router.js +9 -83
- package/dist/esm/modules/auth/auth.router.js.map +1 -1
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +10 -94
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
- package/dist/esm/modules/error-handler/error-handler.controller.js +2 -0
- package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
- package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -1
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +5 -0
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
- package/dist/esm/modules/file-upload/file-upload.router.js +9 -21
- package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
- package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +6 -0
- package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
- package/dist/esm/modules/swagger/swagger.router.js +4 -3
- package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +3 -2
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -1
- package/dist/esm/server.js +4 -2
- package/dist/esm/server.js.map +1 -1
- package/dist/esm/utils/cli/dev.js +18 -16
- package/dist/esm/utils/cli/dev.js.map +1 -1
- package/dist/esm/utils/cli/generate.js +1 -1
- package/dist/esm/utils/cli/generate.js.map +1 -1
- package/dist/esm/utils/cli/start.js +1 -1
- package/dist/esm/utils/cli/start.js.map +1 -1
- package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
- package/dist/esm/utils/features/api.features.js +9 -3
- package/dist/esm/utils/features/api.features.js.map +1 -1
- package/dist/esm/utils/helpers/global.helpers.js +4 -22
- package/dist/esm/utils/helpers/global.helpers.js.map +1 -1
- package/dist/esm/utils/helpers/models.helpers.js +24 -9
- package/dist/esm/utils/helpers/models.helpers.js.map +1 -1
- package/dist/esm/utils/helpers/routers.helpers.js +16 -0
- package/dist/esm/utils/helpers/routers.helpers.js.map +1 -0
- package/dist/esm/utils/sheu.js +101 -125
- package/dist/esm/utils/sheu.js.map +1 -1
- package/dist/types/modules/error-handler/utils/catch-async.d.ts +1 -0
- package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +4 -0
- package/dist/types/modules/file-upload/file-upload.router.d.ts +1 -1
- package/dist/types/modules/file-upload/utils/helpers/file-upload.helpers.d.ts +2 -1
- package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +1 -1
- package/dist/types/server.d.ts +3 -0
- package/dist/types/utils/features/api.features.d.ts +1 -0
- package/dist/types/utils/helpers/models.helpers.d.ts +7 -4
- package/dist/types/utils/helpers/routers.helpers.d.ts +2 -0
- package/dist/types/utils/sheu.d.ts +66 -21
- package/package.json +2 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../../src/utils/cli/dev.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawn, ChildProcess } from \"child_process\";\nimport { watch } from \"chokidar\";\nimport { fullCleanCwd, getUserFileExtension } from \"../helpers/fs.helpers\";\nimport { getVersion } from \"./utils/cli.helpers\";\nimport { loadEnvironmentVariables } from \"../dotenv.helpers\";\nimport { importModule } from \"../helpers/global.helpers\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport sheu from \"../sheu\";\n\ninterface DevOptions {\n port?: string;\n host?: string;\n}\n\nlet child: ChildProcess | null = null;\nlet envFiles: string[] | undefined;\n\n/**\n * Dev server command for the arkos CLI\n */\nexport async function devCommand(options: DevOptions = {}) {\n process.env.NODE_ENV = \"development\";\n envFiles = loadEnvironmentVariables();\n child = null;\n let restartTimeout: NodeJS.Timeout | null = null;\n\n try {\n const { port, host } = options;\n let isRestarting = false;\n // Detect if project uses TypeScript or JavaScript\n const fileExt = getUserFileExtension();\n\n // Find the application entry point\n const entryPoint = path.resolve(process.cwd(), `src/app.${fileExt}`);\n\n if (!fs.existsSync(entryPoint)) {\n console.error(\"Could not find application entry point.\");\n process.exit(1);\n }\n\n // Set environment variables\n const getEnv = () =>\n ({\n NODE_ENV: \"development\",\n ...process.env,\n ...(port && { CLI_PORT: port }),\n ...(host && { CLI_HOST: host }),\n }) as { [x: string]: string };\n\n // Function to start the child process\n const startServer = () => {\n if (child) {\n child.kill();\n child = null;\n }\n\n const env = getEnv();\n\n if (fileExt === \"ts\") {\n // Enhanced ts-node-dev configuration\n child = spawn(\n \"npx\",\n [\n \"ts-node-dev\",\n \"--respawn\",\n \"--notify=false\", // Disable desktop notifications\n \"--ignore-watch\",\n \"node_modules\",\n \"--ignore-watch\",\n \"dist\",\n \"--ignore-watch\",\n \"build\",\n \"--ignore-watch\",\n \".dist\",\n \"--ignore-watch\",\n \".build\",\n \"--watch\",\n \"src\", // Explicitly watch src directory\n entryPoint,\n ],\n {\n stdio: \"inherit\",\n env,\n shell: true,\n }\n );\n } else {\n // Enhanced nodemon configuration\n child = spawn(\n \"npx\",\n [\n \"nodemon\",\n \"--watch\",\n \"src\",\n \"--ext\",\n \"js,json\",\n \"--ignore\",\n \"node_modules/\",\n \"--ignore\",\n \"dist/\",\n \"--ignore\",\n \"build/\",\n \"--ignore\",\n \".dist/\",\n \"--ignore\",\n \".build/\",\n \"--delay\",\n \"1000ms\",\n entryPoint,\n ],\n {\n stdio: \"inherit\",\n env,\n shell: true,\n }\n );\n }\n\n if (child) {\n child.on(\"error\", (error) => {\n console.error(\"Failed to start server:\", error);\n });\n\n child.on(\"exit\", (code, signal) => {\n if (!isRestarting && signal !== \"SIGTERM\" && signal !== \"SIGINT\") {\n console.info(`Server exited with code ${code}, restarting...`);\n startServer();\n }\n });\n }\n };\n\n // Function to handle server restart with debouncing\n const scheduleRestart = (reason: string) => {\n if (restartTimeout) clearTimeout(restartTimeout);\n const now = new Date();\n const time = now.toTimeString().split(\" \")[0];\n\n sheu.info(`\\x1b[90m${time}\\x1b[0m Restarting: ${reason.toLowerCase()}`);\n\n isRestarting = true;\n if (child) {\n child.kill();\n child = null;\n }\n restartTimeout = setTimeout(() => {\n startServer();\n restartTimeout = null;\n }, 1000);\n };\n\n // Setup environment file watching\n const setupEnvWatcher = () => {\n const envWatcher = watch(\n fullCleanCwd(envFiles?.join(\",\") || \"\")\n .replaceAll(\"/\", \"\")\n .split(\",\") || [],\n {\n ignoreInitial: true,\n persistent: true,\n }\n );\n\n envWatcher.on(\"all\", (event, filePath) => {\n try {\n envFiles = loadEnvironmentVariables();\n\n // Restart server to pick up new env vars\n scheduleRestart(\"Environments files changed\");\n } catch (error) {\n console.error(`Error reloading ${filePath}:`, error);\n }\n });\n\n return envWatcher;\n };\n\n // Setup additional file watching for better new file detection\n const setupAdditionalWatcher = () => {\n const additionalWatcher = watch(\n [\n \"src\",\n \"package.json\",\n \"tsconfig.json\",\n \"arkos.config.ts\",\n \"arkos.config.js\",\n ],\n {\n ignoreInitial: true,\n ignored: [\n /node_modules/,\n /\\.git/,\n /\\.dist/,\n /\\.build/,\n /dist/,\n /build/,\n /\\.env.*/,\n ],\n awaitWriteFinish: {\n stabilityThreshold: 1000,\n },\n }\n );\n\n additionalWatcher.on(\"add\", (filePath) => {\n scheduleRestart(`${fullCleanCwd(filePath)} has been created`);\n });\n\n additionalWatcher.on(\"unlink\", (filePath) => {\n scheduleRestart(`${fullCleanCwd(filePath)} has been deleted`);\n });\n\n return additionalWatcher;\n };\n\n // Start the server\n startServer();\n\n // Setup watchers if enabled\n const envWatcher = setupEnvWatcher();\n const additionalWatcher = setupAdditionalWatcher();\n\n const checkConfig = async () => {\n try {\n // Import the config getter\n const { getArkosConfig } = await importModule(\"../../server\");\n const config = getArkosConfig();\n if (config && config.available) {\n // Config is ready, display the info with actual values\n const env = getEnv();\n console.info(\"\\n\");\n console.info(` \\x1b[1m\\x1b[36m Arkos.js ${getVersion()}\\x1b[0m`);\n console.info(\n ` - Local: http://${\n env.CLI_HOST || config.host || env.HOST || \"localhost\"\n }:${env.CLI_PORT || config.port || env.PORT || \"8000\"}`\n );\n console.info(\n ` - Environments: ${fullCleanCwd(envFiles?.join(\", \") || \"\")\n .replaceAll(`${process.cwd()}/`, \"\")\n .replaceAll(\"/\", \"\")}`\n );\n console.info(\"\\n\");\n return true;\n }\n return false;\n } catch (error) {\n return false;\n }\n };\n\n // Try to get config periodically\n const waitForConfig = async () => {\n let attempts = 0;\n const maxAttempts = 15;\n while (attempts < maxAttempts) {\n const ready = await checkConfig();\n if (ready) break;\n await new Promise((resolve) => setTimeout(resolve, 50));\n attempts++;\n }\n\n // Fall back to defaults if config never became available\n if (attempts >= maxAttempts) {\n const env = getEnv();\n console.info(\"\\n\");\n console.info(` \\x1b[1m\\x1b[36m Arkos.js ${getVersion()}\\x1b[0m`);\n console.info(\n ` - Local: http://${\n env.CLI_HOST || env.HOST || \"localhost\"\n }:${env.CLI_PORT || env.PORT || \"8000\"}`\n );\n console.info(\n ` - Environments: ${fullCleanCwd(envFiles?.join(\", \") || \"\")\n .replaceAll(`${process.cwd()}/`, \"\")\n .replaceAll(\"/\", \"\")}`\n );\n console.info(\"\\n\");\n }\n };\n\n waitForConfig();\n\n // Enhanced cleanup function\n const cleanup = () => {\n // console.info(\"\\nShutting down development server...\");\n\n if (restartTimeout) clearTimeout(restartTimeout);\n\n if (envWatcher) envWatcher.close();\n\n if (additionalWatcher) additionalWatcher.close();\n\n if (child) {\n child.kill(\"SIGTERM\");\n\n // Force kill after 5 seconds if still running\n setTimeout(() => {\n if (child && !child.killed) {\n child.kill(\"SIGKILL\");\n }\n }, 5000);\n }\n\n process.exit(0);\n };\n\n // Handle process exit\n process.on(\"SIGINT\", cleanup);\n process.on(\"SIGTERM\", cleanup);\n\n // Handle uncaught exceptions\n process.on(\"uncaughtException\", (error) => {\n console.error(\"Uncaught Exception:\", error);\n cleanup();\n });\n } catch (error) {\n console.error(\"Development server failed to start:\", error);\n\n if (child) {\n (child as ChildProcess)?.kill?.();\n child = null;\n }\n\n process.exit(1);\n }\n}\n\n/**\n * Help function to help other processes to terminate the development server child process\n */\nexport function killDevelopmentServerChildProcess() {\n (child as ChildProcess)?.kill?.();\n child = null;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../../src/utils/cli/dev.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawn, ChildProcess } from \"child_process\";\nimport { watch } from \"chokidar\";\nimport { fullCleanCwd, getUserFileExtension } from \"../helpers/fs.helpers\";\nimport { getVersion } from \"./utils/cli.helpers\";\nimport { loadEnvironmentVariables } from \"../dotenv.helpers\";\nimport { importModule } from \"../helpers/global.helpers\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport sheu from \"../sheu\";\n\ninterface DevOptions {\n port?: string;\n host?: string;\n}\n\nlet child: ChildProcess | null = null;\nlet envFiles: string[] | undefined;\n\n/**\n * Dev server command for the arkos CLI\n */\nexport async function devCommand(options: DevOptions = {}) {\n process.env.NODE_ENV = \"development\";\n envFiles = loadEnvironmentVariables();\n child = null;\n let restartTimeout: NodeJS.Timeout | null = null;\n\n try {\n const { port, host } = options;\n let isRestarting = false;\n // Detect if project uses TypeScript or JavaScript\n const fileExt = getUserFileExtension();\n\n // Find the application entry point\n const entryPoint = path.resolve(process.cwd(), `src/app.${fileExt}`);\n\n if (!fs.existsSync(entryPoint)) {\n console.error(`Could not find application entry point at ${entryPoint}`);\n process.exit(1);\n }\n\n // Set environment variables\n const getEnv = () =>\n ({\n NODE_ENV: \"development\",\n ...process.env,\n ...(port && { CLI_PORT: port }),\n ...(host && { CLI_HOST: host }),\n }) as { [x: string]: string };\n\n // Function to start the child process\n const startServer = () => {\n if (child) {\n child.kill();\n child = null;\n }\n\n const env = getEnv();\n\n if (fileExt === \"ts\") {\n // Enhanced ts-node-dev configuration\n child = spawn(\n \"npx\",\n [\n \"ts-node-dev\",\n \"--respawn\",\n \"--notify=false\", // Disable desktop notifications\n \"--ignore-watch\",\n \"node_modules\",\n \"--ignore-watch\",\n \"dist\",\n \"--ignore-watch\",\n \"build\",\n \"--ignore-watch\",\n \".dist\",\n \"--ignore-watch\",\n \".build\",\n \"--watch\",\n \"src\", // Explicitly watch src directory\n entryPoint,\n ],\n {\n stdio: \"inherit\",\n env,\n shell: true,\n }\n );\n } else {\n // Enhanced nodemon configuration\n\n child = spawn(\n \"npx\",\n [\n \"node-dev\",\n \"--respawn\",\n \"--notify=false\",\n \"--ignore\",\n \"node_modules\",\n \"--ignore\",\n \"dist\",\n \"--ignore\",\n \"build\",\n \"--ignore\",\n \".dist\",\n \"--ignore\",\n \".build\",\n \"--watch\",\n \"src\",\n entryPoint,\n ],\n {\n stdio: \"inherit\",\n env,\n shell: true,\n }\n );\n }\n\n if (child) {\n child.on(\"error\", (error) => {\n console.error(\"Failed to start server:\", error);\n });\n\n child.on(\"exit\", (code, signal) => {\n if (!isRestarting && signal !== \"SIGTERM\" && signal !== \"SIGINT\") {\n console.info(`Server exited with code ${code}, restarting...`);\n startServer();\n }\n });\n }\n };\n\n // Function to handle server restart with debouncing\n const scheduleRestart = (reason: string) => {\n if (restartTimeout) clearTimeout(restartTimeout);\n const now = new Date();\n const time = now.toTimeString().split(\" \")[0];\n\n sheu.info(`\\x1b[90m${time}\\x1b[0m Restarting: ${reason.toLowerCase()}`);\n\n isRestarting = true;\n if (child) {\n child.kill();\n child = null;\n }\n restartTimeout = setTimeout(() => {\n startServer();\n restartTimeout = null;\n }, 1000);\n };\n\n // Setup environment file watching\n const setupEnvWatcher = () => {\n const envWatcher = watch(\n fullCleanCwd(envFiles?.join(\",\") || \"\")\n .replaceAll(\"/\", \"\")\n .split(\",\") || [],\n {\n ignoreInitial: true,\n persistent: true,\n }\n );\n\n envWatcher.on(\"all\", (event, filePath) => {\n try {\n envFiles = loadEnvironmentVariables();\n\n // Restart server to pick up new env vars\n scheduleRestart(\"Environments files changed\");\n } catch (error) {\n console.error(`Error reloading ${filePath}:`, error);\n }\n });\n\n return envWatcher;\n };\n\n // Setup additional file watching for better new file detection\n const setupAdditionalWatcher = () => {\n const additionalWatcher = watch(\n [\n \"src\",\n \"package.json\",\n \"tsconfig.json\",\n \"jsconfig.json\",\n \"arkos.config.ts\",\n \"arkos.config.js\",\n ],\n {\n ignoreInitial: true,\n ignored: [\n /node_modules/,\n /\\.git/,\n /\\.dist/,\n /\\.build/,\n /dist/,\n /build/,\n /\\.env.*/,\n ],\n awaitWriteFinish: {\n stabilityThreshold: 3000,\n },\n }\n );\n\n additionalWatcher.on(\"add\", (filePath) => {\n scheduleRestart(`${fullCleanCwd(filePath)} has been created`);\n });\n\n additionalWatcher.on(\"unlink\", (filePath) => {\n scheduleRestart(`${fullCleanCwd(filePath)} has been deleted`);\n });\n\n additionalWatcher.on(\"change\", (filePath) => {\n console.log(`file changed`, filePath);\n });\n\n return additionalWatcher;\n };\n\n // Start the server\n startServer();\n\n // Setup watchers if enabled\n const envWatcher = setupEnvWatcher();\n const additionalWatcher = setupAdditionalWatcher();\n\n const checkConfig = async () => {\n try {\n // Import the config getter\n const { getArkosConfig } = await importModule(\"../../server\");\n const config = getArkosConfig();\n if (config && config.available) {\n // Config is ready, display the info with actual values\n const env = getEnv();\n console.info(\"\\n\");\n console.info(` \\x1b[1m\\x1b[36m Arkos.js ${getVersion()}\\x1b[0m`);\n console.info(\n ` - Local: http://${\n env.CLI_HOST || config.host || env.HOST || \"localhost\"\n }:${env.CLI_PORT || config.port || env.PORT || \"8000\"}`\n );\n console.info(\n ` - Environments: ${fullCleanCwd(envFiles?.join(\", \") || \"\")\n .replaceAll(`${process.cwd()}/`, \"\")\n .replaceAll(\"/\", \"\")}`\n );\n console.info(\"\\n\");\n return true;\n }\n return false;\n } catch (error) {\n console.info(error);\n return false;\n }\n };\n\n // Try to get config periodically\n const waitForConfig = async () => {\n let attempts = 0;\n const maxAttempts = 15;\n while (attempts < maxAttempts) {\n const ready = await checkConfig();\n if (ready) break;\n await new Promise((resolve) => setTimeout(resolve, 50));\n attempts++;\n }\n\n // Fall back to defaults if config never became available\n if (attempts >= maxAttempts) {\n const env = getEnv();\n console.info(\"\\n\");\n console.info(` \\x1b[1m\\x1b[36m Arkos.js ${getVersion()}\\x1b[0m`);\n console.info(\n ` - Local: http://${\n env.CLI_HOST || env.HOST || \"localhost\"\n }:${env.CLI_PORT || env.PORT || \"8000\"}`\n );\n console.info(\n ` - Environments: ${fullCleanCwd(envFiles?.join(\", \") || \"\")\n .replaceAll(`${process.cwd()}/`, \"\")\n .replaceAll(\"/\", \"\")}`\n );\n console.info(\"\\n\");\n }\n };\n\n waitForConfig();\n\n // Enhanced cleanup function\n const cleanup = () => {\n // console.info(\"\\nShutting down development server...\");\n\n if (restartTimeout) clearTimeout(restartTimeout);\n\n if (envWatcher) envWatcher.close();\n\n if (additionalWatcher) additionalWatcher.close();\n\n if (child) {\n child.kill(\"SIGTERM\");\n\n // Force kill after 5 seconds if still running\n setTimeout(() => {\n if (child && !child.killed) child.kill(\"SIGKILL\");\n }, 5000);\n }\n\n process.exit(0);\n };\n\n // Handle process exit\n process.on(\"SIGINT\", cleanup);\n process.on(\"SIGTERM\", cleanup);\n\n // Handle uncaught exceptions\n process.on(\"uncaughtException\", (error) => {\n console.error(\"Uncaught Exception:\", error);\n cleanup();\n });\n } catch (error) {\n console.error(\"Development server failed to start:\", error);\n\n if (child) {\n (child as ChildProcess)?.kill?.();\n child = null;\n }\n\n process.exit(1);\n }\n}\n\n/**\n * Help function to help other processes to terminate the development server child process\n */\nexport function killDevelopmentServerChildProcess() {\n (child as ChildProcess)?.kill?.();\n child = null;\n}\n"]}
|
|
@@ -35,7 +35,7 @@ exports.generateCommand = {
|
|
|
35
35
|
},
|
|
36
36
|
});
|
|
37
37
|
fs_1.default.writeFileSync(filePath, content);
|
|
38
|
-
console.info(`\
|
|
38
|
+
console.info(`\nController generated: ${filePath.replace(process.cwd(), "")}`);
|
|
39
39
|
}
|
|
40
40
|
catch (error) {
|
|
41
41
|
console.error(`❌ Failed to generate controller:`, error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/utils/cli/generate.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { generateTemplate } from \"./utils/template-generators\";\nimport { ensureDirectoryExists } from \"./utils/cli.helpers\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../helpers/change-case.helpers\";\nimport { getUserFileExtension } from \"../helpers/fs.helpers\";\n\ninterface GenerateOptions {\n path?: string;\n model: string;\n}\n\nexport const generateCommand = {\n controller: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const modulePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(modulePath, `${names.kebab}.controller.${ext}`);\n\n try {\n ensureDirectoryExists(modulePath);\n\n const content = generateTemplate(\"controller\", {\n modelName: names,\n imports: {\n baseController: \"arkos/controllers\",\n },\n });\n\n fs.writeFileSync(filePath, content);\n console.info(\n `\\nntroller generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate controller:`, error);\n process.exit(1);\n }\n },\n\n service: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const modulePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(modulePath, `${names.kebab}.service.${ext}`);\n\n try {\n ensureDirectoryExists(modulePath);\n\n const content = generateTemplate(\"service\", {\n modelName: names,\n imports: {\n baseService: \"arkos/services\",\n },\n });\n\n fs.writeFileSync(filePath, content);\n console.info(`\\n✅ Service generated: ${filePath}`);\n } catch (error) {\n console.error(`❌ Failed to generate service:`, error);\n process.exit(1);\n }\n },\n\n router: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const modulePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(modulePath, `${names.kebab}.router.${ext}`);\n\n try {\n ensureDirectoryExists(modulePath);\n\n const content = generateTemplate(\"router\", {\n modelName: names,\n imports: {\n baseRouter: \"arkos\",\n controller: `./${names.kebab}.controller`,\n },\n });\n\n fs.writeFileSync(filePath, content);\n console.info(\n `\\nRouter generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate router:`, error);\n process.exit(1);\n }\n },\n\n middlewares: async (options: GenerateOptions) => {\n const modelName = options.model;\n\n if (!modelName) {\n console.error(\"❌ Middleware name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const middlewarePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(\n middlewarePath,\n `${names.kebab}.middlewares.${ext}`\n );\n\n try {\n ensureDirectoryExists(middlewarePath);\n\n const content = generateTemplate(\"middlewares\", {\n modelName: names,\n });\n\n fs.writeFileSync(filePath, content);\n console.info(`\\nMiddlewares generated: ${filePath}`);\n } catch (error) {\n console.error(`❌ Failed to generate middleware:`, error);\n process.exit(1);\n }\n },\n\n authConfigs: async (options: GenerateOptions) => {\n const modelName = options.model;\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const configPath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(configPath, `${names.kebab}.auth.${ext}`);\n\n try {\n ensureDirectoryExists(configPath);\n\n const content = generateTemplate(\"auth-configs\", { modelName: names });\n\n fs.writeFileSync(filePath, content);\n console.info(\n `\\nAuth config generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate auth config:`, error);\n process.exit(1);\n }\n },\n\n queryOptions: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n if (modelName === \"file-upload\") {\n console.error(\n \"\\n❌ Prisma query options are not available to file-upload resource\"\n );\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const configPath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(configPath, `${names.kebab}.query.${ext}`);\n\n try {\n ensureDirectoryExists(configPath);\n\n const content = generateTemplate(\"query-options\", { modelName: names });\n\n fs.writeFileSync(filePath, content);\n console.info(\n `\\nQuery config generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate query config:`, error);\n process.exit(1);\n }\n },\n};\n"]}
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/utils/cli/generate.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { generateTemplate } from \"./utils/template-generators\";\nimport { ensureDirectoryExists } from \"./utils/cli.helpers\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../helpers/change-case.helpers\";\nimport { getUserFileExtension } from \"../helpers/fs.helpers\";\n\ninterface GenerateOptions {\n path?: string;\n model: string;\n}\n\nexport const generateCommand = {\n controller: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const modulePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(modulePath, `${names.kebab}.controller.${ext}`);\n\n try {\n ensureDirectoryExists(modulePath);\n\n const content = generateTemplate(\"controller\", {\n modelName: names,\n imports: {\n baseController: \"arkos/controllers\",\n },\n });\n\n fs.writeFileSync(filePath, content);\n console.info(\n `\\nController generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate controller:`, error);\n process.exit(1);\n }\n },\n\n service: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const modulePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(modulePath, `${names.kebab}.service.${ext}`);\n\n try {\n ensureDirectoryExists(modulePath);\n\n const content = generateTemplate(\"service\", {\n modelName: names,\n imports: {\n baseService: \"arkos/services\",\n },\n });\n\n fs.writeFileSync(filePath, content);\n console.info(`\\n✅ Service generated: ${filePath}`);\n } catch (error) {\n console.error(`❌ Failed to generate service:`, error);\n process.exit(1);\n }\n },\n\n router: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const modulePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(modulePath, `${names.kebab}.router.${ext}`);\n\n try {\n ensureDirectoryExists(modulePath);\n\n const content = generateTemplate(\"router\", {\n modelName: names,\n imports: {\n baseRouter: \"arkos\",\n controller: `./${names.kebab}.controller`,\n },\n });\n\n fs.writeFileSync(filePath, content);\n console.info(\n `\\nRouter generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate router:`, error);\n process.exit(1);\n }\n },\n\n middlewares: async (options: GenerateOptions) => {\n const modelName = options.model;\n\n if (!modelName) {\n console.error(\"❌ Middleware name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const middlewarePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(\n middlewarePath,\n `${names.kebab}.middlewares.${ext}`\n );\n\n try {\n ensureDirectoryExists(middlewarePath);\n\n const content = generateTemplate(\"middlewares\", {\n modelName: names,\n });\n\n fs.writeFileSync(filePath, content);\n console.info(`\\nMiddlewares generated: ${filePath}`);\n } catch (error) {\n console.error(`❌ Failed to generate middleware:`, error);\n process.exit(1);\n }\n },\n\n authConfigs: async (options: GenerateOptions) => {\n const modelName = options.model;\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const configPath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(configPath, `${names.kebab}.auth.${ext}`);\n\n try {\n ensureDirectoryExists(configPath);\n\n const content = generateTemplate(\"auth-configs\", { modelName: names });\n\n fs.writeFileSync(filePath, content);\n console.info(\n `\\nAuth config generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate auth config:`, error);\n process.exit(1);\n }\n },\n\n queryOptions: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n if (modelName === \"file-upload\") {\n console.error(\n \"\\n❌ Prisma query options are not available to file-upload resource\"\n );\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const configPath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(configPath, `${names.kebab}.query.${ext}`);\n\n try {\n ensureDirectoryExists(configPath);\n\n const content = generateTemplate(\"query-options\", { modelName: names });\n\n fs.writeFileSync(filePath, content);\n console.info(\n `\\nQuery config generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate query config:`, error);\n process.exit(1);\n }\n },\n};\n"]}
|
|
@@ -67,7 +67,7 @@ async function startCommand(options = {}) {
|
|
|
67
67
|
const ready = await checkConfig();
|
|
68
68
|
if (ready)
|
|
69
69
|
break;
|
|
70
|
-
await new Promise((resolve) => setTimeout(resolve,
|
|
70
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
71
71
|
attempts++;
|
|
72
72
|
}
|
|
73
73
|
if (attempts >= maxAttempts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../src/utils/cli/start.ts"],"names":[],"mappings":";;;;;AAoBA,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../src/utils/cli/start.ts"],"names":[],"mappings":"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","sourcesContent":["// src/utils/cli/start.ts\nimport path from \"path\";\nimport fs from \"fs\";\nimport { ChildProcess, spawn } from \"child_process\";\nimport { getVersion } from \"./utils/cli.helpers\";\nimport { loadEnvironmentVariables } from \"../dotenv.helpers\";\nimport { importModule } from \"../helpers/global.helpers\";\nimport { fullCleanCwd } from \"../helpers/fs.helpers\";\n\ninterface StartOptions {\n port?: string;\n host?: string;\n}\n\nlet child: ChildProcess | null = null;\nlet envFiles: string[] | undefined;\n\n/**\n * Production start command for the arkos CLI\n */\nexport async function startCommand(options: StartOptions = {}) {\n process.env.NODE_ENV = \"production\";\n envFiles = loadEnvironmentVariables();\n\n try {\n const { port, host } = options;\n\n // Check for built app file\n const entryPoint = path.join(process.cwd(), \".build\", \"src\", \"app.js\");\n\n if (!fs.existsSync(path.join(entryPoint))) {\n console.error(\n `❌ Could not find built application entry point at ${fullCleanCwd(entryPoint)}`\n );\n process.exit(1);\n }\n\n // Set environment variables\n const env: { [x: string]: string } = {\n ...process.env,\n NODE_ENV: \"production\",\n ...(port && { CLI_PORT: port }),\n ...(host && { CLI_HOST: host }),\n ARKOS_BUILD: \"true\",\n };\n\n // Start the application\n child = spawn(\"node\", [entryPoint], {\n stdio: \"inherit\",\n env,\n shell: true,\n });\n\n // Handle process exit\n process.on(\"SIGINT\", () => {\n if (child) {\n child.kill();\n }\n process.exit(0);\n });\n\n const checkConfig = async () => {\n try {\n const { getArkosConfig } = await importModule(\"../../server\");\n\n const config = getArkosConfig();\n\n if (config && config.available) {\n // Config is ready, display the info with actual values\n console.info(\"\\n\");\n console.info(` \\x1b[1m\\x1b[36m Arkos.js ${getVersion()}\\x1b[0m`);\n console.info(\n ` - Local: http://${\n env.CLI_HOST || config.host || env.HOST || \"localhost\"\n }:${env.CLI_PORT || config.port || env.PORT || \"8000\"}`\n );\n console.info(\n ` - Environments: ${fullCleanCwd(envFiles?.join(\", \") || \"\").replaceAll(\"/\", \"\")}\\n`\n );\n return true;\n }\n return false;\n } catch (error) {\n console.info(error);\n return false;\n }\n };\n\n // Try to get config periodically\n const waitForConfig = async () => {\n let attempts = 0;\n const maxAttempts = 15;\n\n while (attempts < maxAttempts) {\n const ready = await checkConfig();\n if (ready) break;\n await new Promise((resolve) => setTimeout(resolve, 50));\n attempts++;\n }\n\n // Fall back to defaults if config never became available\n if (attempts >= maxAttempts) {\n console.info(\"\\n\");\n console.info(` \\x1b[1m\\x1b[36m Arkos.js ${getVersion()}\\x1b[0m`);\n console.info(\n ` - Local: http://${\n env.CLI_HOST || env.HOST || \"localhost\"\n }:${env.CLI_PORT || env.PORT || \"8000\"}`\n );\n console.info(\n ` - Environments: ${envFiles\n ?.join(\", \")\n .replaceAll(`${process.cwd()}/`, \"\")}\\n`\n );\n }\n };\n\n waitForConfig();\n } catch (error) {\n console.error(\"❌ Production server failed to start:\", error);\n process.exit(1);\n }\n}\n\n/**\n * Help function to help other processes to terminate the production server child process\n */\nexport function killProductionServerChildProcess() {\n (child as ChildProcess)?.kill?.();\n child = null;\n}\n"]}
|
|
@@ -9,7 +9,7 @@ function generateServiceTemplate(options) {
|
|
|
9
9
|
if (!modelName)
|
|
10
10
|
throw new Error("Model name is required for service template");
|
|
11
11
|
const prismaImport = isTypeScript
|
|
12
|
-
? `import
|
|
12
|
+
? `import prisma from "../../utils/prisma";\n`
|
|
13
13
|
: "";
|
|
14
14
|
const baseServiceImport = isTypeScript
|
|
15
15
|
? `import { BaseService } from "${imports?.baseService || "arkos/services"}";`
|
package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-service-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-service-template.ts"],"names":[],"mappings":";;AAGA,0DAwCC;AA3CD,+DAAsE;AAGtE,SAAgB,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAGjE,MAAM,YAAY,GAAG,YAAY;QAC/B,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"generate-service-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-service-template.ts"],"names":[],"mappings":";;AAGA,0DAwCC;AA3CD,+DAAsE;AAGtE,SAAgB,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAGjE,MAAM,YAAY,GAAG,YAAY;QAC/B,CAAC,CAAC,4CAA4C;QAC9C,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,iBAAiB,GAAG,YAAY;QACpC,CAAC,CAAC,gCACE,OAAO,EAAE,WAAW,IAAI,gBAC1B,IAAI;QACN,CAAC,CAAC,gCACE,OAAO,EAAE,WAAW,IAAI,gBAC1B,IAAI,CAAC;IAGT,MAAM,aAAa,GAAG,YAAY;QAChC,CAAC,CAAC,kBAAkB,SAAS,CAAC,KAAK,GAAG;QACtC,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,GAAG,YAAY,GAAG,iBAAiB;;QAEpC,SAAS,CAAC,MAAM,8BAA8B,aAAa;;aAEtD,SAAS,CAAC,KAAK;;;;;;QAMpB,SAAS,CAAC,KAAK,iBAAiB,SAAS,CAAC,MAAM;;iBAEvC,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateServiceTemplate(options: TemplateOptions): string {\n const { modelName, imports } = options;\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for service template\");\n\n // Generate imports\n const prismaImport = isTypeScript\n ? `import prisma from \"../../utils/prisma\";\\n`\n : \"\";\n\n const baseServiceImport = isTypeScript\n ? `import { BaseService } from \"${\n imports?.baseService || \"arkos/services\"\n }\";`\n : `import { BaseService } from \"${\n imports?.baseService || \"arkos/services\"\n }\";`;\n\n // Generate type parameter for TypeScript\n const typeParameter = isTypeScript\n ? `<typeof prisma.${modelName.camel}>`\n : \"\";\n\n return `${prismaImport}${baseServiceImport}\n \nclass ${modelName.pascal}Service extends BaseService${typeParameter} {\n constructor() {\n super(\"${modelName.kebab}\");\n }\n\n // Add your custom service methods here\n}\n\nconst ${modelName.camel}Service = new ${modelName.pascal}Service();\n\nexport default ${modelName.camel}Service;\n`;\n}\n"]}
|
|
@@ -11,8 +11,10 @@ const prisma_helpers_1 = require("../helpers/prisma.helpers");
|
|
|
11
11
|
class APIFeatures {
|
|
12
12
|
constructor(req, modelName) {
|
|
13
13
|
this.filters = {};
|
|
14
|
+
this.reqFiltersSearchParam = {};
|
|
14
15
|
this.excludedFields = [
|
|
15
16
|
"page",
|
|
17
|
+
"filters",
|
|
16
18
|
"sort",
|
|
17
19
|
"limit",
|
|
18
20
|
"fields",
|
|
@@ -26,16 +28,20 @@ class APIFeatures {
|
|
|
26
28
|
"ignoredFields",
|
|
27
29
|
];
|
|
28
30
|
if (req) {
|
|
31
|
+
const { filters = "{}", ...restOfQuery } = req.query;
|
|
29
32
|
this.req = req;
|
|
30
|
-
this.searchParams = (0, api_features_helpers_1.parseQueryParamsWithModifiers)(
|
|
33
|
+
this.searchParams = (0, deepmerge_helper_1.default)((0, api_features_helpers_1.parseQueryParamsWithModifiers)(restOfQuery), JSON.parse(filters));
|
|
31
34
|
}
|
|
32
35
|
if (modelName)
|
|
33
36
|
this.modelName = modelName;
|
|
34
37
|
this.filters = { ...this.filters };
|
|
35
38
|
}
|
|
36
39
|
setup(req, modelName) {
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
if (req) {
|
|
41
|
+
const { filters = "{}", ...restOfQuery } = req.query;
|
|
42
|
+
this.req = req;
|
|
43
|
+
this.searchParams = (0, deepmerge_helper_1.default)((0, api_features_helpers_1.parseQueryParamsWithModifiers)(restOfQuery), JSON.parse(filters));
|
|
44
|
+
}
|
|
39
45
|
if (modelName)
|
|
40
46
|
this.modelName = modelName;
|
|
41
47
|
this.filters = { ...this.filters };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.features.js","sourceRoot":"","sources":["../../../../src/utils/features/api.features.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request } from \"express\";\nimport deepmerge from \"../helpers/deepmerge.helper\";\nimport { parseQueryParamsWithModifiers } from \"../helpers/api.features.helpers\";\nimport AppError from \"../../modules/error-handler/utils/app-error\";\nimport { getPrismaInstance } from \"../helpers/prisma.helpers\";\nimport { ArkosRequest } from \"../../types\";\n\ntype ModelName = string;\n\nexport default class APIFeatures {\n req?: ArkosRequest;\n searchParams: any; // The query string parameters from the request\n searchParamsWithModifiers: any; // The query string parameters from the request\n filters: any = {};\n modelName?: ModelName;\n excludedFields = [\n \"page\",\n \"sort\",\n \"limit\",\n \"fields\",\n \"addFields\",\n \"removeFields\",\n \"search\",\n \"include\",\n \"filterMode\",\n \"where\",\n \"prismaQueryOptions\",\n \"ignoredFields\",\n ];\n\n constructor(req?: Request, modelName?: ModelName) {\n if (req) {\n this.req = req;\n this.searchParams = parseQueryParamsWithModifiers(req.query);\n }\n if (modelName) this.modelName = modelName;\n this.filters = { ...this.filters };\n }\n\n setup(req: Request, modelName?: ModelName) {\n this.req = req;\n this.searchParams = parseQueryParamsWithModifiers(req.query);\n if (modelName) this.modelName = modelName;\n this.filters = { ...this.filters };\n\n return this;\n }\n\n filter() {\n if (!this.req)\n throw new Error(\n \"Trying to use APIFeatures.filter() without passing request on class constructor or APIFeatures.setup() method. read more about at www.arkosjs.com/docs/advanced-guide/api-features-class\"\n );\n const searchableFields: Record<string, any>[] = [];\n\n const queryObj = { ...this.searchParams };\n\n this.excludedFields.forEach((el) => delete queryObj[el]);\n\n const whereObj = { ...this.req.params, ...queryObj };\n const whereLogicalOperatorFilters = Object.keys(whereObj).map((key) => ({\n [key]: whereObj[key],\n }));\n\n let whereOptions =\n whereLogicalOperatorFilters.length > 0\n ? {\n [(this.req.query?.filterMode as string) ?? \"OR\"]:\n whereLogicalOperatorFilters,\n }\n : {};\n\n if (!!this.searchParams.search) {\n const prisma = getPrismaInstance();\n\n if (this.modelName)\n Object.keys((prisma as any)[this.modelName].fields).forEach((key) => {\n const field = ((prisma as any)[this.modelName!].fields as any)[key];\n if (\n field.typeName === \"String\" &&\n key !== \"id\" &&\n key !== \"password\" &&\n !field.isList &&\n !key?.includes?.(\"Id\") &&\n !key?.includes?.(\"ID\")\n ) {\n searchableFields.push({\n [`${key}`]: {\n contains: this.searchParams.search,\n mode: \"insensitive\",\n },\n });\n }\n });\n\n whereOptions = deepmerge(\n {\n OR: searchableFields,\n },\n whereOptions\n );\n }\n\n const firstMerge = deepmerge(\n {\n where: whereOptions,\n },\n this.req.prismaQueryOptions || {}\n );\n\n this.filters = deepmerge(firstMerge, this.filters);\n return this;\n }\n\n search() {\n if (this.searchParams?.search) {\n this.filters = deepmerge(this.filters, {\n where: {\n OR: [],\n },\n });\n }\n }\n\n sort() {\n if (this.searchParams.sort) {\n const sortBy = this.searchParams?.sort\n ?.split(\",\")\n ?.map((field: string) => ({\n [field.startsWith(\"-\") ? field.substring(1) : field]:\n field.startsWith(\"-\") ? \"desc\" : \"asc\",\n }));\n this.filters = deepmerge(this.filters, { orderBy: sortBy });\n }\n\n return this;\n }\n\n limitFields() {\n if (this.searchParams?.fields) {\n const fields = this.searchParams.fields.split(\",\");\n\n // Separate fields into includes, excludes, and regular fields\n const regularFields = fields.filter(\n (field: string) => !field.startsWith(\"+\") && !field.startsWith(\"-\")\n );\n const includeFields = fields\n .filter((field: string) => field.startsWith(\"+\"))\n .map((field: string) => field.substring(1));\n const excludeFields = fields\n .filter((field: string) => field.startsWith(\"-\"))\n .map((field: string) => field.substring(1));\n\n // Create selection object based on field type\n let selection: Record<string, any> = {};\n\n // If regular fields exist, use them as the base selection\n if (regularFields.length > 0) {\n selection = regularFields.reduce(\n (acc: Record<string, any>, field: string) => {\n acc[field] = true;\n return acc;\n },\n {} as Record<string, any>\n );\n }\n // Otherwise, use include fields as additions to any existing included fields\n else {\n // Start with current include fields if they exist\n selection = this.filters.include || {};\n\n // Add any explicitly included fields\n includeFields.forEach((field: string) => {\n selection[field] = true;\n });\n\n // Add any explicitly excluded fields\n excludeFields.forEach((field: string) => {\n selection[field] = false;\n });\n }\n\n // Apply the selection to filters\n this.filters = {\n ...this.filters,\n select: selection,\n };\n\n // Remove the include filter as it's now part of select\n if (this.filters.include) {\n delete this.filters.include;\n }\n }\n\n // Remove any references to the now-unused parameters\n if (this.searchParams?.addFields || this.searchParams?.removeFields) {\n throw new AppError(\n \"The addFields and removeFields parameters are deprecated. Please use fields with + and - prefixes instead.\",\n 400\n );\n }\n\n return this;\n }\n\n paginate() {\n const page = parseInt(this.searchParams.page, 10) || 1;\n const limit = parseInt(this.searchParams.limit, 10) || 30;\n const skip = (page - 1) * limit;\n\n this.filters = {\n ...this.filters,\n skip,\n take: limit,\n };\n return this;\n }\n}\n\nexport const apiFeatures = new APIFeatures();\n"]}
|
|
1
|
+
{"version":3,"file":"api.features.js","sourceRoot":"","sources":["../../../../src/utils/features/api.features.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request } from \"express\";\nimport deepmerge from \"../helpers/deepmerge.helper\";\nimport { parseQueryParamsWithModifiers } from \"../helpers/api.features.helpers\";\nimport AppError from \"../../modules/error-handler/utils/app-error\";\nimport { getPrismaInstance } from \"../helpers/prisma.helpers\";\nimport { ArkosRequest } from \"../../types\";\n\ntype ModelName = string;\n\nexport default class APIFeatures {\n req?: ArkosRequest;\n searchParams: any; // The query string parameters from the request\n searchParamsWithModifiers: any; // The query string parameters from the request\n filters: any = {};\n reqFiltersSearchParam: any = {};\n modelName?: ModelName;\n excludedFields = [\n \"page\",\n \"filters\",\n \"sort\",\n \"limit\",\n \"fields\",\n \"addFields\",\n \"removeFields\",\n \"search\",\n \"include\",\n \"filterMode\",\n \"where\",\n \"prismaQueryOptions\",\n \"ignoredFields\",\n ];\n\n constructor(req?: Request, modelName?: ModelName) {\n if (req) {\n const { filters = \"{}\", ...restOfQuery } = req.query;\n this.req = req;\n this.searchParams = deepmerge(\n parseQueryParamsWithModifiers(restOfQuery),\n JSON.parse(filters as string)\n );\n }\n if (modelName) this.modelName = modelName;\n this.filters = { ...this.filters };\n }\n\n setup(req: Request, modelName?: ModelName) {\n if (req) {\n const { filters = \"{}\", ...restOfQuery } = req.query;\n this.req = req;\n this.searchParams = deepmerge(\n parseQueryParamsWithModifiers(restOfQuery),\n JSON.parse(filters as string)\n );\n }\n if (modelName) this.modelName = modelName;\n this.filters = { ...this.filters };\n\n return this;\n }\n\n filter() {\n if (!this.req)\n throw new Error(\n \"Trying to use APIFeatures.filter() without passing request on class constructor or APIFeatures.setup() method. read more about at www.arkosjs.com/docs/advanced-guide/api-features-class\"\n );\n const searchableFields: Record<string, any>[] = [];\n\n const queryObj = { ...this.searchParams };\n\n this.excludedFields.forEach((el) => delete queryObj[el]);\n\n const whereObj = { ...this.req.params, ...queryObj };\n const whereLogicalOperatorFilters = Object.keys(whereObj).map((key) => ({\n [key]: whereObj[key],\n }));\n\n let whereOptions =\n whereLogicalOperatorFilters.length > 0\n ? {\n [(this.req.query?.filterMode as string) ?? \"OR\"]:\n whereLogicalOperatorFilters,\n }\n : {};\n\n if (!!this.searchParams.search) {\n const prisma = getPrismaInstance();\n\n if (this.modelName)\n Object.keys((prisma as any)[this.modelName].fields).forEach((key) => {\n const field = ((prisma as any)[this.modelName!].fields as any)[key];\n if (\n field.typeName === \"String\" &&\n key !== \"id\" &&\n key !== \"password\" &&\n !field.isList &&\n !key?.includes?.(\"Id\") &&\n !key?.includes?.(\"ID\")\n ) {\n searchableFields.push({\n [`${key}`]: {\n contains: this.searchParams.search,\n mode: \"insensitive\",\n },\n });\n }\n });\n\n whereOptions = deepmerge(\n {\n OR: searchableFields,\n },\n whereOptions\n );\n }\n\n const firstMerge = deepmerge(\n {\n where: whereOptions,\n },\n this.req.prismaQueryOptions || {}\n );\n\n this.filters = deepmerge(firstMerge, this.filters);\n return this;\n }\n\n search() {\n if (this.searchParams?.search) {\n this.filters = deepmerge(this.filters, {\n where: {\n OR: [],\n },\n });\n }\n }\n\n sort() {\n if (this.searchParams.sort) {\n const sortBy = this.searchParams?.sort\n ?.split(\",\")\n ?.map((field: string) => ({\n [field.startsWith(\"-\") ? field.substring(1) : field]:\n field.startsWith(\"-\") ? \"desc\" : \"asc\",\n }));\n this.filters = deepmerge(this.filters, { orderBy: sortBy });\n }\n\n return this;\n }\n\n limitFields() {\n if (this.searchParams?.fields) {\n const fields = this.searchParams.fields.split(\",\");\n\n // Separate fields into includes, excludes, and regular fields\n const regularFields = fields.filter(\n (field: string) => !field.startsWith(\"+\") && !field.startsWith(\"-\")\n );\n const includeFields = fields\n .filter((field: string) => field.startsWith(\"+\"))\n .map((field: string) => field.substring(1));\n const excludeFields = fields\n .filter((field: string) => field.startsWith(\"-\"))\n .map((field: string) => field.substring(1));\n\n // Create selection object based on field type\n let selection: Record<string, any> = {};\n\n // If regular fields exist, use them as the base selection\n if (regularFields.length > 0) {\n selection = regularFields.reduce(\n (acc: Record<string, any>, field: string) => {\n acc[field] = true;\n return acc;\n },\n {} as Record<string, any>\n );\n }\n // Otherwise, use include fields as additions to any existing included fields\n else {\n // Start with current include fields if they exist\n selection = this.filters.include || {};\n\n // Add any explicitly included fields\n includeFields.forEach((field: string) => {\n selection[field] = true;\n });\n\n // Add any explicitly excluded fields\n excludeFields.forEach((field: string) => {\n selection[field] = false;\n });\n }\n\n // Apply the selection to filters\n this.filters = {\n ...this.filters,\n select: selection,\n };\n\n // Remove the include filter as it's now part of select\n if (this.filters.include) {\n delete this.filters.include;\n }\n }\n\n // Remove any references to the now-unused parameters\n if (this.searchParams?.addFields || this.searchParams?.removeFields) {\n throw new AppError(\n \"The addFields and removeFields parameters are deprecated. Please use fields with + and - prefixes instead.\",\n 400\n );\n }\n\n return this;\n }\n\n paginate() {\n const page = parseInt(this.searchParams.page, 10) || 1;\n const limit = parseInt(this.searchParams.limit, 10) || 30;\n const skip = (page - 1) * limit;\n\n this.filters = {\n ...this.filters,\n skip,\n take: limit,\n };\n return this;\n }\n}\n\nexport const apiFeatures = new APIFeatures();\n"]}
|
|
@@ -44,7 +44,6 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
44
44
|
const path_1 = __importDefault(require("path"));
|
|
45
45
|
const module_1 = require("module");
|
|
46
46
|
const url_1 = require("url");
|
|
47
|
-
const fs_helpers_1 = require("./fs.helpers");
|
|
48
47
|
function getPackageJson() {
|
|
49
48
|
try {
|
|
50
49
|
const pkgPath = path_1.default.join(process.cwd(), "package.json");
|
|
@@ -58,36 +57,21 @@ function getPackageJson() {
|
|
|
58
57
|
}
|
|
59
58
|
function isEsm() {
|
|
60
59
|
const pkg = getPackageJson();
|
|
61
|
-
return pkg
|
|
60
|
+
return pkg?.type === "module";
|
|
62
61
|
}
|
|
63
62
|
async function importModule(modulePath, options = { fixExtension: true }) {
|
|
64
|
-
|
|
65
|
-
if (!options.fixExtension ||
|
|
66
|
-
modulePath.endsWith(".ts") ||
|
|
67
|
-
(0, fs_helpers_1.getUserFileExtension)() === "ts")
|
|
63
|
+
if (!options.fixExtension || modulePath.endsWith(".ts") || !isEsm())
|
|
68
64
|
return await Promise.resolve(`${modulePath}`).then(s => __importStar(require(s)));
|
|
69
|
-
if (options?.fixExtension &&
|
|
70
|
-
isEsm() &&
|
|
71
|
-
modulePath.startsWith(".") &&
|
|
72
|
-
!modulePath.endsWith(".js")) {
|
|
73
|
-
const fullImportPath = path_1.default.resolve(process.cwd(), modulePath);
|
|
74
|
-
const indexPath = fullImportPath + "/index.js";
|
|
75
|
-
if (fs_1.default.existsSync(indexPath)) {
|
|
76
|
-
correctedPath = modulePath + "/index.js";
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
correctedPath = modulePath + ".js";
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
65
|
const userRequire = (0, module_1.createRequire)((0, url_1.pathToFileURL)(process.cwd() + "/package.json"));
|
|
83
66
|
const resolved = userRequire.resolve(modulePath);
|
|
84
67
|
return await Promise.resolve(`${(0, url_1.pathToFileURL)(resolved)}`).then(s => __importStar(require(s)));
|
|
85
|
-
return await Promise.resolve(`${correctedPath}`).then(s => __importStar(require(s)));
|
|
86
68
|
}
|
|
87
69
|
function detectPackageManagerFromUserAgent() {
|
|
88
70
|
const userAgent = process.env.npm_config_user_agent || "";
|
|
89
71
|
if (!userAgent)
|
|
90
72
|
return "npm";
|
|
73
|
+
if (userAgent.includes("cnpm"))
|
|
74
|
+
return "cnpm";
|
|
91
75
|
if (userAgent.includes("pnpm"))
|
|
92
76
|
return "pnpm";
|
|
93
77
|
if (userAgent.includes("yarn"))
|
|
@@ -96,8 +80,6 @@ function detectPackageManagerFromUserAgent() {
|
|
|
96
80
|
return "npm";
|
|
97
81
|
if (userAgent.includes("bun"))
|
|
98
82
|
return "bun";
|
|
99
|
-
if (userAgent.includes("cnpm"))
|
|
100
|
-
return "cnpm";
|
|
101
83
|
if (userAgent.includes("corepack"))
|
|
102
84
|
return "corepack";
|
|
103
85
|
if (userAgent.includes("deno"))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/global.helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wCASC;AAED,sBAGC;AAED,
|
|
1
|
+
{"version":3,"file":"global.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/global.helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wCASC;AAED,sBAGC;AAED,oCAaC;AAQD,8EAaC;AAxDD,4CAAoB;AACpB,gDAAwB;AACxB,mCAAuC;AACvC,6BAAoC;AAGpC,SAAgB,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACzD,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAgB,KAAK;IACnB,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,OAAO,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC;AAChC,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,UAAqC,EAAE,YAAY,EAAE,IAAI,EAAE;IAE3D,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;QACjE,OAAO,yBAAa,UAAU,uCAAC,CAAC;IAGlC,MAAM,WAAW,GAAG,IAAA,sBAAa,EAC/B,IAAA,mBAAa,EAAC,OAAO,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC,CAC/C,CAAC;IACF,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO,yBAAa,IAAA,mBAAa,EAAC,QAAQ,CAAQ,uCAAC,CAAC;AACtD,CAAC;AAQD,SAAgB,iCAAiC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;IAE1D,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IACtD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAE9C,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { createRequire } from \"module\";\nimport { pathToFileURL } from \"url\";\nimport { getUserFileExtension } from \"./fs.helpers\";\n\nexport function getPackageJson() {\n try {\n const pkgPath = path.join(process.cwd(), \"package.json\");\n if (fs.existsSync(pkgPath)) {\n return JSON.parse(fs.readFileSync(pkgPath, \"utf8\"));\n }\n } catch (err) {\n console.error(\"Error checking package.json:\", err);\n }\n}\n\nexport function isEsm() {\n const pkg = getPackageJson();\n return pkg?.type === \"module\";\n}\n\nexport async function importModule(\n modulePath: string,\n options: { fixExtension: boolean } = { fixExtension: true }\n) {\n if (!options.fixExtension || modulePath.endsWith(\".ts\") || !isEsm())\n return await import(modulePath);\n\n // When importing user modules: mainly on ESM environment\n const userRequire = createRequire(\n pathToFileURL(process.cwd() + \"/package.json\")\n );\n const resolved = userRequire.resolve(modulePath);\n return await import(pathToFileURL(resolved) as any);\n}\n\n/**\n * Helps getting the current package manager from user agent\n *\n * @returns {string} the package manager\n * @default \"npm\"\n */\nexport function detectPackageManagerFromUserAgent(): string {\n const userAgent = process.env.npm_config_user_agent || \"\";\n\n if (!userAgent) return \"npm\";\n if (userAgent.includes(\"cnpm\")) return \"cnpm\";\n if (userAgent.includes(\"pnpm\")) return \"pnpm\";\n if (userAgent.includes(\"yarn\")) return \"yarn\";\n if (userAgent.includes(\"npm\")) return \"npm\";\n if (userAgent.includes(\"bun\")) return \"bun\";\n if (userAgent.includes(\"corepack\")) return \"corepack\";\n if (userAgent.includes(\"deno\")) return \"deno\";\n\n return \"npm\";\n}\n"]}
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.prismaModelsUniqueFields = exports.prismaSchemasContent = exports.models = exports.prismaModelRelationFields = void 0;
|
|
7
|
+
exports.setModelModules = setModelModules;
|
|
7
8
|
exports.getModelModules = getModelModules;
|
|
8
9
|
exports.getFileModelModulesFileStructure = getFileModelModulesFileStructure;
|
|
9
10
|
exports.processSubdir = processSubdir;
|
|
@@ -23,6 +24,9 @@ const fs_helpers_1 = require("./fs.helpers");
|
|
|
23
24
|
const global_helpers_1 = require("./global.helpers");
|
|
24
25
|
const cli_helpers_1 = require("../cli/utils/cli.helpers");
|
|
25
26
|
let prismaModelsModules = {};
|
|
27
|
+
function setModelModules(modelName, modules) {
|
|
28
|
+
prismaModelsModules[(0, change_case_helpers_1.kebabCase)(modelName)] = modules;
|
|
29
|
+
}
|
|
26
30
|
function getModelModules(modelName) {
|
|
27
31
|
return prismaModelsModules[(0, change_case_helpers_1.kebabCase)(modelName)];
|
|
28
32
|
}
|
|
@@ -77,10 +81,11 @@ function getFileModelModulesFileStructure(modelName) {
|
|
|
77
81
|
},
|
|
78
82
|
};
|
|
79
83
|
}
|
|
80
|
-
async function processSubdir(modelName, type
|
|
84
|
+
async function processSubdir(modelName, type) {
|
|
81
85
|
const moduleDir = path_1.default.resolve((0, fs_helpers_1.crd)(), "src", "modules", (0, change_case_helpers_1.kebabCase)(modelName));
|
|
82
86
|
const subdir = path_1.default.join(moduleDir, type);
|
|
83
87
|
const fileStructure = getFileModelModulesFileStructure(modelName);
|
|
88
|
+
const result = {};
|
|
84
89
|
try {
|
|
85
90
|
await fs_1.default.promises.access(subdir).catch(() => {
|
|
86
91
|
return;
|
|
@@ -90,7 +95,7 @@ async function processSubdir(modelName, type, result) {
|
|
|
90
95
|
try {
|
|
91
96
|
const module = await (0, global_helpers_1.importModule)(filePath).catch(() => null);
|
|
92
97
|
if (module)
|
|
93
|
-
result[
|
|
98
|
+
result[key] = module.default;
|
|
94
99
|
}
|
|
95
100
|
catch (error) {
|
|
96
101
|
console.error(error);
|
|
@@ -100,6 +105,7 @@ async function processSubdir(modelName, type, result) {
|
|
|
100
105
|
catch (error) {
|
|
101
106
|
console.error(error);
|
|
102
107
|
}
|
|
108
|
+
return result;
|
|
103
109
|
}
|
|
104
110
|
function validateNamingConventions(key, fileName, result) {
|
|
105
111
|
if (key === "prismaQueryOptions") {
|
|
@@ -141,7 +147,7 @@ function assignModuleToResult(key, module, result) {
|
|
|
141
147
|
result[key] = module.default || module;
|
|
142
148
|
}
|
|
143
149
|
}
|
|
144
|
-
async function importPrismaModelModules(modelName) {
|
|
150
|
+
async function importPrismaModelModules(modelName, arkosConfig) {
|
|
145
151
|
const moduleDir = path_1.default.resolve((0, fs_helpers_1.crd)(), "src", "modules", (0, change_case_helpers_1.kebabCase)(modelName));
|
|
146
152
|
const result = {
|
|
147
153
|
dtos: {},
|
|
@@ -173,12 +179,22 @@ async function importPrismaModelModules(modelName) {
|
|
|
173
179
|
(0, cli_helpers_1.killServerChildProcess)();
|
|
174
180
|
}
|
|
175
181
|
}));
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
+
const validationSubdir = arkosConfig.validation?.resolver
|
|
183
|
+
? arkosConfig.validation.resolver === "zod"
|
|
184
|
+
? "schemas"
|
|
185
|
+
: "dtos"
|
|
186
|
+
: null;
|
|
187
|
+
let validators = {};
|
|
188
|
+
if (validationSubdir)
|
|
189
|
+
validators = await processSubdir(modelName, validationSubdir);
|
|
190
|
+
prismaModelsModules[modelName] = {
|
|
191
|
+
...result,
|
|
192
|
+
...(validationSubdir && { [validationSubdir]: validators }),
|
|
193
|
+
};
|
|
194
|
+
return {
|
|
195
|
+
...result,
|
|
196
|
+
...(validationSubdir && { [validationSubdir]: validators }),
|
|
197
|
+
};
|
|
182
198
|
}
|
|
183
199
|
exports.prismaModelRelationFields = {};
|
|
184
200
|
function getAllPrismaFiles(dirPath, fileList = []) {
|