@cyberismo/backend 0.0.3
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/LICENSE +702 -0
- package/dist/index.js +96 -0
- package/dist/index.js.map +1 -0
- package/dist/main.js +6 -0
- package/dist/main.js.map +1 -0
- package/dist/middleware/commandManager.js +28 -0
- package/dist/middleware/commandManager.js.map +1 -0
- package/dist/public/THIRD-PARTY.txt +2927 -0
- package/dist/public/assets/index-DqBrVRB4.js +605 -0
- package/dist/public/assets/index-ImgtZ9pq.css +1 -0
- package/dist/public/favicon.ico +0 -0
- package/dist/public/images/attach_file_add.svg +1 -0
- package/dist/public/images/cyberismo.png +0 -0
- package/dist/public/index.html +13 -0
- package/dist/public/vite.svg +1 -0
- package/dist/routes/cardTypes.js +49 -0
- package/dist/routes/cardTypes.js.map +1 -0
- package/dist/routes/cards.js +675 -0
- package/dist/routes/cards.js.map +1 -0
- package/dist/routes/fieldTypes.js +40 -0
- package/dist/routes/fieldTypes.js.map +1 -0
- package/dist/routes/linkTypes.js +40 -0
- package/dist/routes/linkTypes.js.map +1 -0
- package/dist/routes/templates.js +39 -0
- package/dist/routes/templates.js.map +1 -0
- package/dist/routes/tree.js +38 -0
- package/dist/routes/tree.js.map +1 -0
- package/package.json +34 -0
- package/src/index.ts +121 -0
- package/src/main.ts +7 -0
- package/src/middleware/commandManager.ts +43 -0
- package/src/routes/cardTypes.ts +54 -0
- package/src/routes/cards.ts +767 -0
- package/src/routes/fieldTypes.ts +51 -0
- package/src/routes/linkTypes.ts +48 -0
- package/src/routes/templates.ts +42 -0
- package/src/routes/tree.ts +40 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { serve } from '@hono/node-server';
|
|
2
|
+
import { Hono } from 'hono';
|
|
3
|
+
import { cors } from 'hono/cors';
|
|
4
|
+
import { serveStatic } from '@hono/node-server/serve-static';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { createServer } from 'node:net';
|
|
7
|
+
import { attachCommandManager } from './middleware/commandManager.js';
|
|
8
|
+
// Import routes
|
|
9
|
+
import cardsRouter from './routes/cards.js';
|
|
10
|
+
import cardTypesRouter from './routes/cardTypes.js';
|
|
11
|
+
import fieldTypesRouter from './routes/fieldTypes.js';
|
|
12
|
+
import linkTypesRouter from './routes/linkTypes.js';
|
|
13
|
+
import templatesRouter from './routes/templates.js';
|
|
14
|
+
import treeRouter from './routes/tree.js';
|
|
15
|
+
import { fileURLToPath } from 'node:url';
|
|
16
|
+
import { readFile } from 'node:fs/promises';
|
|
17
|
+
const filename = fileURLToPath(import.meta.url);
|
|
18
|
+
const dirname = path.dirname(filename);
|
|
19
|
+
export function createApp(projectPath) {
|
|
20
|
+
const app = new Hono();
|
|
21
|
+
app.use('/api', cors());
|
|
22
|
+
app.use('*', serveStatic({
|
|
23
|
+
root: path.relative(process.cwd(), path.resolve(dirname, 'public')),
|
|
24
|
+
}));
|
|
25
|
+
// Attach CommandManager to all requests
|
|
26
|
+
app.use(attachCommandManager(projectPath));
|
|
27
|
+
// Wire up routes
|
|
28
|
+
app.route('/api/cards', cardsRouter);
|
|
29
|
+
app.route('/api/cardTypes', cardTypesRouter);
|
|
30
|
+
app.route('/api/fieldTypes', fieldTypesRouter);
|
|
31
|
+
app.route('/api/linkTypes', linkTypesRouter);
|
|
32
|
+
app.route('/api/templates', templatesRouter);
|
|
33
|
+
app.route('/api/tree', treeRouter);
|
|
34
|
+
// serve index.html for all other routes
|
|
35
|
+
app.notFound(async (c) => {
|
|
36
|
+
if (c.req.path.startsWith('/api')) {
|
|
37
|
+
return c.text('Not Found', 400);
|
|
38
|
+
}
|
|
39
|
+
const file = await readFile(path.join(dirname, 'public', 'index.html'));
|
|
40
|
+
return c.html(file.toString());
|
|
41
|
+
});
|
|
42
|
+
// Error handling
|
|
43
|
+
app.onError((err, c) => {
|
|
44
|
+
console.error(err.stack);
|
|
45
|
+
return c.text('Internal Server Error', 500);
|
|
46
|
+
});
|
|
47
|
+
return app;
|
|
48
|
+
}
|
|
49
|
+
export async function startServer(projectPath, findPort = true) {
|
|
50
|
+
let port = parseInt(process.env.PORT || '3000', 10);
|
|
51
|
+
if (findPort) {
|
|
52
|
+
port = await findFreePort(port);
|
|
53
|
+
}
|
|
54
|
+
const app = createApp(projectPath);
|
|
55
|
+
// Start server
|
|
56
|
+
serve({
|
|
57
|
+
fetch: app.fetch,
|
|
58
|
+
port: Number(port),
|
|
59
|
+
}, (info) => {
|
|
60
|
+
console.log(`Running Cyberismo app on http://localhost:${info.port}`);
|
|
61
|
+
console.log('Press Control+C to stop.');
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
async function findFreePort(port, maxAttempts = 100) {
|
|
65
|
+
for (let i = port; i < port + maxAttempts; i++) {
|
|
66
|
+
try {
|
|
67
|
+
await testPort(i);
|
|
68
|
+
return i;
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
if (err instanceof Error && err.message.includes('EADDRINUSE')) {
|
|
72
|
+
console.log(`Port ${i} is already in use, trying next port...`);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
throw err;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
throw new Error('Failed to find free port');
|
|
80
|
+
}
|
|
81
|
+
function testPort(port) {
|
|
82
|
+
return new Promise((resolve, reject) => {
|
|
83
|
+
const server = createServer();
|
|
84
|
+
server.listen(port, () => {
|
|
85
|
+
server.close();
|
|
86
|
+
resolve(true);
|
|
87
|
+
});
|
|
88
|
+
server.on('error', (err) => {
|
|
89
|
+
reject(err);
|
|
90
|
+
});
|
|
91
|
+
setTimeout(() => {
|
|
92
|
+
reject(new Error('Timed out waiting for port to be free'));
|
|
93
|
+
}, 2000);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/main.js
ADDED
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
Cyberismo
|
|
3
|
+
Copyright © Cyberismo Ltd and contributors 2025
|
|
4
|
+
|
|
5
|
+
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.
|
|
6
|
+
|
|
7
|
+
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
|
|
8
|
+
|
|
9
|
+
You should have received a copy of the GNU Affero General Public
|
|
10
|
+
License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
11
|
+
*/
|
|
12
|
+
import { CommandManager } from '@cyberismo/data-handler';
|
|
13
|
+
export const attachCommandManager = (projectPath) => {
|
|
14
|
+
return async (c, next) => {
|
|
15
|
+
if (!projectPath) {
|
|
16
|
+
return c.text('project_path environment variable not set.', 500);
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
c.set('commands', await CommandManager.getInstance(projectPath));
|
|
20
|
+
c.set('projectPath', projectPath);
|
|
21
|
+
await next();
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return c.text(`Failed to initialize CommandManager: ${error instanceof Error ? error.message : 'Unknown error'}`, 500);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=commandManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandManager.js","sourceRoot":"","sources":["../../src/middleware/commandManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;EAUE;AAGF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAUzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,WAAoB,EACD,EAAE;IACrB,OAAO,KAAK,EAAE,CAAU,EAAE,IAAI,EAAE,EAAE;QAChC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,CAAC,IAAI,CAAC,4CAA4C,EAAE,GAAG,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC;YACH,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAClC,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,IAAI,CACX,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAClG,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC"}
|