Skip to content

feat: build replacement ddp server#1789

Open
Julusian wants to merge 5 commits into
Sofie-Automation:mainfrom
SuperFlyTV:feat/replace-ddp-server
Open

feat: build replacement ddp server#1789
Julusian wants to merge 5 commits into
Sofie-Automation:mainfrom
SuperFlyTV:feat/replace-ddp-server

Conversation

@Julusian

@Julusian Julusian commented Jul 1, 2026

Copy link
Copy Markdown
Member

About the Contributor

Type of Contribution

This pull request is posted on behalf of Superfly

This is part of a series of PRs aiming to replace meteor.

This builds upon #1785 & #1783 (a majority of this diff is from these)

Current Behavior

We are relying on meteor for the ddp driver. To be able to leave meteor we need our own standalone implementation

New Behavior

This builds a from scratch ddp server.
Following on from #1785 means that we already have a single registry of all the publications and methods to register on the server.

Some ddp message typings from server-core-integration have been moved into shared-lib so that the server side can use the same types.

I haven't yet figured out how to disable the meteor default ddp server, so this is currently opt-in under the path /ddp-next/websocket over the existing meteor http server. If the env var STANDALONE_DDP_SERVER_ENABLED=1 is set, this will be passed through to the ui for use instead of the default server.

This intentionally has touched the ui as little as possible, the only changes are to drop some already dead code and to support using this alternate path.

As a bonus of this, we are no longer constrained to the dnt header for the auth implementation, so this is now configurable with the SOFIE_PERMISSIONS_HEADER env var, but defaults to dnt for backwards compatibility.

There are a couple of lines of overlap here with #1786, specifically around publishing a cursor, so I expect a minor merge conflict between them. It should generally be safe though, as the cursor publishing contract is the same in both branches.

Testing

  • I have added one or more unit tests for this PR
  • I have updated the relevant unit tests
  • No unit test changes are needed for this PR

Affected areas

Time Frame

Other Information

Status

  • PR is ready to be reviewed.
  • The functionality has been tested by the author.
  • Relevant unit tests has been added / updated.
  • Relevant documentation (code comments, system documentation) has been added / updated.

@Julusian Julusian added the Contribution from SuperFly.tv Contributions sponsored by SuperFly.tv label Jul 1, 2026
@coderabbitai

coderabbitai Bot commented Jul 1, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: aba13795-d4ae-457d-a55e-b041fbda7e89

📥 Commits

Reviewing files that changed from the base of the PR and between e6916ef and 35ff5a3.

⛔ Files ignored due to path filters (1)
  • meteor/yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (47)
  • meteor/__mocks__/_setupMocks.ts
  • meteor/__mocks__/meteor-ejson.ts
  • meteor/__mocks__/meteor.ts
  • meteor/__mocks__/mongo.ts
  • meteor/package.json
  • meteor/scripts/babel-jest.js
  • meteor/server/Connections.ts
  • meteor/server/__tests__/Connections.test.ts
  • meteor/server/api/__tests__/userActions/general.test.ts
  • meteor/server/api/__tests__/userActions/system.test.ts
  • meteor/server/api/rest/koa.ts
  • meteor/server/api/rest/v0/index.ts
  • meteor/server/api/user.ts
  • meteor/server/collections/implementations/asyncCollection.ts
  • meteor/server/collections/implementations/mock.ts
  • meteor/server/ddp-server/ConnectionRegistry.ts
  • meteor/server/ddp-server/DdpConnection.ts
  • meteor/server/ddp-server/DdpPublicationContext.ts
  • meteor/server/ddp-server/DdpSession.ts
  • meteor/server/ddp-server/Heartbeat.ts
  • meteor/server/ddp-server/SessionCollectionView.ts
  • meteor/server/ddp-server/SessionDocumentView.ts
  • meteor/server/ddp-server/__tests__/DdpConnection.test.ts
  • meteor/server/ddp-server/__tests__/DdpPublicationContext.test.ts
  • meteor/server/ddp-server/__tests__/DdpSession.test.ts
  • meteor/server/ddp-server/__tests__/Heartbeat.test.ts
  • meteor/server/ddp-server/__tests__/SessionCollectionView.test.ts
  • meteor/server/ddp-server/__tests__/clientServerIntegration.test.ts
  • meteor/server/ddp-server/__tests__/methodDispatch.test.ts
  • meteor/server/ddp-server/__tests__/subscriptionDispatch.test.ts
  • meteor/server/ddp-server/__tests__/wireCodec.test.ts
  • meteor/server/ddp-server/config.ts
  • meteor/server/ddp-server/index.ts
  • meteor/server/ddp-server/methodDispatch.ts
  • meteor/server/ddp-server/subscriptionDispatch.ts
  • meteor/server/ddp-server/wireCodec.ts
  • meteor/server/lib/clientAddress.ts
  • meteor/server/main.ts
  • meteor/server/publicationRegistry.ts
  • meteor/server/publications/lib/lib.ts
  • meteor/server/security/auth.ts
  • packages/meteor-lib/src/userPermissions.ts
  • packages/webui/src/client/collections/lib.ts
  • packages/webui/src/meteor/ddp/client_convenience.js
  • packages/webui/src/meteor/meteor.d.ts
  • packages/webui/src/meteor/socket-stream-client/urls.js
  • packages/webui/vite.config.mts
💤 Files with no reviewable changes (4)
  • packages/webui/src/client/collections/lib.ts
  • packages/meteor-lib/src/userPermissions.ts
  • meteor/mocks/meteor-ejson.ts
  • packages/webui/src/meteor/meteor.d.ts
✅ Files skipped from review due to trivial changes (3)
  • meteor/server/ddp-server/tests/DdpConnection.test.ts
  • meteor/server/ddp-server/tests/Heartbeat.test.ts
  • meteor/server/ddp-server/tests/methodDispatch.test.ts
🚧 Files skipped from review as they are similar to previous changes (38)
  • packages/webui/vite.config.mts
  • meteor/mocks/_setupMocks.ts
  • meteor/server/api/tests/userActions/system.test.ts
  • meteor/mocks/mongo.ts
  • meteor/server/ddp-server/tests/subscriptionDispatch.test.ts
  • meteor/scripts/babel-jest.js
  • meteor/server/ddp-server/config.ts
  • meteor/server/ddp-server/index.ts
  • meteor/server/ddp-server/ConnectionRegistry.ts
  • meteor/server/ddp-server/tests/wireCodec.test.ts
  • meteor/server/collections/implementations/mock.ts
  • meteor/server/ddp-server/subscriptionDispatch.ts
  • meteor/server/ddp-server/wireCodec.ts
  • meteor/server/ddp-server/Heartbeat.ts
  • meteor/server/main.ts
  • meteor/server/ddp-server/DdpConnection.ts
  • meteor/server/collections/implementations/asyncCollection.ts
  • meteor/server/lib/clientAddress.ts
  • packages/webui/src/meteor/ddp/client_convenience.js
  • meteor/server/tests/Connections.test.ts
  • meteor/server/ddp-server/tests/SessionCollectionView.test.ts
  • meteor/server/ddp-server/tests/DdpPublicationContext.test.ts
  • meteor/server/Connections.ts
  • meteor/package.json
  • meteor/server/ddp-server/tests/DdpSession.test.ts
  • meteor/server/ddp-server/methodDispatch.ts
  • meteor/server/api/user.ts
  • meteor/server/ddp-server/DdpPublicationContext.ts
  • packages/webui/src/meteor/socket-stream-client/urls.js
  • meteor/mocks/meteor.ts
  • meteor/server/ddp-server/SessionCollectionView.ts
  • meteor/server/api/rest/v0/index.ts
  • meteor/server/api/rest/koa.ts
  • meteor/server/ddp-server/tests/clientServerIntegration.test.ts
  • meteor/server/publicationRegistry.ts
  • meteor/server/ddp-server/SessionDocumentView.ts
  • meteor/server/publications/lib/lib.ts
  • meteor/server/ddp-server/DdpSession.ts

Walkthrough

This PR removes class-based registerClassToMeteorMethods/meteorPublish wiring in favor of explicit MethodRegistry/PublicationRegistry objects applied at startup, adds a standalone DDP WebSocket server, introduces shared DDP wire message types, and updates REST routing, security, connection tracking, mocks, and tests accordingly.

Changes

Registry-based method/publication wiring and standalone DDP server

Layer / File(s) Summary
Test mocks and helper infrastructure
meteor/__mocks__/*, meteor/__mocks__/helpers/*, meteor/package.json, meteor/scripts/babel-jest.js
Mock EJSON module swapped, Meteor.Error/onConnection/cursor collectionName updated in mocks, new registerAllMethodsForTest/registerAllPublicationsForTest helpers added, and dependencies/babel config updated for ws, ejson, and namespace-export transforms.
MethodRegistry core
meteor/server/methodRegistry.ts, meteor/server/methods.ts, meteor/server/methodRegistrations.ts, tests
New MethodRegistry class registers/wraps/applies Meteor methods; wrapMethodForExecution and nullable-argument types added; METHOD_REGISTRATIONS/registerAllApiMethods map API classes to wire methods.
PublicationRegistry core
meteor/server/publicationRegistry.ts, meteor/server/publications/lib/lib.ts, meteor/server/lib/customPublication/*, tests
New PublicationRegistry registers publications, tracks a Prometheus subscriber gauge, and exposes PublicationContext/driveSubscriptionFromCursor for cursor-driven subscriptions.
Server API classes exported with typings
meteor/server/api/*.ts, meteor/server/migration/api.ts, meteor/server/systemStatus/api.ts
API classes (ExternalMessageQueue, blueprints, client, mongo, peripheralDevice, playout, rundown, showStyles, snapshot, studio, system, triggeredActions, user, userActions, migration, systemStatus) are exported with explicit Promise return types, and their in-file registerClassToMeteorMethods calls are removed.
Test call sites migrated
meteor/server/**/__tests__/*.test.ts
Tests now call registerAllMethodsForTest() instead of relying on module import side effects.
Publications migrated to registry
meteor/server/publications/**
All publication modules register via registry.publish/registry.customPublish instead of module-level meteorPublish/meteorCustomPublish, threading an explicit context parameter.
REST API bound to registries
meteor/server/api/rest/*
bindRestApiRouter/createLegacyApiRouter accept MethodRegistry/PublicationRegistry, derive signatures dynamically, and Koa client-address extraction is centralized.
Startup orchestration, security, connection tracking
meteor/server/main.ts, meteor/server/security/*, meteor/server/Connections.ts, tests
main.ts builds/applies registries and starts REST/DDP servers and verification; security modules use MethodRegistry/PublicationContext; trackConnectionOpen/trackConnectionClose extracted with tests.
Standalone DDP WebSocket server
meteor/server/ddp-server/**
New standalone DDP server: connection registry, heartbeat, DdpSession message dispatch, merge-box views, publication context, wire codec, config, entry point, and extensive test coverage including end-to-end integration.
DDP wire types and client updates
packages/shared-lib/src/ddp/messageTypes.ts, packages/server-core-integration/**, packages/webui/**
Shared DDP v1 message types added; DDPClient and ws mock use them; webui DDP connection URL logic, login typings, and vite proxy config updated.

Estimated code review effort: 5 (Critical) | ~150 minutes

Sequence Diagram(s)

sequenceDiagram
  participant DDPClient
  participant DdpSession
  participant MethodRegistry
  participant PublicationRegistry
  participant DdpPublicationContext

  DDPClient->>DdpSession: connect (DDP version)
  DdpSession-->>DDPClient: connected
  DDPClient->>DdpSession: method message
  DdpSession->>MethodRegistry: get(methodName)
  MethodRegistry-->>DdpSession: handler
  DdpSession-->>DDPClient: result + updated
  DDPClient->>DdpSession: sub message
  DdpSession->>PublicationRegistry: get(publicationName)
  PublicationRegistry-->>DdpSession: publication callback
  DdpSession->>DdpPublicationContext: create context
  DdpPublicationContext->>DdpSession: added/changed/removed
  DdpSession-->>DDPClient: added/changed/removed, ready
Loading

Possibly related PRs

Suggested labels: Contribution from SuperFly.tv

Suggested reviewers: nytamin

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 42.22% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly matches the main change: adding a replacement standalone DDP server.
Description check ✅ Passed The description is directly related to the PR and accurately describes the standalone DDP server work.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

with some renaming.
this makes them reusable for a ddp server implementation
@Julusian Julusian force-pushed the feat/replace-ddp-server branch 4 times, most recently from 8d5b516 to e6916ef Compare July 1, 2026 14:14
@Julusian Julusian marked this pull request as ready for review July 1, 2026 14:14

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 13

🧹 Nitpick comments (1)
meteor/server/ddp-server/__tests__/clientServerIntegration.test.ts (1)

26-33: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Replace the fixed 30ms wire delay with condition-based waiting.

flushWire() makes these integration assertions scheduler-dependent, so this suite can get flaky on slower CI workers. Since the file already has waitFor, prefer waiting for the actual state/callback change instead of sleeping a fixed interval.

Suggested direction
- const flushWire = () => new Promise((resolve) => setTimeout(resolve, 30))
  const waitFor = async (cond: () => boolean, timeoutMs = 3000): Promise<void> => {
  	const start = Date.now()
  	while (!cond()) {
  		if (Date.now() - start > timeoutMs) throw new Error('waitFor timed out')
  		await new Promise((r) => setTimeout(r, 20))
  	}
  }

Then use waitFor(...) at the call sites, e.g. wait for updated to be called or for client.collections['TestColl']?.['d1'] to change.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@meteor/server/ddp-server/__tests__/clientServerIntegration.test.ts` around
lines 26 - 33, Replace the fixed-delay helper `flushWire()` in
`clientServerIntegration.test.ts` with condition-based waiting using the
existing `waitFor()` utility, so the tests wait for the actual callback/state
transition instead of sleeping 30ms. Update the call sites in the integration
tests to await the relevant condition (for example, `updated` being called or
`client.collections['TestColl']?.['d1']` changing), and remove any reliance on
scheduler timing.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@meteor/__mocks__/helpers/methods.ts`:
- Around line 12-15: Reset the shared Meteor method mock state before applying
the registry in registerAllMethodsForTest. The current helper only calls
registerAllApiMethods and registry.applyToMeteor, so MeteorMock.mockMethods can
retain stale entries between test runs; clear or replace that mock table as part
of this helper so each suite starts from a clean MethodRegistry-backed state.

In `@meteor/__mocks__/meteor.ts`:
- Around line 233-235: The Meteor mock’s onConnection is currently a no-op,
which drops handlers registered by Connections.ts at import time. Update
meteor/__mocks__/meteor.ts so onConnection stores the provided callbacks instead
of ignoring them, and add a small test helper to invoke the captured callbacks
when needed. Keep the fix localized around onConnection and any new helper so
tests can exercise connection-open/close tracking behavior.

In `@meteor/server/api/__tests__/userActions/general.test.ts`:
- Around line 8-10: Keep the deviceTriggers observer mocked in this test suite
before calling registerAllMethodsForTest(), because the helper now registers all
APIs and will otherwise start extra background observers that interfere with the
fake-timer/log assertions. Update the general.test.ts setup to follow the same
pattern used by sibling suites: mock ../../deviceTriggers/observer first, then
invoke registerAllMethodsForTest() so only the intended methods are active
during these tests.

In `@meteor/server/api/__tests__/userActions/system.test.ts`:
- Around line 25-27: Mock deviceTriggers/observer before calling
registerAllMethodsForTest() in system.test.ts, since that helper now pulls in
the broader method graph and can trigger unwanted side effects. Add the same
jest.mock('../../deviceTriggers/observer') shielding used in other affected
suites so the test setup stays isolated and background state does not leak
between cases.

In `@meteor/server/collections/implementations/asyncCollection.ts`:
- Around line 28-29: The publication cursor contract in AsyncCollection still
allows unnamed collections via collectionName: string | null, which lets
findWithCursor() return a cursor that will later fail in
driveSubscriptionFromCursor(). Tighten the cursor type and assignment in
asyncCollection.ts so collectionName is always a string, or explicitly throw in
findWithCursor() / the cursor-building path when this.name is missing before
returning the publication cursor. Use the existing collectionName and
findWithCursor symbols to locate the affected code, and ensure the same fix
covers the related assignment around the publication cursor return.

In `@meteor/server/ddp-server/ConnectionRegistry.ts`:
- Around line 18-25: Guard the lifecycle hooks in ConnectionRegistry so they
only run when the Set actually changes. In add() and remove(), use the return
value of this.sessions.add/delete to make the operations idempotent, and call
hooks.onOpen or hooks.onClose only when the session was newly added or actually
removed. This keeps DdpSession.handleConnect and DdpSession.close from
double-counting or firing onClose for sessions that never completed connect.

In `@meteor/server/ddp-server/methodDispatch.ts`:
- Around line 35-40: Delay the `updated` message in `methodDispatch` until the
method’s publication side effects have been flushed to the session, instead of
sending it immediately after `handler.apply(...)`. Update the flow around the
method result/`updated` send path so `ddpClient` will only see `updated` after
the matching `added`/`changed`/`removed` messages are deliverable, preserving
Meteor wire ordering. Use the existing method dispatch logic and the
`updatedCallbacks`/session flush point to place the barrier correctly.

In `@meteor/server/lib/clientAddress.ts`:
- Around line 28-31: The `parseClientAddress` helper is only returning the last
character of the RFC 7239 `for=` value because the repeated capture in the regex
overwrites `match[2]`. Update the regex in `parseClientAddress` so the entire
address is captured once, then return that full captured value instead of a
single character. Make sure the fix still handles bracketed IPv6 forms, since
`DdpConnection` and `koa` both rely on this helper for `clientAddress`.

In `@meteor/server/methodRegistry.ts`:
- Around line 67-95: `MethodRegistry.registerApi()` is mutating `this.methods`
incrementally, so a failure in one class member can leave earlier methods
registered and violate the atomic registration guarantee. Refactor
`registerApi()` to first validate/build the full set of entries for `orgClass`
(using `getAllClassMethods`, `methodEnum`, and any `wrapper`/`secret` handling)
without calling `this.add`, then only commit them to `this.methods` after all
methods are confirmed valid. Keep the existing error logging in the catch block,
and make sure any duplicate or missing wire-name error aborts the entire API
class registration before any partial state is stored.

In `@meteor/server/publicationRegistry.ts`:
- Around line 170-174: Exclude customPublish() entries from the legacy
REST/introspection signature path by updating the publication signature lookup
in PublicationRegistry so it applies the same isCustom filter as
getCursorPublication(). Locate the method that returns publication signatures
(the one around the exposed signatures block) and ensure it skips any
publication marked custom before returning or collecting its signature, so only
legacy cursor-backed publications are advertised.

In `@meteor/server/publications/rundown.ts`:
- Around line 59-63: The `partInstancesSimple` cursor is using
`pieceInstanceFields`, which only excludes `piece.*` paths and leaves
`part.privateData` included in `DBPartInstance` results. Update the projection
used by `partInstancesSimple` to a `DBPartInstance`-specific field specifier
that explicitly excludes the nested `part.privateData` data (and any other
`part.*` fields that should be omitted), instead of spreading
`pieceInstanceFields`; keep the fix localized around `partInstancesSimple` and
the projection constants near `pieceInstanceFields`.

In `@meteor/server/publications/timeline.ts`:
- Around line 41-45: The registry.publish callbacks in timeline.ts are missing
the trailing _token parameter, which changes the public signature derived by
PublicationRegistry. Update each affected callback (including the
timelineDatastore publication and the other registry.publish handlers in this
file) to accept the unused _token argument after context so the exposed
signature stays compatible for legacy REST/introspection consumers.

In `@packages/webui/src/meteor/socket-stream-client/urls.js`:
- Around line 53-57: The toWebsocketUrl/translateUrl path is no longer
preserving the DDP endpoint for root or base URLs, so explicit DDP.connect
callers can end up on the site root instead of /websocket. Update toWebsocketUrl
in urls.js so it still appends /websocket for base inputs like '/',
'http://host', and ddp+sockjs://host, or otherwise ensure every caller passes a
full endpoint path; verify the behavior around translateUrl and the exported
toWebsocketUrl function.

---

Nitpick comments:
In `@meteor/server/ddp-server/__tests__/clientServerIntegration.test.ts`:
- Around line 26-33: Replace the fixed-delay helper `flushWire()` in
`clientServerIntegration.test.ts` with condition-based waiting using the
existing `waitFor()` utility, so the tests wait for the actual callback/state
transition instead of sleeping 30ms. Update the call sites in the integration
tests to await the relevant condition (for example, `updated` being called or
`client.collections['TestColl']?.['d1']` changing), and remove any reliance on
scheduler timing.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a0009862-e69a-46f4-8cfe-c553f85ea182

📥 Commits

Reviewing files that changed from the base of the PR and between e282094 and e6916ef.

⛔ Files ignored due to path filters (3)
  • meteor/server/__tests__/__snapshots__/methodRegistry.test.ts.snap is excluded by !**/*.snap
  • meteor/server/__tests__/__snapshots__/publicationRegistry.test.ts.snap is excluded by !**/*.snap
  • meteor/yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (120)
  • meteor/.meteor/packages
  • meteor/__mocks__/_setupMocks.ts
  • meteor/__mocks__/helpers/methods.ts
  • meteor/__mocks__/helpers/publications.ts
  • meteor/__mocks__/meteor-ejson.ts
  • meteor/__mocks__/meteor.ts
  • meteor/__mocks__/mongo.ts
  • meteor/package.json
  • meteor/scripts/babel-jest.js
  • meteor/server/Connections.ts
  • meteor/server/__tests__/Connections.test.ts
  • meteor/server/__tests__/cronjobs.test.ts
  • meteor/server/__tests__/methodRegistry.test.ts
  • meteor/server/__tests__/publicationRegistry.test.ts
  • meteor/server/api/ExternalMessageQueue.ts
  • meteor/server/api/__tests__/client.test.ts
  • meteor/server/api/__tests__/externalMessageQueue.test.ts
  • meteor/server/api/__tests__/peripheralDevice.test.ts
  • meteor/server/api/__tests__/rundownLayouts.test.ts
  • meteor/server/api/__tests__/userActions/general.test.ts
  • meteor/server/api/__tests__/userActions/system.test.ts
  • meteor/server/api/blueprints/__tests__/api.test.ts
  • meteor/server/api/blueprints/api.ts
  • meteor/server/api/client.ts
  • meteor/server/api/ingest/debug.ts
  • meteor/server/api/mongo.ts
  • meteor/server/api/peripheralDevice.ts
  • meteor/server/api/playout/api.ts
  • meteor/server/api/playout/debug.ts
  • meteor/server/api/rest/api.ts
  • meteor/server/api/rest/koa.ts
  • meteor/server/api/rest/v0/__tests__/rest.test.ts
  • meteor/server/api/rest/v0/index.ts
  • meteor/server/api/rundown.ts
  • meteor/server/api/rundownLayouts.ts
  • meteor/server/api/showStyles.ts
  • meteor/server/api/snapshot.ts
  • meteor/server/api/studio/api.ts
  • meteor/server/api/system.ts
  • meteor/server/api/triggeredActions.ts
  • meteor/server/api/user.ts
  • meteor/server/api/userActions.ts
  • meteor/server/collections/implementations/asyncCollection.ts
  • meteor/server/collections/implementations/mock.ts
  • meteor/server/ddp-server/ConnectionRegistry.ts
  • meteor/server/ddp-server/DdpConnection.ts
  • meteor/server/ddp-server/DdpPublicationContext.ts
  • meteor/server/ddp-server/DdpSession.ts
  • meteor/server/ddp-server/Heartbeat.ts
  • meteor/server/ddp-server/SessionCollectionView.ts
  • meteor/server/ddp-server/SessionDocumentView.ts
  • meteor/server/ddp-server/__tests__/DdpConnection.test.ts
  • meteor/server/ddp-server/__tests__/DdpPublicationContext.test.ts
  • meteor/server/ddp-server/__tests__/DdpSession.test.ts
  • meteor/server/ddp-server/__tests__/Heartbeat.test.ts
  • meteor/server/ddp-server/__tests__/SessionCollectionView.test.ts
  • meteor/server/ddp-server/__tests__/clientServerIntegration.test.ts
  • meteor/server/ddp-server/__tests__/methodDispatch.test.ts
  • meteor/server/ddp-server/__tests__/subscriptionDispatch.test.ts
  • meteor/server/ddp-server/__tests__/wireCodec.test.ts
  • meteor/server/ddp-server/config.ts
  • meteor/server/ddp-server/index.ts
  • meteor/server/ddp-server/methodDispatch.ts
  • meteor/server/ddp-server/subscriptionDispatch.ts
  • meteor/server/ddp-server/wireCodec.ts
  • meteor/server/lib/clientAddress.ts
  • meteor/server/lib/customPublication/index.ts
  • meteor/server/lib/customPublication/publish.ts
  • meteor/server/main.ts
  • meteor/server/methodRegistrations.ts
  • meteor/server/methodRegistry.ts
  • meteor/server/methods.ts
  • meteor/server/migration/__tests__/migrations.test.ts
  • meteor/server/migration/api.ts
  • meteor/server/publicationRegistrations.ts
  • meteor/server/publicationRegistry.ts
  • meteor/server/publications/_publications.ts
  • meteor/server/publications/blueprintUpgradeStatus/publication.ts
  • meteor/server/publications/buckets.ts
  • meteor/server/publications/deviceTriggersPreview.ts
  • meteor/server/publications/externalEventSubscriptions.ts
  • meteor/server/publications/ingestStatus/publication.ts
  • meteor/server/publications/lib/lib.ts
  • meteor/server/publications/mountedTriggers.ts
  • meteor/server/publications/organization.ts
  • meteor/server/publications/packageManager/expectedPackages/publication.ts
  • meteor/server/publications/packageManager/packageContainers.ts
  • meteor/server/publications/packageManager/playoutContext.ts
  • meteor/server/publications/partInstancesUI/publication.ts
  • meteor/server/publications/partsUI/publication.ts
  • meteor/server/publications/peripheralDevice.ts
  • meteor/server/publications/peripheralDeviceForDevice.ts
  • meteor/server/publications/pieceContentStatusUI/bucket/publication.ts
  • meteor/server/publications/pieceContentStatusUI/rundown/publication.ts
  • meteor/server/publications/rundown.ts
  • meteor/server/publications/rundownPlaylist.ts
  • meteor/server/publications/segmentPartNotesUI/publication.ts
  • meteor/server/publications/showStyle.ts
  • meteor/server/publications/showStyleUI.ts
  • meteor/server/publications/studio.ts
  • meteor/server/publications/studioUI.ts
  • meteor/server/publications/system.ts
  • meteor/server/publications/timeline.ts
  • meteor/server/publications/translationsBundles.ts
  • meteor/server/publications/triggeredActionsUI.ts
  • meteor/server/security/auth.ts
  • meteor/server/security/check.ts
  • meteor/server/security/securityVerify.ts
  • meteor/server/systemStatus/__tests__/api.test.ts
  • meteor/server/systemStatus/__tests__/systemStatus.test.ts
  • meteor/server/systemStatus/api.ts
  • packages/meteor-lib/src/userPermissions.ts
  • packages/server-core-integration/src/__mocks__/ws.ts
  • packages/server-core-integration/src/lib/ddpClient.ts
  • packages/shared-lib/src/ddp/messageTypes.ts
  • packages/webui/src/client/collections/lib.ts
  • packages/webui/src/meteor/ddp/client_convenience.js
  • packages/webui/src/meteor/meteor.d.ts
  • packages/webui/src/meteor/socket-stream-client/urls.js
  • packages/webui/vite.config.mts
💤 Files with no reviewable changes (6)
  • meteor/.meteor/packages
  • packages/meteor-lib/src/userPermissions.ts
  • meteor/mocks/meteor-ejson.ts
  • packages/webui/src/meteor/meteor.d.ts
  • packages/webui/src/client/collections/lib.ts
  • meteor/server/publications/_publications.ts

Comment thread meteor/__mocks__/helpers/methods.ts
Comment thread meteor/__mocks__/meteor.ts
Comment thread meteor/server/api/__tests__/userActions/general.test.ts
Comment thread meteor/server/api/__tests__/userActions/system.test.ts
Comment thread meteor/server/collections/implementations/asyncCollection.ts
Comment thread meteor/server/methodRegistry.ts
Comment thread meteor/server/publicationRegistry.ts
Comment thread meteor/server/publications/rundown.ts
Comment thread meteor/server/publications/timeline.ts
Comment thread packages/webui/src/meteor/socket-stream-client/urls.js
@Julusian Julusian force-pushed the feat/replace-ddp-server branch from e6916ef to 6fbffcf Compare July 1, 2026 15:02
Julusian added 2 commits July 1, 2026 17:13
for now intended to run at a secondary path off the meteor ddp server
@Julusian Julusian force-pushed the feat/replace-ddp-server branch from 6fbffcf to 35ff5a3 Compare July 1, 2026 16:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Contribution from SuperFly.tv Contributions sponsored by SuperFly.tv

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant