Skip to content

feat: define reporting service contracts and dispatchers#1224

Open
alexs-mparticle wants to merge 13 commits intodevelopmentfrom
feat/reporting-service-migration-core
Open

feat: define reporting service contracts and dispatchers#1224
alexs-mparticle wants to merge 13 commits intodevelopmentfrom
feat/reporting-service-migration-core

Conversation

@alexs-mparticle
Copy link
Collaborator

@alexs-mparticle alexs-mparticle commented Mar 20, 2026

Summary

  • Defines IErrorReportingService and ILoggingService interfaces in src/reporting/types.ts
  • Adds ErrorReportingDispatcher and LoggingDispatcher for multi-service fan-out
  • Decouples Logger from reporting — Logger is now console-only
  • Removes concrete ReportingLogger implementation (moves to Rokt kit)
  • Removes Rokt-specific URLs from constants
  • Renames src/logging/ to src/reporting/
  • Exposes registerErrorReportingService() and registerLoggingService() on mParticle API

Companion kit PR: mparticle-integrations/mparticle-javascript-integration-rokt#70

Test plan

  • Lint, build, Jest tests pass (495 tests)
  • Verify registration APIs exposed on window.mParticle
  • Verify Logger.error() no longer triggers remote reporting

…dule

- Define IErrorReportingService, ILoggingService, ISDKError, ISDKLogEntry contracts
- Add ErrorReportingDispatcher and LoggingDispatcher for multi-service fan-out
- Decouple Logger from reporting (console-only now)
- Remove concrete ReportingLogger implementation (moves to kit)
- Remove Rokt-specific URLs from constants
- Rename src/logging/ to src/reporting/
- Expose registerErrorReportingService/registerLoggingService on mParticle API
@alexs-mparticle alexs-mparticle requested a review from a team as a code owner March 20, 2026 20:45
@cursor
Copy link

cursor bot commented Mar 20, 2026

PR Summary

Medium Risk
Medium risk because it changes core SDK initialization and error/log reporting behavior (removing built-in remote reporting and introducing new registration APIs), which could affect downstream integrations expecting prior ReportingLogger side effects.

Overview
Introduces new reporting abstractions in src/reporting/ (IErrorReportingService, ILoggingService, ErrorReportingDispatcher, LoggingDispatcher) to fan out structured errors/logs to registered services.

Decouples Logger from any remote reporting (console-only now), deletes the concrete ReportingLogger implementation, and removes Rokt-specific loggingUrl/errorUrl defaults and config handling.

Wires the new dispatchers into mp-instance/instance manager (new _registerErrorReportingService/_registerLoggingService APIs), updates IdentityAPIClient and RoktManager to emit structured reports (e.g., IDENTITY_REQUEST, IDENTITY_MISMATCH, ROKT_KIT_ATTACHED), and adjusts tests accordingly.

Written by Cursor Bugbot for commit f153c27. This will update automatically on new commits. Configure here.

@alexs-mparticle alexs-mparticle marked this pull request as draft March 20, 2026 20:55
- Add optional chaining for _ErrorReportingDispatcher in identityApiClient
  so tests without a mock dispatcher don't crash
- Add registerErrorReportingService and registerLoggingService to the
  expected public API keys in instance manager test
…ning

Reverts optional chaining on _ErrorReportingDispatcher.report() which
was masking potential bugs. Instead, properly adds ErrorReportingDispatcher
instances to all mock mpInstance objects in identity API client tests.
…uctor

- Wrap each service call in try-catch in ErrorReportingDispatcher and
  LoggingDispatcher so one failing service doesn't break fan-out
- Move dispatcher instantiation from runPreConfigFetchInitialization to
  mParticleInstance constructor so registration works before init()
- Destructure errorReporter in identityApiClient for cleaner usage
Rename registerErrorReportingService/registerLoggingService to
_registerErrorReportingService/_registerLoggingService to signal
these are internal APIs consumed by kits, not public.
Pass ErrorReportingDispatcher and LoggingDispatcher into RoktManager.init()
from mp-instance. Add INFO log on kit attach (ROKT_KIT_ATTACHED) and
WARNING reports on identity mismatch (IDENTITY_MISMATCH) alongside
existing logger.warning calls. Add new error codes to reporting types.
… mocks

The identity API client test mocks were missing _ErrorReportingDispatcher,
causing a TypeError when report() was called on 5xx errors. Added optional
chaining to the call site and added the mock to both test cases.
@alexs-mparticle alexs-mparticle marked this pull request as ready for review March 24, 2026 15:12
Merge development into feat/reporting-service-migration-core,
resolving conflicts in dist/ bundle files by accepting development's
versions (CI will regenerate these after merge).
@sonarqubecloud
Copy link

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant