@ossy/platform 1.24.1 → 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ossy/platform",
3
- "version": "1.24.1",
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.1",
27
- "@ossy/sdk": "^1.25.1",
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": "c8a5e5af59c1975ea8e0c5a974202c6c146236c3"
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: null }))
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: null }))
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
  )