zet-lib 3.2.4 → 3.3.1

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.
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Created by sintret dev on 10/1/2021.
3
3
  */
4
+ const path = require("path");
4
5
  const configGenerator = require("./config_generator");
5
6
  const Model = require("./Model");
6
7
  const fs = require("fs-extra");
@@ -285,6 +286,10 @@ me.prepare = (MYMODEL) => {
285
286
  widgets[key].inputGroupRight = property.values.inputGroupRight;
286
287
  widgets[key].hasInputGroup = true;
287
288
  }
289
+ widgets[key].isAttributes = false;
290
+ if (Object.prototype.hasOwnProperty.call(property.values,"isAttributes") && property.values.isAttributes) {
291
+ widgets[key].isAttributes = true;
292
+ }
288
293
  widgets[key].onChange = false;
289
294
  if (Object.prototype.hasOwnProperty.call(property.values,"onChange") && property.values.onChange.length > 4) {
290
295
  widgets[key].onChange = true;
@@ -393,22 +398,21 @@ me.prepare = (MYMODEL) => {
393
398
  widgets[key].relation_info = property.values.relation_info ? true : false;
394
399
  if(widgets[key].relation_info) {
395
400
  //create file info to runtime
396
- let dirInfo = `${dirRoot}/public/runtime/info/${MYMODEL.table}`
397
- //Util.writeFile(`${dirRoot}/runtime/info/${MYMODEL.tab}`)
401
+ let dirInfo = path.join(dirRoot, "public", "runtime", "info", MYMODEL.table);
402
+ //Util.writeFile(path.join(dirRoot, "runtime", "info", MYMODEL.tab))
398
403
  if(!fs.existsSync(dirInfo)) {
399
404
  fs.mkdirSync(dirInfo, { recursive: true });
400
405
  }
401
- fs.writeFileSync(`${dirInfo}/${key}.txt`, property.values.relation_info);
406
+ fs.writeFileSync(path.join(dirInfo, key + ".txt"), property.values.relation_info);
402
407
  }
403
- console.log(widgets[key].onChange)
404
408
  if(widgets[key].onChange) {
405
409
  //create file info to runtime
406
- let dirInfo = `${dirRoot}/public/runtime/onchange/${MYMODEL.table}`
407
- //Util.writeFile(`${dirRoot}/runtime/info/${MYMODEL.tab}`)
410
+ let dirInfo = path.join(dirRoot, "public", "runtime", "onchange", MYMODEL.table);
411
+ //Util.writeFile(path.join(dirRoot, "runtime", "info", MYMODEL.tab))
408
412
  if(!fs.existsSync(dirInfo)) {
409
413
  fs.mkdirSync(dirInfo, { recursive: true });
410
414
  }
411
- fs.writeFileSync(`${dirInfo}/${key}.txt`, property.values.onChange);
415
+ fs.writeFileSync(path.join(dirInfo, key + ".txt"), property.values.onChange);
412
416
  }
413
417
  break;
414
418
  case "dragdrop":
@@ -468,7 +472,16 @@ me.prepare = (MYMODEL) => {
468
472
  : property.values.height;
469
473
  break;
470
474
  case "html":
471
- widgets[key].code = property.values.code || "";
475
+ widgets[key].code = property.values.code ? true : false;
476
+ if(widgets[key].code) {
477
+ //create file info to runtime
478
+ let dirInfo = path.join(dirRoot, "public", "runtime", "html", MYMODEL.table);
479
+ //Util.writeFile(path.join(dirRoot, "runtime", "info", MYMODEL.tab))
480
+ if(!fs.existsSync(dirInfo)) {
481
+ fs.mkdirSync(dirInfo, { recursive: true });
482
+ }
483
+ fs.writeFileSync(path.join(dirInfo, key + ".txt"), property.values.code);
484
+ }
472
485
  break;
473
486
 
474
487
  case "money":
@@ -520,7 +533,7 @@ me.create = async (ZFIELDS) => {
520
533
  const JSON_MODEL = me.prepare(ZFIELDS);
521
534
  jsonText += me.build(JSON_MODEL);
522
535
  jsonText += `}`;
523
- const filename = `${dirRoot}/models/${ZFIELDS.table}.js`;
536
+ const filename = path.join(dirRoot, "models", ZFIELDS.table + ".js");
524
537
  fs.writeFile(filename, jsonText, function (err) {
525
538
  if (err) {
526
539
  return console.log(err.toString());
package/lib/io.js CHANGED
@@ -1,6 +1,5 @@
1
1
  const { Server } = require('socket.io');
2
- const io = new Server(); // TANPA listen/attach di sini
3
- //room = token
2
+ const io = new Server();
4
3
  let socketArray = [];
5
4
 
6
5
  io.on('connection', function (socket) {
@@ -11,26 +10,15 @@ io.on('connection', function (socket) {
11
10
  socket.handshake.session.user = {
12
11
  username: 'OSK'
13
12
  };
14
- //console.log('socket.handshake session data is %j.', socket.handshake.session);
15
-
16
- // socket.handshake.session.save();
17
- //emit logged_in for debugging purposes of this example
18
13
  socket.emit('logged_in', socket.handshake.session);
19
14
  });
20
15
  // Unset session data via socket
21
16
  socket.on('checksession', function() {
22
- // console.log('Received checksession message');
23
- // console.log('socket.handshake session data is %j.', socket.handshake.session);
24
17
  socket.emit('checksession', socket.handshake.session);
25
18
  });
26
- // Unset session data via socket
27
19
  socket.on('logout', function() {
28
20
  console.log('Received logout message');
29
21
  delete socket.handshake.session.user;
30
- // socket.handshake.session.save();
31
- //emit logged_out for debugging purposes of this example
32
- //console.log('socket.handshake session data is %j.', socket.handshake.session);
33
-
34
22
  socket.emit('logged_out', socket.handshake.session);
35
23
  });
36
24
 
package/lib/zAppRouter.js CHANGED
@@ -161,7 +161,7 @@ router.post("/profile-sign", access, async (req, res) => {
161
161
  },
162
162
  });
163
163
  fs.writeFile(
164
- dirRoot + "/public/uploads/zuser/" + filename,
164
+ path.join(dirRoot, "public", "uploads", "zuser", filename),
165
165
  base64Image,
166
166
  { encoding: "base64" },
167
167
  function (err) {}
@@ -1337,8 +1337,8 @@ router.post('/get_approval_comments', async(req,res) => {
1337
1337
 
1338
1338
  router.get("/zdownload/zgenerator/:table", async (req, res) => {
1339
1339
  var table = req.params.table;
1340
- var path = `${dirRoot}/public/uploads/zgenerator/${table}.json`;
1341
- res.download(path, function (err) {
1340
+ var filePath = path.join(dirRoot, "public", "uploads", "zgenerator", table + ".json");
1341
+ res.download(filePath, function (err) {
1342
1342
  if (err) {
1343
1343
  //console.log(err);
1344
1344
  }
@@ -1592,12 +1592,12 @@ router.post("/zdropzone", async (req, res) => {
1592
1592
  try {
1593
1593
  let userId = res.locals.userId;
1594
1594
  if (userId) {
1595
- let dir = `${dirRoot}/public/zdropzone/${userId}`;
1595
+ let dir = path.join(dirRoot, "public", "zdropzone", userId);
1596
1596
  if (!fs.existsSync(dir)) {
1597
1597
  fs.mkdirSync(dir, { recursive: true });
1598
1598
  }
1599
1599
  let filename = req.files.file.name;
1600
- req.files.file.mv(dir + "/" + filename, function (err) {
1600
+ req.files.file.mv(path.join(dir, filename), function (err) {
1601
1601
  if (err) {
1602
1602
  return res.status(500).send(err + "");
1603
1603
  }
@@ -1615,11 +1615,11 @@ router.post("/zdropzone-remove", async (req, res) => {
1615
1615
  try {
1616
1616
  let userId = res.locals.userId;
1617
1617
  let cacheName = req.body.cname.replace("ZUSER___ID", userId);
1618
- let dir = `${dirRoot}/public/zdropzone/${userId}`;
1618
+ let dir = path.join(dirRoot, "public", "zdropzone", userId);
1619
1619
  if (!fs.existsSync(dir)) {
1620
1620
  fs.mkdirSync(dir, { recursive: true });
1621
1621
  }
1622
- let filename = `${dirRoot}/public/zdropzone/${userId}/${req.body.file}`;
1622
+ let filename = path.join(dirRoot, "public", "zdropzone", userId, req.body.file);
1623
1623
  let arr = [];
1624
1624
  if (Util.fileExist(filename)) {
1625
1625
  await fs.unlink(filename);
@@ -1639,7 +1639,7 @@ router.post("/zdropzone-remove", async (req, res) => {
1639
1639
  router.post("/zdropzone-attributes", async (req, res) => {
1640
1640
  try {
1641
1641
  let userId = res.locals.userId;
1642
- let dir = `${dirRoot}/public/zdropzone/${userId}`;
1642
+ let dir = path.join(dirRoot, "public", "zdropzone", userId);
1643
1643
  if (!fs.existsSync(dir)) {
1644
1644
  fs.mkdirSync(dir, { recursive: true });
1645
1645
  }
@@ -1726,13 +1726,14 @@ router.get("/zdownloads-dropzone/:table/:field/:id", async (req, res) => {
1726
1726
  id: id,
1727
1727
  },
1728
1728
  });
1729
- let dir = `${dirRoot}/public/uploads/${table}/${field}/`;
1729
+ let dir = path.join(dirRoot, "public", "uploads", table, field);
1730
1730
  let arr = [];
1731
1731
  let files = result[field];
1732
1732
  for (const file of files) {
1733
- if (Util.fileExist(dir + file)) {
1733
+ let fullPath = path.join(dir, file);
1734
+ if (Util.fileExist(fullPath)) {
1734
1735
  let filename = file.substring(13);
1735
- arr.push({ path: dir + file, name: filename });
1736
+ arr.push({ path: fullPath, name: filename });
1736
1737
  //io.to(room).emit('message', `Zip file ${filename}`)
1737
1738
  }
1738
1739
  }
@@ -1792,14 +1793,14 @@ router.post("/zcompress-dropzone", async (req, res) => {
1792
1793
  if (!fs.existsSync(tempDir)) {
1793
1794
  fs.mkdirSync(tempDir);
1794
1795
  }
1795
- //let dir = `${dirRoot}/public/uploads/${table}/${field}/`;
1796
+ //let dir = path.join(dirRoot, "public", "uploads", table, field);
1796
1797
  let arr = [];
1797
1798
  let files = result[field];
1798
1799
  const count = files.length;
1799
1800
  let i = 0;
1800
1801
  for (const file of files) {
1801
1802
  let filename = file.substring(13);
1802
- let attributes = Util.fileAttribute(dir + file);
1803
+ let attributes = Util.fileAttribute(path.join(dir, file));
1803
1804
  if (attributes.type == "image") {
1804
1805
  const filePath = path.join(dir, file);
1805
1806
  const tempPath = path.join(tempDir, file);
@@ -2098,7 +2099,7 @@ router.get("/zdownloads-dropbox/:table/:field/:id", async (req, res) => {
2098
2099
  id: id,
2099
2100
  },
2100
2101
  });
2101
- let dir = `${dirRoot}/public/uploads/${table}/${field}/`;
2102
+ let dir = path.join(dirRoot, "public", "uploads", table, field);
2102
2103
  let arr = [];
2103
2104
  let files = result[field];
2104
2105
  const jsZip = new JSZip();
@@ -2273,7 +2274,7 @@ router.post('/zcall-information_info', async(req,res) => {
2273
2274
  let data = ''
2274
2275
  try {
2275
2276
  const {table, elementId, myvalue} = req.body;
2276
- let content = Util.readFile(`${dirRoot}/public/runtime/info/${table}/${elementId}.txt`)
2277
+ let content = Util.readFile(path.join(dirRoot, "public", "runtime", "info", table, elementId + ".txt"))
2277
2278
  data = content;
2278
2279
 
2279
2280
  // Fungsi untuk mengekstrak semua field dari template
@@ -47,7 +47,7 @@ const nots = [
47
47
  //const generatorUrl = "https://generator.cmsqu.com";
48
48
 
49
49
  const bodyView = Util.readFile(
50
- require.resolve(__dirname + "/views/generator.ejs")
50
+ require.resolve(path.join(__dirname, "views", "generator.ejs"))
51
51
  );
52
52
 
53
53
  router.get("/", csrfProtection, async (req, res) => {
@@ -136,14 +136,14 @@ router.get("/", csrfProtection, async (req, res) => {
136
136
 
137
137
  const bodyHTML = ejs.render(bodyView, renderData);
138
138
  const endHTML = ejs.render(
139
- Util.readFile(require.resolve(__dirname + "/views/generatorjs.ejs")),
139
+ Util.readFile(require.resolve(path.join(__dirname, "views", "generatorjs.ejs"))),
140
140
  renderData
141
141
  );
142
142
  let dataRender = renderData;
143
143
  dataRender.bodyHTML = bodyHTML;
144
144
  dataRender.endHTML = endHTML;
145
145
  res.render(
146
- require.resolve(__dirname + "/views/generator_layout.ejs"),
146
+ require.resolve(path.join(__dirname, "views", "generator_layout.ejs")),
147
147
  dataRender
148
148
  );
149
149
  });
@@ -342,7 +342,7 @@ router.post("/save_and_generate", csrfProtection, async (req, res) => {
342
342
  if (nots.includes(req.body.table)) {
343
343
  return res.json(Util.flashError("Table is locked"));
344
344
  }
345
- let dir = `${dirRoot}/public/temp`
345
+ let dir = path.join(dirRoot, "public", "temp");
346
346
  Util.dirExist(dir, true);
347
347
  //console.log(JSON.stringify(req.body))
348
348
  const json = await generate(req, res);
@@ -546,7 +546,7 @@ const generate = async (req, res) => {
546
546
  });
547
547
 
548
548
  fs.writeFileSync(
549
- `${dirRoot}/models/${filesKey.filename}`,
549
+ path.join(dirRoot, "models", filesKey.filename),
550
550
  filesKey.content
551
551
  );
552
552
  console.log(`The file model of ${filesKey.filename} is saved!`);
@@ -603,13 +603,13 @@ const generate = async (req, res) => {
603
603
  newModel += zRoute.buildFileModel(MYMODEL);
604
604
  newModel += `${Util.tab}};`;
605
605
 
606
- fs.writeFileSync(`${dirRoot}/models/${filesKey.filename}`, newModel);
606
+ fs.writeFileSync(path.join(dirRoot, "models", filesKey.filename), newModel);
607
607
  }
608
608
  //check model if it has select relation in concat
609
609
  await scanning(MYMODEL, result);
610
610
  }
611
611
  //generate views
612
- let DIR_VIEW = `${dirRoot}/views/${table}`;
612
+ let DIR_VIEW = path.join(dirRoot, "views", table);
613
613
  if (key == "views") {
614
614
  if (!fs.existsSync(DIR_VIEW)) {
615
615
  fs.mkdirSync(DIR_VIEW);
@@ -619,10 +619,10 @@ const generate = async (req, res) => {
619
619
  for (const q in filesKey) {
620
620
  console.log(q);
621
621
  if (Util.in_array(q, compilesJS)) {
622
- fs.writeFileSync(`${DIR_VIEW}/${q}`, filesKey[q]);
622
+ fs.writeFileSync(path.join(DIR_VIEW, q), filesKey[q]);
623
623
  } else {
624
624
  fs.writeFileSync(
625
- `${DIR_VIEW}/${q}`,
625
+ path.join(DIR_VIEW, q),
626
626
  await minify(filesKey[q], {
627
627
  minifyJS: true,
628
628
  minifyCSS: true,
@@ -637,7 +637,7 @@ const generate = async (req, res) => {
637
637
  if (!dummy) {
638
638
  if (key == "route") {
639
639
  fs.writeFileSync(
640
- `${dirRoot}/routes/${filesKey.filename}`,
640
+ path.join(dirRoot, "routes", filesKey.filename),
641
641
  filesKey.content
642
642
  );
643
643
  console.log(`The files route of ${filesKey.filename} is saved!`);
@@ -647,11 +647,11 @@ const generate = async (req, res) => {
647
647
 
648
648
  //make a directory
649
649
  if (!dummy) {
650
- let path_script = `${dirRoot}/public/runtime/script/${table}`;
650
+ let path_script = path.join(dirRoot, "public", "runtime", "script", table);
651
651
  Util.dirExist(path_script, true);
652
- let path_head = `${dirRoot}/public/runtime/head/${table}`;
652
+ let path_head = path.join(dirRoot, "public", "runtime", "head", table);
653
653
  Util.dirExist(path_head, true);
654
- let path_end = `${dirRoot}/public/runtime/end/${table}`;
654
+ let path_end = path.join(dirRoot, "public", "runtime", "end", table);
655
655
  Util.dirExist(path_end, true);
656
656
  //we need to generate javascript code into runtime
657
657
  let relations = await zRoute.relations(req, res, MYMODEL.table);
@@ -667,9 +667,9 @@ const generate = async (req, res) => {
667
667
  Util.deleteAllFiles(path_script);
668
668
  Util.deleteAllFiles(path_head);
669
669
  Util.deleteAllFiles(path_end);
670
- Util.writeFile(`${path_script}/${time}.js`, script.code);
671
- Util.writeFile(`${path_head}/head.txt`, jsObj.head);
672
- Util.writeFile(`${path_end}/end.txt`, jsObj.end);
670
+ Util.writeFile(path.join(path_script, `${time}.js`), script.code);
671
+ Util.writeFile(path.join(path_head, "head.txt"), jsObj.head);
672
+ Util.writeFile(path.join(path_end, "end.txt"), jsObj.end);
673
673
  }
674
674
 
675
675
  //restart pm2 module in production
@@ -784,7 +784,7 @@ const buildJoin = async (MYMODEL, result) => {
784
784
  if (result.joins && Object.keys(joins).length > 0) {
785
785
  let newDataObj = {};
786
786
  for (let key in joins) {
787
- let THEIR_MODEL = require(`${dirRoot}/models/${key}`);
787
+ let THEIR_MODEL = require(path.join(dirRoot, "models", key));
788
788
  //console.log(THEIR_MODEL)
789
789
  let arr = joins[key] || [];
790
790
  table_joins.push(key);
@@ -932,7 +932,7 @@ router.delete("/delete-table", csrfProtection, async (req, res) => {
932
932
  //await connection.query("DELETE FROM zfields WHERE `table` = ?", [table]);
933
933
  await connection.query(`DROP table "${table}";`);
934
934
  //delete file
935
- let modelFile = dirRoot + "/models/" + table + ".js";
935
+ let modelFile = path.join(dirRoot, "models", table + ".js");
936
936
  fs.stat(modelFile, function (err, stats) {
937
937
  console.log(stats); //here we got all information of file in stats variable
938
938
  if (err) {
@@ -945,7 +945,7 @@ router.delete("/delete-table", csrfProtection, async (req, res) => {
945
945
  }
946
946
  });
947
947
 
948
- let routesFile = dirRoot + "/routes/" + table + ".js";
948
+ let routesFile = path.join(dirRoot, "routes", table + ".js");
949
949
  fs.stat(routesFile, function (err, stats) {
950
950
  console.log(stats); //here we got all information of file in stats variable
951
951
  if (err) {
@@ -958,7 +958,7 @@ router.delete("/delete-table", csrfProtection, async (req, res) => {
958
958
  }
959
959
  });
960
960
 
961
- let runtimeFile = dirRoot + "/public/runtime/script/" + table;
961
+ let runtimeFile = path.join(dirRoot, "public", "runtime", "script", table);
962
962
  fs.rm(
963
963
  runtimeFile,
964
964
  {
@@ -972,7 +972,7 @@ router.delete("/delete-table", csrfProtection, async (req, res) => {
972
972
  }
973
973
  }
974
974
  );
975
- let runtimeFileHead = dirRoot + "/public/runtime/head/" + table;
975
+ let runtimeFileHead = path.join(dirRoot, "public", "runtime", "head", table);
976
976
  fs.rm(
977
977
  runtimeFileHead,
978
978
  {
@@ -986,7 +986,7 @@ router.delete("/delete-table", csrfProtection, async (req, res) => {
986
986
  }
987
987
  }
988
988
  );
989
- let runtimeFileEnd = dirRoot + "/public/runtime/end/" + table;
989
+ let runtimeFileEnd = path.join(dirRoot, "public", "runtime", "end", table);
990
990
  fs.rm(
991
991
  runtimeFileEnd,
992
992
  {
@@ -1006,7 +1006,7 @@ router.delete("/delete-table", csrfProtection, async (req, res) => {
1006
1006
  where: { route_name: table },
1007
1007
  });
1008
1008
  if (table) {
1009
- const viewsFile = dirRoot + "/views/" + table;
1009
+ const viewsFile = path.join(dirRoot, "views", table);
1010
1010
  fs.rm(
1011
1011
  viewsFile,
1012
1012
  {
@@ -1414,12 +1414,12 @@ router.post("/export", async (req, res) => {
1414
1414
  table: table,
1415
1415
  },
1416
1416
  });
1417
- const dir = `${dirRoot}/public/uploads/zgenerator`;
1417
+ const dir = path.join(dirRoot, "public", "uploads", "zgenerator");
1418
1418
  if (!fs.existsSync(dir)) {
1419
1419
  fs.mkdirSync(dir);
1420
1420
  }
1421
1421
  const text = JSON.stringify(result);
1422
- fs.writeFileSync(`${dir}/${table}.json`, text);
1422
+ fs.writeFileSync(path.join(dir, table + ".json"), text);
1423
1423
  } else {
1424
1424
  json = Util.flashError("no table selected");
1425
1425
  }
@@ -1495,7 +1495,7 @@ router.post("/import", async (req, res) => {
1495
1495
  Scanning relation id to name
1496
1496
  */
1497
1497
  const scanning = async (MYMODEL, result) => {
1498
- //let MYMODEL = require(`${dirRoot}/models/${table}`);
1498
+ //let MYMODEL = require(path.join(dirRoot, "models", table));
1499
1499
  let table = MYMODEL.table;
1500
1500
  const widgets = MYMODEL.widgets;
1501
1501
  const not_scanning = ["created_by", "updated_by"];
@@ -1511,7 +1511,7 @@ const scanning = async (MYMODEL, result) => {
1511
1511
  if (arr.length) {
1512
1512
  let str = Util.replaceAll(arr[0], '"', '')
1513
1513
  let mysplits = str.indexOf(',') > -1 ? str.split(',') : [str]
1514
- let MYMODEL_TABLE = require(`${dirRoot}/models/${widgets[key].table}`)
1514
+ let MYMODEL_TABLE = require(path.join(dirRoot, "models", widgets[key].table))
1515
1515
  let widgetsRelations = MYMODEL_TABLE.widgets
1516
1516
  let relationsKeys = []
1517
1517
  let relationsKeysObject = {}
@@ -1546,7 +1546,7 @@ const scanning = async (MYMODEL, result) => {
1546
1546
  newModel += zRoute.buildFileModel(MYMODEL);
1547
1547
  newModel += `${Util.newLine}`;
1548
1548
  newModel += `}`;
1549
- fs.writeFileSync(`${dirRoot}/models/${MYMODEL.table}.js`, newModel);
1549
+ fs.writeFileSync(path.join(dirRoot, "models", MYMODEL.table + ".js"), newModel);
1550
1550
  }
1551
1551
 
1552
1552
  //check if has join
@@ -1559,7 +1559,7 @@ const scanning = async (MYMODEL, result) => {
1559
1559
  newModel += zRoute.buildFileModel(MYMODEL);
1560
1560
  newModel += `${Util.newLine}`;
1561
1561
  newModel += `}`;
1562
- fs.writeFileSync(`${dirRoot}/models/${MYMODEL.table}.js`, newModel);
1562
+ fs.writeFileSync(path.join(dirRoot, "models", MYMODEL.table + ".js"), newModel);
1563
1563
  //return MYMODEL;
1564
1564
  };
1565
1565
 
@@ -1572,11 +1572,11 @@ router.post("/generate-assets", async (req, res) => {
1572
1572
  for (let key in MYMODELS) {
1573
1573
  let MYMODEL = MYMODELS[key];
1574
1574
  let table = MYMODEL.table;
1575
- let path_script = `${dirRoot}/public/runtime/script/${table}`;
1575
+ let path_script = path.join(dirRoot, "public", "runtime", "script", table);
1576
1576
  Util.dirExist(path_script, true);
1577
- let path_head = `${dirRoot}/public/runtime/head/${table}`;
1577
+ let path_head = path.join(dirRoot, "public", "runtime", "head", table);
1578
1578
  Util.dirExist(path_head, true);
1579
- let path_end = `${dirRoot}/public/runtime/end/${table}`;
1579
+ let path_end = path.join(dirRoot, "public", "runtime", "end", table);
1580
1580
  Util.dirExist(path_end, true);
1581
1581
  //we need to generate javascript code into runtime
1582
1582
  let relations = await zRoute.relations(req, res, MYMODEL.table);
@@ -1590,9 +1590,9 @@ router.post("/generate-assets", async (req, res) => {
1590
1590
  //minify script
1591
1591
  let script = uglifyJS.minify(jsObj.script);
1592
1592
  if (script.error) throw script.error;
1593
- Util.writeFile(`${path_script}/${time}.js`, script.code);
1594
- Util.writeFile(`${path_head}/head.txt`, jsObj.head);
1595
- Util.writeFile(`${path_end}/end.txt`, jsObj.end);
1593
+ Util.writeFile(path.join(path_script, `${time}.js`), script.code);
1594
+ Util.writeFile(path.join(path_head, "head.txt"), jsObj.head);
1595
+ Util.writeFile(path.join(path_end, "end.txt"), jsObj.end);
1596
1596
  }
1597
1597
  } catch (e) {
1598
1598
  notifObj = Util.flashError(e.toString());
@@ -1613,8 +1613,8 @@ router.post("/minify", async (req, res) => {
1613
1613
 
1614
1614
  const viewsMini = async () => {
1615
1615
  let notifyObj = Util.jsonSuccess("Success");
1616
- const viewDir = `${dirRoot}/views`;
1617
- const layoutsDir = `${dirRoot}/views/layouts`;
1616
+ const viewDir = path.join(dirRoot, "views");
1617
+ const layoutsDir = path.join(dirRoot, "views", "layouts");
1618
1618
  let item;
1619
1619
  try {
1620
1620
  let views = Util.getAllFiles(viewDir);
@@ -1627,11 +1627,11 @@ const viewsMini = async () => {
1627
1627
  for (const dir of views) {
1628
1628
  console.log("dir :", dir);
1629
1629
  if (!Util.in_array(dir, notViewDir)) {
1630
- let files = Util.getAllFiles(`${viewDir}/${dir}`);
1630
+ let files = Util.getAllFiles(path.join(viewDir, dir));
1631
1631
  //console.log(files);
1632
1632
  for (item of files) {
1633
1633
  if (item.includes(".ejs")) {
1634
- let filename = `${viewDir}/${dir}/${item}`;
1634
+ let filename = path.join(viewDir, dir, item);
1635
1635
  let content = Util.readFile(filename);
1636
1636
  let contentChange = await minify(content, options);
1637
1637
  fs.writeFileSync(filename, contentChange);
@@ -1643,7 +1643,7 @@ const viewsMini = async () => {
1643
1643
  let layouts = Util.getAllFiles(layoutsDir);
1644
1644
  for (item of layouts) {
1645
1645
  if (item.includes(".ejs")) {
1646
- let filename = `${layoutsDir}//${item}`;
1646
+ let filename = path.join(layoutsDir, item);
1647
1647
  let content = Util.readFile(filename);
1648
1648
  let contentChange = await minify(content, options);
1649
1649
  fs.writeFileSync(filename, contentChange);
@@ -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});
@@ -19,7 +20,7 @@ if (typeof global.dirRoot === 'undefined') {
19
20
  icons list for tabler and set to /public/js
20
21
  */
21
22
  const iconList = () => {
22
- const dir = `${dirRoot}/public/assets/icons`;
23
+ const dir = path.join(dirRoot, 'public', 'assets', 'icons');
23
24
  const icons = fs.readdirSync(dir);
24
25
  return icons;
25
26
  };
package/lib/zPage.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * For dynamic router
3
3
  */
4
+ const path = require('path');
4
5
  const axios = require('axios');
5
6
  const fs = require('fs-extra');
6
7
  const nodemailer = require('nodemailer');
@@ -35,7 +36,7 @@ zpage.build = async (req, res) => {
35
36
  });
36
37
  server_code += `module.exports = router;`;
37
38
 
38
- fs.writeFileSync(dirRoot + "/routes/zindex.js", server_code, 'utf-8');
39
+ fs.writeFileSync(path.join(dirRoot, "routes", "zindex.js"), server_code, 'utf-8');
39
40
  if (process.env.NODE_ENV === "production") {
40
41
  setTimeout(function () {
41
42
  pm2.connect(function (err) {
@@ -65,7 +66,7 @@ const { connection, Util, io, zCache, myCache, zDebug, zDataTable, moduleLib, zF
65
66
  zpage.createRoute = (obj, token, layoutObj) => {
66
67
  const MYMODELS = myCache.get('MYMODELS');
67
68
  const MYMODEL = MYMODELS.zpage;
68
- let DIR = dirRoot + "/views/zindex";
69
+ let DIR = path.join(dirRoot, "views", "zindex");
69
70
  let METHOD = MYMODEL.widgets.method.fields;
70
71
  let layout = "new-blank.ejs";
71
72
  if (obj.layouts == 2) {
@@ -92,10 +93,10 @@ zpage.createRoute = (obj, token, layoutObj) => {
92
93
  let render = "";
93
94
  let renderData = "";
94
95
  if (obj.head) {
95
- fs.writeFileSync(`${DIR}/page${obj.id}-head.ejs`, obj.head, 'utf-8');
96
+ fs.writeFileSync(path.join(DIR, `page${obj.id}-head.ejs`), obj.head, 'utf-8');
96
97
  renderData += `renderData.renderHead = "zindex/page${obj.id}-head.ejs"; `
97
98
  } else {
98
- fs.unlink(`${DIR}/page${obj.id}-head.ejs`, function (err) {
99
+ fs.unlink(path.join(DIR, `page${obj.id}-head.ejs`), function (err) {
99
100
  if (err) return console.log(err);
100
101
  console.log('file deleted successfully');
101
102
  });
@@ -103,26 +104,26 @@ zpage.createRoute = (obj, token, layoutObj) => {
103
104
 
104
105
  let isrenderPage = false;
105
106
  if (obj.client_code) {
106
- fs.writeFileSync(`${DIR}/page${obj.id}.ejs`, obj.client_code, 'utf-8');
107
+ fs.writeFileSync(path.join(DIR, `page${obj.id}.ejs`), obj.client_code, 'utf-8');
107
108
  renderData += `renderData.renderBody = "zindex/page${obj.id}.ejs"; `
108
109
  isrenderPage = true;
109
110
  } else {
110
- fs.unlink(`${DIR}/page${obj.id}.ejs`, function (err) {
111
+ fs.unlink(path.join(DIR, `page${obj.id}.ejs`), function (err) {
111
112
  if (err) return console.log(err);
112
113
  console.log('file deleted successfully');
113
114
  });
114
115
  }
115
116
  //optional
116
117
  if(!isrenderPage && obj.method == 1) {
117
- fs.writeFileSync(`${DIR}/page${obj.id}.ejs`, obj.client_code, 'utf-8');
118
+ fs.writeFileSync(path.join(DIR, `page${obj.id}.ejs`), obj.client_code, 'utf-8');
118
119
  renderData += `renderData.renderBody = "zindex/page${obj.id}.ejs"; `
119
120
  }
120
121
  //end optional
121
122
  if (obj.scripts) {
122
- fs.writeFileSync(`${DIR}/page${obj.id}-script.ejs`, obj.scripts, 'utf-8');
123
+ fs.writeFileSync(path.join(DIR, `page${obj.id}-script.ejs`), obj.scripts, 'utf-8');
123
124
  renderData += `renderData.renderEnd = "zindex/page${obj.id}-script.ejs"; `
124
125
  } else {
125
- fs.unlink(`${DIR}/page${obj.id}-script.ejs`, function (err) {
126
+ fs.unlink(path.join(DIR, `page${obj.id}-script.ejs`), function (err) {
126
127
  if (err) return console.log(err);
127
128
  console.log('file deleted successfully');
128
129
  });
@@ -162,8 +163,8 @@ zpage.buildLayout = async (obj) => {
162
163
  minifyCSS:true,
163
164
  collapseWhitespace: true
164
165
  });
165
- console.log(dirRoot + "/views/layouts/" + name + ".ejs");
166
- fs.writeFileSync(dirRoot + "/views/layouts/" + name + ".ejs", html, 'utf-8');
166
+ console.log(path.join(dirRoot, "views", "layouts", name + ".ejs"));
167
+ fs.writeFileSync(path.join(dirRoot, "views", "layouts", name + ".ejs"), html, 'utf-8');
167
168
  if (process.env.NODE_ENV === "production") {
168
169
  setTimeout(function () {
169
170
  pm2.connect(function (err) {
@@ -181,8 +182,8 @@ zpage.buildLayout = async (obj) => {
181
182
 
182
183
  zpage.layoutDelete = async (obj) => {
183
184
  let name = Util.toName(obj.name);
184
- let path = dirRoot + "/views/layouts/customs/" + name + ".ejs"
185
- fs.unlink(path, function (err) {
185
+ let filePath = path.join(dirRoot, "views", "layouts", "customs", name + ".ejs");
186
+ fs.unlink(filePath, function (err) {
186
187
  if (err) return console.log(err);
187
188
  console.log('file deleted successfully');
188
189
  });