nodefony 6.5.7 → 6.10.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/CHANGELOG.md +436 -0
- package/README.md +2 -5
- package/autoloader.es6 +7 -2
- package/cli/builder/bundles/users-bundle/Command/usersCommand.js +1 -1
- package/cli/builder/bundles/users-bundle/Entity/sequelize/userEntity.js +5 -1
- package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.prod.config.js +3 -3
- package/cli/builder/bundles/users-bundle/Resources/config/webpack.config.js +4 -0
- package/cli/builder/bundles/users-bundle/Resources/graphiql/graphiql.jsx +40 -4
- package/cli/builder/bundles/users-bundle/Resources/scss/users.scss +9 -10
- package/cli/builder/bundles/users-bundle/Resources/swagger/swagger.js +3 -2
- package/cli/builder/bundles/users-bundle/Resources/translations/login.en_en.yml +3 -1
- package/cli/builder/bundles/users-bundle/Resources/translations/login.fr_fr.yml +2 -0
- package/cli/builder/bundles/users-bundle/Resources/views/documentation/base.html.twig +1 -2
- package/cli/builder/bundles/users-bundle/Resources/views/footer.html.twig +2 -4
- package/cli/builder/bundles/users-bundle/Resources/views/graphiql/index.html.twig +4 -9
- package/cli/builder/bundles/users-bundle/Resources/views/header.html.twig +63 -66
- package/cli/builder/bundles/users-bundle/Resources/views/swagger/index.html.twig +4 -12
- package/cli/builder/bundles/users-bundle/controller/api/graphql/graphqlController.js +2 -0
- package/cli/builder/bundles/users-bundle/controller/usersController.js +1 -1
- package/cli/builder/bundles/users-bundle/package.json +29 -29
- package/cli/builder/bundles/users-bundle/src/providers/mongoose/userProvider.js +3 -3
- package/cli/builder/microService/skeletons/config/pm2.config.js +1 -1
- package/cli/builder/microService/skeletons/config/webpack/webpack.config.dev.js +1 -6
- package/cli/builder/microService/skeletons/config/webpack/webpack.config.prod.js +1 -6
- package/cli/builder/microService/skeletons/config/webpack.config.js +40 -34
- package/cli/builder/microService/skeletons/package.json +27 -22
- package/cli/builder/microService/skeletons/src/browser/index.css +1 -1
- package/cli/builder/microService/skeletons/src/browser/index.js +1 -3
- package/cli/builder/microService/skeletons/src/browser/socketio.js +46 -0
- package/cli/builder/microService/skeletons/src/node/examples/index.js +12 -52
- package/cli/builder/microService/skeletons/src/node/index.js +18 -18
- package/cli/builder/microService/skeletons/src/node/services/servers/http.js +9 -1
- package/cli/builder/microService/skeletons/src/node/services/servers/https.js +9 -1
- package/cli/builder/microService/skeletons/src/node/services/socketio/socketio.js +15 -12
- package/cli/builder/microService/skeletons/src/templates/base.html +12 -0
- package/cli/builder/microService/skeletons/src/templates/socket.html +23 -0
- package/cli/builder/project/skeletons/README.md +2 -5
- package/cli/builder/project/skeletons/config/config.js.skeleton +2 -4
- package/cli/builder/project/skeletons/package.json.skeleton +7 -7
- package/cli/builder/sandbox/skeletons/Resources/js/entry.js +2 -2
- package/cli/builder/skeletons/config/nodefony/framework-bundle.js +2 -3
- package/cli/builder/skeletons/config/nodefony/http-bundle.js +5 -3
- package/cli/builder/skeletons/config/nodefony/mongoose-bundle.js +2 -6
- package/cli/builder/skeletons/config/nodefony/redis-bundle.js +16 -11
- package/cli/builder/skeletons/config/webpack/webpack.prod.config.js +1 -11
- package/cli/builder/skeletons/config/webpack.config.js +5 -5
- package/cli/builder/skeletons/package.json +25 -20
- package/cli/builder/vue/skeletons/vue.config.js +4 -4
- package/cli/builder/vue/vueBuilder.js +1 -1
- package/cli/install/install.js +2 -1
- package/cli.es6 +6 -12
- package/error.es6 +2 -1
- package/kernel/api/graphqlApi.es6 +17 -7
- package/kernel/bundle.es6 +1 -1
- package/kernel/cliKernel.es6 +2 -2
- package/kernel/controllers/controller.es6 +4 -0
- package/kernel/kernel.es6 +1 -1
- package/kernel/reader.es6 +1 -0
- package/kernel/security/secureArea.es6 +3 -1
- package/nodefony.es6 +1 -1
- package/package.json +37 -38
- package/cli/builder/bundles/users-bundle/Resources/views/index.html.twig +0 -19
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
const webpack = require('webpack');
|
|
2
2
|
const path = require('path');
|
|
3
3
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
4
|
+
const htmlPlugin = require('html-webpack-plugin');
|
|
4
5
|
const { merge } = require('webpack-merge');
|
|
5
|
-
const precss = require('precss');
|
|
6
|
-
const autoprefixer = require('autoprefixer');
|
|
7
6
|
|
|
8
7
|
let conf = null;
|
|
9
8
|
if (process.env.NODE_ENV === "development") {
|
|
@@ -19,7 +18,8 @@ module.exports = merge(conf, {
|
|
|
19
18
|
* See: http://webpack.github.io/docs/configuration.html#entry
|
|
20
19
|
*/
|
|
21
20
|
entry: {
|
|
22
|
-
|
|
21
|
+
app: path.resolve(__dirname, "..", "src", "browser", "index.js"),
|
|
22
|
+
socket: path.resolve(__dirname, "..", "src", "browser", "socketio.js")
|
|
23
23
|
},
|
|
24
24
|
target: 'web',
|
|
25
25
|
//watch: true,
|
|
@@ -39,7 +39,7 @@ module.exports = merge(conf, {
|
|
|
39
39
|
*
|
|
40
40
|
* See: http://webpack.github.io/docs/configuration.html#resolve-extensions
|
|
41
41
|
*/
|
|
42
|
-
extensions: ['.js'
|
|
42
|
+
extensions: ['.js'],
|
|
43
43
|
|
|
44
44
|
// An array of directory names to be resolved to the current directory
|
|
45
45
|
modules: ["node_modules"]
|
|
@@ -52,52 +52,58 @@ module.exports = merge(conf, {
|
|
|
52
52
|
module: {
|
|
53
53
|
rules: [{
|
|
54
54
|
// BABEL TRANSCODE
|
|
55
|
-
test: new RegExp("
|
|
55
|
+
test: new RegExp("\.js$"),
|
|
56
56
|
exclude: new RegExp("node_modules"),
|
|
57
57
|
use: [{
|
|
58
58
|
loader: 'babel-loader',
|
|
59
59
|
options: {
|
|
60
60
|
presets: ['@babel/preset-env']
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
}]
|
|
63
63
|
}, {
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
test: /\.(sa|sc|c)ss$/,
|
|
65
|
+
use: [
|
|
66
|
+
//'css-hot-loader',
|
|
66
67
|
MiniCssExtractPlugin.loader,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
options: {
|
|
70
|
-
sourceMap: true
|
|
71
|
-
}
|
|
72
|
-
}, {
|
|
73
|
-
loader: 'resolve-url-loader',
|
|
74
|
-
options: {}
|
|
75
|
-
}, {
|
|
76
|
-
loader: 'postcss-loader', // Run post css actions
|
|
68
|
+
{
|
|
69
|
+
loader: "css-loader",
|
|
77
70
|
options: {
|
|
78
|
-
|
|
79
|
-
plugins: [autoprefixer({}), precss({})]
|
|
80
|
-
}
|
|
71
|
+
sourceMap: true
|
|
81
72
|
}
|
|
82
73
|
}, {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
74
|
+
loader: "sass-loader",
|
|
75
|
+
options: {
|
|
76
|
+
sourceMap: true
|
|
77
|
+
}
|
|
87
78
|
}
|
|
88
79
|
]
|
|
89
80
|
}, {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
}]
|
|
98
|
-
}]
|
|
81
|
+
test: /.(ttf|otf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
|
|
82
|
+
type: 'asset/inline'
|
|
83
|
+
},{
|
|
84
|
+
test: /\.html$/,
|
|
85
|
+
loader: 'html-loader'
|
|
86
|
+
}]
|
|
99
87
|
},
|
|
100
88
|
plugins: [
|
|
89
|
+
new MiniCssExtractPlugin({
|
|
90
|
+
filename: "./css/[name].css"
|
|
91
|
+
}),
|
|
92
|
+
new htmlPlugin({
|
|
93
|
+
filename: path.resolve("dist", "index.ejs"),
|
|
94
|
+
template: path.resolve("src", "templates", "base.html"),
|
|
95
|
+
title: conf.name,
|
|
96
|
+
//cache: !dev,
|
|
97
|
+
chunks: ['app'],
|
|
98
|
+
templateParameters: conf
|
|
99
|
+
}),
|
|
100
|
+
new htmlPlugin({
|
|
101
|
+
filename: path.resolve("dist", "socketio.ejs"),
|
|
102
|
+
template: path.resolve("src", "templates", "socket.html"),
|
|
103
|
+
title: conf.name,
|
|
104
|
+
chunks: ['socket'],
|
|
105
|
+
templateParameters: conf
|
|
106
|
+
}),
|
|
101
107
|
new webpack.DefinePlugin({
|
|
102
108
|
'process.env': {
|
|
103
109
|
'NODE_ENV': JSON.stringify(process.env.NODE_ENV),
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
"scripts": {
|
|
16
16
|
"nodefony": "nodefony",
|
|
17
17
|
"pm2": "pm2",
|
|
18
|
-
"install": "env-cmd -e webpack_prod webpack --env production --config config/webpack.config.js
|
|
18
|
+
"install": "env-cmd -e webpack_prod webpack --env production --config config/webpack.config.js",
|
|
19
19
|
"start": "node ./bin/cli",
|
|
20
20
|
"dev": "env-cmd -e development pm2 start config/pm2.config.js --only {{name}} --env development --no-daemon",
|
|
21
21
|
"dev_debug": "env-cmd -e development_debug pm2 start config/pm2.config.js --only {{name}} --env development --no-daemon",
|
|
22
|
-
"prod": "env-cmd -e production pm2 start config/pm2.config.js --env production",
|
|
22
|
+
"prod": "env-cmd -e webpack_prod webpack --env production --config config/webpack.config.js;env-cmd -e production pm2 start config/pm2.config.js --env production",
|
|
23
23
|
"examples": "env-cmd -e development pm2 start config/pm2.config.js --only examples --env development --no-daemon",
|
|
24
24
|
"stop": "pm2 stop {{name}}",
|
|
25
25
|
"restart": "pm2 restart {{name}}",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"monit": "pm2 monit",
|
|
29
29
|
"status": "pm2 status",
|
|
30
30
|
"kill": "pm2 kill",
|
|
31
|
-
"webpack": "env-cmd -e webpack_prod webpack --env
|
|
31
|
+
"webpack": "env-cmd -e webpack_prod webpack --env production --stats verbose --config config/webpack.config.js",
|
|
32
32
|
"ssl": "./bin/generateCertificates.sh",
|
|
33
33
|
"test": "env-cmd -e test mocha --require @babel/register --recursive ./tests"
|
|
34
34
|
},
|
|
@@ -39,32 +39,37 @@
|
|
|
39
39
|
"microservice"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
+
"ejs": "^3.1.6",
|
|
42
43
|
"env-cmd": "^10.1.0",
|
|
43
44
|
"hello_world": "./src/n-api",
|
|
44
|
-
"markdown-it": "^12.0
|
|
45
|
+
"markdown-it": "^12.2.0",
|
|
45
46
|
"nodefony": "^{{version}}",
|
|
46
|
-
"
|
|
47
|
+
"nodefony-client": "^6.0.0-beta.18",
|
|
48
|
+
"pm2": "^5.1.2",
|
|
47
49
|
"pm2-logrotate": "^2.7.0",
|
|
48
|
-
"
|
|
49
|
-
"socket.io
|
|
50
|
+
"serve-static": "^1.14.1",
|
|
51
|
+
"socket.io": "^4.3.1",
|
|
52
|
+
"socket.io-client": "^4.3.2 "
|
|
50
53
|
},
|
|
51
54
|
"devDependencies": {
|
|
52
|
-
"@babel/cli": "^7.
|
|
53
|
-
"@babel/core": "^7.
|
|
54
|
-
"@babel/preset-env": "^7.
|
|
55
|
-
"@babel/register": "^7.
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
55
|
+
"@babel/cli": "^7.15.7",
|
|
56
|
+
"@babel/core": "^7.15.8",
|
|
57
|
+
"@babel/preset-env": "^7.15.8",
|
|
58
|
+
"@babel/register": "^7.15.3",
|
|
59
|
+
"@mapbox/node-pre-gyp": "^1.0.6",
|
|
60
|
+
"babel-loader": "^8.2.3",
|
|
61
|
+
"chai": "^4.3.4",
|
|
62
|
+
"html-loader": "^3.0.0",
|
|
63
|
+
"html-webpack-plugin": "^5.5.0",
|
|
64
|
+
"mini-css-extract-plugin": "^2.4.3",
|
|
65
|
+
"mocha": "^9.1.3",
|
|
66
|
+
"node-gyp": "^8.3.0",
|
|
67
|
+
"open": "^8.4.0",
|
|
68
|
+
"sass-loader": "^12.2.0",
|
|
64
69
|
"terser-webpack-plugin": "^5.0.3",
|
|
65
|
-
"webpack": "^5.
|
|
66
|
-
"webpack-cli": "^4.1
|
|
67
|
-
"webpack-merge": "^5.
|
|
70
|
+
"webpack": "^5.60.0",
|
|
71
|
+
"webpack-cli": "^4.9.1",
|
|
72
|
+
"webpack-merge": "^5.8.0"
|
|
68
73
|
},
|
|
69
74
|
"license": "ISC"
|
|
70
75
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
const nodefony = require("nodefony");
|
|
2
|
-
const io = require('socket.io-client');
|
|
1
|
+
const nodefony = require("nodefony-client");
|
|
3
2
|
|
|
4
3
|
import "./index.css";
|
|
5
4
|
/*
|
|
@@ -11,7 +10,6 @@ class App extends nodefony.Service {
|
|
|
11
10
|
this.initSyslog();
|
|
12
11
|
this.log("INIT APP CLIENT");
|
|
13
12
|
this.log(`Nodefony Client version : ${nodefony.version}`);
|
|
14
|
-
this.io = io();
|
|
15
13
|
}
|
|
16
14
|
}
|
|
17
15
|
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
const nodefony = require("nodefony-client");
|
|
2
|
+
import { io } from "socket.io-client";
|
|
3
|
+
|
|
4
|
+
import "./index.css";
|
|
5
|
+
/*
|
|
6
|
+
* Class
|
|
7
|
+
*/
|
|
8
|
+
class App extends nodefony.Service {
|
|
9
|
+
constructor() {
|
|
10
|
+
super("App");
|
|
11
|
+
this.initSyslog();
|
|
12
|
+
this.log("INIT APP CLIENT");
|
|
13
|
+
this.log(`Nodefony Client version : ${nodefony.version}`);
|
|
14
|
+
this.init()
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
init(){
|
|
18
|
+
const socket = io('/',{
|
|
19
|
+
transports: [ 'websocket' ],
|
|
20
|
+
forceNew: true
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
socket.on("connect_error", function(e){
|
|
24
|
+
console.error(e);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
socket.on('connect', function(){
|
|
28
|
+
console.log("connect", socket.connected);
|
|
29
|
+
setTimeout(()=>{
|
|
30
|
+
socket.emit("microservice", "send after 5 s");
|
|
31
|
+
}, 5000);
|
|
32
|
+
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
socket.on('microservice', function(data){
|
|
36
|
+
console.log(data);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
socket.on('disconnect', function(){
|
|
40
|
+
console.log("disconnect");
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export default new App();
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const nodefony = require("nodefony");
|
|
2
2
|
const path = require("path");
|
|
3
3
|
const config = require(path.resolve("config", "config.js"));
|
|
4
|
+
const ejs = require('ejs');
|
|
4
5
|
|
|
5
6
|
// examples services
|
|
6
7
|
const Server = require(path.resolve("src", "node", "services", "servers", "http.js"));
|
|
@@ -46,8 +47,11 @@ class Service extends nodefony.Service {
|
|
|
46
47
|
// add in service container
|
|
47
48
|
this.set("http", http);
|
|
48
49
|
http.on("request", async (request, response) => {
|
|
49
|
-
response.statusCode = 200;
|
|
50
|
-
response.setHeader('Content-Type', 'text/html');
|
|
50
|
+
//response.statusCode = 200;
|
|
51
|
+
//response.setHeader('Content-Type', 'text/html');
|
|
52
|
+
response.writeHead(200, {
|
|
53
|
+
'Content-Type': 'text/html;charset=utf-8'
|
|
54
|
+
})
|
|
51
55
|
http.log(` ${response.statusCode} url : http://${http.settings.hostname}:${http.settings.port}/`);
|
|
52
56
|
response.end(await this.renderHtml());
|
|
53
57
|
});
|
|
@@ -83,57 +87,13 @@ class Service extends nodefony.Service {
|
|
|
83
87
|
}
|
|
84
88
|
|
|
85
89
|
async renderHtml() {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
<style>
|
|
92
|
-
body { font: 13px Helvetica, Arial; }
|
|
93
|
-
</style>
|
|
94
|
-
</head>
|
|
95
|
-
<body>
|
|
96
|
-
<p align="center">
|
|
97
|
-
<img src="https://github.com/nodefony/nodefony-core/raw/master/src/nodefony/bundles/framework-bundle/Resources/public/images/nodefony-logo.png"><br>
|
|
98
|
-
</p>
|
|
99
|
-
<h1 align="center">NODEFONY V6 Micro Service</h1>
|
|
100
|
-
<h2 align="center">Socket Io <h2>
|
|
101
|
-
|
|
102
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.dev.js"></script>
|
|
103
|
-
<script
|
|
104
|
-
src="https://code.jquery.com/jquery-3.4.1.min.js"
|
|
105
|
-
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
|
|
106
|
-
crossorigin="anonymous"></script>
|
|
107
|
-
|
|
108
|
-
<script>
|
|
109
|
-
var socket = io('/',{
|
|
110
|
-
transports: [ 'websocket' ],
|
|
111
|
-
forceNew: true
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
socket.on("connect_error", function(e){
|
|
115
|
-
console.error(e);
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
socket.on('connect', function(){
|
|
119
|
-
console.log("connect", socket.connected);
|
|
120
|
-
setTimeout(()=>{
|
|
121
|
-
socket.emit("microservice", "send after 5 s");
|
|
122
|
-
}, 5000);
|
|
123
|
-
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
socket.on('microservice', function(data){
|
|
127
|
-
console.log(data);
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
socket.on('disconnect', function(){
|
|
131
|
-
console.log("disconnect");
|
|
90
|
+
const filename = path.resolve("dist", "socketio.ejs")
|
|
91
|
+
const res = await ejs.renderFile(filename, {
|
|
92
|
+
body: ""
|
|
93
|
+
}, {
|
|
94
|
+
async: true
|
|
132
95
|
});
|
|
133
|
-
|
|
134
|
-
</body>
|
|
135
|
-
</html>
|
|
136
|
-
`;
|
|
96
|
+
return res;
|
|
137
97
|
}
|
|
138
98
|
|
|
139
99
|
terminate(code){
|
|
@@ -3,6 +3,7 @@ const path = require("path");
|
|
|
3
3
|
const Server = require(path.resolve("src", "node", "services", "servers", "http.js"));
|
|
4
4
|
const ServerSecure = require(path.resolve("src", "node", "services", "servers", "https.js"));
|
|
5
5
|
const Markdown = require(path.resolve("src", "node", "services", "markdown", "markdown.js"));
|
|
6
|
+
const ejs = require('ejs');
|
|
6
7
|
|
|
7
8
|
class Service extends nodefony.Service {
|
|
8
9
|
|
|
@@ -31,8 +32,11 @@ class Service extends nodefony.Service {
|
|
|
31
32
|
this.set("http", http);
|
|
32
33
|
await http.start();
|
|
33
34
|
http.on("request", async (request, response) => {
|
|
34
|
-
response.statusCode = 200;
|
|
35
|
-
response.setHeader('Content-Type', 'text/html');
|
|
35
|
+
//response.statusCode = 200;
|
|
36
|
+
//response.setHeader('Content-Type', 'text/html');
|
|
37
|
+
response.writeHead(200, {
|
|
38
|
+
'Content-Type': 'text/html;charset=utf-8'
|
|
39
|
+
})
|
|
36
40
|
http.log(` ${response.statusCode} url : http://${http.settings.hostname}:${http.settings.port}/`);
|
|
37
41
|
response.end(await this.renderHtml());
|
|
38
42
|
});
|
|
@@ -45,8 +49,11 @@ class Service extends nodefony.Service {
|
|
|
45
49
|
this.set("https", https);
|
|
46
50
|
await https.start();
|
|
47
51
|
https.on("request", async (request, response) => {
|
|
48
|
-
response.statusCode = 200;
|
|
49
|
-
response.setHeader('Content-Type', 'text/html');
|
|
52
|
+
//response.statusCode = 200;
|
|
53
|
+
//response.setHeader('Content-Type', 'text/html');
|
|
54
|
+
response.writeHead(200, {
|
|
55
|
+
'Content-Type': 'text/html;charset=utf-8'
|
|
56
|
+
})
|
|
50
57
|
https.log(` ${response.statusCode} url : https://${https.settings.hostname}:${https.settings.port}/`);
|
|
51
58
|
response.end(await this.renderHtml());
|
|
52
59
|
});
|
|
@@ -56,20 +63,13 @@ class Service extends nodefony.Service {
|
|
|
56
63
|
async renderHtml() {
|
|
57
64
|
const readme = path.resolve("README.md");
|
|
58
65
|
const md = await this.markdown.fileToMarkdown(readme);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
</style>
|
|
67
|
-
</head>
|
|
68
|
-
<body>
|
|
69
|
-
${md}
|
|
70
|
-
</body>
|
|
71
|
-
</html>
|
|
72
|
-
`;
|
|
66
|
+
const filename = path.resolve("dist", "index.ejs")
|
|
67
|
+
const res = await ejs.renderFile(filename, {
|
|
68
|
+
body: md
|
|
69
|
+
}, {
|
|
70
|
+
async: true
|
|
71
|
+
});
|
|
72
|
+
return res;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
getMarkdown() {
|
|
@@ -2,6 +2,12 @@ const nodefony = require("nodefony");
|
|
|
2
2
|
const http = require('http');
|
|
3
3
|
const path = require("path");
|
|
4
4
|
|
|
5
|
+
const serveStatic = require('serve-static');
|
|
6
|
+
const dist = path.resolve("dist");
|
|
7
|
+
const serve = serveStatic(dist, {
|
|
8
|
+
index: false
|
|
9
|
+
});
|
|
10
|
+
|
|
5
11
|
class Server extends nodefony.Service {
|
|
6
12
|
constructor(service) {
|
|
7
13
|
super("HTTP Server", service.container);
|
|
@@ -17,7 +23,9 @@ class Server extends nodefony.Service {
|
|
|
17
23
|
return new Promise((resolve, reject) => {
|
|
18
24
|
this.log("Starting Server HTTP", "INFO");
|
|
19
25
|
this.server = http.createServer((req, res) => {
|
|
20
|
-
return
|
|
26
|
+
return serve(req, res, () => {
|
|
27
|
+
return this.fire("request", req, res);
|
|
28
|
+
});
|
|
21
29
|
});
|
|
22
30
|
|
|
23
31
|
this.server.listen(this.settings.port, this.settings.hostname, () => {
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
const nodefony = require("nodefony");
|
|
2
2
|
const https = require('https');
|
|
3
|
+
const serveStatic = require('serve-static');
|
|
4
|
+
const dist = path.resolve("dist");
|
|
5
|
+
const serve = serveStatic(dist, {
|
|
6
|
+
index: false
|
|
7
|
+
});
|
|
8
|
+
|
|
3
9
|
|
|
4
10
|
class Server extends nodefony.Service {
|
|
5
11
|
constructor(service){
|
|
@@ -16,7 +22,9 @@ class Server extends nodefony.Service {
|
|
|
16
22
|
return new Promise((resolve, reject) => {
|
|
17
23
|
this.log("Starting Server HTTPS", "INFO");
|
|
18
24
|
this.server = https.createServer(this.settings.certificates, (req, res) => {
|
|
19
|
-
return
|
|
25
|
+
return serve(req, res, () => {
|
|
26
|
+
return this.fire("request", req, res);
|
|
27
|
+
});
|
|
20
28
|
});
|
|
21
29
|
|
|
22
30
|
this.server.listen(this.settings.port, this.settings.hostname, () => {
|
|
@@ -1,26 +1,29 @@
|
|
|
1
1
|
const nodefony = require("nodefony");
|
|
2
|
-
const
|
|
2
|
+
const Server = require("socket.io");
|
|
3
3
|
|
|
4
4
|
class SocketIo extends nodefony.Service {
|
|
5
|
-
constructor(service){
|
|
5
|
+
constructor(service) {
|
|
6
6
|
super("socket-io", service.container);
|
|
7
|
-
this.service = service
|
|
7
|
+
this.service = service;
|
|
8
8
|
this.http = this.getHttp();
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
getHttp(){
|
|
11
|
+
getHttp() {
|
|
12
12
|
let http = this.get("http");
|
|
13
|
-
if (!
|
|
13
|
+
if (!http) {
|
|
14
14
|
this.service.createHttpServer();
|
|
15
15
|
http = this.get("http");
|
|
16
16
|
}
|
|
17
17
|
return http;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
start(){
|
|
21
|
-
return new Promise((resolve, reject)=>{
|
|
22
|
-
try{
|
|
23
|
-
this.io =
|
|
20
|
+
start() {
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
try {
|
|
23
|
+
this.io = Server(this.service.settings.socketio);
|
|
24
|
+
this.io.serveClient(true);
|
|
25
|
+
this.io.attach(this.http.server);
|
|
26
|
+
|
|
24
27
|
this.log(`Server ${this.name} running at ws://${this.http.settings.hostname}:${this.http.settings.port}/`);
|
|
25
28
|
this.io.on('connection', client => {
|
|
26
29
|
this.log(`connection : ${client.id}`);
|
|
@@ -32,12 +35,12 @@ class SocketIo extends nodefony.Service {
|
|
|
32
35
|
});
|
|
33
36
|
this.io.emit("microservice", 'DEMO SOCKET IO MICROSERVICE');
|
|
34
37
|
});
|
|
35
|
-
return resolve(this.io)
|
|
36
|
-
}catch(e){
|
|
38
|
+
return resolve(this.io);
|
|
39
|
+
} catch (e) {
|
|
37
40
|
return reject(e);
|
|
38
41
|
}
|
|
39
42
|
});
|
|
40
43
|
}
|
|
41
44
|
}
|
|
42
45
|
|
|
43
|
-
module.exports = SocketIo
|
|
46
|
+
module.exports = SocketIo;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="fr">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<title>Nodefony Microservice</title>
|
|
7
|
+
<style>
|
|
8
|
+
body {
|
|
9
|
+
font: 13px Helvetica, Arial;
|
|
10
|
+
}
|
|
11
|
+
</style>
|
|
12
|
+
</head>
|
|
13
|
+
|
|
14
|
+
<body>
|
|
15
|
+
<p align="center">
|
|
16
|
+
<img src="https://github.com/nodefony/nodefony-core/raw/master/src/nodefony/bundles/framework-bundle/Resources/public/images/nodefony-logo.png"><br>
|
|
17
|
+
</p>
|
|
18
|
+
<h1 align="center">NODEFONY V6 Micro Service</h1>
|
|
19
|
+
<h2 align="center">Socket Io <h2>
|
|
20
|
+
<%- body %>
|
|
21
|
+
</body>
|
|
22
|
+
|
|
23
|
+
</html>
|
|
@@ -11,9 +11,6 @@ Nodefony is Node.js full-stack web framework.
|
|
|
11
11
|
|
|
12
12
|
Nodefony can be used to develop a complete solution to create a Fullstack Web Application, Secure Api, or Microservices.
|
|
13
13
|
|
|
14
|
-
The Nodefony project is inspired by the PHP Symfony framework, a developer can find most of the concepts, configurations and patterns of Symfony framework.
|
|
15
|
-
|
|
16
|
-
Nodefony is not an exhaustive port of symfony !
|
|
17
14
|
|
|
18
15
|
## Table of content
|
|
19
16
|
|
|
@@ -137,9 +134,9 @@ You can follow Nodefony build with github actions at **<https://github.com/nodef
|
|
|
137
134
|
|
|
138
135
|
To install or update nvm, you can use the install script:
|
|
139
136
|
```sh
|
|
140
|
-
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.
|
|
137
|
+
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
|
|
141
138
|
# or
|
|
142
|
-
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.
|
|
139
|
+
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
|
|
143
140
|
|
|
144
141
|
$ source ~/.bashrc # or source ~/.bash_profile
|
|
145
142
|
$ nvm ls-remote # show all remote versions
|
|
@@ -90,11 +90,9 @@ module.exports = {
|
|
|
90
90
|
* DEV SERVER
|
|
91
91
|
*/
|
|
92
92
|
devServer: {
|
|
93
|
-
|
|
94
|
-
hot: false,
|
|
95
|
-
hotOnly: false,
|
|
93
|
+
hot: false, // true || only || false
|
|
96
94
|
overlay: true,
|
|
97
|
-
|
|
95
|
+
logging: "info", // none, error, warning or info
|
|
98
96
|
progress: false,
|
|
99
97
|
protocol: "https",
|
|
100
98
|
websocket: true
|
|
@@ -34,17 +34,17 @@
|
|
|
34
34
|
"node": ">=10"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"mongoose": "^
|
|
37
|
+
"mongoose": "^6.1.4",
|
|
38
38
|
"nodefony": "^{{version}}",
|
|
39
|
-
"pm2": "^5.1.
|
|
39
|
+
"pm2": "^5.1.2",
|
|
40
40
|
"pm2-logrotate": "^2.7.0",
|
|
41
|
-
"sequelize": "^6.
|
|
42
|
-
"webpack": "^5.
|
|
43
|
-
"webpack-dev-server": "^
|
|
41
|
+
"sequelize": "^6.12.4",
|
|
42
|
+
"webpack": "^5.65.0",
|
|
43
|
+
"webpack-dev-server": "^4.7.2"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@mapbox/node-pre-gyp": "^1.0.
|
|
47
|
-
"node-gyp": "^8.1
|
|
46
|
+
"@mapbox/node-pre-gyp": "^1.0.8",
|
|
47
|
+
"node-gyp": "^8.4.1"
|
|
48
48
|
},
|
|
49
49
|
"author": "{{authorFullName}} <{{authorMail}}>",
|
|
50
50
|
"readmeFilename": "README.md",
|
|
@@ -29,8 +29,8 @@ class {{shortName | capitalize }} {
|
|
|
29
29
|
.then(registration => {
|
|
30
30
|
if (registration) {
|
|
31
31
|
console.log(`Service Worker registered! Scope: ${registration.scope}`);
|
|
32
|
-
if (window.
|
|
33
|
-
window.
|
|
32
|
+
if (window.debugbar) {
|
|
33
|
+
window.debugbar.monitoringWorkbox(registration);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
return registration;
|
|
@@ -10,8 +10,7 @@ module.exports = {
|
|
|
10
10
|
outputFileSystem: "file-system", // memory-fs not implemented yet
|
|
11
11
|
stats: {
|
|
12
12
|
colors: true,
|
|
13
|
-
|
|
14
|
-
maxModules: 16 // Infinity
|
|
13
|
+
preset: 'normal' // normal || minimal || verbose || detailed || summary
|
|
15
14
|
}
|
|
16
15
|
}
|
|
17
|
-
};
|
|
16
|
+
};
|
|
@@ -16,13 +16,15 @@
|
|
|
16
16
|
* sockjs dev server ( webpack dev server like WDS)
|
|
17
17
|
*
|
|
18
18
|
*/
|
|
19
|
+
const tmpDir = kernel.tmpDir.path || "/tmp"
|
|
19
20
|
module.exports = {
|
|
20
21
|
// For more options request parser formidable @see : https://github.com/felixge/node-formidable
|
|
21
22
|
request: {
|
|
22
|
-
uploadDir:
|
|
23
|
-
maxFileSize:
|
|
24
|
-
maxFieldsSize: 2097152, //
|
|
23
|
+
uploadDir: tmpDir, // temporing file upload system
|
|
24
|
+
maxFileSize: 524288000, // In Bytes 500 MB
|
|
25
|
+
maxFieldsSize: 2097152, // 2 MB
|
|
25
26
|
maxFields: 1000, // 0 for unlimited
|
|
27
|
+
encoding: 'utf-8'
|
|
26
28
|
},
|
|
27
29
|
//For more options queryString parser QS @see : https://github.com/ljharb/qs
|
|
28
30
|
queryString: {
|