185 lines
6.1 KiB
JavaScript
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
|