create-sip 0.10.8 → 0.11.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/expressapi/config/default.json +15 -0
- package/expressapi/op +107 -0
- package/expressapi/package.json +1 -0
- package/expressapi/templates/controllerTemplate.js +25 -0
- package/expressapi/templates/modelTemplate.js +18 -0
- package/manager.js +16 -12
- package/package.json +1 -1
- package/webnodejs/src/index.html +2 -1
package/expressapi/op
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import replace from 'replace';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
|
|
4
|
+
import fsp from 'fs/promises'
|
|
5
|
+
import { generateApiKey } from 'generate-api-key'
|
|
6
|
+
import path, { dirname } from 'path';
|
|
7
|
+
import url from 'url';
|
|
8
|
+
|
|
9
|
+
console.log(process.argv.length)
|
|
10
|
+
console.log(process.argv[2])
|
|
11
|
+
|
|
12
|
+
if(process.argv.length == 3 && process.argv[2] == 'key:generate') {
|
|
13
|
+
startGenerateKey();
|
|
14
|
+
} else if(process.argv.length < 4) {
|
|
15
|
+
console.log('Usage:');
|
|
16
|
+
console.log('node op <command> <type> <name>');
|
|
17
|
+
console.log('Example:');
|
|
18
|
+
console.log('node op create model something');
|
|
19
|
+
console.log('node op create controller something');
|
|
20
|
+
console.log('node op key:generate');
|
|
21
|
+
process.exit(1);
|
|
22
|
+
} else {
|
|
23
|
+
if(process.argv[2] === 'create') {
|
|
24
|
+
console.log('Create a new ' + process.argv[3] + '...');
|
|
25
|
+
if(process.argv[3] === 'model') {
|
|
26
|
+
copyModel();
|
|
27
|
+
}
|
|
28
|
+
if(process.argv[3] === 'controller') {
|
|
29
|
+
copyController();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if(process.argv[2] === 'key:generate') {
|
|
33
|
+
console.log('Genearete key ... ');
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async function copyController() {
|
|
40
|
+
|
|
41
|
+
const className = process.argv[4]
|
|
42
|
+
const lowerName = className.toLowerCase()
|
|
43
|
+
|
|
44
|
+
const src = 'templates/controllerTemplate.js'
|
|
45
|
+
const dest = `app/controllers/${lowerName}controller.js`
|
|
46
|
+
await fs.copy(src, dest)
|
|
47
|
+
|
|
48
|
+
replace({
|
|
49
|
+
regex: 'Thing',
|
|
50
|
+
replacement: capitalizeFirstLetter(className),
|
|
51
|
+
paths: [dest]
|
|
52
|
+
})
|
|
53
|
+
replace({
|
|
54
|
+
regex: 'thing',
|
|
55
|
+
replacement: className,
|
|
56
|
+
paths: [dest]
|
|
57
|
+
})
|
|
58
|
+
replace({
|
|
59
|
+
regex: 'things',
|
|
60
|
+
replacement: className + 's',
|
|
61
|
+
paths: [dest]
|
|
62
|
+
})
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async function copyModel() {
|
|
66
|
+
|
|
67
|
+
const className = process.argv[4]
|
|
68
|
+
const lowerName = className.toLowerCase()
|
|
69
|
+
|
|
70
|
+
const src = 'templates/modelTemplate.js'
|
|
71
|
+
const dest = `app/models/${lowerName}.js`
|
|
72
|
+
await fs.copy(src, dest)
|
|
73
|
+
|
|
74
|
+
replace({
|
|
75
|
+
regex: 'Thing',
|
|
76
|
+
replacement: capitalizeFirstLetter(className),
|
|
77
|
+
paths: [dest]
|
|
78
|
+
})
|
|
79
|
+
replace({
|
|
80
|
+
regex: 'thing',
|
|
81
|
+
replacement: className,
|
|
82
|
+
paths: [dest]
|
|
83
|
+
})
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function capitalizeFirstLetter(word) {
|
|
87
|
+
return word.charAt(0).toUpperCase() + word.slice(1);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function generateKey(size = 32, format = 'base64') {
|
|
91
|
+
const buffer = crypto.randomBytes(size);
|
|
92
|
+
return buffer.toString(format);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function startGenerateKey() {
|
|
96
|
+
console.log('Generate key...');
|
|
97
|
+
const fileName = 'config/default.json'
|
|
98
|
+
fsp.readFile(fileName)
|
|
99
|
+
.then(body => JSON.parse(body))
|
|
100
|
+
.then(json => {
|
|
101
|
+
json.app.key = generateApiKey({method: 'bytes', length: 32})
|
|
102
|
+
return json
|
|
103
|
+
})
|
|
104
|
+
.then(json => JSON.stringify(json, null, 4))
|
|
105
|
+
.then(body => fs.writeFile(fileName, body, 'utf8'))
|
|
106
|
+
.catch(error => console.log(error))
|
|
107
|
+
}
|
package/expressapi/package.json
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import Thing from '../models/thing.js'
|
|
2
|
+
|
|
3
|
+
const ThingController = {
|
|
4
|
+
async index(req, res) {
|
|
5
|
+
try {
|
|
6
|
+
ThingController.tryIndex(req, res)
|
|
7
|
+
}catch(error) {
|
|
8
|
+
res.status(500)
|
|
9
|
+
res.json({
|
|
10
|
+
success: false,
|
|
11
|
+
message: 'Error! The query is failed!'
|
|
12
|
+
})
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
async tryIndex(req, res) {
|
|
16
|
+
const things = await Thing.findAll()
|
|
17
|
+
res.status(200)
|
|
18
|
+
res.json({
|
|
19
|
+
success: true,
|
|
20
|
+
data: things
|
|
21
|
+
})
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default ThingController
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DataTypes } from 'sequelize'
|
|
2
|
+
import sequelize from '../database/database.js'
|
|
3
|
+
|
|
4
|
+
const Thing = sequelize.define('thing', {
|
|
5
|
+
id: {
|
|
6
|
+
type: DataTypes.INTEGER,
|
|
7
|
+
autoIncrement: true,
|
|
8
|
+
primaryKey: true
|
|
9
|
+
},
|
|
10
|
+
name: { type: DataTypes.STRING, allowNull: false }
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
sequelize.sync({
|
|
15
|
+
force: false
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
export default Thing
|
package/manager.js
CHANGED
|
@@ -19,8 +19,9 @@ const genNodejs = (target) => {
|
|
|
19
19
|
updatePackageName(`${target}/package.json`, target);
|
|
20
20
|
console.log('Web client created');
|
|
21
21
|
console.log('Run next commands:');
|
|
22
|
-
console.log(
|
|
23
|
-
console.log('npm
|
|
22
|
+
console.log(` cd ${target}`);
|
|
23
|
+
console.log(' npm install');
|
|
24
|
+
console.log(' npm start');
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
const genWebEsbuildJs = (target) => {
|
|
@@ -28,11 +29,12 @@ const genWebEsbuildJs = (target) => {
|
|
|
28
29
|
updatePackageName(`${target}/package.json`, target);
|
|
29
30
|
console.log('ESBuild client created with Javascript');
|
|
30
31
|
console.log('Run next commands:');
|
|
31
|
-
console.log(
|
|
32
|
-
console.log('npm
|
|
33
|
-
console.log('npm
|
|
32
|
+
console.log(` cd ${target}`);
|
|
33
|
+
console.log(' npm install');
|
|
34
|
+
console.log(' npm run dev');
|
|
35
|
+
console.log(' npm start');
|
|
34
36
|
console.log('If you want to build, run:');
|
|
35
|
-
console.log('npm run build');
|
|
37
|
+
console.log(' npm run build');
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
const genWebEsbuildTs = (target) => {
|
|
@@ -40,11 +42,12 @@ const genWebEsbuildTs = (target) => {
|
|
|
40
42
|
updatePackageName(`${target}/package.json`, target);
|
|
41
43
|
console.log('ESBuild client created with Typescript');
|
|
42
44
|
console.log('Run next commands:');
|
|
43
|
-
console.log(
|
|
44
|
-
console.log('npm
|
|
45
|
-
console.log('npm
|
|
45
|
+
console.log(` cd ${target}`);
|
|
46
|
+
console.log(' npm install');
|
|
47
|
+
console.log(' npm run dev');
|
|
48
|
+
console.log(' npm start');
|
|
46
49
|
console.log('If you want to build, run:');
|
|
47
|
-
console.log('npm run build');
|
|
50
|
+
console.log(' npm run build');
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
const genMockApi = (target) => {
|
|
@@ -52,8 +55,9 @@ const genMockApi = (target) => {
|
|
|
52
55
|
updatePackageName(`${target}/package.json`, target);
|
|
53
56
|
console.log('MockAPI with hai-server 0.0.4');
|
|
54
57
|
console.log('Run next commands:');
|
|
55
|
-
console.log(
|
|
56
|
-
console.log('npm
|
|
58
|
+
console.log(` cd ${target}`);
|
|
59
|
+
console.log(' npm install');
|
|
60
|
+
console.log(' npm start');
|
|
57
61
|
}
|
|
58
62
|
|
|
59
63
|
const genExpressApi = (target) => {
|
package/package.json
CHANGED