nodefony 6.9.1 → 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.
Files changed (54) hide show
  1. package/CHANGELOG.md +134 -0
  2. package/README.md +2 -5
  3. package/autoloader.es6 +4 -3
  4. package/cli/builder/bundles/users-bundle/Command/usersCommand.js +1 -1
  5. package/cli/builder/bundles/users-bundle/Entity/sequelize/userEntity.js +5 -1
  6. package/cli/builder/bundles/users-bundle/Resources/config/webpack.config.js +4 -0
  7. package/cli/builder/bundles/users-bundle/Resources/graphiql/graphiql.jsx +40 -4
  8. package/cli/builder/bundles/users-bundle/Resources/scss/users.scss +9 -10
  9. package/cli/builder/bundles/users-bundle/Resources/swagger/swagger.js +3 -2
  10. package/cli/builder/bundles/users-bundle/Resources/translations/login.en_en.yml +3 -1
  11. package/cli/builder/bundles/users-bundle/Resources/translations/login.fr_fr.yml +2 -0
  12. package/cli/builder/bundles/users-bundle/Resources/views/documentation/base.html.twig +1 -2
  13. package/cli/builder/bundles/users-bundle/Resources/views/footer.html.twig +2 -4
  14. package/cli/builder/bundles/users-bundle/Resources/views/graphiql/index.html.twig +4 -9
  15. package/cli/builder/bundles/users-bundle/Resources/views/header.html.twig +63 -66
  16. package/cli/builder/bundles/users-bundle/Resources/views/swagger/index.html.twig +4 -12
  17. package/cli/builder/bundles/users-bundle/controller/api/graphql/graphqlController.js +2 -0
  18. package/cli/builder/bundles/users-bundle/controller/usersController.js +1 -1
  19. package/cli/builder/bundles/users-bundle/package.json +24 -23
  20. package/cli/builder/microService/skeletons/config/pm2.config.js +1 -1
  21. package/cli/builder/microService/skeletons/config/webpack/webpack.config.dev.js +1 -6
  22. package/cli/builder/microService/skeletons/config/webpack/webpack.config.prod.js +1 -6
  23. package/cli/builder/microService/skeletons/config/webpack.config.js +40 -34
  24. package/cli/builder/microService/skeletons/package.json +27 -22
  25. package/cli/builder/microService/skeletons/src/browser/index.css +1 -1
  26. package/cli/builder/microService/skeletons/src/browser/index.js +1 -3
  27. package/cli/builder/microService/skeletons/src/browser/socketio.js +46 -0
  28. package/cli/builder/microService/skeletons/src/node/examples/index.js +12 -52
  29. package/cli/builder/microService/skeletons/src/node/index.js +18 -18
  30. package/cli/builder/microService/skeletons/src/node/services/servers/http.js +9 -1
  31. package/cli/builder/microService/skeletons/src/node/services/servers/https.js +9 -1
  32. package/cli/builder/microService/skeletons/src/node/services/socketio/socketio.js +15 -12
  33. package/cli/builder/microService/skeletons/src/templates/base.html +12 -0
  34. package/cli/builder/microService/skeletons/src/templates/socket.html +23 -0
  35. package/cli/builder/project/skeletons/README.md +2 -5
  36. package/cli/builder/project/skeletons/package.json.skeleton +6 -6
  37. package/cli/builder/sandbox/skeletons/Resources/js/entry.js +2 -2
  38. package/cli/builder/skeletons/config/nodefony/http-bundle.js +5 -3
  39. package/cli/builder/skeletons/config/nodefony/redis-bundle.js +16 -11
  40. package/cli/builder/skeletons/config/webpack.config.js +3 -3
  41. package/cli/builder/skeletons/package.json +21 -18
  42. package/cli/install/install.js +2 -1
  43. package/cli.es6 +6 -12
  44. package/error.es6 +2 -1
  45. package/kernel/api/graphqlApi.es6 +17 -7
  46. package/kernel/bundle.es6 +1 -1
  47. package/kernel/cliKernel.es6 +1 -1
  48. package/kernel/controllers/controller.es6 +4 -0
  49. package/kernel/kernel.es6 +1 -1
  50. package/kernel/reader.es6 +1 -0
  51. package/kernel/security/secureArea.es6 +3 -1
  52. package/nodefony.es6 +1 -1
  53. package/package.json +33 -33
  54. package/cli/builder/bundles/users-bundle/Resources/views/index.html.twig +0 -19
@@ -1,36 +1,28 @@
1
- {% extends '../base.html.twig' %}
1
+ {% extends '../documentation/base.html.twig' %}
2
2
 
3
3
  {% block title %}{{title|escape}}{% endblock %}
4
4
 
5
5
  {% block stylesheets %}
6
6
  <!-- WEBPACK BUNDLE -->
7
7
  <link rel='stylesheet' href='{{CDN("stylesheet")}}/users-bundle/assets/css/swagger.css'/>
8
- <link rel="stylesheet" href="/documentation-bundle/assets/css/documentation.css"/>
8
+ {{ parent() }}
9
9
  {% endblock %}
10
10
 
11
11
  {% block body %}
12
12
 
13
- {% block header %}
14
- {{ render( controller("users:users:header" )) }}
15
- {% endblock %}
16
-
17
13
  <div class="container-fluid">
18
14
  <div class="row flex-xl-nowrap">
19
15
  {% include '../documentation/navbar.html.twig' %}
20
- <main class="col-12 col-md-9 col-xl-8" style="top: 4rem;">
16
+ <main class="col-12 col-md-9 col-xl-10" style="top:2px">
21
17
  <div id="swagger"></div>
22
18
  </main>
23
19
  </div>
24
20
  </div>
25
21
 
26
- {% block footer %}
27
- {{ render( controller("users:users:footer" )) }}
28
22
  {% endblock %}
29
23
 
30
24
  {% block javascripts %}
31
25
  <!-- WEBPACK BUNDLE -->
32
26
  <script src='{{CDN("javascript")}}/users-bundle/assets/js/swagger.js'></script>
33
- <script type="text/javascript" src="/documentation-bundle/assets/js/documentation.js"></script>
34
- {% endblock %}
35
-
27
+ {{ parent() }}
36
28
  {% endblock %}
@@ -39,6 +39,8 @@ class graphqlController extends nodefony.Controller {
39
39
  }
40
40
  }
41
41
 
42
+ // provides all functions for each API endpoint
43
+
42
44
  async user(field) {
43
45
  return await this.usersService.findOne(field.username);
44
46
  }
@@ -56,7 +56,7 @@ class usersController extends nodefony.Controller {
56
56
 
57
57
  /**
58
58
  * @see Route by Annotaion
59
- * @Method ({ "GET"})
59
+ * @Method ({ "GET", "POST"})
60
60
  * @Route ("/lang", name="lang")
61
61
  */
62
62
  langAction() {
@@ -16,44 +16,45 @@
16
16
  ],
17
17
  "repository": {},
18
18
  "dependencies": {
19
- "@babel/core": "^7.15.8",
20
- "@babel/plugin-proposal-class-properties": "^7.14.5",
19
+ "@babel/core": "^7.16.7",
20
+ "@babel/plugin-proposal-class-properties": "^7.16.7",
21
21
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
22
- "@babel/preset-env": "^7.15.8",
23
- "@babel/preset-react": "^7.14.5",
24
- "@popperjs/core": "^2.10.2",
25
- "babel-loader": "^8.2.2",
22
+ "@babel/preset-env": "^7.16.7",
23
+ "@babel/preset-react": "^7.16.7",
24
+ "@popperjs/core": "^2.11.0",
25
+ "babel-loader": "^8.2.3",
26
26
  "babel-register": "^6.26.0",
27
27
  "bootstrap": "^5.1.3",
28
28
  "clean-webpack-plugin": "^4.0.0",
29
29
  "css-hot-loader": "^1.4.4",
30
- "css-loader": "^6.4.0",
31
- "expose-loader": "^3.0.0",
30
+ "css-loader": "^6.5.1",
31
+ "expose-loader": "^3.1.0",
32
32
  "faker": "^5.5.3",
33
33
  "font-awesome": "^4.7.0",
34
- "graphiql": "^1.4.2",
35
- "graphql": "^15.6.1",
36
- "html-webpack-plugin": "^5.3.2",
37
- "imports-loader": "^3.0.0",
34
+ "graphiql": "^1.5.16",
35
+ "graphql": "^16.2.0",
36
+ "graphql-ws": "^5.5.5",
37
+ "html-webpack-plugin": "^5.5.0",
38
+ "imports-loader": "^3.1.1",
38
39
  "jquery": "^3.6.0",
39
- "mini-css-extract-plugin": "^2.4.2",
40
+ "mini-css-extract-plugin": "^2.4.5",
40
41
  "mongoose-paginate-v2": "^1.4.2",
41
- "node-sass": "^6.0.1",
42
+ "node-sass": "^7.0.1",
42
43
  "react": "^17.0.2",
43
44
  "react-dom": "^17.0.2",
44
- "sass-loader": "^12.1.0",
45
- "style-loader": "^3.3.0",
45
+ "sass-loader": "^12.4.0",
46
+ "style-loader": "^3.3.1",
46
47
  "svg-inline-loader": "^0.8.2",
47
- "swagger-ui": "^3.52.3",
48
- "swagger-ui-dist": "^3.52.3",
49
- "terser-webpack-plugin": "^5.2.4",
50
- "webpack": "^5.58.1",
48
+ "swagger-ui": "^4.1.3",
49
+ "swagger-ui-dist": "^4.1.3",
50
+ "terser-webpack-plugin": "^5.3.0",
51
+ "webpack": "^5.65.0",
51
52
  "webpack-merge": "^5.8.0"
52
53
  },
53
54
  "devDependencies": {
54
- "@mapbox/node-pre-gyp": "^1.0.5",
55
- "node-gyp": "^8.2.0",
56
- "sequelize-cli": "^6.2.0"
55
+ "@mapbox/node-pre-gyp": "^1.0.8",
56
+ "node-gyp": "^8.4.1",
57
+ "sequelize-cli": "^6.3.0"
57
58
  },
58
59
  "license": "CECILL-B",
59
60
  "readmeFilename": "README.md",
@@ -3,7 +3,7 @@ const package = require(path.resolve("package.json"));
3
3
  const env = process.env.NODE_ENV;
4
4
  const logName = `${package.name}.log`;
5
5
 
6
- let cpu = require('os').cpus().length;
6
+ let cpu = 2 // require('os').cpus().length;
7
7
  let exec_mode = "cluster";
8
8
  let watch = false;
9
9
  let autorestart =true ;
@@ -1,13 +1,8 @@
1
- const MiniCssExtractPlugin = require("mini-css-extract-plugin");
2
1
 
3
2
  module.exports = {
4
3
  mode: 'development',
5
4
  devtool: 'source-map',
6
5
  plugins: [
7
- new MiniCssExtractPlugin({
8
- fallback: "style-loader",
9
- filename: "./css/[name].css",
10
- allChunks: true
11
- })
6
+
12
7
  ]
13
8
  };
@@ -1,5 +1,4 @@
1
1
  const TerserPlugin = require('terser-webpack-plugin');
2
- const MiniCssExtractPlugin = require("mini-css-extract-plugin");
3
2
 
4
3
  module.exports = {
5
4
  mode: 'production',
@@ -19,11 +18,7 @@ module.exports = {
19
18
  ]
20
19
  },
21
20
  plugins: [
22
- new MiniCssExtractPlugin({
23
- fallback: "style-loader",
24
- filename: "./css/[name].min.css",
25
- allChunks: true
26
- })
21
+
27
22
  ]
28
23
 
29
24
 
@@ -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
- App: path.resolve(__dirname, "..", "src", "browser", "index.js")
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', '.es6'],
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("\\.es6$|\\.js$|\\.es7$"),
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
- test: /\.(sa|sc|c)ss$/,
65
- use: [
64
+ test: /\.(sa|sc|c)ss$/,
65
+ use: [
66
+ //'css-hot-loader',
66
67
  MiniCssExtractPlugin.loader,
67
- {
68
- loader: "css-loader",
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
- postcssOptions: {
79
- plugins: [autoprefixer({}), precss({})]
80
- }
71
+ sourceMap: true
81
72
  }
82
73
  }, {
83
- loader: "sass-loader",
84
- options: {
85
- sourceMap: true
86
- }
74
+ loader: "sass-loader",
75
+ options: {
76
+ sourceMap: true
77
+ }
87
78
  }
88
79
  ]
89
80
  }, {
90
- test: /.(ttf|otf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/,
91
- use: [{
92
- loader: 'file-loader',
93
- options: {
94
- name: '[name].[ext]',
95
- outputPath: 'fonts/', // where the fonts will go
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; env-cmd -e webpack_dev webpack --env development --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.production --config config/webpack.config.js; env-cmd -e webpack_dev webpack --env.development --verbose --config config/webpack.config.js",
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.2",
45
+ "markdown-it": "^12.2.0",
45
46
  "nodefony": "^{{version}}",
46
- "pm2": "^4.5.0",
47
+ "nodefony-client": "^6.0.0-beta.18",
48
+ "pm2": "^5.1.2",
47
49
  "pm2-logrotate": "^2.7.0",
48
- "socket.io": "^2.3.0",
49
- "socket.io-client": "^2.3.1"
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.12.1",
53
- "@babel/core": "^7.12.3",
54
- "@babel/preset-env": "^7.12.1",
55
- "@babel/register": "^7.12.1",
56
- "babel-loader": "^8.1.0",
57
- "chai": "^4.2.0",
58
- "mini-css-extract-plugin": "^1.2.1",
59
- "mocha": "^8.2.0",
60
- "node-gyp": "^7.1.2",
61
- "node-pre-gyp": "^0.15.0",
62
- "open": "^7.3.0",
63
- "sass-loader": "^10.0.4",
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.3.1",
66
- "webpack-cli": "^4.1.0",
67
- "webpack-merge": "^5.2.0"
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,3 +1,3 @@
1
1
  body {
2
- background-color: blue;
2
+ background-color: white;
3
3
  }
@@ -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
- return `<!DOCTYPE html>
87
- <html lang="fr">
88
- <head>
89
- <meta charset="utf-8">
90
- <title>Nodefony Microservice</title>
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
- </script>
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
- return `<!DOCTYPE html>
60
- <html lang="fr">
61
- <head>
62
- <meta charset="utf-8">
63
- <title>Nodefony Microservice</title>
64
- <style>
65
- body { font: 13px Helvetica, Arial; }
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 this.fire("request", req, res);
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 this.fire("request", req, res);
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, () => {