zet-lib 3.2.3 → 3.3.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/lib/zRoute.js CHANGED
@@ -3,6 +3,7 @@
3
3
  * service for routes
4
4
  */
5
5
  require("dotenv").config();
6
+ const path = require("path");
6
7
  const excelToJson = require("convert-excel-to-json");
7
8
  const qs = require("qs");
8
9
  //for generate PDF
@@ -34,11 +35,11 @@ zRoute.tableHasNoCompanyId = ["zcompany", "zrole", "zgrid"];
34
35
  //get all models
35
36
  zRoute.MYMODELS = () => {
36
37
  let obj = {};
37
- const dir = `${dirRoot}/models`;
38
+ const dir = path.join(dirRoot, "models");
38
39
  let models = Util.getAllFiles(dir);
39
40
  for (const item of models) {
40
41
  let name = item.replace(".js", "");
41
- obj[name] = require(`${dir}/${name}`);
42
+ obj[name] = require(path.join(dir, name));
42
43
  }
43
44
  return obj;
44
45
  };
@@ -46,7 +47,7 @@ zRoute.MYMODELS = () => {
46
47
  //get all routes
47
48
  zRoute.ROUTES = () => {
48
49
  let arr = [];
49
- const dir = `${dirRoot}/routes`;
50
+ const dir = path.join(dirRoot, "routes");
50
51
  let routes = Util.getAllFiles(dir);
51
52
  let nots = ["index", "zindex", "auth"];
52
53
  for (const item of routes) {
@@ -66,7 +67,7 @@ zRoute.renderHTML = (datas) => {
66
67
  if (myCache.has(renderBody)) {
67
68
  bodyHTML = myCache.get(renderBody);
68
69
  } else {
69
- bodyHTML = Util.readFile(`${dirRoot}/views/${datas.renderBody}`);
70
+ bodyHTML = Util.readFile(path.join(dirRoot, "views", datas.renderBody));
70
71
  myCache.set(renderBody, bodyHTML);
71
72
  }
72
73
  delete datas.renderBody;
@@ -76,7 +77,7 @@ zRoute.renderHTML = (datas) => {
76
77
  if (myCache.has(renderEnd)) {
77
78
  endHTML = myCache.get(renderEnd);
78
79
  } else {
79
- endHTML = Util.readFile(`${dirRoot}/views/${datas.renderEnd}`);
80
+ endHTML = Util.readFile(path.join(dirRoot, "views", datas.renderEnd));
80
81
  myCache.set(renderEnd, endHTML);
81
82
  }
82
83
  delete datas.renderEnd;
@@ -120,7 +121,7 @@ zRoute.post = (req, res, MYMODEL, routeName, body) => {
120
121
  let post = qs.parse(body);
121
122
  let isEmptyFiles = Util.isEmptyObject(req.files);
122
123
  let time = new Date().getTime();
123
- let path_tmp = dirRoot + "/public/uploads/" + routeName + "/";
124
+ let path_tmp = path.join(dirRoot, "public", "uploads", routeName);
124
125
  let hasFile = false;
125
126
  let files;
126
127
  let checkboxes = [];
@@ -137,11 +138,11 @@ zRoute.post = (req, res, MYMODEL, routeName, body) => {
137
138
  if (Array.isArray(fileRoute[key])) {
138
139
  hasFile = true;
139
140
  //add folder again
140
- fs.ensureDir(path_tmp + key, (err) => {
141
+ fs.ensureDir(path.join(path_tmp, key), (err) => {
141
142
  //console.log('ensureDir',err); // => null
142
143
  });
143
144
  } else {
144
- fileRoute[key].mv(path_tmp + filename, function (err) {
145
+ fileRoute[key].mv(path.join(path_tmp, filename), function (err) {
145
146
  if (err) {
146
147
  //console.log('fileempty move',err); // => null
147
148
  return res.status(500).send(err);
@@ -259,7 +260,7 @@ zRoute.post = (req, res, MYMODEL, routeName, body) => {
259
260
  req.files[fileImageName].name;
260
261
  item[k] = kname;
261
262
  req.files[fileImageName].mv(
262
- path_tmp + key + "/" + kname,
263
+ path.join(path_tmp, key, kname),
263
264
  function (err) {
264
265
  if (err) {
265
266
  return res.status(500).send(err);
@@ -1730,7 +1731,7 @@ zRoute.excelQuery = async (req, res, MYMODEL, paramsObject = {}) => {
1730
1731
  }
1731
1732
  }
1732
1733
  //check directory for import not export
1733
- const dir = `${dirRoot}/public/excel/tmp`;
1734
+ const dir = path.join(dirRoot, "public", "excel", "tmp");
1734
1735
  if (!fs.existsSync(dir)) {
1735
1736
  fs.mkdirSync(dir);
1736
1737
  }
@@ -2372,7 +2373,7 @@ zRoute.generatePDF = async (file, layout = "pdf_bootstrap", options = {}) => {
2372
2373
  puppeterOptions.defaultViewport = { width: 1920, height: 1080 };
2373
2374
  const browser = await puppeteer.launch(puppeterOptions);
2374
2375
  const page = await browser.newPage();
2375
- let mylayout = `${dirRoot}/views/layouts/${layout}.ejs`;
2376
+ let mylayout = path.join(dirRoot, "views", "layouts", layout + ".ejs");
2376
2377
  if (file.content) {
2377
2378
  const html = await ejs.renderFile(
2378
2379
  mylayout,
@@ -2390,7 +2391,7 @@ zRoute.generatePDF = async (file, layout = "pdf_bootstrap", options = {}) => {
2390
2391
  });
2391
2392
  }
2392
2393
  let fileName = new Date().getTime() + ".pdf";
2393
- const filePath = `${dirRoot}/public/_pdf/${fileName}`;
2394
+ const filePath = path.join(dirRoot, "public", "_pdf", fileName);
2394
2395
  const myoptions = {
2395
2396
  path: filePath,
2396
2397
  format: "A4",
@@ -3183,7 +3184,7 @@ zRoute.forms = (
3183
3184
  dropfiles = [obj.value];
3184
3185
  }
3185
3186
  dropfiles.map((item) => {
3186
- let filename = `${dirRoot}/public/uploads/${MYMODEL.table}/${key}/${item}`;
3187
+ let filename = path.join(dirRoot, "public", "uploads", MYMODEL.table, key, item);
3187
3188
  var fileSizeInBytes = 12345;
3188
3189
  if (Util.fileExist(filename)) {
3189
3190
  var stats = fs.statSync(filename);
@@ -3215,7 +3216,7 @@ zRoute.forms = (
3215
3216
  dropfiles = [obj.value];
3216
3217
  }
3217
3218
  dropfiles.map((item) => {
3218
- let filename = item; //`${dirRoot}/public/uploads/${MYMODEL.table}/${key}/${item}`;
3219
+ let filename = item; //path.join(dirRoot, "public", "uploads", MYMODEL.table, key, item);
3219
3220
  var fileSizeInBytes = 12345;
3220
3221
  if (Util.fileExist(filename)) {
3221
3222
  var stats = fs.statSync(filename);
@@ -4058,11 +4059,11 @@ zRoute.moduleLib = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
4058
4059
  //check a file in directory
4059
4060
  //make a directory
4060
4061
  let table = MYMODEL.table;
4061
- let path_script = `${dirRoot}/public/runtime/script/${table}`;
4062
+ let path_script = path.join(dirRoot, "public", "runtime", "script", table);
4062
4063
  Util.dirExist(path_script, true);
4063
- let path_head = `${dirRoot}/public/runtime/head/${table}`;
4064
+ let path_head = path.join(dirRoot, "public", "runtime", "head", table);
4064
4065
  Util.dirExist(path_head, true);
4065
- let path_end = `${dirRoot}/public/runtime/end/${table}`;
4066
+ let path_end = path.join(dirRoot, "public", "runtime", "end", table);
4066
4067
  Util.dirExist(path_end, true);
4067
4068
  let files = Util.getAllFiles(path_script);
4068
4069
  let head = res.locals.moduleHead;
@@ -4071,10 +4072,10 @@ zRoute.moduleLib = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
4071
4072
  let head_files = Util.getAllFiles(path_head);
4072
4073
  let end_files = Util.getAllFiles(path_end);
4073
4074
  if (head_files.length) {
4074
- head += Util.readFile(`${path_head}/head.txt`);
4075
+ head += Util.readFile(path.join(path_head, "head.txt"));
4075
4076
  }
4076
4077
  if (end_files.length) {
4077
- end += Util.readFile(`${path_end}/end.txt`);
4078
+ end += Util.readFile(path.join(path_end, "end.txt"));
4078
4079
  }
4079
4080
  end += `<script src="/runtime/script/${table}/${files[0]}"></script>`;
4080
4081
  } else {
@@ -4083,9 +4084,9 @@ zRoute.moduleLib = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
4083
4084
  Util.deleteAllFiles(path_head);
4084
4085
  Util.deleteAllFiles(path_end);
4085
4086
  //minify js
4086
- Util.writeFile(`${path_script}/${time}.js`, uglifyJS.minify(jsObj.script));
4087
- Util.writeFile(`${path_head}/head.txt`, jsObj.head);
4088
- Util.writeFile(`${path_end}/end.txt`, jsObj.end);
4087
+ Util.writeFile(path.join(path_script, `${time}.js`), uglifyJS.minify(jsObj.script));
4088
+ Util.writeFile(path.join(path_head, "head.txt"), jsObj.head);
4089
+ Util.writeFile(path.join(path_end, "end.txt"), jsObj.end);
4089
4090
  end += `<script src="/runtime/script/${table}/${time}.js"></script>`;
4090
4091
  if (jsObj.head) {
4091
4092
  head += jsObj.head;
@@ -4104,7 +4105,7 @@ zRoute.moduleLib = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
4104
4105
  let scriptTemp = "";
4105
4106
  for (let keys in MYMODEL.widgets) {
4106
4107
  if (MYMODEL.widgets[keys].name == "table") {
4107
- let MODEL_TABLE = require(`${dirRoot}/models/${MYMODEL.widgets[keys].table}`);
4108
+ let MODEL_TABLE = require(path.join(dirRoot, "models", MYMODEL.widgets[keys].table));
4108
4109
  for (let key in MODEL_TABLE.widgets) {
4109
4110
  if (MODEL_TABLE.widgets[key].name == "dropdown_multi") {
4110
4111
  let relObject = relations[keys + "Row"][key + "Object"];
@@ -4172,6 +4173,7 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
4172
4173
  let lexicals = [];
4173
4174
  let mapKey = "";
4174
4175
  let hasAttributes = [];
4176
+ let onChanges = [];
4175
4177
  let joinsFields = [];
4176
4178
  let selectize = [];
4177
4179
  let moneys = [];
@@ -4261,9 +4263,13 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
4261
4263
  }
4262
4264
  }
4263
4265
  //relation_all_attributes
4266
+ //has attributes will be deleted
4264
4267
  if (widgets[key].isAttributes) {
4265
4268
  hasAttributes.push(key);
4266
4269
  }
4270
+ if (widgets[key].onChange) {
4271
+ onChanges.push(key);
4272
+ }
4267
4273
  //add search on select
4268
4274
  if (widgets[key].isSearch) {
4269
4275
  selectize.push(key);
@@ -4427,15 +4433,6 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
4427
4433
  endObj.tinymce = tinymceObj.end;
4428
4434
  }
4429
4435
 
4430
- if (hasLexical) {
4431
- moduleLib.lexical(req, res);
4432
- lexicals.forEach(function (lexical) {
4433
- scriptForm += `document.addEventListener("DOMContentLoaded", () => {
4434
- window.buildLexicalEditor("${lexical}");
4435
- });`;
4436
- });
4437
- }
4438
-
4439
4436
  if (hasChain) {
4440
4437
  for (let key in chainsObj) {
4441
4438
  if (chainsObj[key].length > 0) {
@@ -4739,7 +4736,7 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
4739
4736
  case "table":
4740
4737
  let MODEL_TABLE =
4741
4738
  MYMODELS[MYMODEL.widgets[keys].table] ||
4742
- require(`${dirRoot}/models/${MYMODEL.widgets[keys].table}`);
4739
+ require(path.join(dirRoot, "models", MYMODEL.widgets[keys].table));
4743
4740
  //let MODEL_TABLE_RELATIONS = await zRoute.relations(req, res, MODEL_TABLE.table);
4744
4741
  //relations[key + "TABLE"]
4745
4742
  let RELATIONS_MODEL_TABLE =
@@ -4882,13 +4879,6 @@ $("#body-${keys}>tr").each(function (index, tr) {
4882
4879
  }
4883
4880
  `;
4884
4881
 
4885
- /* scriptForm += ` $(function () {
4886
- var ${keys} = $("#body-${keys}").data("value") ? $("#body-${keys}").data("value") : [];
4887
- ${keys}.forEach(function (myobj, index) {
4888
- build${keys}form(index, myobj);
4889
- });
4890
- });${Util.newLine}`*/
4891
-
4892
4882
  break;
4893
4883
 
4894
4884
  case "ide_editor":
@@ -4940,6 +4930,25 @@ ${keys}.forEach(function (myobj, index) {
4940
4930
  `;
4941
4931
  });
4942
4932
  }
4933
+ if (onChanges) {
4934
+ scriptForm += `
4935
+ $(function(){`
4936
+ onChanges.forEach(function (item) {
4937
+ let tableItem = MYMODEL.widgets[item].table;
4938
+ let dirContent = path.join(dirRoot, "public", "runtime", "onchange", MYMODEL.table, item + ".txt");
4939
+ let contentAjax = Util.readFile(dirContent);
4940
+ scriptForm += `
4941
+ $("#${item}").on("change", function() {
4942
+ ajaxPost('/${MYMODEL.table}/get_attributes',{id:$('#${item}').val(),table:'${tableItem}'},function(data){
4943
+ ${contentAjax}
4944
+ });
4945
+ })
4946
+ `;
4947
+ });
4948
+ scriptForm += `});
4949
+ ${Util.newLine}
4950
+ `
4951
+ }
4943
4952
  scriptForm += defaultScript;
4944
4953
 
4945
4954
  let head = "";
@@ -4989,9 +4998,8 @@ zRoute.insertSQL = async (req, res, table, data) => {
4989
4998
  for (let key in MYMODEL.widgets) {
4990
4999
  if (MYMODEL.widgets[key].name === "dropzone") {
4991
5000
  //console.log('has dropzone')
4992
- let path_src = dirRoot + "/public/zdropzone/" + userId + "/";
4993
- let path_dest =
4994
- dirRoot + "/public/uploads/" + MYMODEL.routeName + "/" + key + "/";
5001
+ let path_src = path.join(dirRoot, "public", "zdropzone", userId);
5002
+ let path_dest = path.join(dirRoot, "public", "uploads", MYMODEL.routeName, key);
4995
5003
  if (!fs.existsSync(path_dest)) {
4996
5004
  fs.mkdirSync(path_dest, { recursive: true });
4997
5005
  }
@@ -5002,10 +5010,11 @@ zRoute.insertSQL = async (req, res, table, data) => {
5002
5010
  if (arr.length > 0) {
5003
5011
  let time = new Date().getTime();
5004
5012
  arr.map((item) => {
5005
- if (Util.fileExist(path_src + item)) {
5013
+ let srcFile = path.join(path_src, item);
5014
+ if (Util.fileExist(srcFile)) {
5006
5015
  let newItem = Util.cleanString(time + item);
5007
5016
  newArr.push(newItem);
5008
- fs.rename(path_src + item, path_dest + newItem);
5017
+ fs.rename(srcFile, path.join(path_dest, newItem));
5009
5018
  }
5010
5019
  });
5011
5020
  data[key] = Util.array_to_jsonb(newArr);
@@ -5152,9 +5161,8 @@ zRoute.updateSQL = async (req, res, table, data, whereData) => {
5152
5161
  }
5153
5162
  if (MYMODEL.widgets[key].name === "dropzone") {
5154
5163
  //console.log('has dropzone')
5155
- let path_src = dirRoot + "/public/zdropzone/" + userId + "/";
5156
- let path_dest =
5157
- dirRoot + "/public/uploads/" + MYMODEL.table + "/" + key + "/";
5164
+ let path_src = path.join(dirRoot, "public", "zdropzone", userId);
5165
+ let path_dest = path.join(dirRoot, "public", "uploads", MYMODEL.table, key);
5158
5166
  if (!fs.existsSync(path_dest)) {
5159
5167
  fs.mkdirSync(path_dest, { recursive: true });
5160
5168
  }
@@ -5164,11 +5172,13 @@ zRoute.updateSQL = async (req, res, table, data, whereData) => {
5164
5172
  let newArr = [];
5165
5173
  let time = new Date().getTime();
5166
5174
  arr.map((item) => {
5167
- if (!Util.fileExist(path_dest + item)) {
5175
+ let destFile = path.join(path_dest, item);
5176
+ if (!Util.fileExist(destFile)) {
5168
5177
  let newItem = time + item;
5169
5178
  newArr.push(newItem);
5170
- if (Util.fileExist(path_src + item)) {
5171
- fs.rename(path_src + item, path_dest + newItem);
5179
+ let srcFile = path.join(path_src, item);
5180
+ if (Util.fileExist(srcFile)) {
5181
+ fs.rename(srcFile, path.join(path_dest, newItem));
5172
5182
  }
5173
5183
  } else {
5174
5184
  newArr.push(item);
@@ -5375,16 +5385,16 @@ zRoute.deleteFiles = async (table, result) => {
5375
5385
  for (let key in widgets) {
5376
5386
  if (widgets[key].name == "dropzone") {
5377
5387
  if (result[key]) {
5378
- let dir = `${dirRoot}/public/uploads/${table}/${key}/`;
5388
+ let dir = path.join(dirRoot, "public", "uploads", table, key);
5379
5389
  result[key].map((item) => {
5380
- fs.remove(dir + item, () => {});
5390
+ fs.remove(path.join(dir, item), () => {});
5381
5391
  });
5382
5392
  }
5383
5393
  }
5384
5394
  if (widgets[key].name == "image" || widgets[key].name == "file") {
5385
5395
  if (result[key]) {
5386
- let dir = `${dirRoot}/public/uploads/${table}/`;
5387
- fs.remove(dir + result[key], () => {});
5396
+ let dir = path.join(dirRoot, "public", "uploads", table);
5397
+ fs.remove(path.join(dir, result[key]), () => {});
5388
5398
  }
5389
5399
  }
5390
5400
  if (widgets[key].name == "dropbox") {
@@ -5479,7 +5489,7 @@ zRoute.import = async (req, res, MYMODEL) => {
5479
5489
  }
5480
5490
  let mytables = "<table>";
5481
5491
  let uniqueName = Util.generateUnique() + ".xlsx";
5482
- const filename = `${dirRoot}/public/uploads/zlogs_upload/${uniqueName}`;
5492
+ const filename = path.join(dirRoot, "public", "uploads", "zlogs_upload", uniqueName);
5483
5493
  let excelFile = req.files.excel,
5484
5494
  labels = MYMODEL.labels,
5485
5495
  keys = {};
@@ -5677,10 +5687,10 @@ zRoute.buildForm = async (req, res) => {
5677
5687
  let table = req.body.table;
5678
5688
  let keys = req.body.keys;
5679
5689
  let relations = JSON.parse(req.body.relations) || {};
5680
- let MYMODEL = MYMODELS[table] || require(`${dirRoot}/models/${table}`);
5690
+ let MYMODEL = MYMODELS[table] || require(path.join(dirRoot, "models", table));
5681
5691
  let MODEL_TABLE =
5682
5692
  MYMODELS[MYMODEL.widgets[keys].table] ||
5683
- require(`${dirRoot}/models/${MYMODEL.widgets[keys].table}`);
5693
+ require(path.join(dirRoot, "models", MYMODEL.widgets[keys].table));
5684
5694
  let MODEL_TABLE_RELATIONS = await zRoute.relations(
5685
5695
  req,
5686
5696
  res,
@@ -6179,7 +6189,7 @@ zRoute.makeFunctionsSystem = () => {
6179
6189
  }
6180
6190
  let templateSystem = `const { connection, Util, io, zCache, myCache, zDebug, zDataTable, moduleLib, zFunction, zFn, zMail, zRoute, zRole} = require('zet-lib');
6181
6191
  module.exports = (req, res, next) => {`;
6182
- let fileSystem = `${dirRoot}/components/zFunctionsSystem.js`;
6192
+ let fileSystem = path.join(dirRoot, "components", "zFunctionsSystem.js");
6183
6193
  templateSystem += content;
6184
6194
  templateSystem += ` next();
6185
6195
  };
@@ -1,4 +1,5 @@
1
1
  const express = require('express');
2
+ const path = require('path');
2
3
  const router = express.Router();
3
4
  const csrf = require('./csrf');
4
5
  const csrfProtection = csrf({cookie: true});
@@ -73,13 +74,13 @@ router.get('/', csrfProtection, async (req, res) => {
73
74
  relations: relations,
74
75
  routeName: res.locals.routeName
75
76
  }
76
- const bodyView = Util.readFile(require.resolve(__dirname + '/views/zview.ejs'))
77
+ const bodyView = Util.readFile(require.resolve(path.join(__dirname, 'views', 'zview.ejs')))
77
78
  const bodyHTML = ejs.render(bodyView, renderData)
78
- const endHTML = ejs.render(Util.readFile(require.resolve(__dirname + '/views/zviewjs.ejs')), renderData)
79
+ const endHTML = ejs.render(Util.readFile(require.resolve(path.join(__dirname, 'views', 'zviewjs.ejs'))), renderData)
79
80
  let dataRender = renderData
80
81
  dataRender.bodyHTML = bodyHTML
81
82
  dataRender.endHTML = endHTML
82
- res.render(require.resolve(__dirname + '/views/view_layout.ejs'), dataRender)
83
+ res.render(require.resolve(path.join(__dirname, 'views', 'view_layout.ejs')), dataRender)
83
84
  })
84
85
 
85
86
  router.post('/addview', async (req, res) => {
@@ -152,19 +153,19 @@ router.post('/load-form', async (req, res) => {
152
153
  if (result.id) {
153
154
  json = Util.jsonSuccess('success')
154
155
  if (!result.router) {
155
- result.router = Util.readFile(require.resolve(__dirname + '/views/router.txt'))
156
+ result.router = Util.readFile(require.resolve(path.join(__dirname, 'views', 'router.txt')))
156
157
  }
157
158
  if (!result.index_ejs) {
158
- result.index_ejs = Util.readFile(require.resolve(__dirname + '/views/index_ejs.txt'))
159
+ result.index_ejs = Util.readFile(require.resolve(path.join(__dirname, 'views', 'index_ejs.txt')))
159
160
  }
160
161
  if (!result.indexcss_ejs) {
161
- result.indexcss_ejs = Util.readFile(require.resolve(__dirname + '/views/indexcss_ejs.txt'))
162
+ result.indexcss_ejs = Util.readFile(require.resolve(path.join(__dirname, 'views', 'indexcss_ejs.txt')))
162
163
  }
163
164
  if (!result.indexjs_ejs) {
164
- result.indexjs_ejs = Util.readFile(require.resolve(__dirname + '/views/indexjs_ejs.txt'))
165
+ result.indexjs_ejs = Util.readFile(require.resolve(path.join(__dirname, 'views', 'indexjs_ejs.txt')))
165
166
  }
166
167
  if (!result.view_ejs) {
167
- result.view_ejs = Util.readFile(require.resolve(__dirname + '/views/view_ejs.txt'))
168
+ result.view_ejs = Util.readFile(require.resolve(path.join(__dirname, 'views', 'view_ejs.txt')))
168
169
  }
169
170
  if (!result.queries) {
170
171
  result.queries = {
@@ -274,7 +275,7 @@ router.delete('/delete-table', csrfProtection, async (req, res) => {
274
275
  //await connection.query("DELETE FROM zfields WHERE `table` = ?", [table]);
275
276
  await connection.query(`DROP VIEW "${table}";`)
276
277
  //delete file
277
- let modelFile = dirRoot + '/models/' + table + '.js'
278
+ let modelFile = path.join(dirRoot, 'models', table + '.js')
278
279
  fs.stat(modelFile, function (err, stats) {
279
280
  console.log(stats) //here we got all information of file in stats variable
280
281
  if (err) {
@@ -287,7 +288,7 @@ router.delete('/delete-table', csrfProtection, async (req, res) => {
287
288
  }
288
289
  })
289
290
 
290
- let routesFile = dirRoot + '/routes/' + table + '.js'
291
+ let routesFile = path.join(dirRoot, 'routes', table + '.js')
291
292
  fs.stat(routesFile, function (err, stats) {
292
293
  console.log(stats) //here we got all information of file in stats variable
293
294
  if (err) {
@@ -300,7 +301,7 @@ router.delete('/delete-table', csrfProtection, async (req, res) => {
300
301
  }
301
302
  })
302
303
 
303
- let runtimeFile = dirRoot + '/public/runtime/script/' + table
304
+ let runtimeFile = path.join(dirRoot, 'public', 'runtime', 'script', table)
304
305
  fs.rm(
305
306
  runtimeFile,
306
307
  {
@@ -314,7 +315,7 @@ router.delete('/delete-table', csrfProtection, async (req, res) => {
314
315
  }
315
316
  }
316
317
  )
317
- let runtimeFileHead = dirRoot + '/public/runtime/head/' + table
318
+ let runtimeFileHead = path.join(dirRoot, 'public', 'runtime', 'head', table)
318
319
  fs.rm(
319
320
  runtimeFileHead,
320
321
  {
@@ -328,7 +329,7 @@ router.delete('/delete-table', csrfProtection, async (req, res) => {
328
329
  }
329
330
  }
330
331
  )
331
- let runtimeFileEnd = dirRoot + '/public/runtime/end/' + table
332
+ let runtimeFileEnd = path.join(dirRoot, 'public', 'runtime', 'end', table)
332
333
  fs.rm(
333
334
  runtimeFileEnd,
334
335
  {
@@ -348,7 +349,7 @@ router.delete('/delete-table', csrfProtection, async (req, res) => {
348
349
  where: {route_name: table},
349
350
  })
350
351
  if (table) {
351
- const viewsFile = dirRoot + '/views/' + table
352
+ const viewsFile = path.join(dirRoot, 'views', table)
352
353
  fs.rm(
353
354
  viewsFile,
354
355
  {
@@ -1046,23 +1047,23 @@ const createAllFiles = async (table) => {
1046
1047
  })
1047
1048
  //create model file
1048
1049
  let modelContent = `let MYMODEL = ${Util.newLine} ${JSON.stringify(json,null,2)} ${Util.newLine}module.exports=MYMODEL`
1049
- fs.writeFileSync(`${dirRoot}/models/${table}.js`, modelContent)
1050
+ fs.writeFileSync(path.join(dirRoot, 'models', table + '.js'), modelContent)
1050
1051
  console.log(`The file model of ${table}.js is saved!`)
1051
1052
  //create route file
1052
- fs.writeFileSync(`${dirRoot}/routes/${table}.js`, result.router.replace('[[[TABLE_NAME]]]', table))
1053
+ fs.writeFileSync(path.join(dirRoot, 'routes', table + '.js'), result.router.replace('[[[TABLE_NAME]]]', table))
1053
1054
  console.log(`The file model of ${table}.js is saved!`)
1054
1055
  //create views file
1055
- let DIR_VIEW = `${dirRoot}/views/${table}`
1056
+ let DIR_VIEW = path.join(dirRoot, 'views', table)
1056
1057
  if (!fs.existsSync(DIR_VIEW)) {
1057
1058
  fs.mkdirSync(DIR_VIEW)
1058
1059
  }
1059
- fs.writeFileSync(`${DIR_VIEW}/index.ejs`, result.index_ejs)
1060
+ fs.writeFileSync(path.join(DIR_VIEW, 'index.ejs'), result.index_ejs)
1060
1061
  console.log(`The file model of index.ejs is saved!`)
1061
- fs.writeFileSync(`${DIR_VIEW}/indexcss.ejs`, result.indexcss_ejs)
1062
+ fs.writeFileSync(path.join(DIR_VIEW, 'indexcss.ejs'), result.indexcss_ejs)
1062
1063
  console.log(`The file model of indexcss.ejs is saved!`)
1063
- fs.writeFileSync(`${DIR_VIEW}/indexjs.ejs`, result.indexjs_ejs)
1064
+ fs.writeFileSync(path.join(DIR_VIEW, 'indexjs.ejs'), result.indexjs_ejs)
1064
1065
  console.log(`The file model of indexjs.ejs is saved!`)
1065
- fs.writeFileSync(`${DIR_VIEW}/view.ejs`, result.view_ejs)
1066
+ fs.writeFileSync(path.join(DIR_VIEW, 'view.ejs'), result.view_ejs)
1066
1067
  console.log(`The file model of view.ejs is saved!`)
1067
1068
  }
1068
1069
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zet-lib",
3
- "version": "3.2.3",
3
+ "version": "3.3.0",
4
4
  "description": "zet is a library that part of zet generator.",
5
5
  "engines": {
6
6
  "node": ">=18"