@proteinjs/server 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +21 -0
  3. package/dist/generated/index.d.ts +19 -0
  4. package/dist/generated/index.d.ts.map +1 -0
  5. package/dist/generated/index.js +47 -0
  6. package/dist/generated/index.js.map +1 -0
  7. package/dist/index.d.ts +2 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +18 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/jest.config.d.ts +8 -0
  12. package/dist/jest.config.d.ts.map +1 -0
  13. package/dist/jest.config.js +20 -0
  14. package/dist/jest.config.js.map +1 -0
  15. package/dist/src/NodeSessionDataStorage.d.ts +10 -0
  16. package/dist/src/NodeSessionDataStorage.d.ts.map +1 -0
  17. package/dist/src/NodeSessionDataStorage.js +42 -0
  18. package/dist/src/NodeSessionDataStorage.js.map +1 -0
  19. package/dist/src/loadRoutes.d.ts +5 -0
  20. package/dist/src/loadRoutes.d.ts.map +1 -0
  21. package/dist/src/loadRoutes.js +212 -0
  22. package/dist/src/loadRoutes.js.map +1 -0
  23. package/dist/src/routes/healthCheck.d.ts +3 -0
  24. package/dist/src/routes/healthCheck.d.ts.map +1 -0
  25. package/dist/src/routes/healthCheck.js +51 -0
  26. package/dist/src/routes/healthCheck.js.map +1 -0
  27. package/dist/src/routes/reactApp.d.ts +7 -0
  28. package/dist/src/routes/reactApp.d.ts.map +1 -0
  29. package/dist/src/routes/reactApp.js +111 -0
  30. package/dist/src/routes/reactApp.js.map +1 -0
  31. package/dist/src/startServer.d.ts +3 -0
  32. package/dist/src/startServer.d.ts.map +1 -0
  33. package/dist/src/startServer.js +238 -0
  34. package/dist/src/startServer.js.map +1 -0
  35. package/dist/webpack.config.d.ts +74 -0
  36. package/dist/webpack.config.d.ts.map +1 -0
  37. package/dist/webpack.config.js +111 -0
  38. package/dist/webpack.config.js.map +1 -0
  39. package/generated/index.ts +43 -0
  40. package/index.ts +1 -0
  41. package/jest.config.js +18 -0
  42. package/package.json +77 -0
  43. package/src/NodeSessionDataStorage.ts +40 -0
  44. package/src/loadRoutes.ts +126 -0
  45. package/src/routes/healthCheck.ts +10 -0
  46. package/src/routes/reactApp.ts +57 -0
  47. package/src/startServer.ts +184 -0
  48. package/tsconfig.json +18 -0
  49. package/webpack.config.js +112 -0
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.createReactApp = void 0;
43
+ var path_1 = __importDefault(require("path"));
44
+ var react_helmet_1 = __importDefault(require("react-helmet"));
45
+ var server_api_1 = require("@proteinjs/server-api");
46
+ var createReactApp = function (serverConfig) {
47
+ return {
48
+ path: '*',
49
+ method: 'get',
50
+ onRequest: function (request, response) { return __awaiter(void 0, void 0, void 0, function () {
51
+ var helmet, _a, _b, _c, _d;
52
+ var _e, _f;
53
+ return __generator(this, function (_g) {
54
+ switch (_g.label) {
55
+ case 0:
56
+ if (request.path.startsWith('/static'))
57
+ return [2 /*return*/];
58
+ if (!((_e = serverConfig.staticContent) === null || _e === void 0 ? void 0 : _e.bundlePaths))
59
+ throw new Error("ServerConfig.bundlePath must be provided to serve react app");
60
+ helmet = react_helmet_1.default.renderStatic();
61
+ _b = (_a = response).send;
62
+ _d = (_c = "<!DOCTYPE html>\n <html ".concat(helmet.htmlAttributes, ">\n <head>\n <meta charset='utf-8' />\n <meta name='viewport' content='width=device-width, initial-scale=1.0'>\n <link href='").concat(((_f = serverConfig.staticContent) === null || _f === void 0 ? void 0 : _f.faviconPath) ? path_1.default.join('/static/', serverConfig.staticContent.faviconPath) : '', "' rel='icon' type='image/x-icon' />\n ").concat(helmet.title.toString(), "\n ").concat(helmet.meta.toString(), "\n ").concat(helmet.link.toString(), "\n </head>\n <body ").concat(helmet.bodyAttributes.toString(), ">\n <div id='app'></div>\n <script>proteinjs = {};</script>\n ")).concat;
63
+ return [4 /*yield*/, serverRenderedScriptTags()];
64
+ case 1:
65
+ _b.apply(_a, [_d.apply(_c, [_g.sent(), "\n "]).concat(bundleScriptTags(serverConfig), "\n </body>\n </html>")]);
66
+ return [2 /*return*/];
67
+ }
68
+ });
69
+ }); }
70
+ };
71
+ };
72
+ exports.createReactApp = createReactApp;
73
+ function bundleScriptTags(serverConfig) {
74
+ var _a;
75
+ if (!((_a = serverConfig.staticContent) === null || _a === void 0 ? void 0 : _a.bundlePaths))
76
+ return;
77
+ var scriptTags = [];
78
+ for (var _i = 0, _b = serverConfig.staticContent.bundlePaths; _i < _b.length; _i++) {
79
+ var bundlePath = _b[_i];
80
+ scriptTags.push("<script src='".concat(path_1.default.join('/static/', bundlePath), "'></script>"));
81
+ }
82
+ return scriptTags.join('\n');
83
+ }
84
+ function serverRenderedScriptTags() {
85
+ return __awaiter(this, void 0, void 0, function () {
86
+ var scripts, scriptTags, _i, scripts_1, script, _a, _b, _c;
87
+ return __generator(this, function (_d) {
88
+ switch (_d.label) {
89
+ case 0:
90
+ scripts = (0, server_api_1.getServerRenderedScripts)();
91
+ scriptTags = [];
92
+ _i = 0, scripts_1 = scripts;
93
+ _d.label = 1;
94
+ case 1:
95
+ if (!(_i < scripts_1.length)) return [3 /*break*/, 4];
96
+ script = scripts_1[_i];
97
+ _b = (_a = scriptTags).push;
98
+ _c = "<script>".concat;
99
+ return [4 /*yield*/, script.script()];
100
+ case 2:
101
+ _b.apply(_a, [_c.apply("<script>", [_d.sent(), "</script>"])]);
102
+ _d.label = 3;
103
+ case 3:
104
+ _i++;
105
+ return [3 /*break*/, 1];
106
+ case 4: return [2 /*return*/, scriptTags.join('\n')];
107
+ }
108
+ });
109
+ });
110
+ }
111
+ //# sourceMappingURL=reactApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactApp.js","sourceRoot":"","sources":["../../../src/routes/reactApp.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAwB;AACxB,8DAAuC;AACvC,oDAA+E;AAExE,IAAM,cAAc,GAAG,UAAC,YAA0B;IACrD,OAAO;QACH,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,KAAc;QACtB,SAAS,EAAE,UAAO,OAAY,EAAE,QAAa;;;;;;wBACzC,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;4BAClC,sBAAO;wBAEX,IAAI,CAAC,CAAA,MAAA,YAAY,CAAC,aAAa,0CAAE,WAAW,CAAA;4BACxC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;wBAE7E,MAAM,GAAG,sBAAW,CAAC,YAAY,EAAE,CAAC;wBAC1C,KAAA,CAAA,KAAA,QAAQ,CAAA,CAAC,IAAI,CAAA;oFACD,MAAM,CAAC,cAAc,kOAIP,CAAA,MAAA,YAAY,CAAC,aAAa,0CAAE,WAAW,EAAC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,0EACxH,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,uCACvB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,uCACtB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,sEAEpB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE;wBAGlC,qBAAM,wBAAwB,EAAE,EAAA;;wBAb9C,cAAc,cAaA,SAAgC,wCAChC,gBAAgB,CAAC,YAAY,CAAC,2DAEhC,EACX,CAAC;;;;aACL;KACJ,CAAA;AACL,CAAC,CAAA;AAhCY,QAAA,cAAc,kBAgC1B;AAED,SAAS,gBAAgB,CAAC,YAA0B;;IAChD,IAAI,CAAC,CAAA,MAAA,YAAY,CAAC,aAAa,0CAAE,WAAW,CAAA;QACxC,OAAO;IAEX,IAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAyB,UAAsC,EAAtC,KAAA,YAAY,CAAC,aAAa,CAAC,WAAW,EAAtC,cAAsC,EAAtC,IAAsC;QAA1D,IAAM,UAAU,SAAA;QACjB,UAAU,CAAC,IAAI,CAAC,uBAAgB,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,gBAAa,CAAC,CAAC;KAAA;IAEpF,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,SAAe,wBAAwB;;;;;;oBAC7B,OAAO,GAAG,IAAA,qCAAwB,GAAE,CAAC;oBACrC,UAAU,GAAa,EAAE,CAAC;0BACJ,EAAP,mBAAO;;;yBAAP,CAAA,qBAAO,CAAA;oBAAjB,MAAM;oBACb,KAAA,CAAA,KAAA,UAAU,CAAA,CAAC,IAAI,CAAA;;oBAAY,qBAAM,MAAM,CAAC,MAAM,EAAE,EAAA;;oBAAhD,cAAgB,sBAAW,SAAqB,eAAW,EAAC,CAAC;;;oBAD5C,IAAO,CAAA;;wBAG5B,sBAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;;;;CAChC"}
@@ -0,0 +1,3 @@
1
+ import { ServerConfig } from '@proteinjs/server-api';
2
+ export declare function startServer(config: ServerConfig): Promise<void>;
3
+ //# sourceMappingURL=startServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startServer.d.ts","sourceRoot":"","sources":["../../src/startServer.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAa,MAAM,uBAAuB,CAAC;AAQhE,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,iBAerD"}
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.startServer = void 0;
43
+ var express_1 = __importDefault(require("express"));
44
+ var express_session_1 = __importDefault(require("express-session"));
45
+ var compression_1 = __importDefault(require("compression"));
46
+ var cookie_parser_1 = __importDefault(require("cookie-parser"));
47
+ var body_parser_1 = __importDefault(require("body-parser"));
48
+ var passport_1 = __importDefault(require("passport"));
49
+ var passport_local_1 = __importDefault(require("passport-local"));
50
+ var webpack_1 = __importDefault(require("webpack"));
51
+ var webpack_dev_middleware_1 = __importDefault(require("webpack-dev-middleware"));
52
+ var webpack_hot_middleware_1 = __importDefault(require("webpack-hot-middleware"));
53
+ var db_1 = require("@proteinjs/db");
54
+ var server_api_1 = require("@proteinjs/server-api");
55
+ var loadRoutes_1 = require("./loadRoutes");
56
+ var util_1 = require("@proteinjs/util");
57
+ var webpackConfig = require('../webpack.config');
58
+ var staticContentPath = '/static/';
59
+ var logger = new util_1.Logger('Server');
60
+ function startServer(config) {
61
+ return __awaiter(this, void 0, void 0, function () {
62
+ var routes, server;
63
+ return __generator(this, function (_a) {
64
+ switch (_a.label) {
65
+ case 0:
66
+ routes = (0, server_api_1.getRoutes)();
67
+ return [4 /*yield*/, runStartupEvents(config)];
68
+ case 1:
69
+ _a.sent();
70
+ server = (0, express_1.default)();
71
+ configureRequests(server);
72
+ initializeHotReloading(server, config);
73
+ beforeRequest(server, config);
74
+ (0, loadRoutes_1.loadRoutes)(routes.filter(function (route) { return route.useHttp; }), server, config);
75
+ configureHttps(server); // registering here forces static content to be redirected to https
76
+ configureStaticContentRouter(server, config); // registering here prevents sessions from being created on static content requests
77
+ configureSession(server, config);
78
+ (0, loadRoutes_1.loadRoutes)(routes.filter(function (route) { return !route.useHttp; }), server, config);
79
+ (0, loadRoutes_1.loadDefaultStarRoute)(routes, server, config);
80
+ afterRequest(server, config);
81
+ start(server, config);
82
+ return [2 /*return*/];
83
+ }
84
+ });
85
+ });
86
+ }
87
+ exports.startServer = startServer;
88
+ function runStartupEvents(config) {
89
+ return __awaiter(this, void 0, void 0, function () {
90
+ return __generator(this, function (_a) {
91
+ switch (_a.label) {
92
+ case 0: return [4 /*yield*/, new db_1.Db().init()];
93
+ case 1:
94
+ _a.sent();
95
+ if (!config.onStartup) return [3 /*break*/, 3];
96
+ return [4 /*yield*/, config.onStartup()];
97
+ case 2:
98
+ _a.sent();
99
+ _a.label = 3;
100
+ case 3: return [2 /*return*/];
101
+ }
102
+ });
103
+ });
104
+ }
105
+ function configureRequests(server) {
106
+ server.use((0, compression_1.default)());
107
+ server.use((0, cookie_parser_1.default)());
108
+ server.use(body_parser_1.default.json({ limit: '100mb' }));
109
+ server.use(body_parser_1.default.urlencoded({
110
+ extended: true,
111
+ limit: '100mb'
112
+ }));
113
+ server.disable('x-powered-by');
114
+ }
115
+ function initializeHotReloading(server, config) {
116
+ var _a, _b;
117
+ if (!process.env.DEVELOPMENT || process.env.DISABLE_HOT_CLIENT_BUILDS || config.disableHotClientBuilds || !((_a = config.staticContent) === null || _a === void 0 ? void 0 : _a.staticContentDir) || !((_b = config.staticContent) === null || _b === void 0 ? void 0 : _b.appEntryPath))
118
+ return;
119
+ var wpConfig = Object.assign({}, webpackConfig);
120
+ wpConfig['entry'] = { app: ['webpack-hot-middleware/client', config.staticContent.appEntryPath] };
121
+ wpConfig['output']['path'] = config.staticContent.staticContentDir;
122
+ wpConfig['output']['publicPath'] = staticContentPath;
123
+ var webpackCompiler = (0, webpack_1.default)(wpConfig);
124
+ server.use((0, webpack_dev_middleware_1.default)(webpackCompiler, {
125
+ publicPath: staticContentPath,
126
+ }));
127
+ server.use((0, webpack_hot_middleware_1.default)(webpackCompiler));
128
+ }
129
+ function configureHttps(server) {
130
+ server.use(function (request, response, next) {
131
+ if (request.protocol == 'https' || response.headersSent || process.env.DEVELOPMENT) {
132
+ next();
133
+ return;
134
+ }
135
+ logger.debug("Redirecting to https: ".concat(request.headers.host + request.url));
136
+ response.redirect('https://' + request.headers.host + request.url);
137
+ });
138
+ }
139
+ function configureStaticContentRouter(server, config) {
140
+ var _a;
141
+ if (!((_a = config.staticContent) === null || _a === void 0 ? void 0 : _a.staticContentDir))
142
+ return;
143
+ server.use(staticContentPath, express_1.default.static(config.staticContent.staticContentDir));
144
+ logger.info("Serving static content on path: ".concat(staticContentPath, ", serving from directory: ").concat(config.staticContent.staticContentDir));
145
+ }
146
+ function configureSession(server, config) {
147
+ var sixtyDays = 1000 * 60 * 60 * 24 * 60;
148
+ var sessionOptions = {
149
+ secret: config.session.secret,
150
+ store: config.session.store,
151
+ resave: false,
152
+ saveUninitialized: false,
153
+ cookie: {
154
+ maxAge: sixtyDays
155
+ },
156
+ rolling: true
157
+ };
158
+ if (!process.env.DEVELOPMENT) {
159
+ server.set('trust proxy', 1);
160
+ if (!sessionOptions.cookie)
161
+ sessionOptions.cookie = {};
162
+ sessionOptions.cookie.secure = true;
163
+ }
164
+ if (config.session)
165
+ sessionOptions = Object.assign(sessionOptions, config.session);
166
+ server.use((0, express_session_1.default)(sessionOptions));
167
+ server.use(passport_1.default.initialize());
168
+ server.use(passport_1.default.session());
169
+ if (config.authenticate)
170
+ initializeAuthentication(config.authenticate);
171
+ }
172
+ function initializeAuthentication(authenticate) {
173
+ passport_1.default.use(new passport_local_1.default.Strategy(function (username, password, done) {
174
+ return __awaiter(this, void 0, void 0, function () {
175
+ var result;
176
+ return __generator(this, function (_a) {
177
+ switch (_a.label) {
178
+ case 0:
179
+ logger.info("Authenticating");
180
+ return [4 /*yield*/, authenticate(username, password)];
181
+ case 1:
182
+ result = _a.sent();
183
+ if (result === true)
184
+ return [2 /*return*/, done(null, { username: username })];
185
+ return [2 /*return*/, done(new Error(result))];
186
+ }
187
+ });
188
+ });
189
+ }));
190
+ passport_1.default.serializeUser(function (user, done) {
191
+ done(null, user);
192
+ });
193
+ passport_1.default.deserializeUser(function (id, done) {
194
+ done(null, id);
195
+ });
196
+ }
197
+ function beforeRequest(server, config) {
198
+ var _a, _b, _c;
199
+ var requestCounter = 0;
200
+ if (((_a = config.request) === null || _a === void 0 ? void 0 : _a.disableRequestLogging) == false || typeof ((_b = config.request) === null || _b === void 0 ? void 0 : _b.disableRequestLogging) === 'undefined') {
201
+ server.use(function (request, response, next) {
202
+ if (request.path.startsWith('/static') || request.path.startsWith('/favicon.ico')) {
203
+ next();
204
+ return;
205
+ }
206
+ var requestNumber = ++requestCounter;
207
+ logger.info("[#".concat(requestNumber, "] Started ").concat(request.originalUrl));
208
+ response.locals = { requestNumber: requestNumber };
209
+ next();
210
+ });
211
+ }
212
+ if ((_c = config.request) === null || _c === void 0 ? void 0 : _c.beforeRequest)
213
+ server.use(config.request.beforeRequest);
214
+ }
215
+ function afterRequest(server, config) {
216
+ var _a, _b, _c;
217
+ if ((_a = config.request) === null || _a === void 0 ? void 0 : _a.afterRequest)
218
+ server.use(config.request.afterRequest);
219
+ if (((_b = config.request) === null || _b === void 0 ? void 0 : _b.disableRequestLogging) == false || typeof ((_c = config.request) === null || _c === void 0 ? void 0 : _c.disableRequestLogging) === 'undefined') {
220
+ server.use(function (request, response, next) {
221
+ if (request.path.startsWith('/static') || request.path.startsWith('/favicon.ico')) {
222
+ next();
223
+ return;
224
+ }
225
+ logger.info("[#".concat(response.locals.requestNumber, "] Finished ").concat(request.originalUrl));
226
+ next();
227
+ });
228
+ }
229
+ }
230
+ function start(server, config) {
231
+ var port = config.port ? config.port : 3000;
232
+ server.listen(port, function () {
233
+ if (process.env.DEVELOPMENT)
234
+ logger.info("Starting in development mode");
235
+ logger.info("Server listening on port: ".concat(port));
236
+ });
237
+ }
238
+ //# sourceMappingURL=startServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startServer.js","sourceRoot":"","sources":["../../src/startServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import webpack = require("webpack");
2
+ import ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin");
3
+ export let mode: string;
4
+ export let devtool: string;
5
+ export namespace output {
6
+ let filename: string;
7
+ let library: string;
8
+ }
9
+ export namespace resolve {
10
+ let extensions: string[];
11
+ let alias: {
12
+ react: string;
13
+ process: string;
14
+ '@mui/joy': string;
15
+ '@mui/material': string;
16
+ '@mui/icons-material': string;
17
+ 'webpack-hot-middleware': string;
18
+ };
19
+ let fallback: {
20
+ crypto: string;
21
+ util: string;
22
+ events: string;
23
+ url: string;
24
+ buffer: string;
25
+ stream: string;
26
+ 'process/browser': string;
27
+ };
28
+ }
29
+ export namespace resolveLoader {
30
+ let modules: string[];
31
+ }
32
+ export namespace module {
33
+ let rules: ({
34
+ test: RegExp;
35
+ resolve: {
36
+ fullySpecified: boolean;
37
+ };
38
+ } | {
39
+ test: RegExp;
40
+ exclude: RegExp;
41
+ use: {
42
+ loader: string;
43
+ options: {
44
+ getCustomTransformers: () => {
45
+ before: any[];
46
+ };
47
+ transpileOnly: boolean;
48
+ };
49
+ }[];
50
+ } | {
51
+ test: RegExp;
52
+ use: {
53
+ loader: string;
54
+ options: {
55
+ name: string;
56
+ };
57
+ }[];
58
+ exclude?: undefined;
59
+ })[];
60
+ }
61
+ export namespace optimization {
62
+ namespace splitChunks {
63
+ namespace cacheGroups {
64
+ namespace vendor {
65
+ let test: RegExp;
66
+ let name: string;
67
+ let chunks: string;
68
+ let priority: number;
69
+ }
70
+ }
71
+ }
72
+ }
73
+ export let plugins: (webpack.ProvidePlugin | webpack.HotModuleReplacementPlugin | ReactRefreshWebpackPlugin)[];
74
+ //# sourceMappingURL=webpack.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webpack.config.d.ts","sourceRoot":"","sources":["../webpack.config.js"],"names":[],"mappings":""}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var path = require('path');
3
+ var webpack = require('webpack');
4
+ var ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
5
+ var ReactRefreshTypeScript = require('react-refresh-typescript');
6
+ // if there are module resolution issues, verify assumptions about pathing
7
+ // console.log(`__dirname in webpack.config: ${__dirname}`);
8
+ // see https://github.com/webpack/webpack/issues/11467#issuecomment-808618999/
9
+ // for details
10
+ var webpack5esmInteropRule = {
11
+ test: /\.m?js/,
12
+ resolve: {
13
+ fullySpecified: false
14
+ }
15
+ };
16
+ module.exports = {
17
+ mode: 'development',
18
+ devtool: 'inline-source-map',
19
+ // entry provided dynamically in startServer.initializeHotReloading
20
+ // entry: {
21
+ // app: ['webpack-hot-middleware/client', './generated/index.ts'],
22
+ // },
23
+ output: {
24
+ filename: '[name].js',
25
+ // path and publicPath provided in startServer.initializeHotReloading
26
+ // path: path.join(__dirname, 'dist'),
27
+ library: '[name]'
28
+ },
29
+ resolve: {
30
+ extensions: ['.tsx', '.ts', '.js', '.json'],
31
+ alias: {
32
+ 'react': path.join(__dirname, '../node_modules/react'),
33
+ 'process': 'process/browser',
34
+ '@mui/joy': path.join(__dirname, '../node_modules/@mui/joy'),
35
+ '@mui/material': path.join(__dirname, '../node_modules/@mui/material'),
36
+ '@mui/icons-material': path.join(__dirname, '../node_modules/@mui/icons-material'),
37
+ 'webpack-hot-middleware': path.join(__dirname, '../node_modules/webpack-hot-middleware'),
38
+ },
39
+ // provide shims for node libraries for webpack >= 5
40
+ fallback: {
41
+ 'crypto': require.resolve('crypto-browserify'),
42
+ 'util': require.resolve('util/'),
43
+ 'events': require.resolve('events/'),
44
+ 'url': require.resolve('url/'),
45
+ 'buffer': require.resolve('buffer/'),
46
+ 'stream': require.resolve('stream-browserify'),
47
+ 'process/browser': require.resolve('process/browser'),
48
+ },
49
+ },
50
+ // since this webpack.config is invoked via webpack-dev-middleware in the process of the consuming server package (not this package)
51
+ // we need to let webpack know where to look for loaders like: file-loader and ts-loader
52
+ // it's ideal to keep those dependencies within this package instead of requiring them installed by the consumer
53
+ resolveLoader: {
54
+ modules: [path.resolve(__dirname, '../node_modules'), 'node_modules'],
55
+ },
56
+ module: {
57
+ rules: [
58
+ webpack5esmInteropRule,
59
+ // all files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'
60
+ // this will only transpile (to integrate with babel via ReactRefreshTypeScript); rely on the ide for compiler checks
61
+ {
62
+ test: /\.[jt]sx?$/,
63
+ exclude: /node_modules/,
64
+ use: [
65
+ {
66
+ loader: require.resolve('ts-loader'),
67
+ options: {
68
+ getCustomTransformers: function () { return ({
69
+ before: [ReactRefreshTypeScript()],
70
+ }); },
71
+ transpileOnly: true,
72
+ },
73
+ },
74
+ ],
75
+ },
76
+ // image files
77
+ {
78
+ test: /\.(png|jpe?g|gif|svg)$/i,
79
+ use: [
80
+ {
81
+ loader: 'file-loader',
82
+ options: {
83
+ name: '[path][name].[ext]', // This line will keep the original path and filename
84
+ },
85
+ },
86
+ ],
87
+ },
88
+ ],
89
+ },
90
+ optimization: {
91
+ splitChunks: {
92
+ cacheGroups: {
93
+ vendor: {
94
+ test: /[\\/]node_modules[\\/]/,
95
+ name: 'vendor',
96
+ chunks: 'all',
97
+ priority: -10
98
+ }
99
+ }
100
+ }
101
+ },
102
+ plugins: [
103
+ new webpack.ProvidePlugin({
104
+ process: 'process/browser',
105
+ Buffer: ['buffer', 'Buffer'],
106
+ }),
107
+ new webpack.HotModuleReplacementPlugin(),
108
+ new ReactRefreshWebpackPlugin(),
109
+ ],
110
+ };
111
+ //# sourceMappingURL=webpack.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webpack.config.js","sourceRoot":"","sources":["../webpack.config.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /** Load Dependency Source Graphs */
2
+
3
+ import '@proteinjs/reflection';
4
+ import '@proteinjs/util';
5
+ import '@proteinjs/db';
6
+ import '@proteinjs/server-api';
7
+ import 'body-parser';
8
+ import 'compression';
9
+ import 'cookie-parser';
10
+ import 'express';
11
+ import 'express-session';
12
+ import 'passport';
13
+ import 'passport-local';
14
+ import 'react';
15
+ import 'react-helmet';
16
+ import 'webpack';
17
+ import 'webpack-dev-middleware';
18
+ import 'webpack-hot-middleware';
19
+
20
+
21
+ /** Generate Source Graph */
22
+
23
+ const sourceGraph = "{\"options\":{\"directed\":true,\"multigraph\":false,\"compound\":false},\"nodes\":[{\"v\":\"@proteinjs/server/NodeSessionDataStorage\",\"value\":{\"packageName\":\"@proteinjs/server\",\"name\":\"NodeSessionDataStorage\",\"filePath\":\"/home/runner/work/server/server/packages/server/src/NodeSessionDataStorage.ts\",\"qualifiedName\":\"@proteinjs/server/NodeSessionDataStorage\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[{\"name\":\"HOOK_INITIALIZED\",\"type\":null,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":true,\"visibility\":\"private\"},{\"name\":\"SESSION_DATA\",\"type\":{\"packageName\":\"@proteinjs/server\",\"name\":\"{[id: string]: SessionData}\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server/{[id: string]: SessionData}\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":true,\"visibility\":\"private\"},{\"name\":\"environment\",\"type\":null,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"setData\",\"returnType\":null,\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"data\",\"type\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionData\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getData\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionData\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]},{\"name\":\"initHook\",\"returnType\":null,\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"private\",\"parameters\":[]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionDataStorage\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionDataStorage\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}},{\"v\":\"@proteinjs/server-api/SessionDataStorage\"},{\"v\":\"@proteinjs/server/healthCheck\",\"value\":{\"packageName\":\"@proteinjs/server\",\"name\":\"healthCheck\",\"filePath\":\"/home/runner/work/server/server/packages/server/src/routes/healthCheck.ts\",\"qualifiedName\":\"@proteinjs/server/healthCheck\",\"type\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"Route\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/Route\",\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/server-api\",\"name\":\"Route\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/Route\",\"typeParameters\":[],\"directParents\":null}]},\"isExported\":true,\"isConst\":true,\"sourceType\":0}},{\"v\":\"@proteinjs/server-api/Route\"}],\"edges\":[{\"v\":\"@proteinjs/server/NodeSessionDataStorage\",\"w\":\"@proteinjs/server-api/SessionDataStorage\",\"value\":\"implements interface\"},{\"v\":\"@proteinjs/server/healthCheck\",\"w\":\"@proteinjs/server-api/Route\",\"value\":\"has type\"}]}";
24
+
25
+
26
+ /** Generate Source Links */
27
+
28
+ import { NodeSessionDataStorage } from '../src/NodeSessionDataStorage';
29
+ import { healthCheck } from '../src/routes/healthCheck';
30
+
31
+ const sourceLinks = {
32
+ '@proteinjs/server/NodeSessionDataStorage': NodeSessionDataStorage,
33
+ '@proteinjs/server/healthCheck': healthCheck,
34
+ };
35
+
36
+
37
+ /** Load Source Graph and Links */
38
+
39
+ import { SourceRepository } from '@proteinjs/reflection';
40
+ SourceRepository.merge(sourceGraph, sourceLinks);
41
+
42
+
43
+ export * from '../index';
package/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './src/startServer';
package/jest.config.js ADDED
@@ -0,0 +1,18 @@
1
+ module.exports = {
2
+ "roots": [
3
+ "<rootDir>/test"
4
+ ],
5
+ "transform": {
6
+ "^.+\\.tsx?$": "ts-jest"
7
+ },
8
+ "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$",
9
+ "moduleFileExtensions": [
10
+ "ts",
11
+ "tsx",
12
+ "js",
13
+ "jsx",
14
+ "json",
15
+ "node"
16
+ ],
17
+ "testEnvironment": "node"
18
+ }