@fc3/mmcadi 0.1.69 → 0.1.71
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.
- package/dist/.last-compile-time +1 -1
- package/dist/.last-publish-time +1 -1
- package/dist/src/api/create-app.d.ts +4 -0
- package/dist/src/api/create-app.js +50 -0
- package/dist/src/api/create-app.js.map +1 -0
- package/dist/src/api/serve.d.ts +3 -0
- package/dist/src/api/serve.js +6 -0
- package/dist/src/api/serve.js.map +1 -0
- package/dist/src/app.d.ts +14 -0
- package/dist/src/app.js +81 -0
- package/dist/src/app.js.map +1 -0
- package/dist/src/index.d.ts +1 -2
- package/dist/src/index.js +3 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/interface/repository.d.ts +3 -3
- package/dist/src/server/operation/create-session.js +3 -0
- package/dist/src/server/operation/create-session.js.map +1 -1
- package/dist/src/server/operation/find-account.js +6 -1
- package/dist/src/server/operation/find-account.js.map +1 -1
- package/dist/src/server/operation/find-playlist.js +6 -1
- package/dist/src/server/operation/find-playlist.js.map +1 -1
- package/dist/src/server/operation/load-account.js +5 -1
- package/dist/src/server/operation/load-account.js.map +1 -1
- package/dist/src/server/operation/load-page.js +1 -2
- package/dist/src/server/operation/load-page.js.map +1 -1
- package/dist/src/server/operation/update-account-settings.js +3 -0
- package/dist/src/server/operation/update-account-settings.js.map +1 -1
- package/dist/src/server/repository/filesystem.d.ts +3 -3
- package/dist/src/server/repository/filesystem.js +23 -4
- package/dist/src/server/repository/filesystem.js.map +1 -1
- package/dist/src/server/repository/memory.d.ts +3 -3
- package/dist/src/server/repository/memory.js +3 -20
- package/dist/src/server/repository/memory.js.map +1 -1
- package/dist/src/server.d.ts +0 -3
- package/dist/src/server.js +4 -48
- package/dist/src/server.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -21,16 +21,9 @@ class MemoryRepository {
|
|
|
21
21
|
// noop.
|
|
22
22
|
}
|
|
23
23
|
async findSession(session_id) {
|
|
24
|
-
|
|
24
|
+
return this.data.sessions.find((session) => {
|
|
25
25
|
return session.id === session_id;
|
|
26
26
|
});
|
|
27
|
-
if (session === undefined) {
|
|
28
|
-
return {
|
|
29
|
-
id: session_id,
|
|
30
|
-
username: null
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
return session;
|
|
34
27
|
}
|
|
35
28
|
async destroySession(session_id) {
|
|
36
29
|
let found = false;
|
|
@@ -66,13 +59,9 @@ class MemoryRepository {
|
|
|
66
59
|
return session;
|
|
67
60
|
}
|
|
68
61
|
async findAccount(username) {
|
|
69
|
-
|
|
62
|
+
return this.data.accounts.find((account) => {
|
|
70
63
|
return account.username === username;
|
|
71
64
|
});
|
|
72
|
-
if (account === undefined) {
|
|
73
|
-
throw new errors_1.NotFoundError(`Unable to find account: ${username}`);
|
|
74
|
-
}
|
|
75
|
-
return account;
|
|
76
65
|
}
|
|
77
66
|
async updateAccount(new_account) {
|
|
78
67
|
const accounts = this.data.accounts.map((old_account) => {
|
|
@@ -128,15 +117,9 @@ class MemoryRepository {
|
|
|
128
117
|
return updated_playlist;
|
|
129
118
|
}
|
|
130
119
|
async findPlaylist(playlist_id) {
|
|
131
|
-
|
|
120
|
+
return this.data.playlists.find((playlist) => {
|
|
132
121
|
return playlist.id === playlist_id;
|
|
133
122
|
});
|
|
134
|
-
if (playlist === undefined) {
|
|
135
|
-
throw new errors_1.NotFoundError(`
|
|
136
|
-
Unable to find playlist for id: ${playlist_id}
|
|
137
|
-
`);
|
|
138
|
-
}
|
|
139
|
-
return playlist;
|
|
140
123
|
}
|
|
141
124
|
}
|
|
142
125
|
exports.default = MemoryRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../../src/server/repository/memory.ts"],"names":[],"mappings":";;;;;AAAA,uEAA8C;AAC9C,wCAA0C;AAc1C,MAAM,gBAAgB;IAGrB,YAAmB,IAAiB;QACnC,IAAI,CAAC,IAAI,GAAG;YACX,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,EAAE;YACb,GAAG,IAAI;SACP,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,KAAK;QACjB,QAAQ;IACT,CAAC;IAEM,KAAK,CAAC,IAAI;QAChB,QAAQ;IACT,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,UAAkB;QAC1C,
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../../src/server/repository/memory.ts"],"names":[],"mappings":"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"}
|
package/dist/src/server.d.ts
CHANGED
|
@@ -2,13 +2,10 @@ import { HttpServer } from '@fc3/server';
|
|
|
2
2
|
import ServerSettings from './type/server-settings';
|
|
3
3
|
import RuntimeConfig from './type/runtime-config';
|
|
4
4
|
declare class Server extends HttpServer {
|
|
5
|
-
private fallback_server;
|
|
6
5
|
constructor(settings: ServerSettings);
|
|
7
6
|
private resolveSession;
|
|
8
7
|
start(): Promise<void>;
|
|
9
8
|
stop(): Promise<void>;
|
|
10
|
-
private startHttpServer;
|
|
11
|
-
private stopHttpServer;
|
|
12
9
|
private startRepository;
|
|
13
10
|
private stopRepository;
|
|
14
11
|
private createPublicDirectory;
|
package/dist/src/server.js
CHANGED
|
@@ -4,12 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const path_1 = __importDefault(require("path"));
|
|
7
|
-
const http_1 = __importDefault(require("http"));
|
|
8
7
|
const promises_1 = require("fs/promises");
|
|
9
8
|
const server_1 = require("@fc3/server");
|
|
10
|
-
const promise_wrapper_1 = __importDefault(require("@fc3/promise-wrapper"));
|
|
11
|
-
const network_1 = require("@fc3/network");
|
|
12
|
-
const http_2 = require("@fc3/http");
|
|
13
9
|
const errors_1 = require("@fc3/errors");
|
|
14
10
|
const key_generator_1 = __importDefault(require("@fc3/key-generator"));
|
|
15
11
|
const login_1 = __importDefault(require("./server/endpoint/login.js"));
|
|
@@ -36,17 +32,11 @@ const create_3 = __importDefault(require("./server/endpoint/playlist/create.js")
|
|
|
36
32
|
const static_file_1 = __importDefault(require("./server/middleware/static-file.js"));
|
|
37
33
|
const error_handler_1 = __importDefault(require("./server/middleware/error-handler.js"));
|
|
38
34
|
const memory_1 = __importDefault(require("./server/repository/memory.js"));
|
|
39
|
-
const DEFAULT_PORT =
|
|
35
|
+
const DEFAULT_PORT = 4443;
|
|
40
36
|
const DEFAULT_HOSTNAME = 'mmcadi.dev';
|
|
41
37
|
class Server extends server_1.HttpServer {
|
|
42
38
|
constructor(settings) {
|
|
43
|
-
const
|
|
44
|
-
const protocol = key && cert ? network_1.NetworkProtocol.HTTPS : network_1.NetworkProtocol.HTTP;
|
|
45
|
-
const server = (0, server_1.createServer)({
|
|
46
|
-
key,
|
|
47
|
-
cert,
|
|
48
|
-
protocol
|
|
49
|
-
});
|
|
39
|
+
const server = (0, server_1.createServer)();
|
|
50
40
|
const port = settings.port || DEFAULT_PORT;
|
|
51
41
|
const hostname = settings.hostname || DEFAULT_HOSTNAME;
|
|
52
42
|
const label = 'mmcadi';
|
|
@@ -93,9 +83,6 @@ class Server extends server_1.HttpServer {
|
|
|
93
83
|
this.prependMiddleware(new static_file_1.default());
|
|
94
84
|
this.appendMiddleware(new error_handler_1.default());
|
|
95
85
|
this.setSessionResolver(this.resolveSession.bind(this));
|
|
96
|
-
if (protocol === network_1.NetworkProtocol.HTTPS) {
|
|
97
|
-
this.fallback_server = http_1.default.createServer();
|
|
98
|
-
}
|
|
99
86
|
}
|
|
100
87
|
async resolveSession(request) {
|
|
101
88
|
const session_id = request.getSessionIdFromCookie();
|
|
@@ -122,43 +109,12 @@ class Server extends server_1.HttpServer {
|
|
|
122
109
|
}
|
|
123
110
|
async start() {
|
|
124
111
|
await this.startRepository();
|
|
125
|
-
await this.startHttpServer();
|
|
126
112
|
await this.createPublicDirectory();
|
|
127
|
-
|
|
113
|
+
// NOTE: We deliberately avoid calling super.start()
|
|
128
114
|
}
|
|
129
115
|
async stop() {
|
|
130
|
-
await this.stopHttpServer();
|
|
131
116
|
await this.stopRepository();
|
|
132
|
-
|
|
133
|
-
async startHttpServer() {
|
|
134
|
-
if (this.fallback_server === undefined) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
this.fallback_server.on('request', (request, response) => {
|
|
138
|
-
const host = request.headers[http_2.HttpHeader.HOST];
|
|
139
|
-
const url = request.url || '';
|
|
140
|
-
const redirect_url = `https://${host}${url}`;
|
|
141
|
-
response.writeHead(http_2.StatusCode.REDIRECT, {
|
|
142
|
-
[http_2.HttpHeader.LOCATION]: redirect_url
|
|
143
|
-
});
|
|
144
|
-
response.end();
|
|
145
|
-
});
|
|
146
|
-
const http_port = 80;
|
|
147
|
-
const promise_wrapper = new promise_wrapper_1.default();
|
|
148
|
-
this.fallback_server.listen(http_port, () => {
|
|
149
|
-
promise_wrapper.resolve();
|
|
150
|
-
});
|
|
151
|
-
await promise_wrapper.getPromise();
|
|
152
|
-
}
|
|
153
|
-
async stopHttpServer() {
|
|
154
|
-
if (this.fallback_server === undefined) {
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
const promise_wrapper = new promise_wrapper_1.default();
|
|
158
|
-
this.fallback_server.close(() => {
|
|
159
|
-
promise_wrapper.resolve();
|
|
160
|
-
});
|
|
161
|
-
await promise_wrapper.getPromise();
|
|
117
|
+
// NOTE: We deliberately avoid calling super.stop()
|
|
162
118
|
}
|
|
163
119
|
async startRepository() {
|
|
164
120
|
const { repository } = this.getConfig();
|
package/dist/src/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|