@t4h.framework/dev 0.14.2 → 0.16.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/CHANGELOG.md +24 -0
- package/README.md +112 -58
- package/dist/AppProcess.d.ts +36 -0
- package/dist/AppProcess.js +126 -0
- package/dist/AppProcess.js.map +1 -0
- package/dist/Server.d.ts +41 -0
- package/dist/Server.js +177 -0
- package/dist/Server.js.map +1 -0
- package/dist/constants/panel-config.d.ts +2 -0
- package/dist/constants/panel-config.js +34 -0
- package/dist/constants/panel-config.js.map +1 -0
- package/dist/constants/server.d.ts +9 -0
- package/dist/constants/server.js +10 -0
- package/dist/constants/server.js.map +1 -0
- package/dist/http/create-app.d.ts +16 -0
- package/dist/http/create-app.js +138 -0
- package/dist/http/create-app.js.map +1 -0
- package/dist/http/helpers/to-http-error.d.ts +8 -0
- package/dist/http/helpers/to-http-error.js +9 -0
- package/dist/http/helpers/to-http-error.js.map +1 -0
- package/dist/http/middlewares/error-handler.middleware.d.ts +2 -0
- package/dist/http/middlewares/error-handler.middleware.js +27 -0
- package/dist/http/middlewares/error-handler.middleware.js.map +1 -0
- package/dist/http/middlewares/project-manifest.middleware.d.ts +11 -0
- package/dist/http/middlewares/project-manifest.middleware.js +11 -0
- package/dist/http/middlewares/project-manifest.middleware.js.map +1 -0
- package/dist/http/middlewares/read-json-body.middleware.d.ts +6 -0
- package/dist/http/middlewares/read-json-body.middleware.js +22 -0
- package/dist/http/middlewares/read-json-body.middleware.js.map +1 -0
- package/dist/http/middlewares/workflow-authorization.middleware.d.ts +12 -0
- package/dist/http/middlewares/workflow-authorization.middleware.js +28 -0
- package/dist/http/middlewares/workflow-authorization.middleware.js.map +1 -0
- package/dist/index.d.ts +3 -15
- package/dist/index.js +2 -15
- package/dist/index.js.map +1 -1
- package/dist/models/JSONRPCClient.d.ts +2 -0
- package/dist/models/JSONRPCClient.js +21 -4
- package/dist/models/JSONRPCClient.js.map +1 -1
- package/dist/models/JSONRPCError.d.ts +13 -0
- package/dist/models/JSONRPCError.js +11 -0
- package/dist/models/JSONRPCError.js.map +1 -0
- package/dist/models/JSONRPCServer.d.ts +2 -0
- package/dist/models/JSONRPCServer.js +10 -2
- package/dist/models/JSONRPCServer.js.map +1 -1
- package/dist/models/WorkflowAuthorizationMissingError.d.ts +5 -0
- package/dist/models/WorkflowAuthorizationMissingError.js +9 -0
- package/dist/models/WorkflowAuthorizationMissingError.js.map +1 -0
- package/dist/models/WorkflowRun.d.ts +20 -15
- package/dist/models/WorkflowRun.js +14 -9
- package/dist/models/WorkflowRun.js.map +1 -1
- package/dist/models/WorkflowRunActivity.d.ts +40 -27
- package/dist/models/WorkflowRunActivity.js +46 -34
- package/dist/models/WorkflowRunActivity.js.map +1 -1
- package/dist/models/claims/DevHttpClientRequestClaim.js +4 -5
- package/dist/models/claims/DevHttpClientRequestClaim.js.map +1 -1
- package/dist/models/claims/DevORMClaim.d.ts +15 -4
- package/dist/models/claims/DevORMClaim.js +128 -29
- package/dist/models/claims/DevORMClaim.js.map +1 -1
- package/dist/models/claims/DevWorkflowBatchClaim.js +3 -6
- package/dist/models/claims/DevWorkflowBatchClaim.js.map +1 -1
- package/dist/models/claims/DevWorkflowClaim.d.ts +1 -1
- package/dist/models/claims/DevWorkflowClaim.js +6 -11
- package/dist/models/claims/DevWorkflowClaim.js.map +1 -1
- package/dist/repositories/WorkflowRun.repository.d.ts +44 -6
- package/dist/repositories/WorkflowRun.repository.js +196 -11
- package/dist/repositories/WorkflowRun.repository.js.map +1 -1
- package/dist/repositories/WorkflowRunActivity.repository.d.ts +19 -6
- package/dist/repositories/WorkflowRunActivity.repository.js +73 -23
- package/dist/repositories/WorkflowRunActivity.repository.js.map +1 -1
- package/dist/repositories/WorkflowRunAsyncActivityPending.repository.d.ts +39 -0
- package/dist/repositories/WorkflowRunAsyncActivityPending.repository.js +160 -0
- package/dist/repositories/WorkflowRunAsyncActivityPending.repository.js.map +1 -0
- package/dist/services/ActivityRegistry.service.d.ts +7 -0
- package/dist/services/ActivityRegistry.service.js +32 -0
- package/dist/services/ActivityRegistry.service.js.map +1 -0
- package/dist/services/Database.service.d.ts +14 -0
- package/dist/services/Database.service.js +106 -0
- package/dist/services/Database.service.js.map +1 -0
- package/dist/services/TimeoutScheduler.service.js +9 -3
- package/dist/services/TimeoutScheduler.service.js.map +1 -1
- package/dist/services/WorkflowAuthorization.service.d.ts +19 -0
- package/dist/services/WorkflowAuthorization.service.js +75 -0
- package/dist/services/WorkflowAuthorization.service.js.map +1 -0
- package/dist/services/WorkflowRunAsyncActivityFacade.service.d.ts +8 -15
- package/dist/services/WorkflowRunAsyncActivityFacade.service.js +12 -26
- package/dist/services/WorkflowRunAsyncActivityFacade.service.js.map +1 -1
- package/dist/services/WorkflowRunEvents.service.d.ts +11 -0
- package/dist/services/WorkflowRunEvents.service.js +42 -0
- package/dist/services/WorkflowRunEvents.service.js.map +1 -0
- package/dist/services/WorkflowRunFacade.service.d.ts +106 -7
- package/dist/services/WorkflowRunFacade.service.js +65 -10
- package/dist/services/WorkflowRunFacade.service.js.map +1 -1
- package/dist/services/WorkflowRunLock.service.d.ts +6 -0
- package/dist/services/WorkflowRunLock.service.js +34 -0
- package/dist/services/WorkflowRunLock.service.js.map +1 -0
- package/dist/services/WorkflowRunSyncActivityFacade.service.d.ts +4 -4
- package/dist/services/WorkflowRunSyncActivityFacade.service.js +7 -7
- package/dist/services/WorkflowRunSyncActivityFacade.service.js.map +1 -1
- package/dist/tools/copy-additional-files.d.ts +0 -5
- package/dist/tools/copy-additional-files.js +0 -5
- package/dist/tools/copy-additional-files.js.map +1 -1
- package/dist/tools/find-free-port.d.ts +5 -0
- package/dist/tools/find-free-port.js +30 -0
- package/dist/tools/find-free-port.js.map +1 -0
- package/dist/tools/find-workflow-by-id.d.ts +2 -0
- package/dist/tools/find-workflow-by-id.js +9 -0
- package/dist/tools/find-workflow-by-id.js.map +1 -0
- package/dist/tools/format-routes.d.ts +10 -0
- package/dist/tools/format-routes.js +40 -0
- package/dist/tools/format-routes.js.map +1 -0
- package/dist/tools/replace.d.ts +1 -0
- package/dist/tools/replace.js +14 -0
- package/dist/tools/replace.js.map +1 -0
- package/dist/tools/to-rejected-reason.d.ts +5 -0
- package/dist/tools/to-rejected-reason.js +11 -0
- package/dist/tools/to-rejected-reason.js.map +1 -0
- package/dist/tools/to-workflow-run-activity-output.d.ts +24 -0
- package/dist/tools/to-workflow-run-activity-output.js +18 -0
- package/dist/tools/to-workflow-run-activity-output.js.map +1 -0
- package/dist/tools/to-workflow-run-output.d.ts +11 -0
- package/dist/tools/to-workflow-run-output.js +12 -0
- package/dist/tools/to-workflow-run-output.js.map +1 -0
- package/dist/transport/AppProcessJsonRpc.js +59 -0
- package/dist/transport/AppProcessJsonRpc.js.map +1 -0
- package/dist/use-cases/BuildWorkflowRunActivityHistory.usecase.d.ts +9 -0
- package/dist/use-cases/{WorkflowRunBuildHistory.usecase.js → BuildWorkflowRunActivityHistory.usecase.js} +18 -16
- package/dist/use-cases/BuildWorkflowRunActivityHistory.usecase.js.map +1 -0
- package/dist/use-cases/CreateWorkflowRun.usecase.d.ts +6 -6
- package/dist/use-cases/CreateWorkflowRun.usecase.js +20 -21
- package/dist/use-cases/CreateWorkflowRun.usecase.js.map +1 -1
- package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.d.ts +9 -3
- package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.js +45 -39
- package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.js.map +1 -1
- package/dist/use-cases/EnqueueWorkflowRunNextTick.usecase.d.ts +9 -0
- package/dist/use-cases/EnqueueWorkflowRunNextTick.usecase.js +43 -0
- package/dist/use-cases/EnqueueWorkflowRunNextTick.usecase.js.map +1 -0
- package/dist/use-cases/ExecuteWorkflowRunActivity.usecase.d.ts +9 -0
- package/dist/use-cases/ExecuteWorkflowRunActivity.usecase.js +47 -0
- package/dist/use-cases/ExecuteWorkflowRunActivity.usecase.js.map +1 -0
- package/dist/use-cases/ExecuteWorkflowRunAsyncActivity.usecase.d.ts +22 -0
- package/dist/use-cases/ExecuteWorkflowRunAsyncActivity.usecase.js +117 -0
- package/dist/use-cases/ExecuteWorkflowRunAsyncActivity.usecase.js.map +1 -0
- package/dist/use-cases/NextTickWorkflowRun.usecase.d.ts +16 -7
- package/dist/use-cases/NextTickWorkflowRun.usecase.js +139 -130
- package/dist/use-cases/NextTickWorkflowRun.usecase.js.map +1 -1
- package/dist/use-cases/RunWorkflow.usecase.d.ts +10 -0
- package/dist/use-cases/RunWorkflow.usecase.js +46 -0
- package/dist/use-cases/RunWorkflow.usecase.js.map +1 -0
- package/dist/use-cases/WorkflowRunActivityFind.usecase.d.ts +34 -0
- package/dist/use-cases/WorkflowRunActivityFind.usecase.js +49 -0
- package/dist/use-cases/WorkflowRunActivityFind.usecase.js.map +1 -0
- package/dist/use-cases/WorkflowRunActivityFindById.usecase.d.ts +34 -0
- package/dist/use-cases/WorkflowRunActivityFindById.usecase.js +60 -0
- package/dist/use-cases/WorkflowRunActivityFindById.usecase.js.map +1 -0
- package/dist/use-cases/WorkflowRunAsyncActivityAdvance.usecase.d.ts +12 -4
- package/dist/use-cases/WorkflowRunAsyncActivityAdvance.usecase.js +41 -27
- package/dist/use-cases/WorkflowRunAsyncActivityAdvance.usecase.js.map +1 -1
- package/dist/use-cases/WorkflowRunAsyncActivityPendingFind.usecase.d.ts +24 -0
- package/dist/use-cases/WorkflowRunAsyncActivityPendingFind.usecase.js +56 -0
- package/dist/use-cases/WorkflowRunAsyncActivityPendingFind.usecase.js.map +1 -0
- package/dist/use-cases/WorkflowRunFind.usecase.d.ts +17 -0
- package/dist/use-cases/WorkflowRunFind.usecase.js +28 -0
- package/dist/use-cases/WorkflowRunFind.usecase.js.map +1 -0
- package/dist/use-cases/WorkflowRunFindById.usecase.d.ts +19 -0
- package/dist/use-cases/WorkflowRunFindById.usecase.js +45 -0
- package/dist/use-cases/WorkflowRunFindById.usecase.js.map +1 -0
- package/dist/workers/app-process.js +10 -1
- package/dist/workers/app-process.js.map +1 -1
- package/package.json +15 -5
- package/.ai/skills/framework-dev/SKILL.md +0 -348
- package/dist/DevServer.d.ts +0 -24
- package/dist/DevServer.js +0 -87
- package/dist/DevServer.js.map +0 -1
- package/dist/models/InMemoryDatabase.d.ts +0 -20
- package/dist/models/InMemoryDatabase.js +0 -111
- package/dist/models/InMemoryDatabase.js.map +0 -1
- package/dist/services/BuildWorkflowRunResult.service.d.ts +0 -8
- package/dist/services/BuildWorkflowRunResult.service.js +0 -49
- package/dist/services/BuildWorkflowRunResult.service.js.map +0 -1
- package/dist/tools/is-workflow-waiting.d.ts +0 -4
- package/dist/tools/is-workflow-waiting.js +0 -12
- package/dist/tools/is-workflow-waiting.js.map +0 -1
- package/dist/transport/DevServerJsonRpc.js +0 -42
- package/dist/transport/DevServerJsonRpc.js.map +0 -1
- package/dist/use-cases/CallbackWorkflowRunAsyncActivity.usecase.d.ts +0 -14
- package/dist/use-cases/CallbackWorkflowRunAsyncActivity.usecase.js +0 -64
- package/dist/use-cases/CallbackWorkflowRunAsyncActivity.usecase.js.map +0 -1
- package/dist/use-cases/TimeoutWorkflowRunAsyncActivity.usecase.d.ts +0 -8
- package/dist/use-cases/TimeoutWorkflowRunAsyncActivity.usecase.js +0 -40
- package/dist/use-cases/TimeoutWorkflowRunAsyncActivity.usecase.js.map +0 -1
- package/dist/use-cases/WorkflowRunAsyncActivity.usecase.d.ts +0 -7
- package/dist/use-cases/WorkflowRunAsyncActivity.usecase.js +0 -46
- package/dist/use-cases/WorkflowRunAsyncActivity.usecase.js.map +0 -1
- package/dist/use-cases/WorkflowRunBuildHistory.usecase.d.ts +0 -8
- package/dist/use-cases/WorkflowRunBuildHistory.usecase.js.map +0 -1
- package/dist/use-cases/WorkflowRunSyncActivity.usecase.d.ts +0 -4
- package/dist/use-cases/WorkflowRunSyncActivity.usecase.js +0 -28
- package/dist/use-cases/WorkflowRunSyncActivity.usecase.js.map +0 -1
- /package/dist/transport/{DevServerJsonRpc.d.ts → AppProcessJsonRpc.d.ts} +0 -0
package/dist/Server.js
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import http from 'node:http';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { pathToFileURL } from 'node:url';
|
|
5
|
+
import { styleText } from 'node:util';
|
|
6
|
+
import { getRequestListener } from '@hono/node-server';
|
|
7
|
+
import { AppProcess } from './AppProcess.js';
|
|
8
|
+
import { PANEL_CONFIG } from './constants/panel-config.js';
|
|
9
|
+
import { DEFAULT_HOST, DEFAULT_PORT, DEV_ROUTES_PREFIX, PROJECTS_ROUTES_PREFIX, WORKFLOW_RUN_EVENTS, } from './constants/server.js';
|
|
10
|
+
import { createApp } from './http/create-app.js';
|
|
11
|
+
import { WorkflowAuthorizationMissingError } from './models/WorkflowAuthorizationMissingError.js';
|
|
12
|
+
import { findFreePort } from './tools/find-free-port.js';
|
|
13
|
+
import { formatRoutes } from './tools/format-routes.js';
|
|
14
|
+
import { mkdirOutDirProjectFromTsConfigPathAndJsonPackagePath } from './tools/mkdir-out-dir-project-from-ts-config-path-and-json-package-path.js';
|
|
15
|
+
import { resolvePackageJsonPath } from './tools/resolve-package-json-path.js';
|
|
16
|
+
import { resolveTsconfigFromPackageJsonPath } from './tools/resolve-tsconfig-path-from-package-json-path.js';
|
|
17
|
+
import { tsBuildWatch } from './tools/ts-build-watch.js';
|
|
18
|
+
function isApiPath(pathname) {
|
|
19
|
+
return [PROJECTS_ROUTES_PREFIX, DEV_ROUTES_PREFIX].some(prefix => pathname === prefix || pathname.startsWith(`${prefix}/`));
|
|
20
|
+
}
|
|
21
|
+
function notFound(res) {
|
|
22
|
+
res.statusCode = 404;
|
|
23
|
+
res.setHeader('content-type', 'text/plain; charset=utf-8');
|
|
24
|
+
res.end('Not Found');
|
|
25
|
+
}
|
|
26
|
+
export class Server extends EventEmitter {
|
|
27
|
+
options;
|
|
28
|
+
appProcess = new AppProcess();
|
|
29
|
+
logger;
|
|
30
|
+
routes = [];
|
|
31
|
+
tsBuildWatcher = null;
|
|
32
|
+
httpServer = null;
|
|
33
|
+
vite = null;
|
|
34
|
+
currentAddress = null;
|
|
35
|
+
packageJsonPath = null;
|
|
36
|
+
outDir = null;
|
|
37
|
+
constructor(options) {
|
|
38
|
+
super();
|
|
39
|
+
this.options = options;
|
|
40
|
+
this.logger = options.logger === false ? null : (options.logger ?? console);
|
|
41
|
+
this.appProcess.on('exit', code => {
|
|
42
|
+
if (code)
|
|
43
|
+
this.logger?.error(styleText('red', `[server] app exited with code ${code}`, {
|
|
44
|
+
stream: process.stderr,
|
|
45
|
+
}));
|
|
46
|
+
this.emit('app:exit', code);
|
|
47
|
+
});
|
|
48
|
+
for (const event of WORKFLOW_RUN_EVENTS)
|
|
49
|
+
this.appProcess.on(event, payload => this.emit(event, payload));
|
|
50
|
+
}
|
|
51
|
+
get manifest() {
|
|
52
|
+
return this.appProcess.manifest;
|
|
53
|
+
}
|
|
54
|
+
get address() {
|
|
55
|
+
if (!this.currentAddress)
|
|
56
|
+
throw new Error('Server is not listening');
|
|
57
|
+
return this.currentAddress;
|
|
58
|
+
}
|
|
59
|
+
async up() {
|
|
60
|
+
const { entrypoint, port = DEFAULT_PORT, host = DEFAULT_HOST, vite, } = this.options;
|
|
61
|
+
this.packageJsonPath = await resolvePackageJsonPath(entrypoint);
|
|
62
|
+
const tsConfigPath = await resolveTsconfigFromPackageJsonPath(this.packageJsonPath);
|
|
63
|
+
this.outDir = await mkdirOutDirProjectFromTsConfigPathAndJsonPackagePath(tsConfigPath, this.packageJsonPath);
|
|
64
|
+
const projectDir = path.dirname(this.packageJsonPath);
|
|
65
|
+
const app = createApp({
|
|
66
|
+
appProcess: this.appProcess,
|
|
67
|
+
events: this,
|
|
68
|
+
projectDir,
|
|
69
|
+
});
|
|
70
|
+
this.routes = app.routes;
|
|
71
|
+
const listener = getRequestListener(app.fetch);
|
|
72
|
+
const httpServer = http.createServer((req, res) => {
|
|
73
|
+
const pathname = (req.url ?? '/').split('?')[0] ?? '/';
|
|
74
|
+
if (isApiPath(pathname))
|
|
75
|
+
return void listener(req, res);
|
|
76
|
+
if (!this.vite)
|
|
77
|
+
return notFound(res);
|
|
78
|
+
this.vite.middlewares(req, res, () => notFound(res));
|
|
79
|
+
});
|
|
80
|
+
this.httpServer = httpServer;
|
|
81
|
+
if (vite !== false)
|
|
82
|
+
this.vite = await this.createVite(httpServer, projectDir, vite ?? {});
|
|
83
|
+
const freePort = await findFreePort(port, host);
|
|
84
|
+
if (freePort !== port)
|
|
85
|
+
this.logger?.log(`[server] port ${port} is in use, moving to ${freePort}`);
|
|
86
|
+
await new Promise((resolve, reject) => {
|
|
87
|
+
httpServer.once('error', reject);
|
|
88
|
+
httpServer.listen(freePort, host, resolve);
|
|
89
|
+
});
|
|
90
|
+
this.currentAddress = {
|
|
91
|
+
host,
|
|
92
|
+
port: freePort,
|
|
93
|
+
url: `http://${host}:${freePort}`,
|
|
94
|
+
};
|
|
95
|
+
this.logger?.log(`[server] listening on ${this.currentAddress.url}, waiting for the first build…`);
|
|
96
|
+
this.tsBuildWatcher = tsBuildWatch(tsConfigPath, {
|
|
97
|
+
outDir: path.join(this.outDir, 'dist'),
|
|
98
|
+
sourceMap: true,
|
|
99
|
+
declaration: false,
|
|
100
|
+
declarationMap: false,
|
|
101
|
+
}, {
|
|
102
|
+
onSuccess: () => this.onTsBuildSuccess(),
|
|
103
|
+
onFail: diagnostics => {
|
|
104
|
+
this.logger?.error(diagnostics);
|
|
105
|
+
this.emit('build:fail', diagnostics);
|
|
106
|
+
},
|
|
107
|
+
onStatus: status => {
|
|
108
|
+
this.logger?.log(status);
|
|
109
|
+
this.emit('build:status', status);
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
return this.currentAddress;
|
|
113
|
+
}
|
|
114
|
+
async down() {
|
|
115
|
+
this.tsBuildWatcher?.close();
|
|
116
|
+
this.tsBuildWatcher = null;
|
|
117
|
+
await this.appProcess.down();
|
|
118
|
+
await this.vite?.close();
|
|
119
|
+
this.vite = null;
|
|
120
|
+
const httpServer = this.httpServer;
|
|
121
|
+
if (httpServer)
|
|
122
|
+
await new Promise((resolve, reject) => {
|
|
123
|
+
httpServer.close(error => (error ? reject(error) : resolve()));
|
|
124
|
+
});
|
|
125
|
+
this.httpServer = null;
|
|
126
|
+
this.currentAddress = null;
|
|
127
|
+
}
|
|
128
|
+
async onTsBuildSuccess() {
|
|
129
|
+
if (!this.packageJsonPath || !this.outDir)
|
|
130
|
+
return;
|
|
131
|
+
const { default: packageJson } = await import(this.packageJsonPath, {
|
|
132
|
+
with: { type: 'json' },
|
|
133
|
+
});
|
|
134
|
+
if (typeof packageJson.main !== 'string')
|
|
135
|
+
throw new Error('Main is not a string');
|
|
136
|
+
const entrypoint = pathToFileURL(path.join(this.outDir, 'dist', packageJson.main)).href;
|
|
137
|
+
let manifest;
|
|
138
|
+
try {
|
|
139
|
+
manifest = await this.appProcess.up(entrypoint, this.options.env);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
this.logger?.error(styleText('red', '[server] app failed to start:', {
|
|
143
|
+
stream: process.stderr,
|
|
144
|
+
}), error);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
for (const workflow of manifest.workflows) {
|
|
148
|
+
if (workflow.authorization || manifest.authorization)
|
|
149
|
+
continue;
|
|
150
|
+
const error = new WorkflowAuthorizationMissingError(String(workflow.id));
|
|
151
|
+
this.logger?.error(styleText('red', `[server] ${error.message}`, {
|
|
152
|
+
stream: process.stderr,
|
|
153
|
+
}));
|
|
154
|
+
this.emit('error', error);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
this.emit('manifest', manifest);
|
|
158
|
+
if (this.logger && this.currentAddress)
|
|
159
|
+
this.logger.log(formatRoutes({
|
|
160
|
+
baseUrl: this.currentAddress.url,
|
|
161
|
+
manifest,
|
|
162
|
+
routes: this.routes,
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
async createVite(httpServer, projectDir, { root = projectDir, configFile, plugins }) {
|
|
166
|
+
const { createServer } = await import('vite');
|
|
167
|
+
const { default: panel } = await import('@t4h.framework/vite-panel-plugin');
|
|
168
|
+
return createServer({
|
|
169
|
+
root,
|
|
170
|
+
configFile,
|
|
171
|
+
appType: 'custom',
|
|
172
|
+
server: { middlewareMode: true, hmr: { server: httpServer } },
|
|
173
|
+
plugins: [panel({ config: PANEL_CONFIG }), ...(plugins ?? [])],
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=Server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { DEV_ROUTES_PREFIX, PROJECTS_ROUTES_PREFIX } from './server.js';
|
|
2
|
+
export const PANEL_CONFIG = {
|
|
3
|
+
title: 'Framework Panel',
|
|
4
|
+
basePath: '',
|
|
5
|
+
apiUrl: DEV_ROUTES_PREFIX,
|
|
6
|
+
metadata: {},
|
|
7
|
+
fields: {},
|
|
8
|
+
api: {
|
|
9
|
+
manifest: '/manifest',
|
|
10
|
+
state: '/state',
|
|
11
|
+
runs: '/runs',
|
|
12
|
+
run: '/runs/:run',
|
|
13
|
+
runActivities: '/runs/:run/activities',
|
|
14
|
+
runActivity: '/runs/:run/activities/:activity',
|
|
15
|
+
runActivityPendings: '/runs/:run/activities/:activity/pendings',
|
|
16
|
+
runLogs: '/runs/:run/logs',
|
|
17
|
+
waitingActivities: '/activities/waiting',
|
|
18
|
+
runWorkflow: '/workflows/:workflow/runs',
|
|
19
|
+
advanceActivity: '/activities/:activity/advance',
|
|
20
|
+
events: '/events',
|
|
21
|
+
},
|
|
22
|
+
capabilities: { trigger: true, advance: true, events: true, rebuild: true },
|
|
23
|
+
routes: {
|
|
24
|
+
runs: {
|
|
25
|
+
method: 'POST',
|
|
26
|
+
path: `${PROJECTS_ROUTES_PREFIX}/:project/workflows/:workflow/runs`,
|
|
27
|
+
},
|
|
28
|
+
advance: {
|
|
29
|
+
method: 'PATCH',
|
|
30
|
+
path: `${PROJECTS_ROUTES_PREFIX}/:project/workflows/:workflow/runs/:run/activities/:activity`,
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=panel-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-config.js","sourceRoot":"","sources":["../../src/constants/panel-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEvE,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC,KAAK,EAAE,iBAAiB;IACxB,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,iBAAiB;IACzB,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,EAAE;IACV,GAAG,EAAE;QACH,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,YAAY;QACjB,aAAa,EAAE,uBAAuB;QACtC,WAAW,EAAE,iCAAiC;QAC9C,mBAAmB,EAAE,0CAA0C;QAC/D,OAAO,EAAE,iBAAiB;QAC1B,iBAAiB,EAAE,qBAAqB;QACxC,WAAW,EAAE,2BAA2B;QACxC,eAAe,EAAE,+BAA+B;QAChD,MAAM,EAAE,SAAS;KAClB;IACD,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3E,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,GAAG,sBAAsB,oCAAoC;SACpE;QACD,OAAO,EAAE;YACP,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,GAAG,sBAAsB,8DAA8D;SAC9F;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const DEFAULT_PORT = 3000;
|
|
2
|
+
export declare const DEFAULT_HOST = "localhost";
|
|
3
|
+
export declare const JSON_BODY_LIMIT_IN_BYTES: number;
|
|
4
|
+
export declare const APP_READY_TIMEOUT_IN_MS = 30000;
|
|
5
|
+
export declare const APP_KILL_TIMEOUT_IN_MS = 5000;
|
|
6
|
+
export declare const SSE_HEARTBEAT_INTERVAL_IN_MS = 15000;
|
|
7
|
+
export declare const PROJECTS_ROUTES_PREFIX = "/projects";
|
|
8
|
+
export declare const DEV_ROUTES_PREFIX = "/_dev";
|
|
9
|
+
export declare const WORKFLOW_RUN_EVENTS: readonly ["run:created", "run:updated"];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const DEFAULT_PORT = 3000;
|
|
2
|
+
export const DEFAULT_HOST = 'localhost';
|
|
3
|
+
export const JSON_BODY_LIMIT_IN_BYTES = 150 * 1024;
|
|
4
|
+
export const APP_READY_TIMEOUT_IN_MS = 30_000;
|
|
5
|
+
export const APP_KILL_TIMEOUT_IN_MS = 5_000;
|
|
6
|
+
export const SSE_HEARTBEAT_INTERVAL_IN_MS = 15_000;
|
|
7
|
+
export const PROJECTS_ROUTES_PREFIX = '/projects';
|
|
8
|
+
export const DEV_ROUTES_PREFIX = '/_dev';
|
|
9
|
+
export const WORKFLOW_RUN_EVENTS = ['run:created', 'run:updated'];
|
|
10
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/constants/server.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAA;AAEhC,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAA;AAEvC,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,GAAG,IAAI,CAAA;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAE7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAA;AAE3C,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAA;AAElD,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAA;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAA;AAExC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,aAAa,EAAE,aAAa,CAAU,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { EventEmitter } from 'node:events';
|
|
2
|
+
import { Hono } from 'hono';
|
|
3
|
+
import type { AppProcess } from '../AppProcess.js';
|
|
4
|
+
import { type ProjectManifestVariables } from './middlewares/project-manifest.middleware.js';
|
|
5
|
+
import { type JsonBodyVariables } from './middlewares/read-json-body.middleware.js';
|
|
6
|
+
import { type WorkflowAuthorizationVariables } from './middlewares/workflow-authorization.middleware.js';
|
|
7
|
+
export interface CreateAppOptions {
|
|
8
|
+
appProcess: AppProcess;
|
|
9
|
+
events: EventEmitter;
|
|
10
|
+
projectDir: string;
|
|
11
|
+
}
|
|
12
|
+
type AppEnv = {
|
|
13
|
+
Variables: ProjectManifestVariables & JsonBodyVariables & WorkflowAuthorizationVariables;
|
|
14
|
+
};
|
|
15
|
+
export declare function createApp({ appProcess, events, projectDir, }: CreateAppOptions): Hono<AppEnv, import("hono/types").BlankSchema, "/">;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { cors } from 'hono/cors';
|
|
3
|
+
import { streamSSE } from 'hono/streaming';
|
|
4
|
+
import { toHttpError } from './helpers/to-http-error.js';
|
|
5
|
+
import { errorHandler } from './middlewares/error-handler.middleware.js';
|
|
6
|
+
import { projectManifest, } from './middlewares/project-manifest.middleware.js';
|
|
7
|
+
import { readJsonBody, } from './middlewares/read-json-body.middleware.js';
|
|
8
|
+
import { workflowAuthorization, } from './middlewares/workflow-authorization.middleware.js';
|
|
9
|
+
import { DEV_ROUTES_PREFIX, SSE_HEARTBEAT_INTERVAL_IN_MS, WORKFLOW_RUN_EVENTS, } from '../constants/server.js';
|
|
10
|
+
const WORKFLOW_PATH = '/projects/:projectId/workflows/:workflowId';
|
|
11
|
+
const SERVER_EVENTS = [
|
|
12
|
+
'manifest',
|
|
13
|
+
'build:status',
|
|
14
|
+
'build:fail',
|
|
15
|
+
'app:exit',
|
|
16
|
+
...WORKFLOW_RUN_EVENTS,
|
|
17
|
+
];
|
|
18
|
+
const FIND_QUERY_STRINGS = [
|
|
19
|
+
'status',
|
|
20
|
+
'workflow',
|
|
21
|
+
'id',
|
|
22
|
+
'parentRun',
|
|
23
|
+
'parentActivity',
|
|
24
|
+
];
|
|
25
|
+
const FIND_QUERY_DATES = ['createdAfter', 'createdBefore'];
|
|
26
|
+
const PAGE_QUERY_INTEGERS = ['limit', 'offset'];
|
|
27
|
+
const MAX_LIMIT = 50;
|
|
28
|
+
function toIntegers(query, names) {
|
|
29
|
+
const result = {};
|
|
30
|
+
for (const name of names) {
|
|
31
|
+
const value = Number.parseInt(query[name] ?? '', 10);
|
|
32
|
+
if (Number.isFinite(value))
|
|
33
|
+
result[name] = value;
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
function checkPage(page) {
|
|
38
|
+
if (page.limit !== undefined && (page.limit < 1 || page.limit > MAX_LIMIT))
|
|
39
|
+
throw toHttpError(400, `limit must be between 1 and ${MAX_LIMIT}`);
|
|
40
|
+
if (page.offset !== undefined && page.offset < 0)
|
|
41
|
+
throw toHttpError(400, 'offset must be 0 or more');
|
|
42
|
+
}
|
|
43
|
+
function toPageQuery(query) {
|
|
44
|
+
const page = toIntegers(query, PAGE_QUERY_INTEGERS);
|
|
45
|
+
checkPage(page);
|
|
46
|
+
return page;
|
|
47
|
+
}
|
|
48
|
+
function toFindQuery(query) {
|
|
49
|
+
const result = toIntegers(query, PAGE_QUERY_INTEGERS);
|
|
50
|
+
checkPage(result);
|
|
51
|
+
for (const name of FIND_QUERY_STRINGS)
|
|
52
|
+
if (query[name])
|
|
53
|
+
result[name] = query[name];
|
|
54
|
+
for (const name of FIND_QUERY_DATES) {
|
|
55
|
+
const value = query[name];
|
|
56
|
+
if (!value)
|
|
57
|
+
continue;
|
|
58
|
+
if (Number.isNaN(Date.parse(value)))
|
|
59
|
+
throw toHttpError(400, `${name} must be an ISO 8601 date`);
|
|
60
|
+
result[name] = value;
|
|
61
|
+
}
|
|
62
|
+
if (query.rootOnly !== undefined)
|
|
63
|
+
result.rootOnly = query.rootOnly === 'true';
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
function toAdvancePayload(body) {
|
|
67
|
+
if (body !== undefined &&
|
|
68
|
+
(typeof body !== 'object' || body === null || Array.isArray(body)))
|
|
69
|
+
throw toHttpError(400, 'Body must be an object');
|
|
70
|
+
return body?.payload;
|
|
71
|
+
}
|
|
72
|
+
export function createApp({ appProcess, events, projectDir, }) {
|
|
73
|
+
const app = new Hono();
|
|
74
|
+
app.use(cors());
|
|
75
|
+
app.onError(errorHandler);
|
|
76
|
+
app.notFound(context => context.json({
|
|
77
|
+
statusCode: 404,
|
|
78
|
+
message: `Cannot ${context.req.method} ${context.req.path}`,
|
|
79
|
+
error: 'Not Found',
|
|
80
|
+
}, 404));
|
|
81
|
+
const manifest = projectManifest({ appProcess });
|
|
82
|
+
const authorization = workflowAuthorization({ projectDir });
|
|
83
|
+
app.get('/projects/:projectId/manifest.json', manifest, context => context.json(context.get('manifest')));
|
|
84
|
+
app.post(`${WORKFLOW_PATH}/runs`, readJsonBody, manifest, authorization, async (context) => {
|
|
85
|
+
const { id } = await appProcess.call('workflow.run', context.get('workflowId'), context.get('body'));
|
|
86
|
+
return context.json({ id }, 201);
|
|
87
|
+
});
|
|
88
|
+
app.patch(`${WORKFLOW_PATH}/runs/:runId/activities/:activityId`, readJsonBody, manifest, authorization, async (context) => {
|
|
89
|
+
const payload = toAdvancePayload(context.get('body'));
|
|
90
|
+
const activity = await appProcess.call('workflow.async-activities.advance', context.req.param('activityId'), payload);
|
|
91
|
+
return context.json({
|
|
92
|
+
id: activity.id,
|
|
93
|
+
type: activity.type,
|
|
94
|
+
status: activity.status,
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
const dev = new Hono();
|
|
98
|
+
dev.get('/manifest', async (context) => context.json(await appProcess.whenReady()));
|
|
99
|
+
dev.get('/state', context => context.json({ state: appProcess.state }));
|
|
100
|
+
dev.get('/runs', async (context) => context.json(await appProcess.call('workflow.runs.find', toFindQuery(context.req.query()))));
|
|
101
|
+
dev.get('/runs/:id', async (context) => context.json(await appProcess.call('workflow.runs.findById', context.req.param('id'))));
|
|
102
|
+
dev.get('/runs/:id/activities', async (context) => context.json(await appProcess.call('workflow.runs.activities.find', context.req.param('id'), toPageQuery(context.req.query()))));
|
|
103
|
+
dev.get('/runs/:id/activities/:activityId/pendings', async (context) => context.json(await appProcess.call('workflow.runs.activities.pendings.find', context.req.param('id'), context.req.param('activityId'), toPageQuery(context.req.query()))));
|
|
104
|
+
dev.get('/runs/:id/activities/:activityId', async (context) => context.json(await appProcess.call('workflow.runs.activities.findById', context.req.param('id'), context.req.param('activityId'))));
|
|
105
|
+
dev.get('/runs/:id/logs', async (context) => context.json(await appProcess.call('workflow.runs.logs.find', context.req.param('id'), toPageQuery(context.req.query()))));
|
|
106
|
+
dev.get('/activities/waiting', async (context) => context.json(await appProcess.call('workflow.async-activities.waiting.list', toPageQuery(context.req.query()))));
|
|
107
|
+
dev.post('/workflows/:workflowId/runs', readJsonBody, async (context) => {
|
|
108
|
+
const { id } = await appProcess.call('workflow.run', context.req.param('workflowId'), context.get('body'));
|
|
109
|
+
return context.json({ id }, 201);
|
|
110
|
+
});
|
|
111
|
+
dev.post('/activities/:activityId/advance', readJsonBody, async (context) => {
|
|
112
|
+
const payload = toAdvancePayload(context.get('body'));
|
|
113
|
+
const activity = await appProcess.call('workflow.async-activities.advance', context.req.param('activityId'), payload);
|
|
114
|
+
return context.json({
|
|
115
|
+
id: activity.id,
|
|
116
|
+
type: activity.type,
|
|
117
|
+
status: activity.status,
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
dev.get('/events', context => streamSSE(context, async (stream) => {
|
|
121
|
+
const send = (event, data) => stream.writeSSE({ event, data: JSON.stringify(data ?? null) });
|
|
122
|
+
const listeners = SERVER_EVENTS.map(event => {
|
|
123
|
+
const listener = (data) => void send(event, data);
|
|
124
|
+
events.on(event, listener);
|
|
125
|
+
return [event, listener];
|
|
126
|
+
});
|
|
127
|
+
const heartbeat = setInterval(() => void stream.writeSSE({ event: 'ping', data: '' }), SSE_HEARTBEAT_INTERVAL_IN_MS).unref();
|
|
128
|
+
if (appProcess.manifest)
|
|
129
|
+
await send('manifest', appProcess.manifest);
|
|
130
|
+
await new Promise(resolve => stream.onAbort(resolve));
|
|
131
|
+
clearInterval(heartbeat);
|
|
132
|
+
for (const [event, listener] of listeners)
|
|
133
|
+
events.off(event, listener);
|
|
134
|
+
}));
|
|
135
|
+
app.route(DEV_ROUTES_PREFIX, dev);
|
|
136
|
+
return app;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=create-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-app.js","sourceRoot":"","sources":["../../src/http/create-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { HTTPException } from 'hono/http-exception';
|
|
2
|
+
import type { ContentfulStatusCode } from 'hono/utils/http-status';
|
|
3
|
+
export interface HttpErrorBody {
|
|
4
|
+
statusCode: number;
|
|
5
|
+
message: unknown;
|
|
6
|
+
error?: unknown;
|
|
7
|
+
}
|
|
8
|
+
export declare function toHttpError(statusCode: ContentfulStatusCode, message: unknown, error?: unknown): HTTPException;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { STATUS_CODES } from 'node:http';
|
|
2
|
+
import { HTTPException } from 'hono/http-exception';
|
|
3
|
+
export function toHttpError(statusCode, message, error = STATUS_CODES[statusCode]) {
|
|
4
|
+
return new HTTPException(statusCode, {
|
|
5
|
+
message: typeof message === 'string' ? message : String(error),
|
|
6
|
+
cause: { statusCode, message, error },
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=to-http-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-http-error.js","sourceRoot":"","sources":["../../../src/http/helpers/to-http-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AASnD,MAAM,UAAU,WAAW,CACzB,UAAgC,EAChC,OAAgB,EAChB,QAAiB,YAAY,CAAC,UAAU,CAAC;IAEzC,OAAO,IAAI,aAAa,CAAC,UAAU,EAAE;QACnC,OAAO,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC9D,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAA0B;KAC9D,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { STATUS_CODES } from 'node:http';
|
|
2
|
+
import { HTTPException } from 'hono/http-exception';
|
|
3
|
+
import { AppProcessNotReadyError } from '../../AppProcess.js';
|
|
4
|
+
import { JSONRPCError } from '../../models/JSONRPCError.js';
|
|
5
|
+
export const errorHandler = (error, context) => {
|
|
6
|
+
if (error instanceof HTTPException) {
|
|
7
|
+
const body = error.cause ?? {
|
|
8
|
+
statusCode: error.status,
|
|
9
|
+
message: error.message,
|
|
10
|
+
error: STATUS_CODES[error.status],
|
|
11
|
+
};
|
|
12
|
+
return context.json(body, error.status);
|
|
13
|
+
}
|
|
14
|
+
if (error instanceof AppProcessNotReadyError)
|
|
15
|
+
return context.json({ statusCode: 503, message: 'App is not ready', error: error.message }, 503);
|
|
16
|
+
if (error instanceof JSONRPCError && error.data?.status) {
|
|
17
|
+
const statusCode = error.data.status;
|
|
18
|
+
return context.json({
|
|
19
|
+
statusCode,
|
|
20
|
+
message: error.data.details ?? error.message,
|
|
21
|
+
error: STATUS_CODES[statusCode],
|
|
22
|
+
}, statusCode);
|
|
23
|
+
}
|
|
24
|
+
console.error('[Server] unexpected error:', error);
|
|
25
|
+
return context.json({ statusCode: 500, message: 'Internal server error', error: String(error) }, 500);
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=error-handler.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.middleware.js","sourceRoot":"","sources":["../../../src/http/middlewares/error-handler.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAG3D,MAAM,CAAC,MAAM,YAAY,GAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC3D,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;QACnC,MAAM,IAAI,GAAI,KAAK,CAAC,KAAmC,IAAI;YACzD,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;SAClC,CAAA;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,MAA8B,CAAC,CAAA;IACjE,CAAC;IAED,IAAI,KAAK,YAAY,uBAAuB;QAC1C,OAAO,OAAO,CAAC,IAAI,CACjB,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EACtE,GAAG,CACJ,CAAA;IAEH,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACxD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAA8B,CAAA;QAE5D,OAAO,OAAO,CAAC,IAAI,CACjB;YACE,UAAU;YACV,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YAC5C,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC;SAChC,EACD,UAAU,CACX,CAAA;IACH,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAA;IAElD,OAAO,OAAO,CAAC,IAAI,CACjB,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAC3E,GAAG,CACJ,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
import type { AppManifest, AppProcess } from '../../AppProcess.js';
|
|
3
|
+
export type ProjectManifestVariables = {
|
|
4
|
+
manifest: AppManifest;
|
|
5
|
+
};
|
|
6
|
+
export interface ProjectManifestOptions {
|
|
7
|
+
appProcess: AppProcess;
|
|
8
|
+
}
|
|
9
|
+
export declare function projectManifest({ appProcess, }: ProjectManifestOptions): MiddlewareHandler<{
|
|
10
|
+
Variables: ProjectManifestVariables;
|
|
11
|
+
}>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { toHttpError } from '../helpers/to-http-error.js';
|
|
2
|
+
export function projectManifest({ appProcess, }) {
|
|
3
|
+
return async (context, next) => {
|
|
4
|
+
const manifest = await appProcess.whenReady();
|
|
5
|
+
if (manifest.id !== context.req.param('projectId'))
|
|
6
|
+
throw toHttpError(404, 'Project not found');
|
|
7
|
+
context.set('manifest', manifest);
|
|
8
|
+
await next();
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=project-manifest.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-manifest.middleware.js","sourceRoot":"","sources":["../../../src/http/middlewares/project-manifest.middleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAQzD,MAAM,UAAU,eAAe,CAAC,EAC9B,UAAU,GACa;IAGvB,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,CAAA;QAE7C,IAAI,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;YAChD,MAAM,WAAW,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAA;QAE7C,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEjC,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
2
|
+
import { every } from 'hono/combine';
|
|
3
|
+
import { JSON_BODY_LIMIT_IN_BYTES } from '../../constants/server.js';
|
|
4
|
+
import { toHttpError } from '../helpers/to-http-error.js';
|
|
5
|
+
const JSON_CONTENT_TYPE = /^application\/([\w.-]+\+)?json/i;
|
|
6
|
+
const parseJsonBody = async (context, next) => {
|
|
7
|
+
const rawBody = await context.req.text();
|
|
8
|
+
context.set('rawBody', rawBody);
|
|
9
|
+
context.set('body', undefined);
|
|
10
|
+
const contentType = context.req.header('content-type') ?? '';
|
|
11
|
+
if (rawBody.length && JSON_CONTENT_TYPE.test(contentType)) {
|
|
12
|
+
try {
|
|
13
|
+
context.set('body', JSON.parse(rawBody));
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
throw toHttpError(400, error instanceof Error ? error.message : 'Invalid JSON body');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
await next();
|
|
20
|
+
};
|
|
21
|
+
export const readJsonBody = every(bodyLimit({ maxSize: JSON_BODY_LIMIT_IN_BYTES }), parseJsonBody);
|
|
22
|
+
//# sourceMappingURL=read-json-body.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-json-body.middleware.js","sourceRoot":"","sources":["../../../src/http/middlewares/read-json-body.middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAIzD,MAAM,iBAAiB,GAAG,iCAAiC,CAAA;AAE3D,MAAM,aAAa,GAEd,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAC3B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IAExC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAE9B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;IAE5D,IAAI,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CACf,GAAG,EACH,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAC7D,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,EAAE,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAC/B,SAAS,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,EAChD,aAAa,CACd,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
import type { ProjectManifestVariables } from './project-manifest.middleware.js';
|
|
3
|
+
import type { JsonBodyVariables } from './read-json-body.middleware.js';
|
|
4
|
+
export type WorkflowAuthorizationVariables = {
|
|
5
|
+
workflowId: string;
|
|
6
|
+
};
|
|
7
|
+
export interface WorkflowAuthorizationOptions {
|
|
8
|
+
projectDir: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function workflowAuthorization({ projectDir, }: WorkflowAuthorizationOptions): MiddlewareHandler<{
|
|
11
|
+
Variables: ProjectManifestVariables & JsonBodyVariables & WorkflowAuthorizationVariables;
|
|
12
|
+
}>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { WorkflowAuthorizationService } from '../../services/WorkflowAuthorization.service.js';
|
|
2
|
+
import { toHttpError } from '../helpers/to-http-error.js';
|
|
3
|
+
export function workflowAuthorization({ projectDir, }) {
|
|
4
|
+
const authorization = new WorkflowAuthorizationService(projectDir);
|
|
5
|
+
return async (context, next) => {
|
|
6
|
+
const manifest = context.get('manifest');
|
|
7
|
+
const workflowId = context.req.param('workflowId');
|
|
8
|
+
const workflow = manifest.workflows.find(workflow => workflow.id === workflowId);
|
|
9
|
+
if (!workflow?.id)
|
|
10
|
+
throw toHttpError(404, 'Workflow not found');
|
|
11
|
+
const url = new URL(context.req.url);
|
|
12
|
+
const authorized = await authorization.authorize(manifest, workflow.id, {
|
|
13
|
+
method: context.req.method,
|
|
14
|
+
url: `${url.pathname}${url.search}`,
|
|
15
|
+
path: url.pathname,
|
|
16
|
+
headers: Object.fromEntries(context.req.raw.headers.entries()),
|
|
17
|
+
params: context.req.param(),
|
|
18
|
+
query: context.req.query(),
|
|
19
|
+
rawBody: context.get('rawBody'),
|
|
20
|
+
body: context.get('body'),
|
|
21
|
+
});
|
|
22
|
+
if (!authorized)
|
|
23
|
+
throw toHttpError(401, 'Unauthorized');
|
|
24
|
+
context.set('workflowId', workflow.id);
|
|
25
|
+
await next();
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=workflow-authorization.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-authorization.middleware.js","sourceRoot":"","sources":["../../../src/http/middlewares/workflow-authorization.middleware.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAA;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAQzD,MAAM,UAAU,qBAAqB,CAAC,EACpC,UAAU,GACmB;IAK7B,MAAM,aAAa,GAAG,IAAI,4BAA4B,CAAC,UAAU,CAAC,CAAA;IAElE,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAExC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAElD,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CACtC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,CACvC,CAAA;QAED,IAAI,CAAC,QAAQ,EAAE,EAAE;YAAE,MAAM,WAAW,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;QAE/D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEpC,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE;YACtE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM;YAC1B,GAAG,EAAE,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;YACnC,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC9D,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE;YAC3B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE;YAC1B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YAC/B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;SAC1B,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU;YAAE,MAAM,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;QAEvD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;QAEtC,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
3
|
-
export
|
|
4
|
-
export * from './models/claims/DevFileSystemClaim.js';
|
|
5
|
-
export * from './models/claims/DevGetActivityUniqueIdentifierClaim.js';
|
|
6
|
-
export * from './models/claims/DevGetProjectUniqueIdentifierClaim.js';
|
|
7
|
-
export * from './models/claims/DevGetProjectVersionUniqueIdentifierClaim.js';
|
|
8
|
-
export * from './models/claims/DevGetProjectVersionWorkflowUniqueIdentifierClaim.js';
|
|
9
|
-
export * from './models/claims/DevGetWorkflowUniqueIdentifierClaim.js';
|
|
10
|
-
export * from './models/claims/DevHttpClientRequestClaim.js';
|
|
11
|
-
export * from './models/claims/DevORMClaim.js';
|
|
12
|
-
export * from './models/claims/DevSmtpSendEmailClaim.js';
|
|
13
|
-
export * from './models/claims/DevWorkflowClaim.js';
|
|
14
|
-
export * from './tools/find-claim-by-constructor.js';
|
|
15
|
-
export * from './tools/is-workflow-waiting.js';
|
|
1
|
+
export * from './Server.js';
|
|
2
|
+
export * from './models/WorkflowAuthorizationMissingError.js';
|
|
3
|
+
export type { AppManifest, AppProcessState } from './AppProcess.js';
|