Skip to content

Commit 0d3d511

Browse files
committed
rework plugin init functions
1 parent 88ff660 commit 0d3d511

File tree

8 files changed

+49
-85
lines changed

8 files changed

+49
-85
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { ServiceResolver } from '../../Service/index.js';
2+
3+
/**
4+
* Function which every Ember Nexus compatible plugin must expose as its top level `init` export.
5+
*/
6+
type pluginInit = (serviceResolver: ServiceResolver) => Promise<void>;
7+
8+
/**
9+
* Function which every Ember Nexus compatible plugin must expose as its top level `optimizeDynamicConfigurations` export.
10+
*/
11+
type pluginOptimizeDynamicConfigurations = (serviceResolver: ServiceResolver) => Promise<void>;
12+
13+
export { pluginInit, pluginOptimizeDynamicConfigurations };

core/src/Type/Definition/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export * from './Node.js';
1515
export * from './NodeWithOptionalId.js';
1616
export * from './OptionalPromise.js';
1717
export * from './PluginIdentifier.js';
18+
export * from './PluginInit.js';
1819
export * from './PriorityRegistry.js';
1920
export * from './Proxy.js';
2021
export * from './Registry.js';

core/src/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ export * as Endpoint from './Endpoint/index.js';
66
export * as Error from './Error/index.js';
77
export * as Event from './Event/index.js';
88
export * as EventListener from './EventListener/index.js';
9-
export * from './Init.js';
9+
export * from './init.js';
10+
export * from './initEventListeners.js';
11+
export * from './optimizeDynamicConfigurations.js';
1012

1113
export * as Service from './Service/index.js';
1214
export * as Type from './Type/index.js';

core/src/Init.ts renamed to core/src/init.ts

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { Logger } from 'tslog';
22

3-
import { GetServiceResolverEvent } from './BrowserEvent/index.js';
43
import {
54
ElementCache,
65
ElementChildrenCache,
@@ -40,18 +39,13 @@ import {
4039
ServiceResolver,
4140
TokenParser,
4241
} from './Service/index.js';
43-
import { PriorityRegistry, Registry } from './Type/Definition/index.js';
44-
import { BrowserEventIdentifier, ServiceIdentifier } from './Type/Enum/index.js';
45-
46-
function init(rootNode: HTMLElement): ServiceResolver {
47-
const serviceResolver = new ServiceResolver();
42+
import { PriorityRegistry, Registry, pluginInit } from './Type/Definition/index.js';
43+
import { ServiceIdentifier } from './Type/Enum/index.js';
4844

45+
const init: pluginInit = (serviceResolver: ServiceResolver) => {
4946
serviceResolver.setService(ServiceIdentifier.action, new PriorityRegistry());
50-
5147
serviceResolver.setService(ServiceIdentifier.setting, new Registry());
52-
5348
serviceResolver.setService(ServiceIdentifier.icon, new Registry());
54-
5549
serviceResolver.setService(ServiceIdentifier.routeResolver, new RouteResolver());
5650

5751
const logger = new Logger({
@@ -106,12 +100,7 @@ function init(rootNode: HTMLElement): ServiceResolver {
106100
// event listeners
107101
initEventListener(serviceResolver);
108102

109-
rootNode.addEventListener(BrowserEventIdentifier.GetServiceResolver, (event: GetServiceResolverEvent) => {
110-
event.setServiceResolver(serviceResolver);
111-
event.stopPropagation();
112-
});
113-
114-
return serviceResolver;
115-
}
103+
return Promise.resolve();
104+
};
116105

117106
export { init };

core/src/initEventListeners.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { GetServiceResolverEvent } from './BrowserEvent/index.js';
2+
import { ServiceResolver } from './Service/index.js';
3+
import { BrowserEventIdentifier } from './Type/Enum/index.js';
4+
5+
function initEventListeners(rootNode: HTMLElement, serviceResolver: ServiceResolver): void {
6+
rootNode.addEventListener(BrowserEventIdentifier.GetServiceResolver, (event: GetServiceResolverEvent) => {
7+
event.setServiceResolver(serviceResolver);
8+
event.stopPropagation();
9+
});
10+
}
11+
12+
export { initEventListeners };
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { pluginOptimizeDynamicConfigurations } from './Type/Definition/index.js';
2+
3+
const optimizeDynamicConfigurations: pluginOptimizeDynamicConfigurations = () => {
4+
return Promise.resolve();
5+
};
6+
7+
export { optimizeDynamicConfigurations };

core/test/Unit/Init.test.ts

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

core/test/Unit/Service/RouteResolver.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ test('configured route resolver can resolve index route', async () => {
3636
expect(await routeResolver.findRouteConfiguration('/')).toEqual(routeConfiguration);
3737
});
3838

39+
test('configured route resolver can resolve index route (2)', async () => {
40+
const routeConfiguration = buildRouteConfiguration('test-route', '/');
41+
42+
const routeResolver = new RouteResolver().addRouteConfiguration(routeConfiguration);
43+
44+
expect(await routeResolver.findRouteConfiguration('')).toEqual(routeConfiguration);
45+
});
46+
3947
test('priority of configured routes is respected', async () => {
4048
const routeConfiguration1 = buildRouteConfiguration('test-route-1', '/', 1);
4149
const routeConfiguration2 = buildRouteConfiguration('test-route-2', '/', 2);

0 commit comments

Comments
 (0)