@adonis-agora/durable 0.21.0 → 0.22.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 (48) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/assets/spa/assets/index-BpH1yTMa.js +81 -0
  3. package/dist/assets/spa/assets/index-BpH1yTMa.js.map +1 -0
  4. package/dist/assets/spa/assets/index-CTsYsi6p.css +1 -0
  5. package/dist/assets/spa/index.html +19 -0
  6. package/dist/providers/dashboard_provider.d.ts +51 -52
  7. package/dist/providers/dashboard_provider.d.ts.map +1 -1
  8. package/dist/providers/dashboard_provider.js +234 -121
  9. package/dist/providers/dashboard_provider.js.map +1 -1
  10. package/dist/providers/durable_provider.d.ts.map +1 -1
  11. package/dist/providers/durable_provider.js +5 -2
  12. package/dist/providers/durable_provider.js.map +1 -1
  13. package/dist/src/dashboard/attr-filter.d.ts +8 -0
  14. package/dist/src/dashboard/attr-filter.d.ts.map +1 -0
  15. package/dist/src/dashboard/attr-filter.js +35 -0
  16. package/dist/src/dashboard/attr-filter.js.map +1 -0
  17. package/dist/src/dashboard/auth.d.ts +55 -10
  18. package/dist/src/dashboard/auth.d.ts.map +1 -1
  19. package/dist/src/dashboard/auth.js +50 -11
  20. package/dist/src/dashboard/auth.js.map +1 -1
  21. package/dist/src/dashboard/gateway-adapter.d.ts +52 -5
  22. package/dist/src/dashboard/gateway-adapter.d.ts.map +1 -1
  23. package/dist/src/dashboard/gateway-adapter.js +48 -6
  24. package/dist/src/dashboard/gateway-adapter.js.map +1 -1
  25. package/dist/src/dashboard/handlers.d.ts +56 -8
  26. package/dist/src/dashboard/handlers.d.ts.map +1 -1
  27. package/dist/src/dashboard/handlers.js +116 -14
  28. package/dist/src/dashboard/handlers.js.map +1 -1
  29. package/dist/src/dashboard/index.d.ts +4 -4
  30. package/dist/src/dashboard/index.d.ts.map +1 -1
  31. package/dist/src/dashboard/index.js +3 -3
  32. package/dist/src/dashboard/index.js.map +1 -1
  33. package/dist/src/dashboard/spa.d.ts +22 -0
  34. package/dist/src/dashboard/spa.d.ts.map +1 -0
  35. package/dist/src/dashboard/spa.js +43 -0
  36. package/dist/src/dashboard/spa.js.map +1 -0
  37. package/dist/src/index.d.ts +1 -1
  38. package/dist/src/index.js +1 -1
  39. package/dist/src/transports/queue-mock-adapter.d.ts +1 -0
  40. package/dist/src/transports/queue-mock-adapter.d.ts.map +1 -1
  41. package/dist/src/transports/queue-mock-adapter.js +1 -0
  42. package/dist/src/transports/queue-mock-adapter.js.map +1 -1
  43. package/dist/src/workflow-discovery.d.ts +15 -3
  44. package/dist/src/workflow-discovery.d.ts.map +1 -1
  45. package/dist/src/workflow-discovery.js +13 -6
  46. package/dist/src/workflow-discovery.js.map +1 -1
  47. package/dist/stubs/config/durable_dashboard.stub +19 -0
  48. package/package.json +18 -17
@@ -2,19 +2,26 @@ import { readdir } from 'node:fs/promises';
2
2
  import { extname, join } from 'node:path';
3
3
  import { pathToFileURL } from 'node:url';
4
4
  import { workflowMeta, workflowSchedules } from './workflow-ref.js';
5
+ function defaultWorkflowFactory(ctor) {
6
+ return new ctor();
7
+ }
5
8
  /**
6
9
  * Register a single workflow class on the engine — a `BaseWorkflow` subclass (its `static workflow`
7
10
  * config), resolved via {@link workflowMeta}. Instantiates it once and binds its `run(ctx, input)`
8
11
  * as the workflow body via `engine.register`. The low-level `engine.register(name, version, fn)`
9
12
  * stays the escape hatch — this is the convenience the `app/workflows` convention builds on. No-op
10
13
  * (returns `false`) for a non-workflow class (no `static workflow` config).
14
+ *
15
+ * `factory` lets the host resolve the instance via the IoC container (constructor injection); when
16
+ * omitted, the class is instantiated directly with `new Ctor()` (no args). The factory may be async
17
+ * (the Adonis container's `make` resolves async), so this function is async.
11
18
  */
12
- export function registerWorkflowClass(engine, cls) {
19
+ export async function registerWorkflowClass(engine, cls, factory = defaultWorkflowFactory) {
13
20
  const meta = workflowMeta(cls);
14
21
  if (!meta)
15
22
  return false;
16
23
  const Ctor = cls;
17
- const instance = new Ctor();
24
+ const instance = await factory(Ctor);
18
25
  engine.register(meta.name, meta.version, (ctx, input) => Promise.resolve(instance.run(ctx, input)), {
19
26
  ...(meta.tags ? { tags: meta.tags } : {}),
20
27
  ...(meta.executionTimeout !== undefined ? { executionTimeout: meta.executionTimeout } : {}),
@@ -111,10 +118,10 @@ export async function discoverWorkflows(dir) {
111
118
  * engine. Returns the registered metadata so the caller can log what was wired.
112
119
  * Best-effort over a missing directory.
113
120
  */
114
- export async function registerWorkflowsFromDir(engine, dir) {
121
+ export async function registerWorkflowsFromDir(engine, dir, factory) {
115
122
  const discovered = await discoverWorkflows(dir);
116
123
  for (const { cls } of discovered)
117
- registerWorkflowClass(engine, cls);
124
+ await registerWorkflowClass(engine, cls, factory);
118
125
  return discovered.map((d) => d.meta);
119
126
  }
120
127
  /**
@@ -125,7 +132,7 @@ export async function registerWorkflowsFromDir(engine, dir) {
125
132
  * re-exported from several modules is safe. Returns the registered metadata so the caller can log
126
133
  * what was wired.
127
134
  */
128
- export async function registerWorkflowsFromBarrel(engine, barrel) {
135
+ export async function registerWorkflowsFromBarrel(engine, barrel, factory) {
129
136
  const registered = [];
130
137
  const seen = new Set();
131
138
  for (const load of Object.values(barrel)) {
@@ -137,7 +144,7 @@ export async function registerWorkflowsFromBarrel(engine, barrel) {
137
144
  if (!meta)
138
145
  continue;
139
146
  seen.add(exported);
140
- registerWorkflowClass(engine, exported);
147
+ await registerWorkflowClass(engine, exported, factory);
141
148
  registered.push(meta);
142
149
  }
143
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-discovery.js","sourceRoot":"","sources":["../../src/workflow-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-discovery.js","sourceRoot":"","sources":["../../src/workflow-discovery.ts"],"names":[],"mappings":"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"}
@@ -9,9 +9,28 @@ import { defineConfig } from '@adonis-agora/durable/dashboard'
9
9
  * By default the dashboard is open OUTSIDE production, and in production it
10
10
  * requires a bearer token equal to `DURABLE_DASHBOARD_TOKEN` (deny if unset).
11
11
  * Replace `authorize` with your own guard (session, role, IP allow-list, …).
12
+ *
13
+ * `dashboardAuth` is an ADDITIVE, optional session gate on top of `authorize` —
14
+ * a signed cookie minted via a built-in login page (Mode B: `login`) and/or a
15
+ * "open the console from your app" endpoint (Mode A: `session`). At least one
16
+ * of the two is required when `dashboardAuth` is set; either or both may be
17
+ * configured. See `docs/observability/dashboard-auth.mdx`.
12
18
  */
13
19
  export default defineConfig({
14
20
  // enabled: true,
15
21
  // path: '/durable',
16
22
  // authorize: (ctx) => ctx.auth.user?.isAdmin === true,
23
+ // dashboardAuth: {
24
+ // secret: env.get('DURABLE_DASHBOARD_SECRET'),
25
+ // ttl: '8h',
26
+ // // Mode B — standalone login page.
27
+ // login: async (username, password) => {
28
+ // if (username === 'admin' && password === env.get('DURABLE_DASHBOARD_PASSWORD')) {
29
+ // return { id: 'admin', name: 'Admin' }
30
+ // }
31
+ // return null
32
+ // },
33
+ // // Mode A — mint a session for an already-authenticated host request.
34
+ // // session: async (request) => (request.user?.isAdmin ? { id: request.user.id } : null),
35
+ // },
17
36
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonis-agora/durable",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "description": "Durable cross-app workflows for AdonisJS — deterministic replay engine, AdonisJS binding, ace commands, dashboard, OpenTelemetry, Telescope, testing harness and Redis admission, all in one package. Part of the Agora ecosystem.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -106,7 +106,7 @@
106
106
  ],
107
107
  "sideEffects": false,
108
108
  "dependencies": {
109
- "zod": "^3.23.0"
109
+ "zod": "3.25.76"
110
110
  },
111
111
  "peerDependencies": {
112
112
  "@adonisjs/assembler": "^8.4.0",
@@ -151,22 +151,23 @@
151
151
  },
152
152
  "devDependencies": {
153
153
  "@adonisjs/assembler": "^8.4.0",
154
- "@adonisjs/core": "^7.3.0",
155
- "@adonisjs/lucid": "^22.4.0",
156
- "@adonisjs/queue": "^0.6.1",
154
+ "@adonisjs/core": "7.4.0",
155
+ "@adonisjs/lucid": "22.4.2",
156
+ "@adonisjs/queue": "0.6.2",
157
157
  "@adonisjs/redis": "^9.2.0",
158
- "@opentelemetry/api": "^1.9.0",
159
- "@opentelemetry/context-async-hooks": "^1.30.0",
160
- "@opentelemetry/sdk-trace-base": "^1.30.0",
161
- "@types/better-sqlite3": "^7.6.0",
162
- "@types/node": "^20.0.0",
163
- "better-sqlite3": "^11.0.0",
164
- "bullmq": "^5.0.0",
158
+ "@opentelemetry/api": "1.9.1",
159
+ "@opentelemetry/context-async-hooks": "1.30.1",
160
+ "@opentelemetry/sdk-trace-base": "1.30.1",
161
+ "@types/better-sqlite3": "7.6.13",
162
+ "@types/node": "20.19.43",
163
+ "better-sqlite3": "11.10.0",
164
+ "bullmq": "5.81.3",
165
165
  "cron-parser": "^4.9.0",
166
- "ioredis": "^5.4.0",
167
- "typescript": "^5.4.0",
168
- "vitest": "^3.0.0",
169
- "zod": "^3.25.0"
166
+ "ioredis": "5.11.1",
167
+ "typescript": "5.9.3",
168
+ "vitest": "3.2.7",
169
+ "zod": "3.25.76",
170
+ "@adonis-agora/durable-dashboard": "0.2.0"
170
171
  },
171
172
  "engines": {
172
173
  "node": ">=20.6.0 <23"
@@ -188,7 +189,7 @@
188
189
  "build": "pnpm run clean && tsc -p tsconfig.build.json && pnpm run copy:stubs && pnpm run check:dist",
189
190
  "check:dist": "node ../../scripts/assert-build-output.mjs dist src/index.js",
190
191
  "clean": "rm -rf dist",
191
- "copy:stubs": "mkdir -p dist/stubs/config dist/stubs/database/migrations dist/stubs/make/workflow dist/assets && cp stubs/config/durable.stub dist/stubs/config/durable.stub && cp stubs/config/durable_dashboard.stub dist/stubs/config/durable_dashboard.stub && cp -r stubs/database/migrations/. dist/stubs/database/migrations/ && cp stubs/make/workflow/main.stub dist/stubs/make/workflow/main.stub && cp assets/dashboard.html dist/assets/dashboard.html",
192
+ "copy:stubs": "mkdir -p dist/stubs/config dist/stubs/database/migrations dist/stubs/make/workflow dist/assets && cp stubs/config/durable.stub dist/stubs/config/durable.stub && cp stubs/config/durable_dashboard.stub dist/stubs/config/durable_dashboard.stub && cp -r stubs/database/migrations/. dist/stubs/database/migrations/ && cp stubs/make/workflow/main.stub dist/stubs/make/workflow/main.stub && cp assets/dashboard.html dist/assets/dashboard.html && rm -rf dist/assets/spa && cp -r ../dashboard/dist/spa dist/assets/spa",
192
193
  "test": "vitest run --passWithNoTests",
193
194
  "test:watch": "vitest",
194
195
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.tests.json"