@cloud-cli/d0 1.0.0 → 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.
- package/package.json +3 -3
- package/src/index.ts +0 -90
- package/src/serve.ts +0 -2
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloud-cli/d0",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "tsc",
|
|
9
9
|
"test": "echo true",
|
|
10
|
-
"start": "node dist/serve.js"
|
|
10
|
+
"start": "node ./dist/serve.js"
|
|
11
11
|
},
|
|
12
12
|
"prettier": "@cloud-cli/prettier-config",
|
|
13
13
|
"repository": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"access": "public"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"better-sqlite3": "^
|
|
21
|
+
"better-sqlite3": "^9.4.3"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@cloud-cli/prettier-config": "^1.0.0",
|
package/src/index.ts
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { createServer, IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
-
import { readFile } from 'node:fs/promises';
|
|
3
|
-
import SQLite, { Database } from 'better-sqlite3';
|
|
4
|
-
|
|
5
|
-
type Q = {
|
|
6
|
-
db: Database;
|
|
7
|
-
request: IncomingMessage;
|
|
8
|
-
response: ServerResponse;
|
|
9
|
-
args: Record<string, string>;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export function getDatabase(): Database {
|
|
13
|
-
const db = new SQLite(process.env.SQLITE_DB_PATH || './db.sqlite3');
|
|
14
|
-
db.pragma('journal_mode = WAL');
|
|
15
|
-
return db;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function serve() {
|
|
19
|
-
const db = getDatabase();
|
|
20
|
-
|
|
21
|
-
const server = createServer((request, response) => {
|
|
22
|
-
const url = new URL(request.url, 'http://localhost');
|
|
23
|
-
const route = `${request.method} ${url.pathname}`.trim();
|
|
24
|
-
const args = Object.fromEntries(url.searchParams.entries()) as Q['args'];
|
|
25
|
-
const q: Q = { db, request, response, args };
|
|
26
|
-
|
|
27
|
-
switch (route) {
|
|
28
|
-
case 'GET /index.mjs':
|
|
29
|
-
return onEsModule(q);
|
|
30
|
-
|
|
31
|
-
case 'POST /query':
|
|
32
|
-
return onQuery(q);
|
|
33
|
-
|
|
34
|
-
default:
|
|
35
|
-
response.writeHead(404).end();
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
server.listen(process.env.PORT);
|
|
40
|
-
|
|
41
|
-
return server;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
async function onQuery({ db, request, response }: Q) {
|
|
45
|
-
const query = await readStream(request);
|
|
46
|
-
|
|
47
|
-
if (!query.length) {
|
|
48
|
-
response.writeHead(400).end();
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
try {
|
|
53
|
-
const { s, d } = JSON.parse(query);
|
|
54
|
-
const result = db.prepare(s).run(d);
|
|
55
|
-
response.end(JSON.stringify(result));
|
|
56
|
-
} catch (error) {
|
|
57
|
-
process.env.DEBUG && console.error(error);
|
|
58
|
-
response.writeHead(400).end(String(error));
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
let file;
|
|
63
|
-
async function getFile() {
|
|
64
|
-
if (!file) {
|
|
65
|
-
file = await readFile('./client.mjs', 'utf8');
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return file;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
async function onEsModule({ request, response }: Q) {
|
|
72
|
-
const hostname = request.headers['x-forwarded-for'];
|
|
73
|
-
const code = await getFile();
|
|
74
|
-
|
|
75
|
-
response
|
|
76
|
-
.writeHead(200, {
|
|
77
|
-
'Content-Type': 'text/javascript',
|
|
78
|
-
'Access-Control-Allow-Origin': '*',
|
|
79
|
-
})
|
|
80
|
-
.end(code.replace('__API_URL__', hostname));
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
function readStream(stream): Promise<string> {
|
|
84
|
-
return new Promise((resolve, reject) => {
|
|
85
|
-
const all = [];
|
|
86
|
-
stream.on('data', (c) => all.push(c));
|
|
87
|
-
stream.on('end', () => resolve(Buffer.concat(all).toString('utf8')));
|
|
88
|
-
stream.on('error', reject);
|
|
89
|
-
});
|
|
90
|
-
}
|
package/src/serve.ts
DELETED