kubun 0.4.4 → 0.5.0
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/README.md +1 -1
- package/dist/account.js +2 -2
- package/dist/client.js +1 -1
- package/dist/commands/graphql/schema.js +1 -1
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/serve.js +22 -76
- package/oclif.manifest.json +1 -1
- package/package.json +13 -23
package/README.md
CHANGED
package/dist/account.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { fromB64 } from '@enkaku/codec';
|
|
2
|
-
import {
|
|
2
|
+
import { createSigningIdentity } from '@enkaku/token';
|
|
3
3
|
export function getSigner(key) {
|
|
4
|
-
return
|
|
4
|
+
return createSigningIdentity(fromB64(key));
|
|
5
5
|
}
|
package/dist/client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HTTPClient } from '@kubun/http-client';
|
|
2
2
|
import { getSigner } from './account.js';
|
|
3
3
|
export function createClient(signerKey, url = 'http://localhost:4321') {
|
|
4
|
-
return new HTTPClient({
|
|
4
|
+
return new HTTPClient({ identity: getSigner(signerKey), url });
|
|
5
5
|
}
|
|
@@ -23,7 +23,7 @@ export default class CreateGraphQLSchema extends Command {
|
|
|
23
23
|
const { flags } = await this.parse(CreateGraphQLSchema);
|
|
24
24
|
const clusters = await Promise.all(flags.cluster.map((path) => readJSON(path)));
|
|
25
25
|
const model = GraphModel.fromClusters({ clusters });
|
|
26
|
-
const schema = printSchema(createSchema(model
|
|
26
|
+
const schema = printSchema(createSchema(model));
|
|
27
27
|
if (flags.output == null) {
|
|
28
28
|
spinner.succeed('GraphQL schema generated');
|
|
29
29
|
this.log(schema);
|
package/dist/commands/mcp.js
CHANGED
|
@@ -26,7 +26,7 @@ export default class MCP extends Command {
|
|
|
26
26
|
const config = createConfig({
|
|
27
27
|
connect: flags.connect,
|
|
28
28
|
database: flags.db,
|
|
29
|
-
|
|
29
|
+
identity: flags.privateKey ? getSigner(flags.privateKey) : undefined,
|
|
30
30
|
});
|
|
31
31
|
serveProcess(config);
|
|
32
32
|
}
|
package/dist/commands/serve.js
CHANGED
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { ServerTransport } from '@enkaku/http-server-transport';
|
|
4
|
-
import { serve } from '@enkaku/server';
|
|
5
|
-
import { randomSigner, toTokenSigner } from '@enkaku/token';
|
|
6
|
-
import { serve as serveHTTP } from '@hono/node-server';
|
|
7
|
-
import { KubunDB } from '@kubun/db';
|
|
8
|
-
import { PostgresAdapter } from '@kubun/db-postgres';
|
|
9
|
-
import { SQLiteAdapter } from '@kubun/db-sqlite';
|
|
10
|
-
import { getKubunLogger } from '@kubun/logger';
|
|
11
|
-
import { createHandlers } from '@kubun/server';
|
|
12
|
-
import { configureSync, getConsoleSink, getLogLevels } from '@logtape/logtape';
|
|
1
|
+
import { startServer } from '@kubun/http-server';
|
|
2
|
+
import { getLogLevels } from '@logtape/logtape';
|
|
13
3
|
import { Command, Flags } from '@oclif/core';
|
|
14
|
-
import getPort from 'get-port';
|
|
15
4
|
import ora from 'ora';
|
|
16
|
-
import { getSigner } from '../account.js';
|
|
17
5
|
import { resolvePath } from '../fs.js';
|
|
18
6
|
export default class Serve extends Command {
|
|
19
7
|
static description = 'Start a local Kubun server';
|
|
@@ -41,73 +29,31 @@ export default class Serve extends Command {
|
|
|
41
29
|
}),
|
|
42
30
|
};
|
|
43
31
|
async run() {
|
|
44
|
-
let signer;
|
|
45
32
|
const spinner = ora();
|
|
46
33
|
const { flags } = await this.parse(Serve);
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
spinner.info('Using the provided private key for the server').start();
|
|
57
|
-
signer = getSigner(flags.privateKey);
|
|
58
|
-
}
|
|
59
|
-
id = signer.id;
|
|
60
|
-
}
|
|
61
|
-
spinner.info(`Server DID: ${id}`);
|
|
62
|
-
let db;
|
|
63
|
-
if (flags.db == null) {
|
|
64
|
-
db = new KubunDB({ adapter: new SQLiteAdapter({ database: ':memory:' }) });
|
|
65
|
-
spinner.info('Using ephemeral (in memory) SQLite database');
|
|
34
|
+
spinner.start('Starting the server...');
|
|
35
|
+
const options = {
|
|
36
|
+
allowedOrigin: flags.allowedOrigin,
|
|
37
|
+
logLevel: flags.logLevel,
|
|
38
|
+
};
|
|
39
|
+
if (flags.port != null) {
|
|
40
|
+
options.port = flags.port;
|
|
66
41
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
spinner.info(`Using PostgreSQL database: ${flags.db}`);
|
|
42
|
+
if (flags.privateKey != null) {
|
|
43
|
+
options.privateKey = flags.privateKey;
|
|
70
44
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
db = new KubunDB({ adapter: new SQLiteAdapter({ database }) });
|
|
74
|
-
spinner.info(`Using local SQLite database: ${database}`);
|
|
45
|
+
if (flags.id != null) {
|
|
46
|
+
options.identity = { id: flags.id };
|
|
75
47
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
],
|
|
82
|
-
});
|
|
83
|
-
const allowedOrigin = flags.allowedOrigin.split(',').map((origin) => origin.trim());
|
|
84
|
-
const transport = new ServerTransport({ allowedOrigin });
|
|
85
|
-
serve({
|
|
86
|
-
handlers: createHandlers({
|
|
87
|
-
db,
|
|
88
|
-
logger: getKubunLogger('server'),
|
|
89
|
-
serverAccessConfig: {
|
|
90
|
-
defaultAccessLevel: {
|
|
91
|
-
read: 'anyone',
|
|
92
|
-
write: 'only_owner',
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
}),
|
|
96
|
-
id,
|
|
97
|
-
transport,
|
|
98
|
-
});
|
|
99
|
-
spinner.start('Starting the server...');
|
|
100
|
-
const port = flags.port ?? (await getPort({ port: 4321 }));
|
|
101
|
-
const httpServer = serveHTTP({ fetch: transport.fetch, port }, (info) => {
|
|
102
|
-
spinner.succeed(`HTTP server listening on port ${info.port} with allowed origin: ${allowedOrigin.join(', ')}`);
|
|
103
|
-
});
|
|
104
|
-
const stopped = defer();
|
|
105
|
-
async function stop() {
|
|
106
|
-
httpServer.close();
|
|
107
|
-
stopped.resolve();
|
|
48
|
+
if (flags.db != null) {
|
|
49
|
+
options.db =
|
|
50
|
+
flags.db.startsWith('postgres://') || flags.db.startsWith('postgresql://')
|
|
51
|
+
? flags.db
|
|
52
|
+
: resolvePath(flags.db);
|
|
108
53
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
54
|
+
const server = await startServer(options);
|
|
55
|
+
spinner.succeed(`HTTP server listening at ${server.url}`);
|
|
56
|
+
// Keep process alive until server is closed (via SIGINT/SIGTERM handled by @kubun/http-server)
|
|
57
|
+
await new Promise(() => { });
|
|
112
58
|
}
|
|
113
59
|
}
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kubun",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"license": "see LICENSE.md",
|
|
5
5
|
"description": "Kubun CLI",
|
|
6
6
|
"keywords": [],
|
|
@@ -28,41 +28,31 @@
|
|
|
28
28
|
"topicSeparator": " "
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@enkaku/
|
|
32
|
-
"@enkaku/
|
|
33
|
-
"@
|
|
34
|
-
"@enkaku/server": "^0.12.3",
|
|
35
|
-
"@enkaku/token": "0.12.3",
|
|
36
|
-
"@hono/node-server": "^1.19.9",
|
|
37
|
-
"@logtape/logtape": "^2.0.1",
|
|
31
|
+
"@enkaku/codec": "^0.13.0",
|
|
32
|
+
"@enkaku/token": "0.13.0",
|
|
33
|
+
"@logtape/logtape": "^2.0.2",
|
|
38
34
|
"@mokei/context-server": "^0.5.0",
|
|
39
35
|
"@oclif/core": "^4.8.0",
|
|
40
36
|
"@oclif/plugin-help": "^6.2.37",
|
|
41
37
|
"@oclif/plugin-plugins": "^5.4.55",
|
|
42
|
-
"get-port": "^7.1.0",
|
|
43
38
|
"graphql": "^16.12.0",
|
|
44
|
-
"ora": "^9.
|
|
45
|
-
"@kubun/
|
|
46
|
-
"@kubun/client": "^0.
|
|
47
|
-
"@kubun/
|
|
48
|
-
"@kubun/
|
|
49
|
-
"@kubun/
|
|
50
|
-
"@kubun/
|
|
51
|
-
"@kubun/http-client": "^0.4.1",
|
|
52
|
-
"@kubun/server": "^0.4.3",
|
|
53
|
-
"@kubun/protocol": "^0.4.1",
|
|
54
|
-
"@kubun/graphql": "^0.4.5"
|
|
39
|
+
"ora": "^9.3.0",
|
|
40
|
+
"@kubun/graphql": "^0.5.0",
|
|
41
|
+
"@kubun/http-client": "^0.5.0",
|
|
42
|
+
"@kubun/protocol": "^0.5.0",
|
|
43
|
+
"@kubun/mcp": "^0.5.0",
|
|
44
|
+
"@kubun/http-server": "^0.5.0",
|
|
45
|
+
"@kubun/client": "^0.5.0"
|
|
55
46
|
},
|
|
56
47
|
"devDependencies": {
|
|
57
48
|
"@oclif/test": "^4.1.16",
|
|
58
|
-
"oclif": "^4.22.
|
|
59
|
-
"shx": "^0.4.0",
|
|
49
|
+
"oclif": "^4.22.73",
|
|
60
50
|
"ts-node": "^10",
|
|
61
51
|
"typescript": "^5.9.3"
|
|
62
52
|
},
|
|
63
53
|
"scripts": {
|
|
64
54
|
"kubun": "./bin/dev.js",
|
|
65
|
-
"build": "
|
|
55
|
+
"build": "del dist && tsc -b",
|
|
66
56
|
"posttest": "pnpm run lint",
|
|
67
57
|
"test:types": "tsc --noEmit --skipLibCheck",
|
|
68
58
|
"test:unit": "OCLIF_TEST_ROOT=. vitest run",
|