@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.
Files changed (199) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +112 -58
  3. package/dist/AppProcess.d.ts +36 -0
  4. package/dist/AppProcess.js +126 -0
  5. package/dist/AppProcess.js.map +1 -0
  6. package/dist/Server.d.ts +41 -0
  7. package/dist/Server.js +177 -0
  8. package/dist/Server.js.map +1 -0
  9. package/dist/constants/panel-config.d.ts +2 -0
  10. package/dist/constants/panel-config.js +34 -0
  11. package/dist/constants/panel-config.js.map +1 -0
  12. package/dist/constants/server.d.ts +9 -0
  13. package/dist/constants/server.js +10 -0
  14. package/dist/constants/server.js.map +1 -0
  15. package/dist/http/create-app.d.ts +16 -0
  16. package/dist/http/create-app.js +138 -0
  17. package/dist/http/create-app.js.map +1 -0
  18. package/dist/http/helpers/to-http-error.d.ts +8 -0
  19. package/dist/http/helpers/to-http-error.js +9 -0
  20. package/dist/http/helpers/to-http-error.js.map +1 -0
  21. package/dist/http/middlewares/error-handler.middleware.d.ts +2 -0
  22. package/dist/http/middlewares/error-handler.middleware.js +27 -0
  23. package/dist/http/middlewares/error-handler.middleware.js.map +1 -0
  24. package/dist/http/middlewares/project-manifest.middleware.d.ts +11 -0
  25. package/dist/http/middlewares/project-manifest.middleware.js +11 -0
  26. package/dist/http/middlewares/project-manifest.middleware.js.map +1 -0
  27. package/dist/http/middlewares/read-json-body.middleware.d.ts +6 -0
  28. package/dist/http/middlewares/read-json-body.middleware.js +22 -0
  29. package/dist/http/middlewares/read-json-body.middleware.js.map +1 -0
  30. package/dist/http/middlewares/workflow-authorization.middleware.d.ts +12 -0
  31. package/dist/http/middlewares/workflow-authorization.middleware.js +28 -0
  32. package/dist/http/middlewares/workflow-authorization.middleware.js.map +1 -0
  33. package/dist/index.d.ts +3 -15
  34. package/dist/index.js +2 -15
  35. package/dist/index.js.map +1 -1
  36. package/dist/models/JSONRPCClient.d.ts +2 -0
  37. package/dist/models/JSONRPCClient.js +21 -4
  38. package/dist/models/JSONRPCClient.js.map +1 -1
  39. package/dist/models/JSONRPCError.d.ts +13 -0
  40. package/dist/models/JSONRPCError.js +11 -0
  41. package/dist/models/JSONRPCError.js.map +1 -0
  42. package/dist/models/JSONRPCServer.d.ts +2 -0
  43. package/dist/models/JSONRPCServer.js +10 -2
  44. package/dist/models/JSONRPCServer.js.map +1 -1
  45. package/dist/models/WorkflowAuthorizationMissingError.d.ts +5 -0
  46. package/dist/models/WorkflowAuthorizationMissingError.js +9 -0
  47. package/dist/models/WorkflowAuthorizationMissingError.js.map +1 -0
  48. package/dist/models/WorkflowRun.d.ts +20 -15
  49. package/dist/models/WorkflowRun.js +14 -9
  50. package/dist/models/WorkflowRun.js.map +1 -1
  51. package/dist/models/WorkflowRunActivity.d.ts +40 -27
  52. package/dist/models/WorkflowRunActivity.js +46 -34
  53. package/dist/models/WorkflowRunActivity.js.map +1 -1
  54. package/dist/models/claims/DevHttpClientRequestClaim.js +4 -5
  55. package/dist/models/claims/DevHttpClientRequestClaim.js.map +1 -1
  56. package/dist/models/claims/DevORMClaim.d.ts +15 -4
  57. package/dist/models/claims/DevORMClaim.js +128 -29
  58. package/dist/models/claims/DevORMClaim.js.map +1 -1
  59. package/dist/models/claims/DevWorkflowBatchClaim.js +3 -6
  60. package/dist/models/claims/DevWorkflowBatchClaim.js.map +1 -1
  61. package/dist/models/claims/DevWorkflowClaim.d.ts +1 -1
  62. package/dist/models/claims/DevWorkflowClaim.js +6 -11
  63. package/dist/models/claims/DevWorkflowClaim.js.map +1 -1
  64. package/dist/repositories/WorkflowRun.repository.d.ts +44 -6
  65. package/dist/repositories/WorkflowRun.repository.js +196 -11
  66. package/dist/repositories/WorkflowRun.repository.js.map +1 -1
  67. package/dist/repositories/WorkflowRunActivity.repository.d.ts +19 -6
  68. package/dist/repositories/WorkflowRunActivity.repository.js +73 -23
  69. package/dist/repositories/WorkflowRunActivity.repository.js.map +1 -1
  70. package/dist/repositories/WorkflowRunAsyncActivityPending.repository.d.ts +39 -0
  71. package/dist/repositories/WorkflowRunAsyncActivityPending.repository.js +160 -0
  72. package/dist/repositories/WorkflowRunAsyncActivityPending.repository.js.map +1 -0
  73. package/dist/services/ActivityRegistry.service.d.ts +7 -0
  74. package/dist/services/ActivityRegistry.service.js +32 -0
  75. package/dist/services/ActivityRegistry.service.js.map +1 -0
  76. package/dist/services/Database.service.d.ts +14 -0
  77. package/dist/services/Database.service.js +106 -0
  78. package/dist/services/Database.service.js.map +1 -0
  79. package/dist/services/TimeoutScheduler.service.js +9 -3
  80. package/dist/services/TimeoutScheduler.service.js.map +1 -1
  81. package/dist/services/WorkflowAuthorization.service.d.ts +19 -0
  82. package/dist/services/WorkflowAuthorization.service.js +75 -0
  83. package/dist/services/WorkflowAuthorization.service.js.map +1 -0
  84. package/dist/services/WorkflowRunAsyncActivityFacade.service.d.ts +8 -15
  85. package/dist/services/WorkflowRunAsyncActivityFacade.service.js +12 -26
  86. package/dist/services/WorkflowRunAsyncActivityFacade.service.js.map +1 -1
  87. package/dist/services/WorkflowRunEvents.service.d.ts +11 -0
  88. package/dist/services/WorkflowRunEvents.service.js +42 -0
  89. package/dist/services/WorkflowRunEvents.service.js.map +1 -0
  90. package/dist/services/WorkflowRunFacade.service.d.ts +106 -7
  91. package/dist/services/WorkflowRunFacade.service.js +65 -10
  92. package/dist/services/WorkflowRunFacade.service.js.map +1 -1
  93. package/dist/services/WorkflowRunLock.service.d.ts +6 -0
  94. package/dist/services/WorkflowRunLock.service.js +34 -0
  95. package/dist/services/WorkflowRunLock.service.js.map +1 -0
  96. package/dist/services/WorkflowRunSyncActivityFacade.service.d.ts +4 -4
  97. package/dist/services/WorkflowRunSyncActivityFacade.service.js +7 -7
  98. package/dist/services/WorkflowRunSyncActivityFacade.service.js.map +1 -1
  99. package/dist/tools/copy-additional-files.d.ts +0 -5
  100. package/dist/tools/copy-additional-files.js +0 -5
  101. package/dist/tools/copy-additional-files.js.map +1 -1
  102. package/dist/tools/find-free-port.d.ts +5 -0
  103. package/dist/tools/find-free-port.js +30 -0
  104. package/dist/tools/find-free-port.js.map +1 -0
  105. package/dist/tools/find-workflow-by-id.d.ts +2 -0
  106. package/dist/tools/find-workflow-by-id.js +9 -0
  107. package/dist/tools/find-workflow-by-id.js.map +1 -0
  108. package/dist/tools/format-routes.d.ts +10 -0
  109. package/dist/tools/format-routes.js +40 -0
  110. package/dist/tools/format-routes.js.map +1 -0
  111. package/dist/tools/replace.d.ts +1 -0
  112. package/dist/tools/replace.js +14 -0
  113. package/dist/tools/replace.js.map +1 -0
  114. package/dist/tools/to-rejected-reason.d.ts +5 -0
  115. package/dist/tools/to-rejected-reason.js +11 -0
  116. package/dist/tools/to-rejected-reason.js.map +1 -0
  117. package/dist/tools/to-workflow-run-activity-output.d.ts +24 -0
  118. package/dist/tools/to-workflow-run-activity-output.js +18 -0
  119. package/dist/tools/to-workflow-run-activity-output.js.map +1 -0
  120. package/dist/tools/to-workflow-run-output.d.ts +11 -0
  121. package/dist/tools/to-workflow-run-output.js +12 -0
  122. package/dist/tools/to-workflow-run-output.js.map +1 -0
  123. package/dist/transport/AppProcessJsonRpc.js +59 -0
  124. package/dist/transport/AppProcessJsonRpc.js.map +1 -0
  125. package/dist/use-cases/BuildWorkflowRunActivityHistory.usecase.d.ts +9 -0
  126. package/dist/use-cases/{WorkflowRunBuildHistory.usecase.js → BuildWorkflowRunActivityHistory.usecase.js} +18 -16
  127. package/dist/use-cases/BuildWorkflowRunActivityHistory.usecase.js.map +1 -0
  128. package/dist/use-cases/CreateWorkflowRun.usecase.d.ts +6 -6
  129. package/dist/use-cases/CreateWorkflowRun.usecase.js +20 -21
  130. package/dist/use-cases/CreateWorkflowRun.usecase.js.map +1 -1
  131. package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.d.ts +9 -3
  132. package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.js +45 -39
  133. package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.js.map +1 -1
  134. package/dist/use-cases/EnqueueWorkflowRunNextTick.usecase.d.ts +9 -0
  135. package/dist/use-cases/EnqueueWorkflowRunNextTick.usecase.js +43 -0
  136. package/dist/use-cases/EnqueueWorkflowRunNextTick.usecase.js.map +1 -0
  137. package/dist/use-cases/ExecuteWorkflowRunActivity.usecase.d.ts +9 -0
  138. package/dist/use-cases/ExecuteWorkflowRunActivity.usecase.js +47 -0
  139. package/dist/use-cases/ExecuteWorkflowRunActivity.usecase.js.map +1 -0
  140. package/dist/use-cases/ExecuteWorkflowRunAsyncActivity.usecase.d.ts +22 -0
  141. package/dist/use-cases/ExecuteWorkflowRunAsyncActivity.usecase.js +117 -0
  142. package/dist/use-cases/ExecuteWorkflowRunAsyncActivity.usecase.js.map +1 -0
  143. package/dist/use-cases/NextTickWorkflowRun.usecase.d.ts +16 -7
  144. package/dist/use-cases/NextTickWorkflowRun.usecase.js +139 -130
  145. package/dist/use-cases/NextTickWorkflowRun.usecase.js.map +1 -1
  146. package/dist/use-cases/RunWorkflow.usecase.d.ts +10 -0
  147. package/dist/use-cases/RunWorkflow.usecase.js +46 -0
  148. package/dist/use-cases/RunWorkflow.usecase.js.map +1 -0
  149. package/dist/use-cases/WorkflowRunActivityFind.usecase.d.ts +34 -0
  150. package/dist/use-cases/WorkflowRunActivityFind.usecase.js +49 -0
  151. package/dist/use-cases/WorkflowRunActivityFind.usecase.js.map +1 -0
  152. package/dist/use-cases/WorkflowRunActivityFindById.usecase.d.ts +34 -0
  153. package/dist/use-cases/WorkflowRunActivityFindById.usecase.js +60 -0
  154. package/dist/use-cases/WorkflowRunActivityFindById.usecase.js.map +1 -0
  155. package/dist/use-cases/WorkflowRunAsyncActivityAdvance.usecase.d.ts +12 -4
  156. package/dist/use-cases/WorkflowRunAsyncActivityAdvance.usecase.js +41 -27
  157. package/dist/use-cases/WorkflowRunAsyncActivityAdvance.usecase.js.map +1 -1
  158. package/dist/use-cases/WorkflowRunAsyncActivityPendingFind.usecase.d.ts +24 -0
  159. package/dist/use-cases/WorkflowRunAsyncActivityPendingFind.usecase.js +56 -0
  160. package/dist/use-cases/WorkflowRunAsyncActivityPendingFind.usecase.js.map +1 -0
  161. package/dist/use-cases/WorkflowRunFind.usecase.d.ts +17 -0
  162. package/dist/use-cases/WorkflowRunFind.usecase.js +28 -0
  163. package/dist/use-cases/WorkflowRunFind.usecase.js.map +1 -0
  164. package/dist/use-cases/WorkflowRunFindById.usecase.d.ts +19 -0
  165. package/dist/use-cases/WorkflowRunFindById.usecase.js +45 -0
  166. package/dist/use-cases/WorkflowRunFindById.usecase.js.map +1 -0
  167. package/dist/workers/app-process.js +10 -1
  168. package/dist/workers/app-process.js.map +1 -1
  169. package/package.json +15 -5
  170. package/.ai/skills/framework-dev/SKILL.md +0 -348
  171. package/dist/DevServer.d.ts +0 -24
  172. package/dist/DevServer.js +0 -87
  173. package/dist/DevServer.js.map +0 -1
  174. package/dist/models/InMemoryDatabase.d.ts +0 -20
  175. package/dist/models/InMemoryDatabase.js +0 -111
  176. package/dist/models/InMemoryDatabase.js.map +0 -1
  177. package/dist/services/BuildWorkflowRunResult.service.d.ts +0 -8
  178. package/dist/services/BuildWorkflowRunResult.service.js +0 -49
  179. package/dist/services/BuildWorkflowRunResult.service.js.map +0 -1
  180. package/dist/tools/is-workflow-waiting.d.ts +0 -4
  181. package/dist/tools/is-workflow-waiting.js +0 -12
  182. package/dist/tools/is-workflow-waiting.js.map +0 -1
  183. package/dist/transport/DevServerJsonRpc.js +0 -42
  184. package/dist/transport/DevServerJsonRpc.js.map +0 -1
  185. package/dist/use-cases/CallbackWorkflowRunAsyncActivity.usecase.d.ts +0 -14
  186. package/dist/use-cases/CallbackWorkflowRunAsyncActivity.usecase.js +0 -64
  187. package/dist/use-cases/CallbackWorkflowRunAsyncActivity.usecase.js.map +0 -1
  188. package/dist/use-cases/TimeoutWorkflowRunAsyncActivity.usecase.d.ts +0 -8
  189. package/dist/use-cases/TimeoutWorkflowRunAsyncActivity.usecase.js +0 -40
  190. package/dist/use-cases/TimeoutWorkflowRunAsyncActivity.usecase.js.map +0 -1
  191. package/dist/use-cases/WorkflowRunAsyncActivity.usecase.d.ts +0 -7
  192. package/dist/use-cases/WorkflowRunAsyncActivity.usecase.js +0 -46
  193. package/dist/use-cases/WorkflowRunAsyncActivity.usecase.js.map +0 -1
  194. package/dist/use-cases/WorkflowRunBuildHistory.usecase.d.ts +0 -8
  195. package/dist/use-cases/WorkflowRunBuildHistory.usecase.js.map +0 -1
  196. package/dist/use-cases/WorkflowRunSyncActivity.usecase.d.ts +0 -4
  197. package/dist/use-cases/WorkflowRunSyncActivity.usecase.js +0 -28
  198. package/dist/use-cases/WorkflowRunSyncActivity.usecase.js.map +0 -1
  199. /package/dist/transport/{DevServerJsonRpc.d.ts → AppProcessJsonRpc.d.ts} +0 -0
@@ -4,33 +4,83 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { Injectable } from 'pleroma';
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from 'pleroma';
11
+ import { WorkflowRunActivity, } from '../models/WorkflowRunActivity.js';
12
+ import { DatabaseService } from '../services/Database.service.js';
8
13
  let WorkflowRunActivityRepository = class WorkflowRunActivityRepository {
9
- activitiesByRun = new Map();
10
- save(activity) {
11
- const activities = this.activitiesByRun.get(activity.run.id) || [];
12
- activities.push(activity);
13
- this.activitiesByRun.set(activity.run.id, activities);
14
- }
15
- findById(id) {
16
- return this.activitiesByRun
17
- .values()
18
- .flatMap(activities => activities)
19
- .find(activity => activity.id === id);
20
- }
21
- findByRunId(run) {
22
- return this.activitiesByRun.get(run) || [];
23
- }
24
- findBy(predicate) {
25
- return this.activitiesByRun
26
- .values()
27
- .flatMap(activities => activities)
28
- .filter(predicate)
29
- .toArray();
14
+ database;
15
+ constructor(database) {
16
+ this.database = database;
17
+ }
18
+ get db() {
19
+ return this.database.db;
20
+ }
21
+ async create(activity) {
22
+ this.db
23
+ .prepare(`INSERT INTO workflow_run_activities (
24
+ id, run_id, position, type, kind, status, input, output, completed_at, created_at
25
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
26
+ .run(activity.id, activity.runId, activity.position, activity.type, activity.kind, activity.status, await this.database.encode(activity.input), await this.database.encode(activity.output), activity.completedAt?.getTime() ?? null, activity.createdAt.getTime());
27
+ }
28
+ async findById(id) {
29
+ const row = this.db
30
+ .prepare('SELECT * FROM workflow_run_activities WHERE id = ?')
31
+ .get(id);
32
+ return row && (await this.toModel(row));
33
+ }
34
+ async findByRunId(runId) {
35
+ const rows = this.db
36
+ .prepare('SELECT * FROM workflow_run_activities WHERE run_id = ? ORDER BY position')
37
+ .all(runId);
38
+ return Promise.all(rows.map(row => this.toModel(row)));
39
+ }
40
+ async findPageByRunId(runId, { limit = 25, offset = 0 } = {}) {
41
+ const rows = this.db
42
+ .prepare(`SELECT * FROM workflow_run_activities WHERE run_id = ?
43
+ ORDER BY position DESC LIMIT ? OFFSET ?`)
44
+ .all(runId, limit, offset);
45
+ return {
46
+ count: this.countByRunId(runId),
47
+ activities: await Promise.all(rows.map(row => this.toModel(row))),
48
+ };
49
+ }
50
+ countByRunId(runId) {
51
+ const row = this.db
52
+ .prepare('SELECT COUNT(*) AS count FROM workflow_run_activities WHERE run_id = ?')
53
+ .get(runId);
54
+ return row.count;
55
+ }
56
+ async complete(id, output) {
57
+ this.db
58
+ .prepare(`UPDATE workflow_run_activities
59
+ SET output = ?, completed_at = ?, status = 'fulfilled'
60
+ WHERE id = ?`)
61
+ .run(await this.database.encode(output), Date.now(), id);
62
+ }
63
+ async fail(id, output) {
64
+ this.db
65
+ .prepare(`UPDATE workflow_run_activities
66
+ SET output = ?, completed_at = ?, status = 'rejected'
67
+ WHERE id = ?`)
68
+ .run(await this.database.encode(output), Date.now(), id);
69
+ }
70
+ async toModel(row) {
71
+ return new WorkflowRunActivity(row.run_id, row.position, row.type, row.kind, {
72
+ id: row.id,
73
+ status: row.status,
74
+ input: await this.database.decode(row.input),
75
+ output: await this.database.decode(row.output),
76
+ completedAt: row.completed_at === null ? undefined : new Date(row.completed_at),
77
+ createdAt: new Date(row.created_at),
78
+ });
30
79
  }
31
80
  };
32
81
  WorkflowRunActivityRepository = __decorate([
33
- Injectable()
82
+ Injectable(),
83
+ __param(0, Inject(() => DatabaseService))
34
84
  ], WorkflowRunActivityRepository);
35
85
  export { WorkflowRunActivityRepository };
36
86
  //# sourceMappingURL=WorkflowRunActivity.repository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowRunActivity.repository.js","sourceRoot":"","sources":["../../src/repositories/WorkflowRunActivity.repository.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAK7B,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IAChC,eAAe,GAAG,IAAI,GAAG,EAAiC,CAAA;IAE3D,IAAI,CAAC,QAA6B;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;QAElE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEzB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;IACvD,CAAC;IAEM,QAAQ,CAAC,EAAU;QACxB,OAAO,IAAI,CAAC,eAAe;aACxB,MAAM,EAAE;aACR,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC;aACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACzC,CAAC;IAEM,WAAW,CAAC,GAAW;QAC5B,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IAC5C,CAAC;IAEM,MAAM,CACX,SAAqD;QAErD,OAAO,IAAI,CAAC,eAAe;aACxB,MAAM,EAAE;aACR,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC;aACjC,MAAM,CAAC,SAAS,CAAC;aACjB,OAAO,EAAE,CAAA;IACd,CAAC;CACF,CAAA;AA/BY,6BAA6B;IADzC,UAAU,EAAE;GACA,6BAA6B,CA+BzC"}
1
+ {"version":3,"file":"WorkflowRunActivity.repository.js","sourceRoot":"","sources":["../../src/repositories/WorkflowRunActivity.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type Type from 'typebox';
2
+ import { WorkflowRunAsyncActivityPending, type AsyncActivityPendingStatus } from '../models/WorkflowRunActivity.js';
3
+ import { DatabaseService } from '../services/Database.service.js';
4
+ export interface PageQuery {
5
+ limit?: number;
6
+ offset?: number;
7
+ }
8
+ export interface WaitingAsyncActivitiesPage {
9
+ count: number;
10
+ activities: WaitingAsyncActivity[];
11
+ }
12
+ export interface WaitingAsyncActivity {
13
+ id: string;
14
+ pending: string;
15
+ run: string;
16
+ workflowId: string;
17
+ type: string;
18
+ schema: Type.TSchema | undefined;
19
+ timeoutAt: Date | undefined;
20
+ }
21
+ export declare class WorkflowRunAsyncActivityPendingRepository {
22
+ private readonly database;
23
+ constructor(database: DatabaseService);
24
+ private get db();
25
+ create(pending: WorkflowRunAsyncActivityPending): Promise<void>;
26
+ findById(id: string): Promise<WorkflowRunAsyncActivityPending | undefined>;
27
+ findByActivityId(activityId: string): Promise<WorkflowRunAsyncActivityPending[]>;
28
+ findPageByActivityId(activityId: string, { limit, offset }?: PageQuery): Promise<{
29
+ count: number;
30
+ pendings: WorkflowRunAsyncActivityPending[];
31
+ }>;
32
+ findLastByActivityId(activityId: string): Promise<WorkflowRunAsyncActivityPending | undefined>;
33
+ findLastStatusByActivityIds(activityIds: readonly string[]): Map<string, AsyncActivityPendingStatus>;
34
+ findRootByActivityId(activityId: string): Promise<WorkflowRunAsyncActivityPending | undefined>;
35
+ updateStatus(id: string, status: AsyncActivityPendingStatus): void;
36
+ setPayload(id: string, payload: unknown): Promise<void>;
37
+ findWaiting({ limit, offset, }?: PageQuery): WaitingAsyncActivitiesPage;
38
+ private toModel;
39
+ }
@@ -0,0 +1,160 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ };
10
+ import { Inject, Injectable } from 'pleroma';
11
+ import { WorkflowRunAsyncActivityPending, } from '../models/WorkflowRunActivity.js';
12
+ import { DatabaseService } from '../services/Database.service.js';
13
+ const WAITING_PAGE_SIZE = 25;
14
+ const WAITING_FROM_WHERE = `
15
+ FROM workflow_run_async_activity_pendings
16
+ JOIN workflow_run_activities
17
+ ON workflow_run_activities.id = workflow_run_async_activity_pendings.activity_id
18
+ JOIN workflow_runs
19
+ ON workflow_runs.id = workflow_run_activities.run_id
20
+ WHERE workflow_run_async_activity_pendings.status = 'pending'
21
+ AND workflow_runs.status = 'running'
22
+ AND workflow_run_async_activity_pendings.position = (
23
+ SELECT MAX(last_pending.position)
24
+ FROM workflow_run_async_activity_pendings AS last_pending
25
+ WHERE last_pending.activity_id = workflow_run_async_activity_pendings.activity_id
26
+ )`;
27
+ let WorkflowRunAsyncActivityPendingRepository = class WorkflowRunAsyncActivityPendingRepository {
28
+ database;
29
+ constructor(database) {
30
+ this.database = database;
31
+ }
32
+ get db() {
33
+ return this.database.db;
34
+ }
35
+ async create(pending) {
36
+ this.db
37
+ .prepare(`INSERT INTO workflow_run_async_activity_pendings (
38
+ id, activity_id, position, previous_id, status, schema, timeout_at,
39
+ result, payload, created_at, updated_at
40
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
41
+ .run(pending.id, pending.activityId, pending.position, pending.previousId ?? null, pending.status, pending.schema ? JSON.stringify(pending.schema) : null, pending.timeoutAt?.getTime() ?? null, await this.database.encode(pending.result), await this.database.encode(pending.payload), pending.createdAt.getTime(), pending.updatedAt.getTime());
42
+ }
43
+ async findById(id) {
44
+ const row = this.db
45
+ .prepare('SELECT * FROM workflow_run_async_activity_pendings WHERE id = ?')
46
+ .get(id);
47
+ return row && (await this.toModel(row));
48
+ }
49
+ async findByActivityId(activityId) {
50
+ const rows = this.db
51
+ .prepare(`SELECT * FROM workflow_run_async_activity_pendings
52
+ WHERE activity_id = ? ORDER BY position`)
53
+ .all(activityId);
54
+ return Promise.all(rows.map(row => this.toModel(row)));
55
+ }
56
+ async findPageByActivityId(activityId, { limit = 25, offset = 0 } = {}) {
57
+ const { count } = this.db
58
+ .prepare(`SELECT COUNT(*) AS count FROM workflow_run_async_activity_pendings
59
+ WHERE activity_id = ?`)
60
+ .get(activityId);
61
+ const rows = this.db
62
+ .prepare(`SELECT * FROM workflow_run_async_activity_pendings
63
+ WHERE activity_id = ? ORDER BY position DESC LIMIT ? OFFSET ?`)
64
+ .all(activityId, limit, offset);
65
+ return {
66
+ count,
67
+ pendings: await Promise.all(rows.map(row => this.toModel(row))),
68
+ };
69
+ }
70
+ async findLastByActivityId(activityId) {
71
+ const row = this.db
72
+ .prepare(`SELECT * FROM workflow_run_async_activity_pendings
73
+ WHERE activity_id = ? ORDER BY position DESC LIMIT 1`)
74
+ .get(activityId);
75
+ return row && (await this.toModel(row));
76
+ }
77
+ findLastStatusByActivityIds(activityIds) {
78
+ if (activityIds.length === 0)
79
+ return new Map();
80
+ const rows = this.db
81
+ .prepare(`SELECT activity_id, status FROM workflow_run_async_activity_pendings
82
+ WHERE activity_id IN (${activityIds.map(() => '?').join(', ')})
83
+ AND position = (
84
+ SELECT MAX(last_pending.position)
85
+ FROM workflow_run_async_activity_pendings AS last_pending
86
+ WHERE last_pending.activity_id = workflow_run_async_activity_pendings.activity_id
87
+ )`)
88
+ .all(...activityIds);
89
+ return new Map(rows.map(row => [row.activity_id, row.status]));
90
+ }
91
+ async findRootByActivityId(activityId) {
92
+ const row = this.db
93
+ .prepare(`SELECT * FROM workflow_run_async_activity_pendings
94
+ WHERE activity_id = ? AND position = 0`)
95
+ .get(activityId);
96
+ return row && (await this.toModel(row));
97
+ }
98
+ updateStatus(id, status) {
99
+ this.db
100
+ .prepare(`UPDATE workflow_run_async_activity_pendings
101
+ SET status = ?, updated_at = ? WHERE id = ?`)
102
+ .run(status, Date.now(), id);
103
+ }
104
+ async setPayload(id, payload) {
105
+ this.db
106
+ .prepare(`UPDATE workflow_run_async_activity_pendings
107
+ SET payload = ?, updated_at = ? WHERE id = ?`)
108
+ .run(await this.database.encode(payload), Date.now(), id);
109
+ }
110
+ findWaiting({ limit = WAITING_PAGE_SIZE, offset = 0, } = {}) {
111
+ const { count } = this.db
112
+ .prepare(`SELECT COUNT(*) AS count ${WAITING_FROM_WHERE}`)
113
+ .get();
114
+ const rows = this.db
115
+ .prepare(`SELECT workflow_run_activities.id AS activity_id,
116
+ workflow_run_async_activity_pendings.id AS pending_id,
117
+ workflow_run_activities.run_id,
118
+ workflow_runs.workflow_id,
119
+ workflow_run_activities.type,
120
+ workflow_run_async_activity_pendings.schema,
121
+ workflow_run_async_activity_pendings.timeout_at
122
+ ${WAITING_FROM_WHERE}
123
+ ORDER BY workflow_runs.created_at DESC, workflow_runs.id DESC, workflow_run_activities.position
124
+ LIMIT ? OFFSET ?`)
125
+ .all(limit, offset);
126
+ return {
127
+ count,
128
+ activities: rows.map(row => ({
129
+ id: row.activity_id,
130
+ pending: row.pending_id,
131
+ run: row.run_id,
132
+ workflowId: row.workflow_id,
133
+ type: row.type,
134
+ schema: row.schema
135
+ ? JSON.parse(row.schema)
136
+ : undefined,
137
+ timeoutAt: row.timeout_at === null ? undefined : new Date(row.timeout_at),
138
+ })),
139
+ };
140
+ }
141
+ async toModel(row) {
142
+ return new WorkflowRunAsyncActivityPending(row.activity_id, row.position, {
143
+ id: row.id,
144
+ previousId: row.previous_id ?? undefined,
145
+ status: row.status,
146
+ schema: row.schema ? JSON.parse(row.schema) : undefined,
147
+ timeoutAt: row.timeout_at === null ? undefined : new Date(row.timeout_at),
148
+ result: await this.database.decode(row.result),
149
+ payload: await this.database.decode(row.payload),
150
+ createdAt: new Date(row.created_at),
151
+ updatedAt: new Date(row.updated_at),
152
+ });
153
+ }
154
+ };
155
+ WorkflowRunAsyncActivityPendingRepository = __decorate([
156
+ Injectable(),
157
+ __param(0, Inject(() => DatabaseService))
158
+ ], WorkflowRunAsyncActivityPendingRepository);
159
+ export { WorkflowRunAsyncActivityPendingRepository };
160
+ //# sourceMappingURL=WorkflowRunAsyncActivityPending.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowRunAsyncActivityPending.repository.js","sourceRoot":"","sources":["../../src/repositories/WorkflowRunAsyncActivityPending.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type ActivityConstructor, type AnyActivity } from '@t4h.framework/core';
2
+ export declare class ActivityRegistryService {
3
+ private readonly activities;
4
+ constructor();
5
+ add(Activity: ActivityConstructor<AnyActivity>): void;
6
+ getActivityConstructor(name: string): ActivityConstructor<AnyActivity>;
7
+ }
@@ -0,0 +1,32 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { StartManyWorkflowsActivity, StartWorkflowActivity, } from '@t4h.framework/core';
8
+ import { Injectable } from 'pleroma';
9
+ let ActivityRegistryService = class ActivityRegistryService {
10
+ activities = new Map();
11
+ constructor() {
12
+ this.add(StartWorkflowActivity);
13
+ this.add(StartManyWorkflowsActivity);
14
+ }
15
+ add(Activity) {
16
+ const current = this.activities.get(Activity.name);
17
+ if (current && current !== Activity)
18
+ console.warn(`[server] activity "${Activity.name}" registered twice with different classes; the latest wins`);
19
+ this.activities.set(Activity.name, Activity);
20
+ }
21
+ getActivityConstructor(name) {
22
+ const Activity = this.activities.get(name);
23
+ if (!Activity)
24
+ throw new Error(`Unknown activity: ${name}`);
25
+ return Activity;
26
+ }
27
+ };
28
+ ActivityRegistryService = __decorate([
29
+ Injectable()
30
+ ], ActivityRegistryService);
31
+ export { ActivityRegistryService };
32
+ //# sourceMappingURL=ActivityRegistry.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityRegistry.service.js","sourceRoot":"","sources":["../../src/services/ActivityRegistry.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,GAGtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAG7B,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACjB,UAAU,GAAG,IAAI,GAAG,EAGlC,CAAA;IAEH;QACE,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;IACtC,CAAC;IAEM,GAAG,CAAC,QAA0C;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAElD,IAAI,OAAO,IAAI,OAAO,KAAK,QAAQ;YACjC,OAAO,CAAC,IAAI,CACV,sBAAsB,QAAQ,CAAC,IAAI,4DAA4D,CAChG,CAAA;QAEH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC9C,CAAC;IAEM,sBAAsB,CAC3B,IAAY;QAEZ,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAE1C,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAA;QAE3D,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF,CAAA;AA/BY,uBAAuB;IADnC,UAAU,EAAE;GACA,uBAAuB,CA+BnC"}
@@ -0,0 +1,14 @@
1
+ import { DatabaseSync } from 'node:sqlite';
2
+ /**
3
+ * In-memory SQLite. Every app process boot starts from an empty schema on
4
+ * purpose: the dev server does not carry migrations, durability belongs to
5
+ * the production runtime.
6
+ */
7
+ export declare class DatabaseService {
8
+ readonly db: DatabaseSync;
9
+ constructor();
10
+ transaction<T>(fn: () => T): T;
11
+ encode(value: unknown): Promise<string | null>;
12
+ decode(text: string | null): Promise<unknown>;
13
+ close(): void;
14
+ }
@@ -0,0 +1,106 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { DatabaseSync } from 'node:sqlite';
8
+ import { Injectable } from 'pleroma';
9
+ import { jsonCodec } from '../tools/json-codec.js';
10
+ const SCHEMA = `
11
+ CREATE TABLE workflow_runs (
12
+ id TEXT PRIMARY KEY,
13
+ workflow_id TEXT NOT NULL,
14
+ status TEXT NOT NULL CHECK (status IN ('running', 'fulfilled', 'rejected')),
15
+ input TEXT,
16
+ output TEXT,
17
+ parent_run_id TEXT,
18
+ parent_activity_id TEXT,
19
+ batch_index INTEGER,
20
+ batch_size INTEGER,
21
+ created_at INTEGER NOT NULL,
22
+ updated_at INTEGER NOT NULL
23
+ );
24
+
25
+ CREATE INDEX workflow_runs_parent_activity_idx
26
+ ON workflow_runs (parent_activity_id);
27
+
28
+ CREATE TABLE workflow_run_activities (
29
+ id TEXT PRIMARY KEY,
30
+ run_id TEXT NOT NULL REFERENCES workflow_runs (id) ON DELETE CASCADE,
31
+ position INTEGER NOT NULL,
32
+ type TEXT NOT NULL,
33
+ kind TEXT NOT NULL CHECK (kind IN ('sync', 'async')),
34
+ status TEXT NOT NULL CHECK (status IN ('running', 'fulfilled', 'rejected')) DEFAULT 'running',
35
+ input TEXT,
36
+ output TEXT,
37
+ completed_at INTEGER,
38
+ created_at INTEGER NOT NULL,
39
+ UNIQUE (run_id, position)
40
+ );
41
+
42
+ CREATE TABLE workflow_run_async_activity_pendings (
43
+ id TEXT PRIMARY KEY,
44
+ activity_id TEXT NOT NULL REFERENCES workflow_run_activities (id) ON DELETE CASCADE,
45
+ position INTEGER NOT NULL,
46
+ previous_id TEXT,
47
+ status TEXT NOT NULL CHECK (status IN ('pending', 'fulfilled', 'rejected')),
48
+ schema TEXT,
49
+ timeout_at INTEGER,
50
+ result TEXT,
51
+ payload TEXT,
52
+ created_at INTEGER NOT NULL,
53
+ updated_at INTEGER NOT NULL,
54
+ UNIQUE (activity_id, position)
55
+ );
56
+
57
+ CREATE TABLE workflow_run_logs (
58
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
59
+ run_id TEXT NOT NULL REFERENCES workflow_runs (id) ON DELETE CASCADE,
60
+ level TEXT NOT NULL,
61
+ args TEXT NOT NULL,
62
+ at INTEGER NOT NULL
63
+ );
64
+ `;
65
+ /**
66
+ * In-memory SQLite. Every app process boot starts from an empty schema on
67
+ * purpose: the dev server does not carry migrations, durability belongs to
68
+ * the production runtime.
69
+ */
70
+ let DatabaseService = class DatabaseService {
71
+ db = new DatabaseSync(':memory:');
72
+ constructor() {
73
+ this.db.exec('PRAGMA foreign_keys = ON');
74
+ this.db.exec(SCHEMA);
75
+ }
76
+ transaction(fn) {
77
+ this.db.exec('BEGIN');
78
+ try {
79
+ const result = fn();
80
+ this.db.exec('COMMIT');
81
+ return result;
82
+ }
83
+ catch (error) {
84
+ this.db.exec('ROLLBACK');
85
+ throw error;
86
+ }
87
+ }
88
+ async encode(value) {
89
+ if (value === undefined)
90
+ return null;
91
+ return await jsonCodec.stringify(value, {});
92
+ }
93
+ async decode(text) {
94
+ if (text === null)
95
+ return undefined;
96
+ return await jsonCodec.parse(text, {});
97
+ }
98
+ close() {
99
+ this.db.close();
100
+ }
101
+ };
102
+ DatabaseService = __decorate([
103
+ Injectable()
104
+ ], DatabaseService);
105
+ export { DatabaseService };
106
+ //# sourceMappingURL=Database.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Database.service.js","sourceRoot":"","sources":["../../src/services/Database.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDd,CAAA;AAED;;;;GAIG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAe;IACV,EAAE,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAA;IAEjD;QACE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QAExC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC;IAEM,WAAW,CAAI,EAAW;QAC/B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAErB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,EAAE,CAAA;YAEnB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAEtB,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAExB,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAc;QAChC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAEpC,OAAO,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC7C,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,IAAmB;QACrC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,SAAS,CAAA;QAEnC,OAAO,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACxC,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;IACjB,CAAC;CACF,CAAA;AAxCY,eAAe;IAD3B,UAAU,EAAE;GACA,eAAe,CAwC3B"}
@@ -4,18 +4,24 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
+ import { styleText } from 'node:util';
7
8
  import { Injectable } from 'pleroma';
9
+ const MAX_TIMEOUT_DELAY_IN_MS = 2 ** 31 - 1;
8
10
  let TimeoutSchedulerService = class TimeoutSchedulerService {
9
11
  timers = new Map();
10
12
  schedule(id, timeoutAt, fn) {
11
13
  this.cancel(id);
12
- const delay = Math.max(timeoutAt.getTime() - Date.now(), 0);
14
+ const delayInMs = Math.min(Math.max(timeoutAt.getTime() - Date.now(), 0), MAX_TIMEOUT_DELAY_IN_MS);
13
15
  const timer = setTimeout(() => {
14
16
  this.timers.delete(id);
17
+ if (timeoutAt.getTime() > Date.now())
18
+ return this.schedule(id, timeoutAt, fn);
15
19
  Promise.resolve(fn()).catch(error => {
16
- console.error('[DevRuntime] timeout handler failed:', error);
20
+ console.error(styleText('red', '[server] timeout handler failed:', {
21
+ stream: process.stderr,
22
+ }), error);
17
23
  });
18
- }, delay);
24
+ }, delayInMs);
19
25
  this.timers.set(id, timer);
20
26
  }
21
27
  cancel(id) {
@@ -1 +1 @@
1
- {"version":3,"file":"TimeoutScheduler.service.js","sourceRoot":"","sources":["../../src/services/TimeoutScheduler.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAG7B,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACjB,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAA;IAEpD,QAAQ,CAAC,EAAU,EAAE,SAAe,EAAE,EAA8B;QACzE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAEf,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;QAE3D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAEtB,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBAClC,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAA;YAC9D,CAAC,CAAC,CAAA;QACJ,CAAC,EAAE,KAAK,CAAC,CAAA;QAET,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IAC5B,CAAC;IAEM,MAAM,CAAC,EAAU;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAEjC,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,YAAY,CAAC,KAAK,CAAC,CAAA;QAEnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACxB,CAAC;CACF,CAAA;AA5BY,uBAAuB;IADnC,UAAU,EAAE;GACA,uBAAuB,CA4BnC"}
1
+ {"version":3,"file":"TimeoutScheduler.service.js","sourceRoot":"","sources":["../../src/services/TimeoutScheduler.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEpC,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAGpC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACjB,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAA;IAEpD,QAAQ,CAAC,EAAU,EAAE,SAAe,EAAE,EAA8B;QACzE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAEf,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAC7C,uBAAuB,CACxB,CAAA;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAEtB,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;gBAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;YAEzC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBAClC,OAAO,CAAC,KAAK,CACX,SAAS,CAAC,KAAK,EAAE,kCAAkC,EAAE;oBACnD,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC,EACF,KAAK,CACN,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,EAAE,SAAS,CAAC,CAAA;QAEb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IAC5B,CAAC;IAEM,MAAM,CAAC,EAAU;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAEjC,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,YAAY,CAAC,KAAK,CAAC,CAAA;QAEnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACxB,CAAC;CACF,CAAA;AAvCY,uBAAuB;IADnC,UAAU,EAAE;GACA,uBAAuB,CAuCnC"}
@@ -0,0 +1,19 @@
1
+ import type { AppManifest } from '../AppProcess.js';
2
+ export interface WorkflowAuthorizationRequest {
3
+ method: string;
4
+ url: string;
5
+ path: string;
6
+ headers: Record<string, string>;
7
+ params: Record<string, string>;
8
+ query: Record<string, string>;
9
+ rawBody: string;
10
+ body: unknown;
11
+ }
12
+ export declare class WorkflowAuthorizationService {
13
+ private readonly projectDir;
14
+ constructor(projectDir: string);
15
+ authorize(manifest: AppManifest, workflowId: string, request: WorkflowAuthorizationRequest): Promise<boolean>;
16
+ private importModule;
17
+ private resolve;
18
+ private replace;
19
+ }
@@ -0,0 +1,75 @@
1
+ import path from 'node:path';
2
+ import { pathToFileURL } from 'node:url';
3
+ import { WorkflowAuthorizationMissingError } from '../models/WorkflowAuthorizationMissingError.js';
4
+ import { replace } from '../tools/replace.js';
5
+ const SUPPORTED_BARE_SPECIFIERS = [
6
+ '@t4h.framework/hmac/authorize',
7
+ '@t4h.framework/jwks/authorize',
8
+ '@t4h.framework/oidc/authorize',
9
+ ];
10
+ export class WorkflowAuthorizationService {
11
+ projectDir;
12
+ constructor(projectDir) {
13
+ this.projectDir = projectDir;
14
+ }
15
+ async authorize(manifest, workflowId, request) {
16
+ const workflow = manifest.workflows.find(workflow => workflow.id === workflowId);
17
+ if (!workflow)
18
+ throw new Error('Cannot get workflow manifest');
19
+ const authorization = workflow.authorization || manifest.authorization;
20
+ if (!authorization)
21
+ throw new WorkflowAuthorizationMissingError(workflowId);
22
+ const module = await this.importModule(authorization.pathToModule);
23
+ try {
24
+ const result = authorization.context
25
+ ? await module.default(this.replace(authorization.context, request))
26
+ : await module.default();
27
+ return !!result;
28
+ }
29
+ catch (error) {
30
+ console.error(error);
31
+ return false;
32
+ }
33
+ }
34
+ async importModule(pathToModule) {
35
+ let module;
36
+ try {
37
+ module = (await import(this.resolve(pathToModule)));
38
+ }
39
+ catch (error) {
40
+ const isNotFound = error instanceof Error &&
41
+ 'code' in error &&
42
+ error.code === 'ERR_MODULE_NOT_FOUND';
43
+ if (!isNotFound)
44
+ throw error;
45
+ throw new Error(`Cannot resolve authorization module "${pathToModule}". The dev server supports ${SUPPORTED_BARE_SPECIFIERS.join(', ')}`, { cause: error });
46
+ }
47
+ if (typeof module.default !== 'function')
48
+ throw new Error(`Authorization module "${pathToModule}" has no default export function`);
49
+ return module;
50
+ }
51
+ resolve(pathToModule) {
52
+ if (pathToModule.startsWith('file:'))
53
+ return pathToModule;
54
+ if (path.isAbsolute(pathToModule))
55
+ return pathToFileURL(pathToModule).href;
56
+ if (pathToModule.startsWith('./') || pathToModule.startsWith('../'))
57
+ return pathToFileURL(path.resolve(this.projectDir, pathToModule)).href;
58
+ return pathToModule;
59
+ }
60
+ replace(value, context) {
61
+ if (value === null || value === undefined)
62
+ return value;
63
+ if (typeof value === 'string')
64
+ return replace(value, context);
65
+ if (Array.isArray(value))
66
+ return value.map(item => this.replace(item, context));
67
+ if (typeof value === 'object')
68
+ return Object.fromEntries(Object.entries(value).map(([key, item]) => [
69
+ key,
70
+ this.replace(item, context),
71
+ ]));
72
+ return value;
73
+ }
74
+ }
75
+ //# sourceMappingURL=WorkflowAuthorization.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowAuthorization.service.js","sourceRoot":"","sources":["../../src/services/WorkflowAuthorization.service.ts"],"names":[],"mappings":"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"}