Skip to content

Commit 638f472

Browse files
authored
feat(spec)!: remove deprecated IUIService contract — use IMetadataService (11.0) (#2374)
1 parent 50ef82b commit 638f472

7 files changed

Lines changed: 17 additions & 188 deletions

File tree

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
"@objectstack/spec": major
3+
"@objectstack/plugin-dev": major
4+
---
5+
6+
Remove the deprecated `IUIService` contract (use `IMetadataService`) — 11.0.
7+
8+
`IUIService` (spec `contracts/ui-service.ts`) was superseded by `IMetadataService`
9+
(views/dashboards are metadata: `metadata.get('view', …)` / `register(…)`). This
10+
removes the dead interface and its dev stub:
11+
12+
- spec: delete `contracts/ui-service.ts` + its barrel export.
13+
- plugin-dev: drop the bespoke `ui` dev stub (`createUIStub`). `'ui'` remains a
14+
`CoreServiceName`, so dev mode still registers a generic stub for it via the
15+
fallback path; only the obsolete view/dashboard methods are gone.
16+
17+
Use `IMetadataService` for view/dashboard CRUD.

packages/plugins/plugin-dev/src/dev-plugin.test.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,6 @@ describe('DevPlugin', () => {
176176
expect(i18n.t('missing', 'en')).toBe('missing');
177177
expect(Array.isArray(i18n.getLocales())).toBe(true);
178178

179-
// ── Verify IUIService contract ──
180-
const ui = registeredServices.get('ui');
181-
ui.registerView('test_view', { name: 'test_view', object: 'account' });
182-
expect(ui.getView('test_view')).toBeDefined();
183-
expect(Array.isArray(ui.listViews())).toBe(true);
184-
expect(ui.listViews('account')).toHaveLength(1);
185-
186179
// ── Verify IWorkflowService contract ──
187180
const workflow = registeredServices.get('workflow');
188181
const transResult = await workflow.transition({ recordId: 'r1', object: 'order', targetState: 'approved' });

packages/plugins/plugin-dev/src/dev-plugin.ts

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -160,25 +160,6 @@ function createI18nStub() {
160160
};
161161
}
162162

163-
/** IUIService — delegates to IMetadataService when available, falls back to in-memory Map */
164-
function createUIStub() {
165-
const views = new Map<string, any>();
166-
const dashboards = new Map<string, any>();
167-
return {
168-
_dev: true, _serviceName: 'ui',
169-
_deprecated: 'Use IMetadataService instead. This stub will be removed in v4.0.0.',
170-
getView(name: string) { return views.get(name); },
171-
listViews(object?: string) {
172-
const all = [...views.values()];
173-
return object ? all.filter(v => v.object === object) : all;
174-
},
175-
getDashboard(name: string) { return dashboards.get(name); },
176-
listDashboards() { return [...dashboards.values()]; },
177-
registerView(name: string, definition: unknown) { views.set(name, definition); },
178-
registerDashboard(name: string, definition: unknown) { dashboards.set(name, definition); },
179-
};
180-
}
181-
182163
/** IWorkflowService — in-memory workflow state stub */
183164
function createWorkflowStub() {
184165
const states = new Map<string, string>(); // recordKey → currentState
@@ -299,7 +280,6 @@ const DEV_STUB_FACTORIES: Record<string, () => Record<string, any>> = {
299280
'notification': createNotificationStub,
300281
'ai': createAIStub,
301282
'i18n': createI18nStub,
302-
'ui': createUIStub,
303283
'workflow': createWorkflowStub,
304284
'metadata': createMetadataStub,
305285
'data': createDataStub,

packages/spec/api-surface.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3498,7 +3498,6 @@
34983498
"ITeamGraphService (interface)",
34993499
"ITenantRouter (interface)",
35003500
"ITypedEventEmitter (interface)",
3501-
"IUIService (interface)",
35023501
"IWorkflowService (interface)",
35033502
"ImportObjectOpts (interface)",
35043503
"ImportObjectResult (interface)",

packages/spec/src/contracts/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ export * from './job-service.js';
3131
export * from './ai-service.js';
3232
export * from './llm-adapter.js';
3333
export * from './i18n-service.js';
34-
export * from './ui-service.js';
3534
export * from './workflow-service.js';
3635
export * from './feed-service.js';
3736
export * from './export-service.js';

packages/spec/src/contracts/ui-service.test.ts

Lines changed: 0 additions & 83 deletions
This file was deleted.

packages/spec/src/contracts/ui-service.ts

Lines changed: 0 additions & 76 deletions
This file was deleted.

0 commit comments

Comments
 (0)