corefwnode 3.0.2 → 3.0.4

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/.eslintrc.js CHANGED
@@ -1,40 +1,40 @@
1
- module.exports = {
2
- env: {
3
- es6: true,
4
- node: true,
5
- },
6
- extends: [
7
- 'airbnb-base',
8
- ],
9
- globals: {
10
- Atomics: 'readonly',
11
- SharedArrayBuffer: 'readonly',
12
- },
13
- parserOptions: {
14
- ecmaVersion: 2018,
15
- sourceType: 'module',
16
- },
17
- rules: {
18
- 'indent': ['error', 4],
19
- 'brace-style': ['error', 'allman'],
20
- 'no-throw-literal': 0,
21
- 'max-len': ['error', 120],
22
- 'object-shorthand': ['error', 'always'],
23
- 'curly': ["error", "all"],
24
- 'quotes': ['error', 'single'],
25
- 'no-restricted-syntax': [
26
- 'error',
27
- {
28
- selector: 'LabeledStatement',
29
- message: 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.',
30
- },
31
- {
32
- selector: 'WithStatement',
33
- message: '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.',
34
- },
35
- ],
36
- 'no-continue': 0,
37
- 'no-console': 0,
38
- 'no-param-reassign': ['error', { 'props': false }]
39
- },
40
- };
1
+ module.exports = {
2
+ env: {
3
+ es6: true,
4
+ node: true,
5
+ },
6
+ extends: [
7
+ 'airbnb-base',
8
+ ],
9
+ globals: {
10
+ Atomics: 'readonly',
11
+ SharedArrayBuffer: 'readonly',
12
+ },
13
+ parserOptions: {
14
+ ecmaVersion: 2018,
15
+ sourceType: 'module',
16
+ },
17
+ rules: {
18
+ 'indent': ['error', 4],
19
+ 'brace-style': ['error', 'allman'],
20
+ 'no-throw-literal': 0,
21
+ 'max-len': ['error', 120],
22
+ 'object-shorthand': ['error', 'always'],
23
+ 'curly': ["error", "all"],
24
+ 'quotes': ['error', 'single'],
25
+ 'no-restricted-syntax': [
26
+ 'error',
27
+ {
28
+ selector: 'LabeledStatement',
29
+ message: 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.',
30
+ },
31
+ {
32
+ selector: 'WithStatement',
33
+ message: '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.',
34
+ },
35
+ ],
36
+ 'no-continue': 0,
37
+ 'no-console': 0,
38
+ 'no-param-reassign': ['error', { 'props': false }]
39
+ },
40
+ };
package/build.js CHANGED
@@ -1,266 +1,266 @@
1
- var inquirer = require("inquirer"),
2
- fs = require('fs'),
3
- path = require('path'),
4
- mysql = require('mysql'),
5
- md5 = require('md5'),
6
- exec = require('child_process').exec;
7
-
8
- console.log('Hi, welcome to CoreFw for node.js installation, this script will install serverside template with express.js, clientside template with basic admin features written in Vue.js');
9
-
10
- console.log('Please, create an empty database and user credentials, this will be needed to continue with installation');
11
-
12
- var questions = [
13
- {
14
- type: 'input',
15
- name: 'serverSideLocation',
16
- message: 'Enter server side location (relative to CoreFw location)',
17
- default: '../newprojectserver'
18
- },
19
- {
20
- type: 'input',
21
- name: 'clientSideLocation',
22
- message: 'Enter client side location (relative to CoreFw location)',
23
- default: '../newprojectclient'
24
- },
25
- {
26
- type: 'input',
27
- name: 'mysqlHost',
28
- message: 'Enter mysql host',
29
- default: 'localhost'
30
- },
31
- {
32
- type: 'input',
33
- name: 'mysqlUsername',
34
- message: 'Enter mysql username',
35
- default: 'root'
36
- },
37
- {
38
- type: 'input',
39
- name: 'mysqlPassword',
40
- message: 'Enter mysql password',
41
- default: ''
42
- },
43
- {
44
- type: 'input',
45
- name: 'mysqlPort',
46
- message: 'Enter mysql port',
47
- default: '3306'
48
- },
49
- {
50
- type: 'input',
51
- name: 'mysqlDbname',
52
- message: 'Enter mysql database name',
53
- default: 'newproject'
54
- },
55
- {
56
- type: 'input',
57
- name: 'siteUrl',
58
- message: 'Enter site url',
59
- default: 'http://www.newproject.loc'
60
- },
61
- {
62
- type: 'input',
63
- name: 'siteName',
64
- message: 'Enter site name',
65
- default: 'NewProject'
66
- },
67
- {
68
- type: 'input',
69
- name: 'adminUsername',
70
- message: 'Enter administrator username',
71
- default: 'mirko'
72
- },
73
- {
74
- type: 'input',
75
- name: 'adminPassword',
76
- message: 'Enter administrator password',
77
- default: 'mirko'
78
- },
79
- {
80
- type: 'input',
81
- name: 'adminEmail',
82
- message: 'Enter administrator E-mail',
83
- default: 'mirko@slavko.com'
84
- }
85
- ];
86
-
87
- inquirer.prompt(questions).then(answers =>
88
- {
89
- if(!fs.existsSync(answers.serverSideLocation))
90
- {
91
- var folders = answers.serverSideLocation.split('/');
92
- var finFolder = [];
93
- for(var i=0;i<folders.length;i++)
94
- {
95
- var folder = folders[i];
96
- finFolder.push(folder);
97
- if(folder == '..') continue;
98
- if(!fs.existsSync(finFolder.join('/')))
99
- {
100
- fs.mkdirSync(finFolder.join('/'));
101
- }
102
- }
103
- }
104
-
105
- console.log('Copying server side to: '+answers.serverSideLocation)
106
- copyFolderRecursiveSync('./serverside/.', answers.serverSideLocation);
107
-
108
-
109
- if(!fs.existsSync(answers.clientSideLocation))
110
- {
111
- var folders = answers.clientSideLocation.split('/');
112
- var finFolder = [];
113
- for(var i=0;i<folders.length;i++)
114
- {
115
- var folder = folders[i];
116
- finFolder.push(folder);
117
- if(folder == '..') continue;
118
- if(!fs.existsSync(finFolder.join('/')))
119
- {
120
- fs.mkdirSync(finFolder.join('/'));
121
- }
122
- }
123
- }
124
-
125
- console.log('Copying client side to: '+answers.clientSideLocation)
126
- copyFolderRecursiveSync('./clientside/.', answers.clientSideLocation);
127
-
128
- var connection = mysql.createConnection({
129
- host: answers.mysqlHost,
130
- user: answers.mysqlUsername,
131
- password: answers.mysqlPassword,
132
- database: answers.mysqlDbname,
133
- port: answers.mysqlPort,
134
- multipleStatements: true
135
- });
136
-
137
- var salt = md5(new Date().getTime());
138
-
139
- var configStr = `module.exports =
140
- {
141
- mysql: {
142
- host: '`+answers.mysqlHost+`',
143
- username: '`+answers.mysqlUsername+`',
144
- password: '`+answers.mysqlPassword+`',
145
- port: '`+answers.mysqlPort+`',
146
- dbname: '`+answers.mysqlDbname+`',
147
- connectionLimit: 100
148
- },
149
- clientSideLocation: '`+answers.clientSideLocation+`',
150
- serverSideLocation: '`+answers.serverSideLocation+`',
151
- cookieName: '`+answers.siteName+`',
152
- cookieLenght: 57600000,
153
- salt: '`+salt+`',
154
- siteUrl: '`+answers.siteUrl+`',
155
- siteName: '`+answers.siteName+`',
156
- siteEmail: 'info@coreaplikacije.hr'
157
- };`;
158
-
159
- if(!fs.existsSync(answers.serverSideLocation+'/config'))
160
- {
161
- fs.mkdirSync(answers.serverSideLocation+'/config');
162
- }
163
-
164
- fs.writeFileSync(answers.serverSideLocation+'/config/dev.js', configStr);
165
-
166
- var data = fs.readFileSync(answers.clientSideLocation+'/package.json').toString('UTF-8');
167
- var re = new RegExp("SERVERSIDEPATH", "g");
168
- data = data.replace(re, answers.serverSideLocation);
169
-
170
- fs.writeFileSync(answers.clientSideLocation+'/package.json', data);
171
-
172
- console.log('Installing server side dependencies in: '+answers.serverSideLocation)
173
- exec('npm install',
174
- {
175
- cwd: answers.serverSideLocation
176
- }, function (error, stdout, stderr)
177
- {
178
- console.log(error);
179
- console.log(stdout);
180
- console.log(stderr);
181
- if(error !== null)
182
- {
183
- console.log('exec error: ' + error);
184
- return;
185
- }
186
-
187
- console.log('Installing client side dependencies in: '+answers.clientSideLocation)
188
- exec('npm install',
189
- {
190
- cwd: answers.clientSideLocation
191
- }, function (error, stdout, stderr)
192
- {
193
- console.log(stdout);
194
- if(error !== null)
195
- {
196
- console.log('exec error: ' + error);
197
- return;
198
- }
199
-
200
- console.log('Importing default database')
201
-
202
- var data = fs.readFileSync('./data/dump.sql');
203
-
204
- connection.query(data.toString('UTF-8'), function(err, results)
205
- {
206
- if(err)
207
- {
208
- throw err;
209
- return;
210
- }
211
-
212
- var password = md5(answers.adminPassword+salt);
213
-
214
- connection.query("UPDATE users SET username=?, password=?, userEmail=? WHERE userId=1", [answers.adminUsername, password, answers.adminEmail], function(err, results)
215
- {
216
- if(err)
217
- {
218
- throw err;
219
- return;
220
- }
221
-
222
- connection.end();
223
- console.log('Finished, start your application by running \'npm run dev\' in serverside directory and \'npm run serve\' in clientside directory')
224
- return;
225
- });
226
- });
227
- });
228
- });
229
- });
230
-
231
- function copyFileSync( source, target ) {
232
-
233
- var targetFile = target;
234
-
235
- //if target is a directory a new file with the same name will be created
236
- if ( fs.existsSync( target ) ) {
237
- if ( fs.lstatSync( target ).isDirectory() ) {
238
- targetFile = path.join( target, path.basename( source ) );
239
- }
240
- }
241
-
242
- fs.writeFileSync(targetFile, fs.readFileSync(source));
243
- }
244
-
245
- function copyFolderRecursiveSync( source, target ) {
246
- var files = [];
247
-
248
- //check if folder needs to be created or integrated
249
- var targetFolder = path.join( target, path.basename( source ) );
250
- if ( !fs.existsSync( targetFolder ) ) {
251
- fs.mkdirSync( targetFolder );
252
- }
253
-
254
- //copy
255
- if ( fs.lstatSync( source ).isDirectory() ) {
256
- files = fs.readdirSync( source );
257
- files.forEach( function ( file ) {
258
- var curSource = path.join( source, file );
259
- if ( fs.lstatSync( curSource ).isDirectory() ) {
260
- copyFolderRecursiveSync( curSource, targetFolder );
261
- } else {
262
- copyFileSync( curSource, targetFolder );
263
- }
264
- } );
265
- }
266
- }
1
+ var inquirer = require("inquirer"),
2
+ fs = require('fs'),
3
+ path = require('path'),
4
+ mysql = require('mysql'),
5
+ md5 = require('md5'),
6
+ exec = require('child_process').exec;
7
+
8
+ console.log('Hi, welcome to CoreFw for node.js installation, this script will install serverside template with express.js, clientside template with basic admin features written in Vue.js');
9
+
10
+ console.log('Please, create an empty database and user credentials, this will be needed to continue with installation');
11
+
12
+ var questions = [
13
+ {
14
+ type: 'input',
15
+ name: 'serverSideLocation',
16
+ message: 'Enter server side location (relative to CoreFw location)',
17
+ default: '../newprojectserver'
18
+ },
19
+ {
20
+ type: 'input',
21
+ name: 'clientSideLocation',
22
+ message: 'Enter client side location (relative to CoreFw location)',
23
+ default: '../newprojectclient'
24
+ },
25
+ {
26
+ type: 'input',
27
+ name: 'mysqlHost',
28
+ message: 'Enter mysql host',
29
+ default: 'localhost'
30
+ },
31
+ {
32
+ type: 'input',
33
+ name: 'mysqlUsername',
34
+ message: 'Enter mysql username',
35
+ default: 'root'
36
+ },
37
+ {
38
+ type: 'input',
39
+ name: 'mysqlPassword',
40
+ message: 'Enter mysql password',
41
+ default: ''
42
+ },
43
+ {
44
+ type: 'input',
45
+ name: 'mysqlPort',
46
+ message: 'Enter mysql port',
47
+ default: '3306'
48
+ },
49
+ {
50
+ type: 'input',
51
+ name: 'mysqlDbname',
52
+ message: 'Enter mysql database name',
53
+ default: 'newproject'
54
+ },
55
+ {
56
+ type: 'input',
57
+ name: 'siteUrl',
58
+ message: 'Enter site url',
59
+ default: 'http://www.newproject.loc'
60
+ },
61
+ {
62
+ type: 'input',
63
+ name: 'siteName',
64
+ message: 'Enter site name',
65
+ default: 'NewProject'
66
+ },
67
+ {
68
+ type: 'input',
69
+ name: 'adminUsername',
70
+ message: 'Enter administrator username',
71
+ default: 'mirko'
72
+ },
73
+ {
74
+ type: 'input',
75
+ name: 'adminPassword',
76
+ message: 'Enter administrator password',
77
+ default: 'mirko'
78
+ },
79
+ {
80
+ type: 'input',
81
+ name: 'adminEmail',
82
+ message: 'Enter administrator E-mail',
83
+ default: 'mirko@slavko.com'
84
+ }
85
+ ];
86
+
87
+ inquirer.prompt(questions).then(answers =>
88
+ {
89
+ if(!fs.existsSync(answers.serverSideLocation))
90
+ {
91
+ var folders = answers.serverSideLocation.split('/');
92
+ var finFolder = [];
93
+ for(var i=0;i<folders.length;i++)
94
+ {
95
+ var folder = folders[i];
96
+ finFolder.push(folder);
97
+ if(folder == '..') continue;
98
+ if(!fs.existsSync(finFolder.join('/')))
99
+ {
100
+ fs.mkdirSync(finFolder.join('/'));
101
+ }
102
+ }
103
+ }
104
+
105
+ console.log('Copying server side to: '+answers.serverSideLocation)
106
+ copyFolderRecursiveSync('./serverside/.', answers.serverSideLocation);
107
+
108
+
109
+ if(!fs.existsSync(answers.clientSideLocation))
110
+ {
111
+ var folders = answers.clientSideLocation.split('/');
112
+ var finFolder = [];
113
+ for(var i=0;i<folders.length;i++)
114
+ {
115
+ var folder = folders[i];
116
+ finFolder.push(folder);
117
+ if(folder == '..') continue;
118
+ if(!fs.existsSync(finFolder.join('/')))
119
+ {
120
+ fs.mkdirSync(finFolder.join('/'));
121
+ }
122
+ }
123
+ }
124
+
125
+ console.log('Copying client side to: '+answers.clientSideLocation)
126
+ copyFolderRecursiveSync('./clientside/.', answers.clientSideLocation);
127
+
128
+ var connection = mysql.createConnection({
129
+ host: answers.mysqlHost,
130
+ user: answers.mysqlUsername,
131
+ password: answers.mysqlPassword,
132
+ database: answers.mysqlDbname,
133
+ port: answers.mysqlPort,
134
+ multipleStatements: true
135
+ });
136
+
137
+ var salt = md5(new Date().getTime());
138
+
139
+ var configStr = `module.exports =
140
+ {
141
+ mysql: {
142
+ host: '`+answers.mysqlHost+`',
143
+ username: '`+answers.mysqlUsername+`',
144
+ password: '`+answers.mysqlPassword+`',
145
+ port: '`+answers.mysqlPort+`',
146
+ dbname: '`+answers.mysqlDbname+`',
147
+ connectionLimit: 100
148
+ },
149
+ clientSideLocation: '`+answers.clientSideLocation+`',
150
+ serverSideLocation: '`+answers.serverSideLocation+`',
151
+ cookieName: '`+answers.siteName+`',
152
+ cookieLenght: 57600000,
153
+ salt: '`+salt+`',
154
+ siteUrl: '`+answers.siteUrl+`',
155
+ siteName: '`+answers.siteName+`',
156
+ siteEmail: 'info@coreaplikacije.hr'
157
+ };`;
158
+
159
+ if(!fs.existsSync(answers.serverSideLocation+'/config'))
160
+ {
161
+ fs.mkdirSync(answers.serverSideLocation+'/config');
162
+ }
163
+
164
+ fs.writeFileSync(answers.serverSideLocation+'/config/dev.js', configStr);
165
+
166
+ var data = fs.readFileSync(answers.clientSideLocation+'/package.json').toString('UTF-8');
167
+ var re = new RegExp("SERVERSIDEPATH", "g");
168
+ data = data.replace(re, answers.serverSideLocation);
169
+
170
+ fs.writeFileSync(answers.clientSideLocation+'/package.json', data);
171
+
172
+ console.log('Installing server side dependencies in: '+answers.serverSideLocation)
173
+ exec('npm install',
174
+ {
175
+ cwd: answers.serverSideLocation
176
+ }, function (error, stdout, stderr)
177
+ {
178
+ console.log(error);
179
+ console.log(stdout);
180
+ console.log(stderr);
181
+ if(error !== null)
182
+ {
183
+ console.log('exec error: ' + error);
184
+ return;
185
+ }
186
+
187
+ console.log('Installing client side dependencies in: '+answers.clientSideLocation)
188
+ exec('npm install',
189
+ {
190
+ cwd: answers.clientSideLocation
191
+ }, function (error, stdout, stderr)
192
+ {
193
+ console.log(stdout);
194
+ if(error !== null)
195
+ {
196
+ console.log('exec error: ' + error);
197
+ return;
198
+ }
199
+
200
+ console.log('Importing default database')
201
+
202
+ var data = fs.readFileSync('./data/dump.sql');
203
+
204
+ connection.query(data.toString('UTF-8'), function(err, results)
205
+ {
206
+ if(err)
207
+ {
208
+ throw err;
209
+ return;
210
+ }
211
+
212
+ var password = md5(answers.adminPassword+salt);
213
+
214
+ connection.query("UPDATE users SET username=?, password=?, userEmail=? WHERE userId=1", [answers.adminUsername, password, answers.adminEmail], function(err, results)
215
+ {
216
+ if(err)
217
+ {
218
+ throw err;
219
+ return;
220
+ }
221
+
222
+ connection.end();
223
+ console.log('Finished, start your application by running \'npm run dev\' in serverside directory and \'npm run serve\' in clientside directory')
224
+ return;
225
+ });
226
+ });
227
+ });
228
+ });
229
+ });
230
+
231
+ function copyFileSync( source, target ) {
232
+
233
+ var targetFile = target;
234
+
235
+ //if target is a directory a new file with the same name will be created
236
+ if ( fs.existsSync( target ) ) {
237
+ if ( fs.lstatSync( target ).isDirectory() ) {
238
+ targetFile = path.join( target, path.basename( source ) );
239
+ }
240
+ }
241
+
242
+ fs.writeFileSync(targetFile, fs.readFileSync(source));
243
+ }
244
+
245
+ function copyFolderRecursiveSync( source, target ) {
246
+ var files = [];
247
+
248
+ //check if folder needs to be created or integrated
249
+ var targetFolder = path.join( target, path.basename( source ) );
250
+ if ( !fs.existsSync( targetFolder ) ) {
251
+ fs.mkdirSync( targetFolder );
252
+ }
253
+
254
+ //copy
255
+ if ( fs.lstatSync( source ).isDirectory() ) {
256
+ files = fs.readdirSync( source );
257
+ files.forEach( function ( file ) {
258
+ var curSource = path.join( source, file );
259
+ if ( fs.lstatSync( curSource ).isDirectory() ) {
260
+ copyFolderRecursiveSync( curSource, targetFolder );
261
+ } else {
262
+ copyFileSync( curSource, targetFolder );
263
+ }
264
+ } );
265
+ }
266
+ }