@pattern-stack/codegen 0.15.0 → 0.15.1

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 (59) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/dist/{job-orchestrator.protocol-CARhMLCO.d.ts → job-orchestrator.protocol-DubMVbm9.d.ts} +1 -1
  3. package/dist/runtime/subsystems/bridge/bridge-delivery-handler.d.ts +2 -2
  4. package/dist/runtime/subsystems/bridge/bridge-delivery-handler.js.map +1 -1
  5. package/dist/runtime/subsystems/bridge/bridge-delivery.drizzle-backend.d.ts +1 -1
  6. package/dist/runtime/subsystems/bridge/bridge-delivery.memory-backend.d.ts +1 -1
  7. package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.d.ts +1 -1
  8. package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.js.map +1 -1
  9. package/dist/runtime/subsystems/bridge/bridge.module.d.ts +2 -2
  10. package/dist/runtime/subsystems/bridge/bridge.module.js.map +1 -1
  11. package/dist/runtime/subsystems/bridge/bridge.protocol.d.ts +1 -1
  12. package/dist/runtime/subsystems/bridge/event-flow.service.d.ts +2 -2
  13. package/dist/runtime/subsystems/bridge/event-flow.service.js.map +1 -1
  14. package/dist/runtime/subsystems/bridge/generated/registry.d.ts +1 -1
  15. package/dist/runtime/subsystems/bridge/index.d.ts +2 -2
  16. package/dist/runtime/subsystems/bridge/index.js.map +1 -1
  17. package/dist/runtime/subsystems/events/event-bus.drizzle-backend.d.ts +1 -1
  18. package/dist/runtime/subsystems/events/event-registry.d.ts +77 -0
  19. package/dist/runtime/subsystems/events/event-registry.js +1 -0
  20. package/dist/runtime/subsystems/events/event-registry.js.map +1 -0
  21. package/dist/runtime/subsystems/events/index.d.ts +1 -0
  22. package/dist/runtime/subsystems/index.d.ts +2 -2
  23. package/dist/runtime/subsystems/index.js.map +1 -1
  24. package/dist/runtime/subsystems/jobs/index.d.ts +2 -2
  25. package/dist/runtime/subsystems/jobs/index.js.map +1 -1
  26. package/dist/runtime/subsystems/jobs/job-handler.base.d.ts +2 -2
  27. package/dist/runtime/subsystems/jobs/job-handler.base.js.map +1 -1
  28. package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.d.ts +2 -2
  29. package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.d.ts +2 -2
  30. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.d.ts +2 -2
  31. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.js.map +1 -1
  32. package/dist/runtime/subsystems/jobs/job-orchestrator.protocol.d.ts +2 -2
  33. package/dist/runtime/subsystems/jobs/job-run-keyset-cursor.d.ts +2 -2
  34. package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.d.ts +2 -2
  35. package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.d.ts +2 -2
  36. package/dist/runtime/subsystems/jobs/job-run-service.protocol.d.ts +2 -2
  37. package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.d.ts +2 -2
  38. package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.js.map +1 -1
  39. package/dist/runtime/subsystems/jobs/job-worker.d.ts +2 -2
  40. package/dist/runtime/subsystems/jobs/job-worker.js.map +1 -1
  41. package/dist/runtime/subsystems/jobs/job-worker.module.d.ts +2 -2
  42. package/dist/runtime/subsystems/jobs/job-worker.module.js.map +1 -1
  43. package/dist/runtime/subsystems/jobs/jobs-domain.module.js.map +1 -1
  44. package/dist/runtime/subsystems/jobs/jobs-errors.d.ts +2 -2
  45. package/dist/runtime/subsystems/observability/index.d.ts +2 -2
  46. package/dist/runtime/subsystems/observability/observability.protocol.d.ts +2 -2
  47. package/dist/runtime/subsystems/observability/observability.service.d.ts +2 -2
  48. package/dist/runtime/subsystems/observability/reporters/bridge-metrics.reporter.d.ts +2 -2
  49. package/dist/runtime/subsystems/observability/reporters/index.d.ts +2 -2
  50. package/dist/src/cli/index.js +26 -0
  51. package/dist/src/cli/index.js.map +1 -1
  52. package/package.json +1 -1
  53. package/runtime/subsystems/bridge/bridge-delivery-handler.ts +1 -1
  54. package/runtime/subsystems/bridge/bridge-outbox-drain-hook.ts +1 -1
  55. package/runtime/subsystems/bridge/bridge.protocol.ts +1 -1
  56. package/runtime/subsystems/bridge/event-flow.service.ts +1 -1
  57. package/runtime/subsystems/events/event-registry.ts +77 -0
  58. package/runtime/subsystems/events/index.ts +12 -0
  59. package/runtime/subsystems/jobs/job-handler.base.ts +1 -1
@@ -6,7 +6,7 @@ import { EventsModuleOptions } from './events.module.js';
6
6
  import { IBridgeOutboxDrainHook } from '../bridge/bridge.protocol.js';
7
7
  import 'drizzle-orm/node-postgres';
8
8
  import 'drizzle-orm';
9
- import './generated/types.js';
9
+ import './event-registry.js';
10
10
  import '../bridge/bridge-delivery.schema.js';
11
11
  import 'drizzle-orm/pg-core';
12
12
 
@@ -0,0 +1,77 @@
1
+ import { DomainEvent } from './event-bus.protocol.js';
2
+ import '../../types/drizzle.js';
3
+ import 'drizzle-orm/node-postgres';
4
+
5
+ /**
6
+ * Augmentable domain-event registry (ADR-037, package-mode trigger typing).
7
+ *
8
+ * This is the seam that lets the bridge + job-trigger types see a PACKAGE-MODE
9
+ * consumer's OWN events with full per-event payload typing — without the
10
+ * package shipping (and leaking) its internal test-fixture event union.
11
+ *
12
+ * ── The problem ──────────────────────────────────────────────────────────────
13
+ * In vendored mode, `bridge.protocol.ts` / `job-handler.base.ts` could import
14
+ * `EventTypeName` / `EventOfType` straight from the consumer's vendored
15
+ * `./generated/types` (a sibling file). In package mode the runtime is consumed
16
+ * from the published `@pattern-stack/codegen`, whose bundled
17
+ * `events/generated/types.ts` is the codegen-patterns repo's OWN fixture union
18
+ * (`contact_created`, `deal_created`, …). Keying the bridge/trigger types off
19
+ * THAT union rejects the consumer's events (`'inbound_webhook_received' is not
20
+ * assignable to '"contact_created" | …'`).
21
+ *
22
+ * ── The fix ──────────────────────────────────────────────────────────────────
23
+ * `EventTypeName` (as used by the bridge/trigger types) derives from an EMPTY,
24
+ * augmentable `DomainEventRegistry` interface instead of the bundled concrete
25
+ * union. A package-mode consumer's generated events code emits a
26
+ * `declare module '@pattern-stack/codegen/runtime/subsystems/events/index' {
27
+ * interface DomainEventRegistry { <their_event>: <TheirEvent>; … } }`
28
+ * augmentation, so in the consumer's tsc program `keyof DomainEventRegistry`
29
+ * picks up THEIR events and `EventOfType<T>` resolves THEIR concrete payloads.
30
+ *
31
+ * In the package's OWN program (and any consumer that authors no events) the
32
+ * interface is never augmented, so `keyof DomainEventRegistry` is `never` and
33
+ * `EventTypeName` falls back to `string` — the bridge/trigger types degrade to
34
+ * `Record<string, …>` / `(event: DomainEvent) => …`, exactly the loose-but-
35
+ * sound shape that keeps the package's fixture-based runtime tests green.
36
+ *
37
+ * The bundled `events/generated/{types,bus,schemas}.ts` keep their concrete
38
+ * fixture union locally (the bundled `TypedEventBus` keys off `./types`, NOT
39
+ * this file), so they do NOT augment `DomainEventRegistry` and never leak the
40
+ * fixtures into a consumer's `EventTypeName` — even though the consumer pulls
41
+ * `generated/types.d.ts` in transitively via the events index barrel.
42
+ */
43
+
44
+ /**
45
+ * Empty marker interface, augmented by a consumer's generated events code via
46
+ * declaration merging on the events index module specifier
47
+ * (`@pattern-stack/codegen/runtime/subsystems/events/index`). Each key is an
48
+ * event `type` literal; each value is the event's concrete interface (extends
49
+ * `DomainEvent`). Empty in the package and in any project that declares no
50
+ * `events/*.yaml`.
51
+ *
52
+ * Intentionally NOT augmented by the package's own bundled
53
+ * `events/generated/types.ts` — those fixtures stay local to the bundled
54
+ * `TypedEventBus` so they never widen a consumer's `EventTypeName`.
55
+ *
56
+ * Must be an `interface` (only interfaces merge across module boundaries) and
57
+ * empty by design — a consumer augments it via declaration merging.
58
+ */
59
+ interface DomainEventRegistry {
60
+ }
61
+ /**
62
+ * Union of registered event `type` literals. When the registry is augmented
63
+ * (package-mode consumer with events) this is their event-type union; when it's
64
+ * empty (the package itself, or a no-events project) it falls back to `string`
65
+ * so the bridge/trigger types stay sound rather than collapsing to `never`.
66
+ */
67
+ type EventTypeName = keyof DomainEventRegistry extends never ? string : keyof DomainEventRegistry & string;
68
+ /**
69
+ * The concrete event interface for a given `type`. Resolves to the consumer's
70
+ * registered interface when the registry knows `T`; otherwise (the fallback
71
+ * `string` case, or an unregistered literal) widens to the structural
72
+ * `DomainEvent` base so `event.type` / `event.id` / `event.payload` are still
73
+ * typed (payloads as `Record<string, unknown>`).
74
+ */
75
+ type EventOfType<T extends EventTypeName> = T extends keyof DomainEventRegistry ? DomainEventRegistry[T] : DomainEvent;
76
+
77
+ export type { DomainEventRegistry, EventOfType, EventTypeName };
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=event-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,4 +1,5 @@
1
1
  export { DomainEvent, DrizzleTransaction, IEventBus } from './event-bus.protocol.js';
2
+ export { DomainEventRegistry, EventOfType, EventTypeName } from './event-registry.js';
2
3
  export { EventPage, EventSummary, IEventReadPort, ListEventsQuery } from './event-read.protocol.js';
3
4
  export { EVENTS_MODULE_OPTIONS, EVENTS_MULTI_TENANT, EVENT_BUS, EVENT_READ_PORT, TYPED_EVENT_BUS } from './events.tokens.js';
4
5
  export { TypedEventBus } from './generated/bus.js';
@@ -53,8 +53,8 @@ import '@nestjs/common';
53
53
  import './events/event-read.protocol.js';
54
54
  import 'drizzle-orm/pg-core';
55
55
  import 'drizzle-orm';
56
- import '../../job-orchestrator.protocol-CARhMLCO.js';
57
- import './events/generated/types.js';
56
+ import '../../job-orchestrator.protocol-DubMVbm9.js';
57
+ import './events/event-registry.js';
58
58
  import './integration/integration-field-diff.protocol.js';
59
59
  import 'zod';
60
60
  import '../base-classes/tenant-context.js';