db-model-router 1.0.0 → 1.0.3

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.
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Maps each supported database to its driver package(s).
5
+ */
6
+ const DRIVER_MAP = {
7
+ mysql: ["mysql2"],
8
+ postgres: ["pg"],
9
+ sqlite3: ["better-sqlite3"],
10
+ mongodb: ["mongodb"],
11
+ mssql: ["mssql"],
12
+ cockroachdb: ["pg"],
13
+ oracle: ["oracledb"],
14
+ redis: ["ioredis"],
15
+ dynamodb: ["@aws-sdk/client-dynamodb", "@aws-sdk/lib-dynamodb"],
16
+ };
17
+
18
+ /**
19
+ * Collect dependencies and devDependencies based on user answers.
20
+ * @param {import('./types').InitAnswers} answers
21
+ * @returns {{ dependencies: Record<string, string>, devDependencies: Record<string, string> }}
22
+ */
23
+ function collectDependencies(answers) {
24
+ const dependencies = {};
25
+ const devDependencies = {};
26
+
27
+ // Always included
28
+ dependencies["db-model-router"] = "latest";
29
+ dependencies["dotenv"] = "latest";
30
+ dependencies[answers.framework] = "latest";
31
+ dependencies["express-session"] = "latest";
32
+
33
+ // Database driver(s)
34
+ const drivers = DRIVER_MAP[answers.database] || [];
35
+ for (const driver of drivers) {
36
+ dependencies[driver] = "latest";
37
+ }
38
+
39
+ // Session: redis
40
+ if (answers.session === "redis") {
41
+ dependencies["connect-redis"] = "latest";
42
+ // Only add ioredis if not already included via the database driver
43
+ if (answers.database !== "redis") {
44
+ dependencies["ioredis"] = "latest";
45
+ }
46
+ }
47
+
48
+ // Optional middleware
49
+ if (answers.rateLimiting) {
50
+ dependencies["express-rate-limit"] = "latest";
51
+ }
52
+ if (answers.helmet) {
53
+ dependencies["helmet"] = "latest";
54
+ }
55
+ if (answers.logger) {
56
+ dependencies["express-mung"] = "latest";
57
+ }
58
+
59
+ // Dev dependencies
60
+ devDependencies["nodemon"] = "latest";
61
+
62
+ return { dependencies, devDependencies };
63
+ }
64
+
65
+ /**
66
+ * Returns the 5 package.json scripts.
67
+ * @returns {Record<string, string>}
68
+ */
69
+ function getScripts() {
70
+ return {
71
+ start: "node app.js",
72
+ dev: "nodemon app.js",
73
+ test: 'echo "Error: no test specified" && exit 1',
74
+ migrate: "node migrate.js",
75
+ add_migration: "node add_migration.js",
76
+ };
77
+ }
78
+
79
+ module.exports = {
80
+ DRIVER_MAP,
81
+ collectDependencies,
82
+ getScripts,
83
+ };