{"locator":"npm:@open-mercato/events","path":"@open-mercato/events","npm":"@open-mercato/events","github":null,"repoPath":"open-mercato/open-mercato#main/packages/events","kind":"module","type":"official","enterprise":false,"title":"Events","summary":"Event bus with module subscribers, inline or persistent delivery and a queue worker for async events.","whenToUse":"Use when modules must react to each other's domain events, with retries for persistent ones. New apps already enable it.","whenNotToUse":null,"category":"storage-infrastructure","tags":["events","subscribers","queue"],"providers":[],"moduleIds":["events"],"requires":[],"replaces":[],"slotConflicts":[],"renamedFrom":[],"supersededBy":null,"alternatives":[],"status":"active","listed":true,"featured":false,"license":{"spdx":"MIT","kind":"osi","mismatch":false},"version":{"latest":"0.9.0","preview":null,"publishedAt":"2026-10-09","integrity":"sha512-YD9mGFduluVEmvas16mw9fSHXxL+7p3YG1kNdbskDMWFtDzcp2uKwyJTgp/U7Zi8YrfAjAzc0VBNMEE0LN9Buw==","installableFrom":"2026-10-09","gitRef":null,"recommended":{"0.9":null,"0.8":null,"next":null}},"identity":{"builtFrom":"verified","claimed":false,"source":"npm"},"compat":{"builtFor":{"range":null,"kind":"missing","lines":[]},"lines":{},"verifiedOn":[],"inPresets":["0.8","0.9","next"],"ships":{"0.9":"0.9.0","0.8":"0.8.0","next":"0.10.1-develop.7701.1.87b1ad4224"},"inEmptyPreset":["0.8","0.9","next"]},"anatomy":{"version":"0.9.0","coverage":"partial","counts":{"entities":0,"tables":0,"migrations":0,"routes":2,"publicRoutes":0,"aclFeatures":0,"eventsEmitted":0,"eventsConsumed":0,"backendPages":0,"frontendPages":0,"widgets":0,"workers":1,"cli":0,"aiTools":0,"aiAgents":0,"extends":0},"lists":{"aclFeatures":[],"eventsEmitted":[],"eventsConsumed":[],"env":["OM_EVENTS_SSE_AUTH_REVALIDATION_INTERVAL_MS","OM_EVENTS_SSE_CONNECTION_MAX_AGE_MS","WORKERS_EVENTS_CONCURRENCY","DATABASE_URL","OM_BROADCAST_COALESCE_INTERVAL_MS","OM_EVENTS_SHARED_PRODUCER","QUEUE_STRATEGY"],"hosts":[],"tables":[],"publicRoutes":[],"credentials":[]},"callout":"ADDS 2 ROUTES (0 PUBLIC)","diff":{"from":"0.8.0","added":{"tables":0,"routes":0,"publicRoutes":0,"aclFeatures":0,"env":["OM_EVENTS_SSE_AUTH_REVALIDATION_INTERVAL_MS","OM_EVENTS_SSE_CONNECTION_MAX_AGE_MS","OM_BROADCAST_COALESCE_INTERVAL_MS"],"hosts":[]},"removed":{"tables":0,"routes":0,"aclFeatures":0}}},"signals":{"receipt":{"0.9":"untested","0.8":"untested","next":"untested"},"fit":{"0.9":"ok","0.8":"ok","next":"unknown"},"anatomy":"partial","supplyChain":{"status":"ok","reasons":[]},"hygiene":{"status":"ok","failing":[]},"maintenance":{"status":"current","lastRelease":"2026-10-09","catchUpDays":null},"declaredVsObserved":{"status":"mismatch","notes":["No Open Mercato peer range; verified on no line."]}},"tier":"listed","quality":null,"agentPolicy":{"0.9":{"decision":"ask","reasons":[{"code":"NOT_VERIFIED","text":"Not yet tested in a new app on 0.9."},{"code":"IN_PRESET","text":"Nothing to install: a new app already registers events in src/modules.ts."}]},"0.8":{"decision":"ask","reasons":[{"code":"NOT_VERIFIED","text":"Not yet tested in a new app on 0.8."},{"code":"IN_PRESET","text":"Nothing to install: a new app already registers events in src/modules.ts."}]},"next":{"decision":"ask","reasons":[{"code":"NOT_VERIFIED","text":"Not yet tested in a new app on next."},{"code":"IN_PRESET","text":"Nothing to install: a new app already registers events in src/modules.ts."}]}},"install":{"cli":"yarn add @open-mercato/events@0.9.0","cmm":"npx create-mercato-module install @open-mercato/events@0.9.0","needsAllowThirdParty":false,"moduleFlag":null},"stats":{"downloads30d":46214,"stars":null},"sigil":{"glyph":"0200100","phase":86,"publicRoutes":false},"links":{"page":"https://modules.openmercato.com/m/@open-mercato/events","md":"https://modules.openmercato.com/m/@open-mercato/events.md","json":"https://modules.openmercato.com/m/@open-mercato/events.json","facts":"https://modules.openmercato.com/m/@open-mercato/events/v/0.9.0/facts.json","npm":"https://www.npmjs.com/package/@open-mercato/events","repo":"https://github.com/open-mercato/open-mercato","docs":"https://docs.openmercato.com/framework/events/overview"},"addedAt":"2026-10-23","updatedAt":"2026-10-29T13:11:45Z","_meta":{"com.openmercato.modules/installable":{"0.9":"0.9.0","0.8":"0.8.0","next":"0.9.0"}},"facts":{"factsVersion":1,"extractor":{"engine":"@open-mercato/cli@0.9.0 extractModuleFacts","factsContractVersion":2,"catalog":"om-modules rentgen 1","durationMs":56},"package":{"locator":"npm:@open-mercato/events","name":"@open-mercato/events","version":"0.9.0","integrity":"sha512-YD9mGFduluVEmvas16mw9fSHXxL+7p3YG1kNdbskDMWFtDzcp2uKwyJTgp/U7Zi8YrfAjAzc0VBNMEE0LN9Buw==","source":"npm-tarball","gitRef":null},"gate":{"installable":true,"needsModuleFlag":false,"reason":null,"modules":[{"id":"events","src":true,"dist":true}]},"kind":"module","license":{"value":"MIT","kind":"osi","mismatch":false,"sources":{"packageJson":"MIT","licenseFile":null,"moduleInfo":null,"integrationTs":null}},"omPeers":{},"dependencies":{"@open-mercato/queue":"0.9.0","@open-mercato/shared":"0.9.0","pg":"8.23.0"},"agentsMd":true,"readmeExcerpt":"# @open-mercato/events 📡\n\nEvent-driven backbone for Open Mercato modules.\n\n`@open-mercato/events` enables typed event publication/subscription with support for ephemeral and persistent delivery patterns.\n\n## Why this package ✨\n\n- 🧩 Decouple modules with clean event contracts\n- 🔁 Persistent subscribers for reliable side effects\n- ⚡ Ephemeral events for real-time UX flows\n- 🧠 Works with queue workers for scalable processing\n\n## Install\n\n```bash\nyarn add @open-mercato/events\n```\n\n## Learn more\n\n- GitHub (package): https://github.com/open-mercato/open-mercato/tree/main/packages/events\n- GitHub (project): https://github.com/open-mercato/open-mercato\n- Docs: https://docs.openmercato.com\n\n## License\n\nMIT\n","modules":[{"id":"events","title":"Events","description":"Event bus and subscriber dispatch","requires":[],"ejectable":null,"data":{"entities":[],"migrations":{"count":0,"first":null,"last":null},"customEntities":0},"http":{"routes":[{"method":"GET","path":"/api/events","requireAuth":true,"requireFeatures":["workflows.view"],"hasOpenApi":true,"src":{"file":"src/modules/events/api/route.ts","line":52}},{"method":"GET","path":"/api/events/stream","requireAuth":true,"requireFeatures":[],"hasOpenApi":true,"src":{"file":"src/modules/events/api/stream/route.ts","line":344}}],"legacyRouteFiles":0,"authResolved":1},"security":{"aclFeatures":[],"setupDefaultRoleFeatures":false},"events":{"emits":[],"subscribes":[]},"ui":{"backendPages":[],"frontendPages":[],"widgets":0,"extensionHosts":0},"background":{"workers":[{"queue":"events"}],"cli":[]},"ai":{"tools":[],"agents":[]},"config":{"credentials":[],"env":[{"name":"OM_EVENTS_SSE_AUTH_REVALIDATION_INTERVAL_MS","src":{"file":"src/modules/events/api/stream/route.ts","line":58}},{"name":"OM_EVENTS_SSE_CONNECTION_MAX_AGE_MS","src":{"file":"src/modules/events/api/stream/route.ts","line":66}},{"name":"WORKERS_EVENTS_CONCURRENCY","src":{"file":"src/modules/events/workers/events.worker.ts","line":13}},{"name":"DATABASE_URL","src":{"file":"src/bridge.ts","line":52}},{"name":"OM_BROADCAST_COALESCE_INTERVAL_MS","src":{"file":"src/broadcast-coalescer.ts","line":59}},{"name":"OM_EVENTS_SHARED_PRODUCER","src":{"file":"src/bus.ts","line":241}},{"name":"QUEUE_STRATEGY","src":{"file":"src/bus.ts","line":355}}]},"network":{"hosts":[],"undeclared":[]},"extends":[],"omImports":{"@open-mercato/queue":{".":["JobContext","Queue","QueuedJob","WorkerMeta","createQueue"]},"@open-mercato/shared":{"lib/api/context":["resolveRequestContext"],"lib/auth/principal-service":["OrganizationScopeService"],"lib/boolean":["parseBooleanWithDefault"],"lib/db/ssl":["getSslConfig"],"lib/events/patterns":["matchEventPattern"],"lib/logger":["createLogger"],"lib/modules/resource-usage":["inferModuleIdFromResourceId","withModuleResourceUsage"],"lib/number":["parseNumberWithDefault"],"lib/openapi":["OpenApiRouteDoc"],"lib/redis/connection":["getRedisUrlOrThrow"],"modules/events":["getDeclaredEvents","isBroadcastEvent","isCoalescedBroadcastEvent","isCrossProcessBroadcastEvent","isPrivateCrossProcessEventEmitter"],"modules/registry":["ModuleInfo"]}},"collisionKeys":{"moduleId":"events","tables":[],"aclFeatures":[],"eventIds":[],"backendRoutes":[]},"publicRoutes":0,"glyph":"0200100","lint":[{"code":"ships-tests","severity":"info","message":"The tarball ships test files.","anchor":null,"src":null}]}],"coverage":{"routesAuthResolved":1,"integrationTs":"absent"},"diagnostics":[]},"receipts":[],"rules":[{"id":"LST-1","pass":true,"detail":"Descriptor is valid."},{"id":"LST-2","pass":true,"detail":"Stable version exists and is not deprecated."},{"id":"LST-3","pass":true,"detail":"src/modules and dist/modules pair found."},{"id":"LST-4","pass":true,"detail":"License: MIT."},{"id":"LST-5","pass":true,"detail":"No known malware or open critical advisory."},{"id":"LST-6","pass":true,"detail":"Name reviewed at merge."},{"id":"VER-1","pass":false,"detail":"Not yet tested in a new app on 0.9."},{"id":"VER-2","pass":true,"detail":"Fits statically on 0.9: ok."},{"id":"VER-3","pass":true,"detail":"Supply chain: ok."},{"id":"VER-4","pass":true,"detail":"No lint errors."},{"id":"VER-5","pass":true,"detail":"No repository in the descriptor to compare."}],"maintainers":["pat-lewczuk","patryk.andrzejewski","piotrkarwatka"]}
