Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .changeset/v11-remove-iuiservice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
"@objectstack/spec": major
"@objectstack/plugin-dev": major
---

Remove the deprecated `IUIService` contract (use `IMetadataService`) — 11.0.

`IUIService` (spec `contracts/ui-service.ts`) was superseded by `IMetadataService`
(views/dashboards are metadata: `metadata.get('view', …)` / `register(…)`). This
removes the dead interface and its dev stub:

- spec: delete `contracts/ui-service.ts` + its barrel export.
- plugin-dev: drop the bespoke `ui` dev stub (`createUIStub`). `'ui'` remains a
`CoreServiceName`, so dev mode still registers a generic stub for it via the
fallback path; only the obsolete view/dashboard methods are gone.

Use `IMetadataService` for view/dashboard CRUD.
7 changes: 0 additions & 7 deletions packages/plugins/plugin-dev/src/dev-plugin.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -176,13 +176,6 @@ describe('DevPlugin', () => {
expect(i18n.t('missing', 'en')).toBe('missing');
expect(Array.isArray(i18n.getLocales())).toBe(true);

// ── Verify IUIService contract ──
const ui = registeredServices.get('ui');
ui.registerView('test_view', { name: 'test_view', object: 'account' });
expect(ui.getView('test_view')).toBeDefined();
expect(Array.isArray(ui.listViews())).toBe(true);
expect(ui.listViews('account')).toHaveLength(1);

// ── Verify IWorkflowService contract ──
const workflow = registeredServices.get('workflow');
const transResult = await workflow.transition({ recordId: 'r1', object: 'order', targetState: 'approved' });
Expand Down
20 changes: 0 additions & 20 deletions packages/plugins/plugin-dev/src/dev-plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,25 +160,6 @@ function createI18nStub() {
};
}

/** IUIService — delegates to IMetadataService when available, falls back to in-memory Map */
function createUIStub() {
const views = new Map<string, any>();
const dashboards = new Map<string, any>();
return {
_dev: true, _serviceName: 'ui',
_deprecated: 'Use IMetadataService instead. This stub will be removed in v4.0.0.',
getView(name: string) { return views.get(name); },
listViews(object?: string) {
const all = [...views.values()];
return object ? all.filter(v => v.object === object) : all;
},
getDashboard(name: string) { return dashboards.get(name); },
listDashboards() { return [...dashboards.values()]; },
registerView(name: string, definition: unknown) { views.set(name, definition); },
registerDashboard(name: string, definition: unknown) { dashboards.set(name, definition); },
};
}

/** IWorkflowService — in-memory workflow state stub */
function createWorkflowStub() {
const states = new Map<string, string>(); // recordKey → currentState
Expand Down Expand Up @@ -299,7 +280,6 @@ const DEV_STUB_FACTORIES: Record<string, () => Record<string, any>> = {
'notification': createNotificationStub,
'ai': createAIStub,
'i18n': createI18nStub,
'ui': createUIStub,
'workflow': createWorkflowStub,
'metadata': createMetadataStub,
'data': createDataStub,
Expand Down
1 change: 0 additions & 1 deletion packages/spec/api-surface.json
Original file line number Diff line number Diff line change
Expand Up @@ -3498,7 +3498,6 @@
"ITeamGraphService (interface)",
"ITenantRouter (interface)",
"ITypedEventEmitter (interface)",
"IUIService (interface)",
"IWorkflowService (interface)",
"ImportObjectOpts (interface)",
"ImportObjectResult (interface)",
Expand Down
1 change: 0 additions & 1 deletion packages/spec/src/contracts/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ export * from './job-service.js';
export * from './ai-service.js';
export * from './llm-adapter.js';
export * from './i18n-service.js';
export * from './ui-service.js';
export * from './workflow-service.js';
export * from './feed-service.js';
export * from './export-service.js';
Expand Down
83 changes: 0 additions & 83 deletions packages/spec/src/contracts/ui-service.test.ts

This file was deleted.

76 changes: 0 additions & 76 deletions packages/spec/src/contracts/ui-service.ts

This file was deleted.