@resin/pinejs
Version:
Pine.js is a sophisticated rules-driven API engine that enables you to define rules in a structured subset of English. Those rules are used in order for Pine.js to generate a database schema and the associated [OData](http://www.odata.org/) API. This make
100 lines • 3.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.initialised = exports.PinejsSessionStore = exports.sbvrUtils = void 0;
const Pinejs = require("./module");
const Bluebird = require("bluebird");
const passportPinejs = require("../passport-pinejs/passport-pinejs");
const pinejs_session_store_1 = require("../pinejs-session-store/pinejs-session-store");
Object.defineProperty(exports, "PinejsSessionStore", { enumerable: true, get: function () { return pinejs_session_store_1.PinejsSessionStore; } });
const sbvrUtils = require("../sbvr-api/sbvr-utils");
exports.sbvrUtils = sbvrUtils;
const express = require("express");
const app = express();
switch (app.get('env')) {
case 'production':
console.log = () => {
};
break;
case 'development':
Bluebird.longStackTraces();
}
if (!process.browser) {
const passport = require('passport');
const path = require('path');
const compression = require('compression');
const serveStatic = require('serve-static');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const multer = require('multer');
const methodOverride = require('method-override');
const expressSession = require('express-session');
app.use(compression());
const root = process.argv[2] || __dirname;
app.use('/', serveStatic(path.join(root, 'static')));
app.use(cookieParser());
app.use(bodyParser());
app.use(multer().any());
app.use(methodOverride());
app.use(expressSession({
secret: 'A pink cat jumped over a rainbow',
store: new pinejs_session_store_1.PinejsSessionStore(),
}));
app.use(passport.initialize());
app.use(passport.session());
app.use((req, res, next) => {
const origin = req.get('Origin') || '*';
res.header('Access-Control-Allow-Origin', origin);
res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, PATCH, DELETE, OPTIONS, HEAD');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Application-Record-Count, MaxDataServiceVersion, X-Requested-With');
res.header('Access-Control-Allow-Credentials', 'true');
next();
});
app.use((req, _res, next) => {
console.log('%s %s', req.method, req.url);
next();
});
}
exports.initialised = Pinejs.init(app)
.then(async (configLoader) => {
await Promise.all([
configLoader.loadConfig(passportPinejs.config),
configLoader.loadConfig(pinejs_session_store_1.PinejsSessionStore.config),
]);
if (typeof process === 'undefined' ||
process == null ||
!process.env.DISABLE_DEFAULT_AUTH) {
app.post('/login', passportPinejs.login((err, user, req, res) => {
if (err) {
console.error('Error logging in', err, err.stack);
res.sendStatus(500);
}
else if (user === false) {
if (req.xhr === true) {
res.sendStatus(401);
}
else {
res.redirect('/login.html');
}
}
else {
if (req.xhr === true) {
res.sendStatus(200);
}
else {
res.redirect('/');
}
}
}));
app.get('/logout', passportPinejs.logout, (_req, res) => {
res.redirect('/');
});
}
app.listen(process.env.PORT || 1337, () => {
console.info('Server started');
});
})
.catch((err) => {
console.error('Error initialising server', err, err.stack);
process.exit(1);
});
//# sourceMappingURL=server.js.map