diff --git a/package-lock.json b/package-lock.json index 85a167e..922de83 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,17 +3,15 @@ "version": "1.0.0", "lockfileVersion": 3, "requires": true, + "license": "MIT", "packages": { "": { "name": "cloudshell", "version": "1.0.0", "license": "MIT", "dependencies": { - "dotenv": "^16.4.5", - "moment": "^2.30.1", - "pejs": "^0.6.5" - }, - "devDependencies": {} + "dotenv": "^16.4.5" + } }, "node_modules/dotenv": { "version": "16.4.5", @@ -25,27 +23,6 @@ "funding": { "url": "https://dotenvx.com" } - }, - "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "engines": { - "node": "*" - } - }, - "node_modules/pejs": { - "version": "0.6.5", - "dependencies": { - "resolve": "~0.5.0" - }, - "bin": { - "pejs": "cli.js" - } - }, - "node_modules/resolve": { - "version": "0.5.1", - "license": "MIT" } } } diff --git a/src/core/app.js b/src/core/app.js deleted file mode 100644 index 276533f..0000000 --- a/src/core/app.js +++ /dev/null @@ -1,203 +0,0 @@ -import fs from 'fs' -import http from 'http' -import path from 'path' - -import Response from './response.js' -import Request from './request.js' -import { pathToFileURL } from 'url' -import { Group } from './group.js' -import { Middleware } from './middleware.js' -import { Logger } from './logger.js' - -// default middlewares -import { Cors } from './middleware/cors.js' -import { StaticFile } from './middleware/staticfile.js' -import { PathBase } from './middleware/pathbase.js' - -export class App { - constructor() { - this.pipeline = undefined - this.middlewares = [] - this.actions = [] - this.logger = new Logger() - this.hasBuilt = false - - this.server = http.createServer(async (req, res) => { - let date = new Date() - - await this.pipeline.invoke( - Request.object(req, this.host), - Response.object(res), - this.pipeline - ) - - let times = `${new Date().getTime() - date.getTime()}ms` - this.logger.log(`${date}\n\r${req.method} ${req.url}\n\r${times}`) - }) - } - - async #endpoint(req, res) { - let action = this.actions - .filter(i => new RegExp(`^${i.path}$`).test(req.pathname)) - .sort((a, b) => b.path.length - a.path.length) - .at(0) - - if (!action) { - res.notfound() - return - } - - await action.invoke(req, res).catch(err => { - this.logger.log(err, 'error') - res.error('Server Error') - }) - } - - use(callback) { - if (callback instanceof Middleware) { - this.middlewares.push(callback) - } - else { - this.middlewares.push(new Middleware(callback)) - } - return this - } - - useLogger(logger) { - this.logger = logger - return this - } - - useCors() { - return this.use(new Cors()) - } - - usePathBase(basePath) { - return this.use(new PathBase(basePath)) - } - - useStaticFile(wwwroot = 'wwwroot', requestPath = '/') { - return this.use(new StaticFile(wwwroot, requestPath)) - } - - map(routePath, callback) { - routePath = routePath.replaceAll('\\', '/') - - switch (Object.prototype.toString.call(callback)) { - - case '[object AsyncFunction]': - this.actions.push({ - path: routePath, - invoke: callback - }) - break - - case '[object Function]': - this.actions.push({ - path: routePath, - invoke: (req, res) => new Promise((resolve, reject) => { - try { - callback(req, res) - resolve() - } - catch (err) { reject(err) } - }) - }) - break - - default: - throw 'need [ Function / AsyncFunction ]' - } - - return this - } - - mapGroup(basePath, callback) { - let group = new Group(basePath) - callback(group) - group.routes.forEach(i => this.map(i.path, i.callback)) - return this - } - - mapController(dir = 'controllers', basePath = '/') { - - if (!basePath.startsWith('/')) basePath = `/${basePath}` - let controllerDir = path.join(process.cwd(), 'src', dir) - - fs.readdirSync(controllerDir).forEach(async controllerName => { - let controllerPath = path.join(controllerDir, controllerName) - if (fs.lstatSync(controllerPath).isDirectory()) return - - let module = (await import(pathToFileURL(controllerPath).href)).default - - Object.keys(module).forEach(actionName => { - let routePath = path.join(basePath, controllerName.replace('.js', ''), actionName, '/?') - this.map(routePath, module[actionName]) - }) - - if (module['index']) { - this.map(path.join(basePath, controllerName.replace('.js', ''), '/?'), module['index']) - } - - if (controllerName.replace('.js', '') == 'home' && module['index']) { - this.map(path.join(basePath, '/?'), module['index']) - } - }) - - return this - } - - build() { - if (this.hasBuilt) throw 'app has been built' - - this.middlewares.forEach((middleware, index) => { - if (index >= this.middlewares.length - 1) return - middleware.next = this.middlewares[index + 1] - }) - - let middleware = new Middleware(async (req, res, _) => { - await this.#endpoint(req, res) - }) - - let last = this.middlewares.slice(-1).at(0) - - if (!last) { - this.pipeline = middleware - } - else { - last.next = middleware - this.pipeline = this.middlewares[0] - } - - this.hasBuilt = true - return this - } - - start(port = 8080) { - if (!this.pipeline) throw 'need build pipeline' - this.host = `http://localhost:${port}` - - this.server.listen(port, () => { - this.logger.log(`server run at ${this.host}`) - }) - } - - dispose() { - this.logger.log(`dispose server...`) - - return new Promise((resolve, reject) => { - this.server.close((err) => { - if (err) reject(err) - - this.pipeline = undefined - this.middlewares = [] - this.actions = [] - this.logger = new Logger() - this.hasBuilt = false - this.server = undefined - this.logger.log(`server has been disposed`) - resolve() - }) - }) - } -} diff --git a/src/core/ejs/codegen.js b/src/core/ejs/codegen.js deleted file mode 100644 index f4ad931..0000000 --- a/src/core/ejs/codegen.js +++ /dev/null @@ -1,69 +0,0 @@ -var GLOBAL_FNS = 'function _esc_(s){return (s+"").replace(/&/g,"&").replace(//g,">");}\n' + - 'function _inline_(fn){var s=fn();return function(){return s;};}\n' - -// compile a source tree down to javascript -export default function codegen(tree, opts) { - if (!opts) opts = {} - - var global = [GLOBAL_FNS] - var cnt = 0 - - var compress = function (str) { - return opts.compress ? str.replace(/\s+/g, ' ') : str - } - - var wrap = function (vars, body) { - return vars ? 'with(locals){var _r=[];var _b={};\n' + body + '}\n' : 'with(locals){\n' + body + '}\n' - } - - var debugable = function (url) { - return '_' + (url || '').split('/').slice(-2).join('_').replace(/[^a-zA-Z]/g, '_') + '_' + (cnt++) - } - - var stringify = function (tree) { - var src = '' - var pushBefore = false - - var push = function (value) { - if (pushBefore) return src = src.slice(0, -3) + '+' + value + ');\n' - src += '_r.push(' + value + ');\n' - pushBefore = true - } - - var logic = function (value) { - pushBefore = false - src += value + '\n' - } - - tree.forEach(function (node) { - if (node.type === 'STATIC') return push(JSON.stringify(compress(node.value))) - if (node.type === 'EXPRESSION') return push('(' + node.value + ')') - if (node.type === 'ESCAPE_EXPRESSION') return push('_esc_(' + node.value + ')') - if (node.type === 'LOGIC') return logic(node.value) - - var locals = node.locals || 'locals' - var name = node.name && JSON.stringify(node.name) - var decl = node.name && JSON.stringify(node.name + '$decl') - var id = debugable(node.url) - - if (node.type === 'BLOCK_ANONYMOUS') { - global.push('function ' + id + '(_r,_b,locals){' + wrap(false, stringify(node.body)) + '}\n') - return logic(id + '(_r,_b,' + locals + ');') - } - - if (node.type === 'BLOCK_DECLARE') { - logic('if (_b[' + decl + ']) _b[' + decl + '].toString=_inline_(_b[' + decl + '].toString);') - logic('_r.push(_b[' + decl + ']={toString:function(){return _b[' + name + ']();}});') - } - - global.push('function ' + id + '(locals){' + wrap(true, stringify(node.body) + 'return _r;') + '}\n') - logic('_b[' + name + ']=function(){return ' + id + '(' + locals + ').join("");};') - }) - - return src - } - - var main = debugable(opts.name) - var src = stringify(tree) - return global.join('') + 'module.exports=function ' + main + '(locals){locals=locals||{};' + wrap(true, src) + 'return _r.join("");};' -} diff --git a/src/core/ejs/ejs.js b/src/core/ejs/ejs.js deleted file mode 100644 index 02fddbf..0000000 --- a/src/core/ejs/ejs.js +++ /dev/null @@ -1,175 +0,0 @@ -import vm from 'vm' -import path from 'path' -import fs from 'fs' -import parse from './parse.js' -import codegen from './codegen.js' -import watch from './watch.js' -import sequence from './sequence.js' - -var requireSource = function (source) { - var module = { exports: {} } - vm.runInNewContext(source, { console: console, module: module }) - return module.exports -} - -export default function ejs(opts) { - if (!opts) opts = {} - - opts.basedir = opts.basedir || process.cwd() - - var templates = {} - var cache = templates.cache = {} - var compress = opts.compress - - var resolvePath = function (name, dirname, callback) { - let fileName = undefined - let error = undefined - - try { - fileName = path.resolve(dirname, name) - } - catch (err) { - error = err - } - - callback(error, fileName) - } - - templates.render = function (name, locals, callback) { - if (typeof locals === 'function') return templates.render(name, {}, locals) - - locals = locals || {} - - if (cache[name] && cache[name].render) { - var result - - try { - result = cache[name].render(locals) - } catch (err) { - return callback(err) - } - - return callback(null, result) - } - - templates.compile(name, function (err, source) { - if (err) return callback(err) - - try { - cache[name].render = cache[name].render || requireSource(source) - } catch (err) { - return callback(err) - } - - templates.render(name, locals, callback) - }) - } - - templates.compile = function (name, opts, callback) { - if (typeof opts === 'function') return templates.compile(name, {}, opts) - if (cache[name] && cache[name].source) return callback(null, cache[name].source) - - opts = opts || {} - - var maybePrecompiled = function (callback) { - if (opts.cejs === false) return callback() - - resolvePath(name, opts.dirname, function (err, path) { - if (!path) return callback() - - fs.readFile(path + '.cejs', 'utf-8', function (err, src) { - if (err) return callback(err) - - cache[name] = cache[name] || {} - cache[name].source = cache[name].source || src - callback(null, cache[name].source) - }) - }) - } - - maybePrecompiled(function (err, source) { - if (source) return callback(null, source) - - templates.parse(name, function (err, tree, url) { - if (err) return callback(err) - - cache[name].source = cache[name].source || codegen(tree, { name: url, compress: compress }) - callback(null, cache[name].source) - }) - }) - } - - templates.parse = function (name, callback) { - var files = [] - - var onsource = function (filename, source, callback) { - var dirname = path.dirname(filename) - var tree = parse(source, opts) - - files.push(filename) - - var nodes = [] - var visit = function (node) { - if (node.url) nodes.push(node) - if (node.body) node.body.forEach(visit) - } - - tree.forEach(visit) - - if (!nodes.length) return callback(null, tree, filename) - - var i = 0 - var loop = function () { - var node = nodes[i++] - - if (!node) return callback(null, tree, filename) - - resolveTemplate(node.url, dirname, function (err, resolved, url) { - if (err) return callback(err) - - node.url = url - node.body = resolved - loop() - }) - } - - loop() - } - - var resolveTemplate = function (name, dirname, callback) { - resolvePath(name, dirname, function (err, filename) { - if (err) return callback(err) - - fs.readFile(filename, 'utf-8', function (err, source) { - if (err) return callback(err) - - onsource(filename, source, callback) - }) - }) - } - - sequence(callback, function (free) { - if (cache[name] && cache[name].tree) return free(null, cache[name].tree, cache[name].url) - - resolveTemplate(name, opts.basedir, function (err, tree, url) { - if (err) return free(err) - - cache[name] = cache[name] || {} - cache[name].tree = tree - cache[name].url = url - - if (opts.watch === false) return free(null, tree, url) - - watch(files, function () { - delete cache[name] - }) - - free(null, tree, url) - }) - }) - } - - return templates -} - -ejs.__express = ejs().render diff --git a/src/core/ejs/parse.js b/src/core/ejs/parse.js deleted file mode 100644 index 201e258..0000000 --- a/src/core/ejs/parse.js +++ /dev/null @@ -1,56 +0,0 @@ -var STATIC = 'STATIC' -var LOGIC = 'LOGIC' -var EXPRESSION = 'EXPRESSION' -var ESCAPE_EXPRESSION = 'ESCAPE_EXPRESSION' -var BLOCK_DECLARE = 'BLOCK_DECLARE' -var BLOCK_OVERRIDE = 'BLOCK_OVERRIDE' -var BLOCK_ANONYMOUS = 'BLOCK_ANONYMOUS' - -var TOKEN_BEGIN = '<%' -var TOKEN_END = '%>' - -var MATCH_BLOCK = /^(\w+)?\s*((?:'(?:(?:\\')|[^'])*')|(?:"(?:(?:\\")|[^"])*"))?(?:\s+(.+))?$/ - -// parse pejs source into a source tree -export default function parse(src) { - return Array.prototype.concat.apply([], src.split(TOKEN_END).map(function (slice) { - return slice.split(TOKEN_BEGIN) - })).map(function (data, i) { - if (i % 2 === 0) return data && { type: STATIC, value: data } - - var pre = (data.match(/^(\S*)/g) || [])[0] - var end = (data.match(/(\S*)$/g) || [])[0] - var line = data.replace(/^\S*/g, '').replace(/\S*$/g, '').trim() - var live = pre[1] === '[' - var auto = pre === '{{' ? BLOCK_DECLARE : BLOCK_OVERRIDE - var ctx = (pre + end).replace(/[\{\[]+/g, '{').replace(/[\}\]]+/g, '}') - - if (pre === '') return { type: LOGIC, value: line } - if (pre === '#') return null - if (pre === '=') return { type: ESCAPE_EXPRESSION, value: line } - if (pre === '-') return { type: EXPRESSION, value: line } - - line = (line.match(MATCH_BLOCK) || []).slice(1) - line = !line.length || (line[2] && !line[2]) ? {} : { - name: line[0], - url: line[1] && line[1].substr(1, line[1].length - 2).replace(/\\(.)/g, '$1'), - locals: line[2] && line[2].trim() - } - - if (ctx === '{}' && line.name) return { type: auto, live: live, name: line.name, locals: line.locals, url: line.url, body: [] } - if (ctx === '{}' && line.url) return { type: BLOCK_ANONYMOUS, url: line.url, locals: line.locals } - if (ctx === '{' && line.name) return { type: auto, live: live, name: line.name, locals: line.locals, capture: 1, body: [] } - if (ctx === '}') return { capture: -1 } - - throw new SyntaxError('could not parse: <%' + data + '%>') - }).reduce(function reduce(result, node) { - var last = result[result.length - 1] - - if (!node) return result - if (!last || !last.capture) return result.concat(node) - - last.capture += node.capture || 0 - last.body = last.capture ? last.body.concat(node) : last.body.reduce(reduce, []) - return result - }, []) -} diff --git a/src/core/ejs/sequence.js b/src/core/ejs/sequence.js deleted file mode 100644 index 6e5ac75..0000000 --- a/src/core/ejs/sequence.js +++ /dev/null @@ -1,14 +0,0 @@ -var free = true -var waiting = [] - -// "locks" the execution - let everyone else wait for something to finish -export default function lock(callback, fn) { // TODO: move to module - if (!free) return waiting.push(arguments) - - free = false - fn(function () { - free = true - callback.apply(null, arguments) - if (waiting.length) lock.apply(null, waiting.shift()) - }) -} diff --git a/src/core/ejs/watch.js b/src/core/ejs/watch.js deleted file mode 100644 index 44a2720..0000000 --- a/src/core/ejs/watch.js +++ /dev/null @@ -1,28 +0,0 @@ -import fs from 'fs' - -var noop = function () { } -var watchers = {} - -export default function watch(filenames, fn) { // TODO: find or create a module that does caching/watching for us - var onchange = function () { - filenames.forEach(function (filename) { - if (!watchers[filename]) return - watchers[filename].removeListener('change', onchange) - }) - - fn() - } - - filenames.forEach(function watchFile(filename) { - if (watchers[filename]) return watchers[filename].once('change', onchange) - - watchers[filename] = fs.watch(filename, { persistent: false }, noop) - watchers[filename].setMaxListeners(0) - watchers[filename].once('change', function () { - delete watchers[filename] - this.close() - }) - - watchFile(filename, fn) - }) -} \ No newline at end of file diff --git a/src/core/group.js b/src/core/group.js deleted file mode 100644 index 67a6e4a..0000000 --- a/src/core/group.js +++ /dev/null @@ -1,24 +0,0 @@ -import path from 'path' - -export class Group { - constructor(basePath) { - if (!basePath.startsWith('/')) basePath = '/' + basePath - this.basePath = basePath - this.routes = [] - } - - map(routePath, callback) { - this.routes.push({ - path: path.join(this.basePath, routePath), - callback: callback - }) - } - - mapGroup(basePath, callback) { - if (!basePath.startsWith('/')) basePath = '/' + basePath - let group = new Group(basePath) - - callback(group) - group.routes.forEach(i => this.map(i.path, i.callback)) - } -} diff --git a/src/core/logger.js b/src/core/logger.js deleted file mode 100644 index 2d825b0..0000000 --- a/src/core/logger.js +++ /dev/null @@ -1,36 +0,0 @@ -export class Logger { - constructor(callback = undefined) { - this.callback = callback - } - - log(msg, type = 'info') { - msg += '\n' - - if (this.callback) { - this.callback(msg, type) - return - } - - switch (type) { - case 'error': - console.error(`${type}: ${msg}`) - break - - case 'warn': - console.warn(`${type}: ${msg}`) - break - - case 'debug': - console.debug(`${type}: ${msg}`) - break - - case 'info': - console.info(`${type}: ${msg}`) - break - - default: - console.log(`${type}: ${msg}`) - break - } - } -} \ No newline at end of file diff --git a/src/core/middleware.js b/src/core/middleware.js deleted file mode 100644 index 828cdc8..0000000 --- a/src/core/middleware.js +++ /dev/null @@ -1,12 +0,0 @@ -export class Middleware { - constructor(callback) { - this.handler = callback - this.next = undefined - } - - async invoke(req, res, middleware) { - await middleware.handler(req, res, async (req, res) => - await this.invoke(req, res, middleware.next) - ) - } -} \ No newline at end of file diff --git a/src/core/middleware/cors.js b/src/core/middleware/cors.js deleted file mode 100644 index 881694b..0000000 --- a/src/core/middleware/cors.js +++ /dev/null @@ -1,21 +0,0 @@ -import { Middleware } from '../middleware.js'; - -export class Cors extends Middleware { - - constructor() { - let func = async (req, res, next) => { - res.setHeader('Access-Control-Allow-Origin', '*') - res.setHeader('Access-Control-Allow-Methods', '*') - res.setHeader('Access-Control-Allow-Headers', '*') - - if (req.method == 'OPTIONS') { - res.end() - return; - } - - await next(req, res) - } - - super(func) - } -} \ No newline at end of file diff --git a/src/core/middleware/pathbase.js b/src/core/middleware/pathbase.js deleted file mode 100644 index 9956907..0000000 --- a/src/core/middleware/pathbase.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Middleware } from "../middleware.js"; - -export class PathBase extends Middleware { - - constructor(basePath) { - let func = async (req, res, next) => { - if (req.pathname.startsWith(basePath)) { - req.pathname = req.pathname.replace(basePath, '') - } - - await next(req, res) - } - - super(func) - } -} \ No newline at end of file diff --git a/src/core/middleware/staticfile.js b/src/core/middleware/staticfile.js deleted file mode 100644 index ff3d336..0000000 --- a/src/core/middleware/staticfile.js +++ /dev/null @@ -1,49 +0,0 @@ -import fs from 'fs' -import path from 'path' -import process from 'process'; -import { Middleware } from "../middleware.js"; - -export class StaticFile extends Middleware { - - constructor(wwwroot) { - let func = async (req, res, next) => { - - let pathname = new URL(req.url, 'http://localhost').pathname - let fileName = path.join(process.cwd(), 'src', wwwroot, pathname) - - if (!fs.existsSync(fileName) || !fs.lstatSync(fileName).isFile()) { - await next(req, res) - return - } - - let contentType = undefined - - switch (fileName.split('.').at(-1)) { - case 'html': - contentType = 'text/html' - break - - case 'css': - contentType = 'text/css' - break - - case 'js': - contentType = 'application/javascript' - break - - case 'png': - contentType = 'image/png' - break - - default: - contentType = 'text/plain' - break - } - - res.setHeader("content-type", contentType) - res.end(fs.readFileSync(fileName)) - } - - super(func) - } -} \ No newline at end of file diff --git a/src/core/request.js b/src/core/request.js deleted file mode 100644 index ed45b28..0000000 --- a/src/core/request.js +++ /dev/null @@ -1,78 +0,0 @@ -export default class Request { - - static object(req, host = 'http://localhost') { - req.pathname = new URL(req.url, host).pathname - req.cookie = this.parseCookie(req) - req.query = this.parseQuery(req, host) - req.body = this.parseBody - return req - } - - static parseCookie(req) { - let cookie = {} - if (!req.headers.cookie) return cookie - - req.headers.cookie - .split(';') - .forEach(i => { - let dict = i.trim().split('=') - cookie[[dict.at(0)]] = dict.at(1) - }) - - return cookie - } - - static parseQuery(req, host) { - let query = {} - let search = new URL(req.url, host).search - - if (!search) return query - - search.slice(1) - .split('&') - .forEach(i => { - let dict = i.split('=') - if (dict.length == 1) { - query['id'] = decodeURI(dict.at(0)) - } - else { - query[[dict.at(0)]] = decodeURI(dict.at(1)) - } - }) - - return query - } - - static parseBody() { - return new Promise((resolve, reject) => { - let data = '' - this.on('data', chunk => { data += chunk }) - - this.on('end', () => { - let contentType = this.headers['content-type'] - - switch (true) { - case contentType.includes('application/json'): - resolve(JSON.parse(data)) - break - - case contentType.includes('application/x-www-form-urlencoded'): - let form = {} - data.split('&').forEach(i => { - let dict = i.split('=') - form[[dict.at(0)]] = decodeURI(dict.at(1)) - }) - resolve(form) - break; - - default: - resolve(data) - break; - } - }) - - this.on('error', err => { reject(err) }) - }) - } - -} \ No newline at end of file diff --git a/src/core/response.js b/src/core/response.js deleted file mode 100644 index c17ef40..0000000 --- a/src/core/response.js +++ /dev/null @@ -1,70 +0,0 @@ -import path from 'path' -import ejs from './ejs/ejs.js' - -var views = ejs(); - -export default class Response { - - static object(res) { - res.setCookie = this.setCookie - res.redirect = this.redirect - res.json = this.json - res.render = this.render - res.bad = this.bad - res.forbidden = this.forbidden - res.notfound = this.notfound - res.error = this.error - return res - } - - static setCookie(key, value, time = undefined, path = '/', ) { - let expires = () => { - let date = new Date() - date.setTime(date.getTime() + (time * 1000)) - return time ? `expires=${date.toGMTString()};` : '' - } - - this.setHeader('Set-Cookie', `${key}=${value}; ${expires()} path=${path};`) - } - - static redirect(path) { - this.statusCode = 302 - this.setHeader('Location', path) - this.end() - } - - static json(obj) { - this.setHeader('content-type', 'application/json') - this.end(JSON.stringify(obj)) - } - - static render(fileName, data = {}) { - fileName = path.join(process.cwd(), 'src/views', fileName) - - views.render(fileName, Object.assign(this, data), (err, html) => { - if (err) throw err - this.setHeader('content-type', 'text/html') - this.end(html) - }) - } - - static bad(text = 'bad request') { - this.statusCode = 400 - this.end(text) - } - - static forbidden(text = 'forbidden') { - this.statusCode = 403 - this.end(text) - } - - static notfound(text = 'not found') { - this.statusCode = 404 - this.end(text) - } - - static error(text = 'error') { - this.statusCode = 500 - this.end(text) - } -} \ No newline at end of file diff --git a/src/main.js b/src/main.js index 18af9e0..91770e4 100644 --- a/src/main.js +++ b/src/main.js @@ -1,9 +1,9 @@ -import { App } from './core/app.js' +import plankton from './Plankton/index.js' import { config } from 'dotenv' import { TTYD } from './services/ttyd.js' config() -const app = new App() +const app = plankton() const ttyd = new TTYD() // Map Static file diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index cbc9914..0000000 --- a/yarn.lock +++ /dev/null @@ -1,8 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -dotenv@^16.4.5: - version "16.4.5" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" - integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==