Skip to content

Commit 3d3360e

Browse files
author
Jacek Piętal
committed
feat: allow disable cache (maxCacheSize = 0)
1 parent b640edc commit 3d3360e

40 files changed

+11721
-526
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ const config = {
6969
// ssl = undefined | { key, cert }
7070
ssl: process.argv.includes("--ssl") ? ssl : undefined,
7171
// max cache size
72-
maxCacheSize: 128
72+
maxCacheSize: 128,
7373
};
7474
```
7575

dist/index.d.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,3 @@
1-
import { Cache } from "latermom";
2-
import { WSConfig, WSRequest, WSServer } from "./types.js";
3-
export default function startServer(
4-
userConfig: Partial<WSConfig>,
5-
{
6-
createServer,
7-
requestHandler,
8-
}: {
9-
createServer: (config: WSConfig) => Promise<WSServer>;
10-
requestHandler: (fileReaderCache: Cache) => WSRequest;
11-
}
12-
): Promise<WSServer>;
1+
export * from "./types";
2+
export * from "./server";
133
//# sourceMappingURL=index.d.ts.map

dist/index.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,34 @@
11
"use strict";
2-
var __importDefault =
3-
(this && this.__importDefault) ||
4-
function (mod) {
5-
return mod && mod.__esModule ? mod : { default: mod };
2+
var __createBinding =
3+
(this && this.__createBinding) ||
4+
(Object.create
5+
? function (o, m, k, k2) {
6+
if (k2 === undefined) k2 = k;
7+
var desc = Object.getOwnPropertyDescriptor(m, k);
8+
if (
9+
!desc ||
10+
("get" in desc ? !m.__esModule : desc.writable || desc.configurable)
11+
) {
12+
desc = {
13+
enumerable: true,
14+
get: function () {
15+
return m[k];
16+
},
17+
};
18+
}
19+
Object.defineProperty(o, k2, desc);
20+
}
21+
: function (o, m, k, k2) {
22+
if (k2 === undefined) k2 = k;
23+
o[k2] = m[k];
24+
});
25+
var __exportStar =
26+
(this && this.__exportStar) ||
27+
function (m, exports) {
28+
for (var p in m)
29+
if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p))
30+
__createBinding(exports, m, p);
631
};
732
Object.defineProperty(exports, "__esModule", { value: true });
8-
const config_js_1 = __importDefault(require("./config.js"));
9-
const server_1 = __importDefault(require("./server"));
10-
// dynamically start server
11-
async function startServer(userConfig, { createServer, requestHandler }) {
12-
// merge configurations
13-
const config = { ...config_js_1.default, ...userConfig };
14-
// dynamically create wrapped compatible express or uws server
15-
const server = await (0, server_1.default)(config, {
16-
createServer,
17-
requestHandler,
18-
});
19-
// mandatory started message
20-
console.info(`Started ${config.type} app on port`, config.port);
21-
if (Object.keys(config.plugins).length) {
22-
console.info("with plugin(s)", Object.keys(config.plugins).join(", "));
23-
}
24-
// resolve with server
25-
return server;
26-
}
27-
exports.default = startServer;
33+
__exportStar(require("./types"), exports);
34+
__exportStar(require("./server"), exports);

dist/plugins.js

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,4 @@
11
"use strict";
2-
var __createBinding =
3-
(this && this.__createBinding) ||
4-
(Object.create
5-
? function (o, m, k, k2) {
6-
if (k2 === undefined) k2 = k;
7-
var desc = Object.getOwnPropertyDescriptor(m, k);
8-
if (
9-
!desc ||
10-
("get" in desc ? !m.__esModule : desc.writable || desc.configurable)
11-
) {
12-
desc = {
13-
enumerable: true,
14-
get: function () {
15-
return m[k];
16-
},
17-
};
18-
}
19-
Object.defineProperty(o, k2, desc);
20-
}
21-
: function (o, m, k, k2) {
22-
if (k2 === undefined) k2 = k;
23-
o[k2] = m[k];
24-
});
25-
var __setModuleDefault =
26-
(this && this.__setModuleDefault) ||
27-
(Object.create
28-
? function (o, v) {
29-
Object.defineProperty(o, "default", { enumerable: true, value: v });
30-
}
31-
: function (o, v) {
32-
o["default"] = v;
33-
});
34-
var __importStar =
35-
(this && this.__importStar) ||
36-
function (mod) {
37-
if (mod && mod.__esModule) return mod;
38-
var result = {};
39-
if (mod != null)
40-
for (var k in mod)
41-
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
42-
__createBinding(result, mod, k);
43-
__setModuleDefault(result, mod);
44-
return result;
45-
};
462
Object.defineProperty(exports, "__esModule", { value: true });
473
exports.getPlugin = exports.populatePlugins = void 0;
484
const path_1 = require("path");
@@ -52,12 +8,8 @@ async function populatePlugins(config) {
528
if (matches) {
539
// we need to get our promises in order
5410
const syncMap = matches.map((path) => {
55-
var _a;
5611
const [_, plugin] = path.split(" ");
57-
return (
58-
(_a = (0, path_1.resolve)(plugin)),
59-
Promise.resolve().then(() => __importStar(require(_a)))
60-
);
12+
return import((0, path_1.resolve)(plugin));
6113
});
6214
// so the main function awaits properly
6315
const plugins = await Promise.all(syncMap);

dist/server/index.d.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,12 @@
1-
import { Cache } from "latermom";
2-
import { WSConfig, WSRequest, WSServer } from "../types.js";
1+
import { WSConfig, WSServer, WSCoreConsumer } from "../types.js";
32
/**
43
* this is either
5-
* @param {object} config
6-
* @param {object} core_consumer
4+
* @param {WSConfig} config
5+
* @param {WSCoreConsumer} coreConsumer
76
* @returns {WSServer}
87
*/
9-
export default function startServer(
8+
export declare function chef(
109
config: WSConfig,
11-
{
12-
createServer,
13-
requestHandler,
14-
}: {
15-
createServer(config: WSConfig): Promise<WSServer>;
16-
requestHandler(fileReaderCache: Cache): WSRequest;
17-
}
10+
{ createServer, requestHandler }: WSCoreConsumer
1811
): Promise<WSServer>;
1912
//# sourceMappingURL=index.d.ts.map

dist/server/index.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/server/index.js

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,46 @@ var __importDefault =
55
return mod && mod.__esModule ? mod : { default: mod };
66
};
77
Object.defineProperty(exports, "__esModule", { value: true });
8+
exports.chef = void 0;
89
const latermom_1 = require("latermom");
10+
const config_js_1 = __importDefault(require("../config.js"));
911
const static_files_js_1 = __importDefault(require("./static-files.js"));
1012
const plugins_1 = require("../plugins");
1113
/**
1214
* this is either
13-
* @param {object} config
14-
* @param {object} core_consumer
15+
* @param {WSConfig} config
16+
* @param {WSCoreConsumer} coreConsumer
1517
* @returns {WSServer}
1618
*/
17-
async function startServer(config, { createServer, requestHandler }) {
19+
async function chef(config, { createServer, requestHandler }) {
20+
const mergedConfig = { ...config_js_1.default, ...config };
1821
// polulate config.plugins by requiring optional files
19-
await (0, plugins_1.populatePlugins)(config);
22+
await (0, plugins_1.populatePlugins)(mergedConfig);
2023
// create the express or uws server inside a wrapper
21-
const server = await createServer(config);
24+
const server = await createServer(mergedConfig);
2225
// extend with resulting config
23-
server.config = config;
26+
server.config = mergedConfig;
27+
// spread
28+
const { folder, maxCacheSize, type, port, plugins } = server.config;
2429
// create the static files reader based on folder
25-
const fileReader = (0, static_files_js_1.default)(config.folder);
30+
const fileReader = (0, static_files_js_1.default)(folder);
2631
// and create a cache for above
27-
const fileReaderCache = new latermom_1.Cache(fileReader, config.maxCacheSize);
32+
const fileReaderCache = maxCacheSize
33+
? new latermom_1.Cache(fileReader, maxCacheSize)
34+
: { get: fileReader };
2835
// give library consumer one frame to setup his own routes
2936
setTimeout(() => {
3037
// everything goes to the reader
3138
server.get("/*", requestHandler(fileReaderCache));
3239
});
3340
// make server listen on process.env.PORT || 4200
34-
await server.start(config.port);
41+
await server.start(port);
42+
// mandatory started message
43+
console.info(`Started ${type} app on port`, port);
44+
if (Object.keys(plugins).length) {
45+
console.info("with plugin(s)", Object.keys(plugins).join(", "));
46+
}
3547
// finally
3648
return server;
3749
}
38-
exports.default = startServer;
50+
exports.chef = chef;

dist/types.d.ts

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,34 @@
11
/// <reference types="node" />
2-
type WSProp = ((...args: any[]) => any) | any | any[];
3-
type uWS_WebSocket = {
4-
[prop: string]: WSProp;
2+
export type WSProp = ((...args: any[]) => any) | any | any[];
3+
export type uWS_WebSocket = {
4+
[property: string]: WSProp;
55
};
66
export type WSEvent = {
77
id: string;
88
event: string;
99
data?: any;
1010
};
1111
export type WSSocket = WebSocket | uWS_WebSocket;
12-
export type WSPlugin = (ws: WSSocket, event: WSEvent) => void;
12+
export type WSPlugin = (websocket: WSSocket, event: WSEvent) => void;
1313
export type WSServer = {
1414
start: (port: number) => Promise<WSServer>;
1515
config: WSConfig;
16-
[prop: string]: WSProp;
16+
[property: string]: WSProp;
1717
};
1818
export type WSRequest = (
19-
resOrReq: object | any,
20-
reqOrRes: object | any,
19+
responseOnRequest: object | any,
20+
requestOrResponse: object | any,
2121
next?: () => void
2222
) => void;
2323
export type WSFileReaderResponse = {
2424
mime: string;
2525
body: string | Buffer;
2626
status: number;
2727
};
28+
export type WSFileReader = (url: string) => WSFileReaderResponse;
29+
export type WSFileReaderCache = {
30+
get: (url: string) => WSFileReaderResponse;
31+
};
2832
export type WSConfig = {
2933
port: number;
3034
folder: string;
@@ -41,5 +45,8 @@ export type WSConfig = {
4145
};
4246
maxCacheSize: number;
4347
};
44-
export {};
48+
export type WSCoreConsumer = {
49+
createServer(config: WSConfig): Promise<WSServer>;
50+
requestHandler(fileReaderCache: WSFileReaderCache): WSRequest;
51+
};
4552
//# sourceMappingURL=types.d.ts.map

dist/types.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/.nojekyll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.

docs/assets/custom.css

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
@import url("https://fonts.googleapis.com/css2?family=Source+Sans+Pro&family=Source+Code+Pro&display=swap");
2+
3+
body,
4+
p {
5+
font-family: "Source Sans Pro", Arial, Helvetica, sans-serif;
6+
font-size: 18px;
7+
}
8+
9+
h4 {
10+
margin: 1rem 0;
11+
}
12+
13+
pre,
14+
code,
15+
.tsd-signature {
16+
font-family: "Source Code Pro", "Courier New", Courier, monospace;
17+
padding: 0 0.5em;
18+
line-height: 1.75;
19+
margin: 1px;
20+
border: none !important;
21+
background: var(--code-background);
22+
}
23+
24+
pre,
25+
.tsd-signature {
26+
display: block;
27+
padding: 0.75em 1em;
28+
margin: 1em 0;
29+
border-radius: 6px;
30+
}
31+
32+
pre code {
33+
padding: 0;
34+
border: none;
35+
}
36+
37+
code {
38+
display: inline-block;
39+
border-radius: 4px;
40+
}

0 commit comments

Comments
 (0)