control-freak-ide/server/nodejs/lib/build/applications/Base.js
plastic-hub-dev-node-saturn 538369cff7 latest
2021-05-12 18:35:18 +02:00

185 lines
6.1 KiB
JavaScript

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const Koa = require("koa");
const _ = require("lodash");
const http = require('http');
const compress = require('koa-compress');
const SRC_DIR = '/Code/client/src/';
const LIB_DIR = SRC_DIR + 'lib/';
const destroyable = require('server-destroy');
const io = {
serialize: JSON.stringify
};
var IInterface;
(function (IInterface) {
IInterface[IInterface["CLI"] = 'cli'] = "CLI";
IInterface[IInterface["ELECTRON"] = 'electron'] = "ELECTRON";
})(IInterface = exports.IInterface || (exports.IInterface = {}));
exports.ENV = {
VARIABLES: {
SRC_DIR: SRC_DIR,
LIB_DIR: LIB_DIR,
'XAS_WEB': function (origin) {
return origin + LIB_DIR;
},
'APP_URL': function (origin) {
return origin + SRC_DIR;
},
'RPC_URL': function (origin) {
return origin + '/smd';
},
APP_ROOT: function (app) {
return app.config['APP_ROOT'];
},
CLIENT_ROOT: function (app) {
return app.config['CLIENT_ROOT'];
},
RELEASE: function (app) {
return app.config['RELEASE'];
}
}
};
exports.EEKey = {
'XAS_WEB': 'XAS_WEB',
'APP_URL': 'APP_URL',
'RPC_URL': 'RPC_URL',
'RESOURCE_VARIABLES': 'RESOURCE_VARIABLES',
'DOJOPACKAGES': 'DOJOPACKAGES',
'THEME': 'THEME',
'APP_ROOT': 'APP_ROOT',
'DATA_ROOT': 'DATA_ROOT',
'DB_ROOT': 'DB_ROOT',
'BASE_URL': 'BASE_URL',
'CLIENT_ROOT': 'CLIENT_ROOT',
'LIB_DIR': exports.ENV.VARIABLES.LIB_DIR,
'RELEASE': 'RELEASE',
'NODE_ROOT': 'NODE_ROOT',
'ROOT': 'ROOT',
'VFS_URL': 'VFS_URL',
'VFS_CONFIG': 'VFS_CONFIG',
'SYSTEM_ROOT': 'SYSTEM_ROOT',
'USER_DIRECTORY': 'USER_DIRECTORY',
'DEVICES': 'devices',
'DRIVERS': 'drivers',
'WORKSPACE': 'workspace',
'USER_DEVICES': 'user_devices',
'USER_DRIVERS': 'user_drivers',
'SYSTEM_DRIVERS': 'system_drivers',
'SYSTEM_DEVICES': 'SYSTEM_DEVICES'
};
var ELayout;
(function (ELayout) {
ELayout[ELayout["NODE_JS"] = 'NODE_JS'] = "NODE_JS";
ELayout[ELayout["SOURCE"] = 'SOURCE'] = "SOURCE";
ELayout[ELayout["OFFLINE_RELEASE"] = 'OFFLINE_RELEASE'] = "OFFLINE_RELEASE";
})(ELayout = exports.ELayout || (exports.ELayout = {}));
exports.ESKey = {
'SettingsService': 'settingsService'
};
function ENV_VAR(key) {
return exports.ENV.VARIABLES[key];
}
exports.ENV_VAR = ENV_VAR;
class ApplicationBase extends Koa {
constructor(root) {
super();
this.uuid = 'no uuid';
}
externalServices() {
return [];
}
path(key) {
return this.config[key];
}
relativeVariable(key, value) {
if (value != null) {
this.config['relativeVariables'][key] = value;
}
return this.config['relativeVariables'][key];
}
vfsMounts() {
return this.relativeVariable('VFS_CONFIG');
}
_env(origin, key) {
switch (key) {
case exports.EEKey.APP_ROOT: {
return this.config[exports.EEKey.APP_ROOT];
}
case exports.EEKey.CLIENT_ROOT: {
return this.config[exports.EEKey.CLIENT_ROOT];
}
}
return exports.ENV.VARIABLES[key];
}
variables(ctx, dst) {
let origin = ctx.request.origin;
dst = dst || [];
_.each([
exports.EEKey.XAS_WEB,
exports.EEKey.APP_URL,
exports.EEKey.RPC_URL
], key => {
this._env(origin, key);
}, this);
const baseUrl = this._env(origin, exports.EEKey.XAS_WEB);
dst['BASE_URL'] = baseUrl(origin);
dst['APP_URL'] = this._env(origin, exports.EEKey.APP_URL)(origin);
dst[exports.EEKey.XAS_WEB] = this._env(origin, exports.EEKey.APP_URL)(origin);
dst['RPC_URL'] = this._env(origin, exports.EEKey.RPC_URL)(origin);
dst['VFS_URL'] = origin + '/files/';
dst[exports.EEKey.ROOT] = origin + '/';
dst[exports.EEKey.DOJOPACKAGES] = io.serialize(this.packages(origin + '/files/', baseUrl(origin)));
dst[exports.EEKey.RESOURCE_VARIABLES] = io.serialize(dst);
const settingsService = this[exports.ESKey.SettingsService];
if (settingsService) {
try {
const theme = _.find(settingsService.get('settings', '.')['settings'], { id: 'theme' })['value'] || ctx.params.theme || 'white';
dst[exports.EEKey.THEME] = theme;
}
catch (e) {
console.error('error reading user settings file');
dst[exports.EEKey.THEME] = 'white';
}
}
return dst;
}
rpcServices() {
return [];
}
boot() {
return __awaiter(this, void 0, void 0, function* () {
return Promise.resolve(null);
});
}
run() {
const koaHandler = this.callback();
this.server = http.createServer(koaHandler);
this.use((ctx, next) => __awaiter(this, void 0, void 0, function* () {
ctx.req.socket.setNoDelay(true);
yield next();
}));
destroyable(this.server);
}
setup() {
this.use(compress({
filter: function (type) {
return /text/i.test(type) || /json/i.test(type) || /javascript/i.test(type);
},
threshold: 2048,
flush: require('zlib').Z_SYNC_FLUSH
}));
}
packages(offset, baseUrl) {
return [];
}
}
exports.ApplicationBase = ApplicationBase;
//# sourceMappingURL=Base.js.map