mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-06 22:09:44 +02:00
* fix(realtime): invalidate workspace queries on WSClient instance change When switching workspaces, the old WSClient is torn down and a new one is created. Events emitted during the transition are lost because onReconnect only fires for reconnections within the same instance. Add an effect that tracks the WSClient instance via useRef and, on detecting a non-initial new instance, invalidates all workspace-scoped queries (same set as onReconnect). The first assignment is skipped to avoid redundant refetches on initial mount. Closes multica-ai/multica#2562 Co-authored-by: multica-agent <github@multica.ai> * refactor(realtime): extract shared invalidation helper + add ws instance test - Extract invalidateWorkspaceScopedQueries() to deduplicate the invalidation key list shared by onReconnect and ws-instance-change effects - Add hook test covering: first ws skip, null gap no-op, new instance invalidates exactly once, same instance no re-invalidation Addresses review nits from PR #2665. Co-authored-by: multica-agent <github@multica.ai> --------- Co-authored-by: multica-agent <github@multica.ai>
120 lines
4.6 KiB
JSON
120 lines
4.6 KiB
JSON
{
|
|
"name": "@multica/core",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"typecheck": "tsc --noEmit",
|
|
"lint": "eslint .",
|
|
"test": "vitest run"
|
|
},
|
|
"exports": {
|
|
".": "./index.ts",
|
|
"./types": "./types/index.ts",
|
|
"./types/*": "./types/*.ts",
|
|
"./api": "./api/index.ts",
|
|
"./api/client": "./api/client.ts",
|
|
"./api/schema": "./api/schema.ts",
|
|
"./api/ws-client": "./api/ws-client.ts",
|
|
"./config": "./config/index.ts",
|
|
"./auth": "./auth/index.ts",
|
|
"./workspace": "./workspace/index.ts",
|
|
"./workspace/queries": "./workspace/queries.ts",
|
|
"./workspace/mutations": "./workspace/mutations.ts",
|
|
"./workspace/hooks": "./workspace/hooks.ts",
|
|
"./issues": "./issues/index.ts",
|
|
"./issues/queries": "./issues/queries.ts",
|
|
"./issues/mutations": "./issues/mutations.ts",
|
|
"./issues/ws-updaters": "./issues/ws-updaters.ts",
|
|
"./issues/config": "./issues/config/index.ts",
|
|
"./issues/config/status": "./issues/config/status.ts",
|
|
"./issues/config/priority": "./issues/config/priority.ts",
|
|
"./issues/stores": "./issues/stores/index.ts",
|
|
"./issues/stores/view-store-context": "./issues/stores/view-store-context.tsx",
|
|
"./issues/stores/*": "./issues/stores/*.ts",
|
|
"./inbox": "./inbox/index.ts",
|
|
"./inbox/queries": "./inbox/queries.ts",
|
|
"./inbox/mutations": "./inbox/mutations.ts",
|
|
"./inbox/ws-updaters": "./inbox/ws-updaters.ts",
|
|
"./notification-preferences": "./notification-preferences/index.ts",
|
|
"./notification-preferences/queries": "./notification-preferences/queries.ts",
|
|
"./notification-preferences/mutations": "./notification-preferences/mutations.ts",
|
|
"./chat": "./chat/index.ts",
|
|
"./chat/queries": "./chat/queries.ts",
|
|
"./chat/mutations": "./chat/mutations.ts",
|
|
"./runtimes": "./runtimes/index.ts",
|
|
"./runtimes/queries": "./runtimes/queries.ts",
|
|
"./runtimes/mutations": "./runtimes/mutations.ts",
|
|
"./runtimes/hooks": "./runtimes/hooks.ts",
|
|
"./runtimes/custom-pricing-store": "./runtimes/custom-pricing-store.ts",
|
|
"./dashboard": "./dashboard/index.ts",
|
|
"./dashboard/queries": "./dashboard/queries.ts",
|
|
"./agents": "./agents/index.ts",
|
|
"./agents/queries": "./agents/queries.ts",
|
|
"./agents/derive-presence": "./agents/derive-presence.ts",
|
|
"./agents/use-agent-presence": "./agents/use-agent-presence.ts",
|
|
"./agents/visibility-label": "./agents/visibility-label.ts",
|
|
"./agents/stores": "./agents/stores/index.ts",
|
|
"./squads": "./squads/index.ts",
|
|
"./squads/stores": "./squads/stores/index.ts",
|
|
"./permissions": "./permissions/index.ts",
|
|
"./projects": "./projects/index.ts",
|
|
"./projects/queries": "./projects/queries.ts",
|
|
"./projects/mutations": "./projects/mutations.ts",
|
|
"./projects/config": "./projects/config.ts",
|
|
"./labels": "./labels/index.ts",
|
|
"./labels/queries": "./labels/queries.ts",
|
|
"./labels/mutations": "./labels/mutations.ts",
|
|
"./autopilots": "./autopilots/index.ts",
|
|
"./autopilots/queries": "./autopilots/queries.ts",
|
|
"./autopilots/mutations": "./autopilots/mutations.ts",
|
|
"./pins": "./pins/index.ts",
|
|
"./pins/queries": "./pins/queries.ts",
|
|
"./pins/mutations": "./pins/mutations.ts",
|
|
"./github": "./github/index.ts",
|
|
"./github/queries": "./github/queries.ts",
|
|
"./feedback": "./feedback/index.ts",
|
|
"./feedback/mutations": "./feedback/mutations.ts",
|
|
"./realtime": "./realtime/index.ts",
|
|
"./navigation": "./navigation/index.ts",
|
|
"./modals": "./modals/index.ts",
|
|
"./onboarding": "./onboarding/index.ts",
|
|
"./paths": "./paths/index.ts",
|
|
"./hooks": "./hooks.tsx",
|
|
"./hooks/*": "./hooks/*.ts",
|
|
"./query-client": "./query-client.ts",
|
|
"./provider": "./provider.tsx",
|
|
"./logger": "./logger.ts",
|
|
"./utils": "./utils.ts",
|
|
"./constants/*": "./constants/*.ts",
|
|
"./platform": "./platform/index.ts",
|
|
"./analytics": "./analytics/index.ts",
|
|
"./i18n": "./i18n/index.ts",
|
|
"./i18n/react": "./i18n/react.ts",
|
|
"./i18n/browser": "./i18n/browser.ts"
|
|
},
|
|
"dependencies": {
|
|
"@formatjs/intl-localematcher": "catalog:",
|
|
"@tanstack/react-query": "catalog:",
|
|
"@tanstack/react-query-devtools": "^5.96.2",
|
|
"i18next": "catalog:",
|
|
"posthog-js": "catalog:",
|
|
"react-i18next": "catalog:",
|
|
"zod": "catalog:",
|
|
"zustand": "catalog:"
|
|
},
|
|
"peerDependencies": {
|
|
"react": "catalog:"
|
|
},
|
|
"devDependencies": {
|
|
"@multica/tsconfig": "workspace:*",
|
|
"@testing-library/react": "catalog:",
|
|
"@types/react": "catalog:",
|
|
"jsdom": "catalog:",
|
|
"react": "catalog:",
|
|
"react-dom": "catalog:",
|
|
"typescript": "catalog:",
|
|
"vitest": "catalog:"
|
|
}
|
|
}
|