UNPKG

@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
"use strict"; 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