@ossy/platform 1.24.2 → 1.24.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/package.json +4 -4
- package/src/server.js +8 -0
- package/src/tasks/task-service.js +22 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ossy/platform",
|
|
3
|
-
"version": "1.24.
|
|
3
|
+
"version": "1.24.3",
|
|
4
4
|
"description": "Ossy application server runtime",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"author": "Ossy <yourfriends@ossy.se> (https://ossy.se)",
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@ossy/router": "^1.25.
|
|
27
|
-
"@ossy/sdk": "^1.25.
|
|
26
|
+
"@ossy/router": "^1.25.3",
|
|
27
|
+
"@ossy/sdk": "^1.25.3",
|
|
28
28
|
"cookie-parser": "^1.4.7",
|
|
29
29
|
"dotenv": ">=16.0.0 <18.0.0",
|
|
30
30
|
"express": ">=5.0.0 <6.0.0",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"src",
|
|
36
36
|
"Dockerfile"
|
|
37
37
|
],
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "88840c464266647e040f0b0d51c0bb95b18a056b"
|
|
39
39
|
}
|
package/src/server.js
CHANGED
|
@@ -99,6 +99,14 @@ export async function startServer (options = {}) {
|
|
|
99
99
|
console.error(`[@ossy/platform][server] Failed to load task "${task.id}":`, err.message)
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
+
|
|
103
|
+
// Register the SDK adapter so all tasks receive it as `sdk`.
|
|
104
|
+
// Callers pass an adapter via `options.sdk`; for the ossy API server this is
|
|
105
|
+
// the EventStoreAdapter created in api/src/index.js.
|
|
106
|
+
if (options.sdk) {
|
|
107
|
+
TaskService.setSdk(options.sdk)
|
|
108
|
+
}
|
|
109
|
+
|
|
102
110
|
TaskService.startScheduler()
|
|
103
111
|
|
|
104
112
|
if (process.env.DB_URL) {
|
|
@@ -13,6 +13,23 @@ export class TaskService {
|
|
|
13
13
|
/** @type {ReturnType<typeof setInterval> | null} */
|
|
14
14
|
static _schedulerInterval = null
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Global SDK adapter injected at server startup. Tasks receive this as `sdk`
|
|
18
|
+
* unless a per-call override is supplied to `dispatch`.
|
|
19
|
+
* Set via `TaskService.setSdk(adapter)`.
|
|
20
|
+
* @type {import('./adapter.js').OssySdkAdapter | null}
|
|
21
|
+
*/
|
|
22
|
+
static _sdk = null
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Register the SDK adapter that every task will receive as `sdk`.
|
|
26
|
+
* Call this once during application startup before ChangeStream / scheduler begin.
|
|
27
|
+
* @param {import('./adapter.js').OssySdkAdapter | null} sdk
|
|
28
|
+
*/
|
|
29
|
+
static setSdk(sdk) {
|
|
30
|
+
TaskService._sdk = sdk
|
|
31
|
+
}
|
|
32
|
+
|
|
16
33
|
/**
|
|
17
34
|
* Register a task module to be dispatched on matching events
|
|
18
35
|
* and/or on a cron schedule.
|
|
@@ -43,9 +60,11 @@ export class TaskService {
|
|
|
43
60
|
* registered tasks whose triggers match.
|
|
44
61
|
* @param {object} event - The eventstore fullDocument.
|
|
45
62
|
*/
|
|
46
|
-
static dispatch(event) {
|
|
63
|
+
static dispatch(event, { sdk } = {}) {
|
|
47
64
|
if (!event) return
|
|
48
65
|
|
|
66
|
+
const effectiveSdk = sdk ?? TaskService._sdk
|
|
67
|
+
|
|
49
68
|
for (const { metadata, handler } of TaskService._tasks) {
|
|
50
69
|
const triggers = metadata.triggers ?? []
|
|
51
70
|
const matched = triggers.some(trigger => TaskService._matchesTrigger(trigger, event))
|
|
@@ -55,7 +74,7 @@ export class TaskService {
|
|
|
55
74
|
console.log(`[TaskService] Dispatching task "${metadata.id}"`)
|
|
56
75
|
|
|
57
76
|
Promise.resolve()
|
|
58
|
-
.then(() => handler({ event, sdk:
|
|
77
|
+
.then(() => handler({ event, sdk: effectiveSdk }))
|
|
59
78
|
.catch(error =>
|
|
60
79
|
console.error(`[TaskService] Task "${metadata.id}" failed`, error),
|
|
61
80
|
)
|
|
@@ -85,7 +104,7 @@ export class TaskService {
|
|
|
85
104
|
console.log(`[TaskService] Schedule fired for task "${metadata.id}"`)
|
|
86
105
|
|
|
87
106
|
Promise.resolve()
|
|
88
|
-
.then(() => handler({ event: { type: 'scheduled', taskId: metadata.id }, sdk:
|
|
107
|
+
.then(() => handler({ event: { type: 'scheduled', taskId: metadata.id }, sdk: TaskService._sdk }))
|
|
89
108
|
.catch(error =>
|
|
90
109
|
console.error(`[TaskService] Scheduled task "${metadata.id}" failed`, error),
|
|
91
110
|
)
|