UNPKG

isite

Version:

Create High Level Multi-Language Web Site [Fast and Easy]

488 lines (428 loc) 16 kB
module.exports = function init(____0) { const fsm = function () {}; const fs = require('fs'); ____0.on('0x0000', (_) => { if (!_) { fsm.list = []; } }); fsm.dir = ____0.dir; fsm.list = []; fsm.isFileExistsSync = (path) => { return fsm.list.some((f) => f.path === path) || fs.existsSync(path); }; fsm.isFileExists = (path, callback) => { if (callback) { callback(fsm.isFileExistsSync(path)); } }; fsm.statSync = function (path) { if (fsm.isFileExistsSync(path)) { return fs.statSync(path); } }; fsm.stat = function (path, callback) { if (callback) { callback(fsm.statSync(path)); } }; fsm.createDirSync = fsm.mkdirSync = function (path) { try { fs.mkdirSync(path); return !0; } catch (error) { return !1; } }; fsm.createDir = fsm.mkDir = (dir, callback) => { callback = callback || function () {}; if (fs.existsSync(____0.path.dirname(dir))) { fs.mkdir(dir, (err) => { callback(err, dir); }); } else { let parentDir = ____0.path.dirname(dir); fsm.mkDir(parentDir, () => { fs.mkdir(dir, (err) => { callback(err, dir); }); }); } }; fsm.removeFileSync = fsm.deleteFileSync = function (path) { if (fs.existsSync(path)) { return fs.unlinkSync(path); } return null; }; fsm.removeFile = fsm.deleteFile = function (path, callback) { callback = callback || function (err) { if (err) { ____0.log(err); } }; fsm.isFileExists(path, (yes) => { if (yes) { fs.unlink(path, (err) => { callback(err); }); } else { callback({ message: path + ' :: Error Deleting :: file not exists', }); } }); }; fsm.writeFileSync = function (path, data, encode, callback) { callback = callback || function (err) { if (err) { ____0.log(err); } }; try { let path2 = path + '.isite-backup'; fsm.deleteFileSync(path2); fs.writeFileSync(path2, data, { encoding: encode || 'utf8', }); fsm.deleteFileSync(path); fs.renameSync(path2, path); fsm.deleteFileSync(path2); callback(null, path); } catch (err) { callback(err); } }; fsm.writeFile = function (path, data, callback) { setTimeout(() => { fsm.writeFileSync(path, data, null, callback); }, 100); }; fsm.getFilePath = function (name) { if (____0.isFileExistsSync(name)) { return name; } let path = null; if (!path || !____0.isFileExistsSync(path)) { let arr = name.split('/'); if (arr.length === 1) { path = ____0.path.join(____0.path.dirname(____0.dir), ____0.path.extname(arr[0]).replace('.', ''), arr[0]); } else if (arr.length === 2) { path = ____0.path.join(____0.path.dirname(____0.dir), ____0.path.extname(arr[1]).replace('.', ''), arr[0], arr[1]); } else if (arr.length === 3) { path = ____0.path.join(____0.path.dirname(____0.dir), ____0.path.extname(arr[2]).replace('.', ''), arr[0], arr[1], arr[2]); } } if (!____0.isFileExistsSync(path)) { let arr = name.split('/'); if (arr.length === 2) { path = ____0.path.join(____0.path.dirname(____0.cwd), 'apps', arr[0], 'site_files', ____0.path.extname(arr[1]).replace('.', ''), arr[1]); } else if (arr.length === 3) { path = ____0.path.join(____0.path.dirname(____0.cwd), 'apps', arr[0], 'site_files', ____0.path.extname(arr[2]).replace('.', ''), arr[1], arr[2]); } } if (!____0.isFileExistsSync(path) && ____0.apps) { let arr = name.split('/'); if (arr.length > 1) { ____0.apps.forEach((ap) => { if (arr.length === 2 && ap.name == arr[0]) { path = ____0.path.join(ap.path, 'site_files', ____0.path.extname(arr[1]).replace('.', ''), arr[1]); } else if (arr.length === 2 && ap.name2 == arr[0]) { path = ____0.path.join(ap.path, 'site_files', ____0.path.extname(arr[1]).replace('.', ''), arr[1]); } else if (arr.length === 3 && ap.name == arr[0]) { path = ____0.path.join(ap.path, 'site_files', ____0.path.extname(arr[2]).replace('.', ''), arr[1], arr[2]); } }); } } if (!____0.isFileExistsSync(path)) { // ____0.log(name, 'PATH NOT EXISTS fsm.getFilePath()'); return null; } return path; }; fsm.off = function (path) { if (!path) { return false; } if (path && Array.isArray(path)) { path.forEach((p) => { fsm.off(p); }); return; } if (typeof path === 'object') { path = path.path; } path = fsm.getFilePath(path) || path; if (path && typeof path == 'string') { for (let i = fsm.list.length; i--; ) { if (fsm.list[i] && fsm.list[i].path.like(path)) { fsm.list.splice(i, 1); } } } return true; }; fsm.readFileStream = function (path) { var readerStream = fs.createReadStream(path); readerStream.setEncoding(____0.fn.getFileEncode(path)); return readerStream; }; fsm.readFileRaw = function (path, callback) { var data = ''; var readerStream = fsm.readFileStream(path); readerStream.on('data', function (chunk) { data += chunk; }); readerStream.on('end', function () { callback(data); }); readerStream.on('error', function (err) { console.log(err.stack); }); }; fsm.readFileNow = function (path, callback) { fsm.readFileRaw(path, (data) => { path = path.replace('.isite-backup', ''); let file = { path: path, content: data, count: 1, stat: fsm.statSync(path), time: new Date().getTime(), }; file.json = function (callback) { try { if (!file.isJson) { file.content = JSON.parse(file.content); file.isJson = true; } } catch (error) { file.error = error; console.log(error); } if (callback) { callback(file); } else { return file; } }; fsm.list.push(file); if (callback) { callback(null, file); } }); }; fsm.readFile = function (path, callback) { path = fsm.getFilePath(path); if (!path) { if (callback) { callback({ message: path + ' !path :: Error Read File Not Exists', }); } } let index = fsm.list.findIndex((f) => f.path == path); if (index !== -1) { fsm.list[index].count++; fsm.list[index].time = new Date().getTime(); if (callback) { callback(null, fsm.list[index]); } return; } if (fsm.isFileExistsSync(path)) { fsm.readFileNow(path, callback); } else if (fsm.isFileExistsSync(path + '.isite-backup')) { fsm.readFileNow(path + '.isite-backup', callback); } else { if (callback) { callback({ message: path + ' :: Error Read File Path Not Exists', }); } } }; fsm.readFileSyncRaw = function (path) { return fs.readFileSync(path, ____0.fn.getFileEncode(path)); }; fsm.readFileSync = function (path) { path = fsm.getFilePath(path); if (!path) { return ''; } let index = fsm.list.findIndex((f) => f.path == path); if (index !== -1) { fsm.list[index].count++; fsm.list[index].time = new Date().getTime(); return fsm.list[index].content; } if (fsm.isFileExistsSync(path)) { let file = { path: path, content: fsm.readFileSyncRaw(path), count: 1, stat: fsm.statSync(path), time: new Date().getTime(), }; fsm.list.push(file); return file.content; } else if (fsm.isFileExistsSync(path + '.isite-backup')) { let file = { path: path, content: fsm.readFileSyncRaw(path + '.isite-backup'), count: 1, stat: fsm.statSync(path + '.isite-backup'), time: new Date().getTime(), }; fsm.list.push(file); return file.content; } return ''; }; fsm.readFiles = function (paths, callback) { callback = callback || function () {}; let content = ''; for (var index = 0; index < paths.length; index++) { let p = paths[index]; let exists = !1; for (let i = 0; i < fsm.list.length; i++) { let file = fsm.list[i]; if (file.path == p) { content += file.content; file.count++; exists = !0; } } if (!exists) { data = fsm.readFileSync(p); content += data; } } callback(null, content); }; fsm.isImage = function (extname) { if (extname.contains('png|jpg|jpeg|bmp|ico|webp|gif')) { return true; } return false; }; fsm.getContent = function (name, callback) { callback = callback || function () {}; let extname = ____0.path.extname(name).replace('.', ''); if (fsm.isImage(extname)) { extname = 'images'; } let path = name; if (!____0.isFileExistsSync(path)) { path = ____0.path.join(____0.dir, extname, name); } if (!____0.isFileExistsSync(path)) { let arr = name.split('/'); if (arr.length === 2) { let extname = ____0.path.extname(arr[1]).replace('.', ''); if (fsm.isImage(extname)) { extname = 'images'; } path = ____0.path.join(____0.path.dirname(____0.dir), 'apps', arr[0], 'site_files', extname, arr[1]); } else if (arr.length === 3) { let extname = ____0.path.extname(arr[2]).replace('.', ''); if (fsm.isImage(extname)) { extname = 'images'; } path = ____0.path.join(____0.path.dirname(____0.dir), 'apps', arr[0], 'site_files', extname, arr[1], arr[2]); } } if (!____0.isFileExistsSync(path)) { let arr = name.split('/'); if (arr.length > 1) { ____0.apps.forEach((ap) => { if (arr.length === 2 && ap.name == arr[0]) { let extname = ____0.path.extname(arr[1]).replace('.', ''); if (fsm.isImage(extname)) { extname = 'images'; } path = ____0.path.join(ap.path, 'site_files', extname, arr[1]); } else if (arr.length === 2 && ap.name2 == arr[0]) { let extname = ____0.path.extname(arr[1]).replace('.', ''); if (fsm.isImage(extname)) { extname = 'images'; } path = ____0.path.join(ap.path, 'site_files', extname, arr[1]); } else if (arr.length === 3 && ap.name == arr[0]) { let extname = ____0.path.extname(arr[2]).replace('.', ''); if (fsm.isImage(extname)) { extname = 'images'; } path = ____0.path.join(ap.path, 'site_files', extname, arr[1], arr[2]); } }); } } if (!____0.isFileExistsSync(path)) { ____0.log(path, 'PATH NOT EXISTS fsm.getContent()'); callback(''); return ''; } let txt = ____0.readFileSync(path); callback(txt); return txt; }; fsm.css = function (name, callback) { callback = callback || function () {}; fsm.readFile(fsm.dir + '/css/' + name + '.css', function (err, data, file) { callback(err, data, file); }); }; fsm.js = function (name, callback) { callback = callback || function () {}; fsm.readFile(fsm.dir + '/js/' + name + '.js', function (err, data, file) { callback(err, data, file); }); }; fsm.html = function (name, callback) { callback = callback || function () {}; fsm.readFile(fsm.dir + '/html/' + name + '.html', function (err, data, file) { callback(err, data, file); }); }; fsm.json = function (name, callback) { callback = callback || function () {}; fsm.readFile(fsm.dir + '/json/' + name + '.json', function (err, data, file) { callback(err, data, file); }); }; fsm.xml = function (name, callback) { callback = callback || function () {}; fsm.readFile(fsm.dir + '/xml/' + name + '.xml', function (err, data, file) { callback(err, data, file); }); }; fsm.downloadFile = function (path, req, res) { try { let stats = fsm.statSync(path); if (stats) { res.writeHead(200, { 'Content-Type': ____0.fn.contentType(path), 'Content-Length': stats.size, 'Content-Disposition': 'attachment; filename=' + ____0.path.basename(path), }); var readStream = fs.createReadStream(path); readStream.pipe(res); } else { res.error(); } } catch (error) { res.error(); } }; fsm.download = function (name, req, res) { return fsm.downloadFile(fsm.dir + '/downloads/' + name, req, res); }; return fsm; };