@dolphjs/cli 0.1.1 → 1.0.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/LICENSE +21 -0
- package/dist/generators/generate_controller.js +65 -0
- package/dist/generators/generate_model.js +61 -0
- package/dist/generators/generate_mysql.js +63 -0
- package/dist/generators/generate_routes.js +59 -0
- package/dist/generators/generate_service.js +63 -0
- package/dist/generators/resolvers/resolve_controller_content.js +19 -0
- package/dist/generators/resolvers/resolve_model_content.js +37 -0
- package/dist/generators/resolvers/resolve_routes_content.js +19 -0
- package/dist/generators/resolvers/resolve_service_content.js +19 -0
- package/dist/generators/templates/controller_template.js +83 -0
- package/dist/generators/templates/model_template.js +168 -0
- package/dist/generators/templates/mysql_config_template.js +59 -0
- package/dist/generators/templates/routes_template.js +86 -0
- package/dist/generators/templates/service_template.js +172 -0
- package/dist/index.js +30 -0
- package/dist/registers/register_routes.js +145 -0
- package/dist/registers/server_file_routes.js +74 -0
- package/dist/types/config.js +1 -0
- package/dist/utils/get_root_dir_path.js +11 -0
- package/dist/utils/get_user_config_path.js +10 -0
- package/dist/utils/init_helper_function.js +90 -0
- package/dist/utils/package_description.js +6 -0
- package/dist/utils/package_generator.js +73 -0
- package/dist/utils/package_init.js +11 -0
- package/dist/utils/read_package_json.js +9 -0
- package/dist/utils/read_user_config.js +67 -0
- package/dist/utils/read_user_config_path.js +19 -0
- package/dist/utils/write_dolph_config.js +9 -0
- package/dist/utils/write_gitignore.js +12 -0
- package/dist/utils/write_package_json.js +68 -0
- package/dist/utils/write_swrcc.js +48 -0
- package/dist/utils/write_tsconfig.js +45 -0
- package/dist/utils/write_user_config.js +16 -0
- package/package.json +47 -40
- package/CODE_OF_CONDUCT.md +0 -76
- package/CONTRIBUTING.md +0 -91
- package/new-app.mjs +0 -209
- package/readme.md +0 -25
- package/utils/constants/packageManagers.mjs +0 -3
- package/utils/constants/types.mjs +0 -4
- package/utils/dependencies.mjs +0 -24
- package/utils/js-func/packageData.mjs +0 -20
- package/utils/js-func/writeSubFile.mjs +0 -96
- package/utils/js-oop/packageData.mjs +0 -19
- package/utils/js-oop/writeSubFileJsOop.mjs +0 -94
- package/utils/ts-func/copySubFolder.mjs +0 -58
- package/utils/ts-func/gitignoreData.mjs +0 -11
- package/utils/ts-func/nodemonData.mjs +0 -12
- package/utils/ts-func/packageData.mjs +0 -23
- package/utils/ts-func/readmeData.mjs +0 -293
- package/utils/ts-func/swcrcData.mjs +0 -49
- package/utils/ts-func/tsconfigFile.mjs +0 -55
- package/utils/ts-oop/copySubFolder.mjs +0 -71
- package/utils/ts-oop/gitignoreData.mjs +0 -11
- package/utils/ts-oop/nodemonData.mjs +0 -12
- package/utils/ts-oop/packageData.mjs +0 -23
- package/utils/ts-oop/readmeData.mjs +0 -292
- package/utils/ts-oop/swcrcData.mjs +0 -49
- package/utils/ts-oop/tsconfigFile.mjs +0 -55
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
const generateOopTsTemplate = (modelName, isMongo, isMysql) => {
|
|
2
|
+
let template;
|
|
3
|
+
const capitalizeFirstLetter = (str) => {
|
|
4
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
5
|
+
};
|
|
6
|
+
if (isMongo) {
|
|
7
|
+
template = `import { Schema, Document, model } from "mongoose";
|
|
8
|
+
|
|
9
|
+
export interface I${capitalizeFirstLetter(modelName)} extends Document {
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const ${capitalizeFirstLetter(modelName)}Schema = new Schema(
|
|
14
|
+
{
|
|
15
|
+
|
|
16
|
+
}
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
export const ${capitalizeFirstLetter(modelName)}Model = model<I${capitalizeFirstLetter(modelName)}>("${modelName.charAt(0) !== "s" ? `${modelName}s` : modelName}", ${capitalizeFirstLetter(modelName)}Schema);
|
|
20
|
+
`;
|
|
21
|
+
}
|
|
22
|
+
if (isMysql) {
|
|
23
|
+
template = `
|
|
24
|
+
import { sequelizeInstance } from "@/configs/db.configs";
|
|
25
|
+
import { DataTypes } from "sequelize";
|
|
26
|
+
|
|
27
|
+
export const ${capitalizeFirstLetter(modelName)} = sequelizeInstance.define("${modelName}", {
|
|
28
|
+
id: {
|
|
29
|
+
type: DataTypes.INTEGER,
|
|
30
|
+
allowNull: false,
|
|
31
|
+
primaryKey: true,
|
|
32
|
+
autoIncrement: true,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
`;
|
|
36
|
+
}
|
|
37
|
+
if (!isMongo && !isMysql) {
|
|
38
|
+
template = ``;
|
|
39
|
+
}
|
|
40
|
+
return template;
|
|
41
|
+
};
|
|
42
|
+
const generateOopJsTemplate = (modelName, isMongo, isMysql) => {
|
|
43
|
+
let template;
|
|
44
|
+
const capitalizeFirstLetter = (str) => {
|
|
45
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
46
|
+
};
|
|
47
|
+
if (isMongo) {
|
|
48
|
+
template = `
|
|
49
|
+
const { Schema, model } = require("mongoose");
|
|
50
|
+
|
|
51
|
+
const ${capitalizeFirstLetter(modelName)}Schema = new Schema(
|
|
52
|
+
{
|
|
53
|
+
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
const ${capitalizeFirstLetter(modelName)}Model = model("${modelName.charAt(0) !== "s" ? `${modelName}s` : modelName}", ${capitalizeFirstLetter(modelName)}Schema);
|
|
58
|
+
|
|
59
|
+
module.exports = { ${capitalizeFirstLetter(modelName)}Model }
|
|
60
|
+
`;
|
|
61
|
+
}
|
|
62
|
+
if (isMysql) {
|
|
63
|
+
template = `
|
|
64
|
+
const { sequelizeInstance } = require("../../../configs/db.configs");
|
|
65
|
+
const { DataTypes } = require("sequelize");
|
|
66
|
+
|
|
67
|
+
const User = sequelizeInstance.define("user", {
|
|
68
|
+
id: {
|
|
69
|
+
type: DataTypes.INTEGER,
|
|
70
|
+
allowNull: false,
|
|
71
|
+
primaryKey: true,
|
|
72
|
+
autoIncrement: true,
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
module.exports = { ${capitalizeFirstLetter(modelName)} };
|
|
77
|
+
`;
|
|
78
|
+
}
|
|
79
|
+
if (!isMongo && !isMysql) {
|
|
80
|
+
template = ``;
|
|
81
|
+
}
|
|
82
|
+
return template;
|
|
83
|
+
};
|
|
84
|
+
const generateFnTsTemplate = (modelName, isMongo, isMysql) => {
|
|
85
|
+
let template;
|
|
86
|
+
const capitalizeFirstLetter = (str) => {
|
|
87
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
88
|
+
};
|
|
89
|
+
if (isMongo) {
|
|
90
|
+
template = `
|
|
91
|
+
import { Schema, Document, model } from "mongoose";
|
|
92
|
+
|
|
93
|
+
export interface I${capitalizeFirstLetter(modelName)} extends Document {
|
|
94
|
+
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const ${capitalizeFirstLetter(modelName)}Schema = new Schema(
|
|
98
|
+
{
|
|
99
|
+
|
|
100
|
+
}
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
export const ${capitalizeFirstLetter(modelName)}Model = model<I${capitalizeFirstLetter(modelName)}>("${modelName.charAt(0) !== "s" ? `${modelName}s` : modelName}", ${capitalizeFirstLetter(modelName)}Schema);
|
|
104
|
+
`;
|
|
105
|
+
}
|
|
106
|
+
if (isMysql) {
|
|
107
|
+
template = `
|
|
108
|
+
import { sequelizeInstance } from "@/configs/db.configs";
|
|
109
|
+
import { DataTypes } from "sequelize";
|
|
110
|
+
|
|
111
|
+
export const ${capitalizeFirstLetter(modelName)} = sequelizeInstance.define("${modelName}", {
|
|
112
|
+
id: {
|
|
113
|
+
type: DataTypes.INTEGER,
|
|
114
|
+
allowNull: false,
|
|
115
|
+
primaryKey: true,
|
|
116
|
+
autoIncrement: true,
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
`;
|
|
120
|
+
}
|
|
121
|
+
if (!isMongo && !isMysql) {
|
|
122
|
+
template = ``;
|
|
123
|
+
}
|
|
124
|
+
return template;
|
|
125
|
+
};
|
|
126
|
+
const generateFnJsTemplate = (modelName, isMongo, isMysql) => {
|
|
127
|
+
let template;
|
|
128
|
+
const capitalizeFirstLetter = (str) => {
|
|
129
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
130
|
+
};
|
|
131
|
+
if (isMongo) {
|
|
132
|
+
template = `
|
|
133
|
+
const { Schema, model } = require("mongoose");
|
|
134
|
+
|
|
135
|
+
const ${capitalizeFirstLetter(modelName)}Schema = new Schema(
|
|
136
|
+
{
|
|
137
|
+
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
const ${capitalizeFirstLetter(modelName)}Model = model("${modelName.charAt(0) !== "s" ? `${modelName}s` : modelName}", ${capitalizeFirstLetter(modelName)}Schema);
|
|
142
|
+
|
|
143
|
+
module.exports = { ${capitalizeFirstLetter(modelName)}Model };
|
|
144
|
+
`;
|
|
145
|
+
}
|
|
146
|
+
if (isMysql) {
|
|
147
|
+
template = `
|
|
148
|
+
const { sequelizeInstance } = require("../../../configs/db.configs");
|
|
149
|
+
const { DataTypes } = require("sequelize");
|
|
150
|
+
|
|
151
|
+
const User = sequelizeInstance.define("user", {
|
|
152
|
+
id: {
|
|
153
|
+
type: DataTypes.INTEGER,
|
|
154
|
+
allowNull: false,
|
|
155
|
+
primaryKey: true,
|
|
156
|
+
autoIncrement: true,
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
module.exports = { ${capitalizeFirstLetter(modelName)} };
|
|
161
|
+
`;
|
|
162
|
+
}
|
|
163
|
+
if (!isMongo && !isMysql) {
|
|
164
|
+
template = ``;
|
|
165
|
+
}
|
|
166
|
+
return template;
|
|
167
|
+
};
|
|
168
|
+
export { generateFnJsTemplate, generateFnTsTemplate, generateOopJsTemplate, generateOopTsTemplate, };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
const generateOopTsTemplate = () => {
|
|
2
|
+
let template;
|
|
3
|
+
template = `
|
|
4
|
+
import { initMySql } from "@dolphjs/dolph/packages";
|
|
5
|
+
import {} from ".."
|
|
6
|
+
|
|
7
|
+
export const sequelizeInstance = initMySql(
|
|
8
|
+
"dolph",
|
|
9
|
+
"root",
|
|
10
|
+
"password",
|
|
11
|
+
"localhost"
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
`;
|
|
15
|
+
return template;
|
|
16
|
+
};
|
|
17
|
+
const generateOopJsTemplate = () => {
|
|
18
|
+
let template;
|
|
19
|
+
template = `
|
|
20
|
+
const { initMySql } = require("@dolphjs/dolph/packages");
|
|
21
|
+
const {} = require("..");
|
|
22
|
+
|
|
23
|
+
const sequelizeInstance = initMySql("dolph", "root", "password", "localhost");
|
|
24
|
+
|
|
25
|
+
module.exports = { sequelizeInstance };
|
|
26
|
+
|
|
27
|
+
`;
|
|
28
|
+
return template;
|
|
29
|
+
};
|
|
30
|
+
const generateFnTsTemplate = () => {
|
|
31
|
+
let template;
|
|
32
|
+
template = `
|
|
33
|
+
import { initMySql } from "@dolphjs/dolph/packages";
|
|
34
|
+
import {} from ".."
|
|
35
|
+
|
|
36
|
+
export const sequelizeInstance = initMySql(
|
|
37
|
+
"dolph",
|
|
38
|
+
"root",
|
|
39
|
+
"password",
|
|
40
|
+
"localhost"
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
`;
|
|
44
|
+
return template;
|
|
45
|
+
};
|
|
46
|
+
const generateFnJsTemplate = () => {
|
|
47
|
+
let template;
|
|
48
|
+
template = `
|
|
49
|
+
const { initMySql } = require("@dolphjs/dolph/packages");
|
|
50
|
+
const {} = require("..");
|
|
51
|
+
|
|
52
|
+
const sequelizeInstance = initMySql("dolph", "root", "password", "localhost");
|
|
53
|
+
|
|
54
|
+
module.exports = { sequelizeInstance };
|
|
55
|
+
|
|
56
|
+
`;
|
|
57
|
+
return template;
|
|
58
|
+
};
|
|
59
|
+
export { generateFnJsTemplate, generateFnTsTemplate, generateOopJsTemplate, generateOopTsTemplate, };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
const generateOopTsTemplate = (routerName) => {
|
|
2
|
+
const capitalizeFirstLetter = (str) => {
|
|
3
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
4
|
+
};
|
|
5
|
+
const className = capitalizeFirstLetter(routerName) + "Router";
|
|
6
|
+
const path = `/${routerName.charAt(0) === "s" ? routerName : `${routerName}s`}`;
|
|
7
|
+
const template = `
|
|
8
|
+
import { DolphRouteHandler } from "@dolphjs/dolph/classes";
|
|
9
|
+
import { Dolph } from "@dolphjs/dolph/common";
|
|
10
|
+
|
|
11
|
+
export class ${className} extends DolphRouteHandler<Dolph> {
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
this.initRoutes();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public readonly path: string = "${path}";
|
|
18
|
+
controller;
|
|
19
|
+
|
|
20
|
+
initRoutes(): void {
|
|
21
|
+
this.router.get();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
`;
|
|
25
|
+
return template;
|
|
26
|
+
};
|
|
27
|
+
const generateOopJsTemplate = (routerName) => {
|
|
28
|
+
const capitalizeFirstLetter = (str) => {
|
|
29
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
30
|
+
};
|
|
31
|
+
const className = capitalizeFirstLetter(routerName) + "Router";
|
|
32
|
+
const path = `/${routerName.charAt(0) === "s" ? routerName : `${routerName}s`}`;
|
|
33
|
+
const template = `
|
|
34
|
+
const { DolphRouteHandler } = require("@dolphjs/dolph/classes");
|
|
35
|
+
|
|
36
|
+
class ${className} extends DolphRouteHandler {
|
|
37
|
+
constructor() {
|
|
38
|
+
super();
|
|
39
|
+
this.initRoutes();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
path = "${path}";
|
|
43
|
+
controller;
|
|
44
|
+
|
|
45
|
+
initRoutes() {
|
|
46
|
+
this.router.get();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
module.exports = { ${className} };
|
|
51
|
+
`;
|
|
52
|
+
return template;
|
|
53
|
+
};
|
|
54
|
+
const generateFnTsTemplate = (routerName) => {
|
|
55
|
+
const path = `/${routerName}`;
|
|
56
|
+
const template = `
|
|
57
|
+
import { Router } from "express";
|
|
58
|
+
|
|
59
|
+
const router = Router();
|
|
60
|
+
router.get();
|
|
61
|
+
|
|
62
|
+
export const ${routerName}Routes = {
|
|
63
|
+
path: "${path}",
|
|
64
|
+
router,
|
|
65
|
+
};
|
|
66
|
+
`;
|
|
67
|
+
return template;
|
|
68
|
+
};
|
|
69
|
+
const generateFnJsTemplate = (routerName) => {
|
|
70
|
+
const path = `/${routerName}`;
|
|
71
|
+
const template = `
|
|
72
|
+
const { Router } = require("express");
|
|
73
|
+
|
|
74
|
+
const router = Router();
|
|
75
|
+
router.get();
|
|
76
|
+
|
|
77
|
+
const ${routerName}Routes = {
|
|
78
|
+
path: "${path}",
|
|
79
|
+
router,
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
module.exports = { ${routerName}Routes };
|
|
83
|
+
`;
|
|
84
|
+
return template;
|
|
85
|
+
};
|
|
86
|
+
export { generateFnJsTemplate, generateFnTsTemplate, generateOopJsTemplate, generateOopTsTemplate, };
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
const generateOopTsTemplate = (serviceName, isMongo, isMySql) => {
|
|
2
|
+
let template;
|
|
3
|
+
const capitalizeFirstLetter = (str) => {
|
|
4
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
5
|
+
};
|
|
6
|
+
const className = capitalizeFirstLetter(serviceName) + "Service";
|
|
7
|
+
if (isMongo && isMySql) {
|
|
8
|
+
template = `
|
|
9
|
+
import { DolphServiceHandler } from "@dolphjs/dolph/classes";
|
|
10
|
+
import { Dolph } from "@dolphjs/dolph/common";
|
|
11
|
+
import { InjectMongo, InjectMySQL } from "@dolphjs/dolph/decorators";
|
|
12
|
+
import { Model } from "mongoose";
|
|
13
|
+
import { ModelStatic, Model as SqlModel } from "sequelize";
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@InjectMongo("${serviceName}Model", )
|
|
17
|
+
@InjectMySQL("${serviceName}SqlModel", )
|
|
18
|
+
export class ${className} extends DolphServiceHandler<Dolph> {
|
|
19
|
+
${serviceName}Model!: Model<>;
|
|
20
|
+
${serviceName}SqlModel!: ModelStatic<SqlModel<any, any>>;
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
constructor() {
|
|
24
|
+
super("${className.toLowerCase()}");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
`;
|
|
29
|
+
}
|
|
30
|
+
if (isMongo) {
|
|
31
|
+
template = `
|
|
32
|
+
import { DolphServiceHandler } from "@dolphjs/dolph/classes";
|
|
33
|
+
import { Dolph } from "@dolphjs/dolph/common";
|
|
34
|
+
import { InjectMongo} from "@dolphjs/dolph/decorators";
|
|
35
|
+
import { Model } from "mongoose";
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@InjectMongo("${serviceName}Model", )
|
|
39
|
+
export class ${className} extends DolphServiceHandler<Dolph> {
|
|
40
|
+
${serviceName}Model!: Model<>;
|
|
41
|
+
|
|
42
|
+
constructor() {
|
|
43
|
+
super("${className.toLowerCase()}");
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
`;
|
|
48
|
+
}
|
|
49
|
+
if (isMySql) {
|
|
50
|
+
template = `
|
|
51
|
+
import { DolphServiceHandler } from "@dolphjs/dolph/classes";
|
|
52
|
+
import { Dolph } from "@dolphjs/dolph/common";
|
|
53
|
+
import { InjectMySQL } from "@dolphjs/dolph/decorators";
|
|
54
|
+
import { ModelStatic, Model } from "sequelize";
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@InjectMySQL("${serviceName}Model", )
|
|
58
|
+
export class ${className} extends DolphServiceHandler<Dolph> {
|
|
59
|
+
${serviceName}Model!: ModelStatic<Model<any, any>>;
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
constructor() {
|
|
63
|
+
super("${className.toLowerCase()}");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
`;
|
|
68
|
+
}
|
|
69
|
+
if (!isMongo && !isMySql) {
|
|
70
|
+
template = `
|
|
71
|
+
import { DolphServiceHandler } from "@dolphjs/dolph/classes";
|
|
72
|
+
import { Dolph } from "@dolphjs/dolph/common";
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
export class ${className} extends DolphServiceHandler<Dolph> {
|
|
76
|
+
|
|
77
|
+
constructor() {
|
|
78
|
+
super("${className.toLowerCase()}");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
`;
|
|
82
|
+
}
|
|
83
|
+
return template;
|
|
84
|
+
};
|
|
85
|
+
const generateOopJsTemplate = (serviceName, isMongo, isMySql) => {
|
|
86
|
+
let template;
|
|
87
|
+
const capitalizeFirstLetter = (str) => {
|
|
88
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
89
|
+
};
|
|
90
|
+
const className = capitalizeFirstLetter(serviceName) + "Service";
|
|
91
|
+
if (isMongo && isMySql) {
|
|
92
|
+
template = `
|
|
93
|
+
const { DolphServiceHandler } = require("@dolphjs/dolph/classes");
|
|
94
|
+
|
|
95
|
+
class ${className} extends DolphServiceHandler {
|
|
96
|
+
|
|
97
|
+
constructor() {
|
|
98
|
+
super("${className.toLowerCase()}");
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
`;
|
|
103
|
+
}
|
|
104
|
+
if (isMongo) {
|
|
105
|
+
template = `
|
|
106
|
+
const { DolphServiceHandler } = require("@dolphjs/dolph/classes");
|
|
107
|
+
|
|
108
|
+
export class ${className} extends DolphServiceHandler {
|
|
109
|
+
|
|
110
|
+
constructor() {
|
|
111
|
+
super("${className.toLowerCase()}");
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
`;
|
|
116
|
+
}
|
|
117
|
+
if (isMySql) {
|
|
118
|
+
template = `
|
|
119
|
+
const { DolphServiceHandler } = require("@dolphjs/dolph/classes");
|
|
120
|
+
|
|
121
|
+
export class ${className} extends DolphServiceHandler {
|
|
122
|
+
|
|
123
|
+
constructor() {
|
|
124
|
+
super("${className.toLowerCase()}");
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
`;
|
|
129
|
+
}
|
|
130
|
+
if (!isMongo && !isMySql) {
|
|
131
|
+
template = `
|
|
132
|
+
const { DolphServiceHandler } = require("@dolphjs/dolph/classes");
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
export class ${className} extends DolphServiceHandler {
|
|
136
|
+
|
|
137
|
+
constructor() {
|
|
138
|
+
super("${className.toLowerCase()}");
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
module.exports = { ${className} }
|
|
143
|
+
`;
|
|
144
|
+
}
|
|
145
|
+
return template;
|
|
146
|
+
};
|
|
147
|
+
const generateFnTsTemplate = (serviceName) => {
|
|
148
|
+
let template;
|
|
149
|
+
template = `
|
|
150
|
+
import { TryCatchAsyncFn } from "@dolphjs/dolph/common";
|
|
151
|
+
|
|
152
|
+
export const default${serviceName}Service = TryCatchAsyncFn(async (data: string) => {
|
|
153
|
+
return { data };
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
`;
|
|
157
|
+
return template;
|
|
158
|
+
};
|
|
159
|
+
const generateFnJsTemplate = (serviceName) => {
|
|
160
|
+
let template;
|
|
161
|
+
template = `
|
|
162
|
+
const { TryCatchAsyncFn } = require("@dolphjs/dolph/classes");
|
|
163
|
+
|
|
164
|
+
const default${serviceName}Service = TryCatchAsyncFn(async (data) => {
|
|
165
|
+
return { data };
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
module.exports = { default${serviceName}Service }
|
|
169
|
+
`;
|
|
170
|
+
return template;
|
|
171
|
+
};
|
|
172
|
+
export { generateFnJsTemplate, generateFnTsTemplate, generateOopJsTemplate, generateOopTsTemplate, };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { program } from "commander";
|
|
4
|
+
import figlet from "figlet";
|
|
5
|
+
import { packageDescription } from "./utils/package_description.js";
|
|
6
|
+
import { configurePackage } from "./utils/read_user_config.js";
|
|
7
|
+
import { InitDolphCli } from "./utils/package_init.js";
|
|
8
|
+
import { packageGenerator } from "./utils/package_generator.js";
|
|
9
|
+
figlet.text("dolphjs cli", {
|
|
10
|
+
font: "Big",
|
|
11
|
+
horizontalLayout: "default",
|
|
12
|
+
verticalLayout: "default",
|
|
13
|
+
width: 150,
|
|
14
|
+
whitespaceBreak: true,
|
|
15
|
+
}, function (err, _data) {
|
|
16
|
+
if (err) {
|
|
17
|
+
console.log("[FIGLET ERROR]: ", chalk.red(err.toString()));
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// console.log(chalk.bold(chalk.cyan(data)));
|
|
21
|
+
InitDolphCli();
|
|
22
|
+
packageDescription();
|
|
23
|
+
configurePackage();
|
|
24
|
+
packageGenerator();
|
|
25
|
+
program.command("*", { hidden: true }).action(() => {
|
|
26
|
+
console.log(`${chalk.red("[DOLPH ERROR]: ")} ${chalk.redBright("unknown command. See list of available commands: ")}`);
|
|
27
|
+
program.help();
|
|
28
|
+
});
|
|
29
|
+
program.parse(process.argv);
|
|
30
|
+
});
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
// removed other possible dirs to enforce dolphjs style guide
|
|
5
|
+
const findRoutesDirectory = () => {
|
|
6
|
+
const rootDir = process.cwd();
|
|
7
|
+
const possibleDirs = [
|
|
8
|
+
"/src/routes",
|
|
9
|
+
// "/src/Routes",
|
|
10
|
+
// "/src/route",
|
|
11
|
+
// "/src/Route",
|
|
12
|
+
// "/Routes",
|
|
13
|
+
// "/Route",
|
|
14
|
+
// "/routes",
|
|
15
|
+
// "/route",
|
|
16
|
+
];
|
|
17
|
+
const routesDir = possibleDirs.find((dir) => existsSync(path.join(rootDir, dir)));
|
|
18
|
+
return routesDir ? path.join(rootDir, routesDir) : null;
|
|
19
|
+
};
|
|
20
|
+
export const addRoutesIndexFile = (routesName, readConfig) => {
|
|
21
|
+
let extension;
|
|
22
|
+
let paradigm;
|
|
23
|
+
paradigm = readConfig().paradigm;
|
|
24
|
+
switch (readConfig().language) {
|
|
25
|
+
case "ts":
|
|
26
|
+
extension = "ts";
|
|
27
|
+
break;
|
|
28
|
+
case "js":
|
|
29
|
+
extension = "js";
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
extension = "ts";
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
if (!routesName)
|
|
36
|
+
chalk.bold(chalk.red("Routes extension or name is required! 🤨"));
|
|
37
|
+
const routesDir = findRoutesDirectory();
|
|
38
|
+
if (!routesDir) {
|
|
39
|
+
//TODO: create one if it doesn't exist
|
|
40
|
+
console.log(chalk.bold(chalk.red("Routes directory doesn't exist 🤨")));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const indexPath = path.join(routesDir, `index.${extension}`);
|
|
44
|
+
let importStatement = ``;
|
|
45
|
+
const capitalizedString = routesName.charAt(0).toUpperCase() + routesName.slice(1);
|
|
46
|
+
if (extension === "ts") {
|
|
47
|
+
importStatement = `import { ${capitalizedString}Router } from "./${routesName}/${routesName}.routes"; `;
|
|
48
|
+
if (paradigm !== "oop") {
|
|
49
|
+
importStatement = `import { ${routesName}Routes } from "./${routesName}/${routesName}.routes"; `;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if (extension === "js") {
|
|
53
|
+
importStatement = `const { ${capitalizedString}Router } = require("./${routesName}/${routesName}.routes"); `;
|
|
54
|
+
if (paradigm !== "oop") {
|
|
55
|
+
importStatement = `const { ${routesName}Routes } = require("./${routesName}/${routesName}.routes"); `;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
console.log(chalk.bold(chalk.red("dolphjs only supports '.js' & '.ts' file extensions")));
|
|
60
|
+
}
|
|
61
|
+
let routesArray = "";
|
|
62
|
+
if (extension === "ts") {
|
|
63
|
+
routesArray = `export const routes = [new ${capitalizedString}Router()]; `;
|
|
64
|
+
if (paradigm !== "oop") {
|
|
65
|
+
routesArray = `export const routes = [${routesName}Routes];`;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
routesArray = `const routes = [new ${capitalizedString}Router()];
|
|
70
|
+
module.exports = { routes };
|
|
71
|
+
`;
|
|
72
|
+
if (paradigm !== "oop") {
|
|
73
|
+
routesArray = `const routes = [${routesName}Routes];
|
|
74
|
+
module.exports = { routes };
|
|
75
|
+
`;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
// check if file exists
|
|
80
|
+
if (!existsSync(indexPath)) {
|
|
81
|
+
// if it doesn't exist, create file and add import statement
|
|
82
|
+
const fileContent = `${importStatement}\n\n${routesArray}\n`;
|
|
83
|
+
writeFileSync(indexPath, fileContent);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
const fileContent = readFileSync(indexPath, "utf8");
|
|
87
|
+
const newRouterInstance = `new ${capitalizedString}Router()`;
|
|
88
|
+
const newRoutesInstance = `${routesName}Routes`;
|
|
89
|
+
if (!fileContent.includes(importStatement)) {
|
|
90
|
+
const updatedContent = `${importStatement}\n${fileContent}`;
|
|
91
|
+
writeFileSync(indexPath, updatedContent);
|
|
92
|
+
}
|
|
93
|
+
if (fileContent.includes(`${extension === "ts" ? "export const routes" : "const routes"}`)) {
|
|
94
|
+
// add new routes instance to the exisiting routes array
|
|
95
|
+
if (extension === "ts") {
|
|
96
|
+
const routesArrayMatch = fileContent.match(/export const routes = \[([\s\S]+?)\];/);
|
|
97
|
+
if (routesArrayMatch) {
|
|
98
|
+
const existingRoutes = routesArrayMatch[1].trim();
|
|
99
|
+
let fileContents;
|
|
100
|
+
if (paradigm === "oop") {
|
|
101
|
+
fileContents = fileContent.replace(existingRoutes, `${existingRoutes.length > 0 ? existingRoutes + ", " : ""}${newRouterInstance}`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
fileContents = fileContent.replace(`[${existingRoutes}]`, `[${existingRoutes.length > 0 ? existingRoutes + ", " : ""}${newRoutesInstance}]`);
|
|
105
|
+
}
|
|
106
|
+
const updatedContents = `${importStatement}\n${fileContents}`;
|
|
107
|
+
writeFileSync(indexPath, updatedContents);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
const routesArrayMatch = fileContent.match(/const routes = \[([\s\S]+?)\];/);
|
|
112
|
+
if (routesArrayMatch) {
|
|
113
|
+
const existingRoutes = routesArrayMatch[1].trim();
|
|
114
|
+
let fileContents;
|
|
115
|
+
if (paradigm === "oop") {
|
|
116
|
+
fileContents = fileContent.replace(existingRoutes, `${existingRoutes.length > 0 ? existingRoutes + ", " : ""}${newRouterInstance}`);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
fileContents = fileContent.replace(`[${existingRoutes}]`, `[${existingRoutes.length > 0 ? existingRoutes + ", " : ""}${newRoutesInstance}]`);
|
|
120
|
+
}
|
|
121
|
+
const updatedContents = `${importStatement}\n${fileContents}`;
|
|
122
|
+
writeFileSync(indexPath, updatedContents);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
// if there is no routes array, add new one
|
|
128
|
+
if (extension === "ts") {
|
|
129
|
+
const updatedContents = `${fileContent.trim()}\n\nexport const routes = [${paradigm !== "oop" ? newRouterInstance : newRoutesInstance}];\n`;
|
|
130
|
+
writeFileSync(indexPath, updatedContents);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const updatedContents = `${fileContent.trim()}\n\nconst routes = [${paradigm !== "oop" ? newRouterInstance : newRoutesInstance}];\n\n module.exports = { routes } \n`;
|
|
134
|
+
writeFileSync(indexPath, updatedContents);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
console.log(chalk.bold(chalk.green(`added ${paradigm === "oop"
|
|
139
|
+
? `${capitalizedString}Router`
|
|
140
|
+
: `${routesName}Routes`} to routes array in index.${extension} file`)));
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
console.log(chalk.bold(chalk.red(e)));
|
|
144
|
+
}
|
|
145
|
+
};
|