Skip to content

Commit 1112f3c

Browse files
authored
Merge pull request #102 from topicusonderwijs/refactor/registry
refactor(registry): Added registry to flows
2 parents 4a87c9e + aa67a3e commit 1112f3c

File tree

10 files changed

+745
-145
lines changed

10 files changed

+745
-145
lines changed

build.js

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,15 @@ async function generateBundles() {
9696
sourcemap: true
9797
},
9898

99+
'vanilla-native-federation/registry': {
100+
...baseConfig,
101+
entryPoints: ['src/lib/registry.index.ts'],
102+
outfile: path.join(OUTPUT_PATHS.fesm2022, 'registry.mjs'),
103+
bundle: true,
104+
sourcemap: true
105+
},
106+
107+
99108
'vanilla-native-federation/audit': {
100109
...baseConfig,
101110
entryPoints: ['src/lib/audit.index.ts'],
@@ -115,8 +124,8 @@ async function generateBundles() {
115124

116125
'vanilla-native-federation/registry': {
117126
...baseConfig,
118-
entryPoints: [path.join(PATHS.quickstart, "registry.ts")],
119-
outfile: path.join(OUTPUT_PATHS.quickstart, `registry.mjs`),
127+
entryPoints: [path.join(PATHS.quickstart, "init-registry.ts")],
128+
outfile: path.join(OUTPUT_PATHS.quickstart, `init-registry.mjs`),
120129
bundle: true,
121130
sourcemap: false,
122131
minify: true
@@ -134,8 +143,8 @@ function generatePackageExports() {
134143
"default": "./quickstart.mjs"
135144
},
136145

137-
"./registry.mjs": {
138-
"default": "./registry.mjs"
146+
"./init-registry.mjs": {
147+
"default": "./init-registry.mjs"
139148
},
140149

141150
".": {
@@ -147,6 +156,11 @@ function generatePackageExports() {
147156
"types": "./types/lib/sdk.index.d.ts",
148157
"default": "./fesm2022/sdk.mjs"
149158
},
159+
160+
"./registry": {
161+
"types": "./types/lib/registry.index.d.ts",
162+
"default": "./fesm2022/registry.mjs"
163+
},
150164

151165
"./options": {
152166
"types": "./types/lib/options.index.d.ts",

src/init-registry.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { createRegistry } from 'lib/registry.index';
2+
import type { NFEventRegistry } from './lib/1.domain/registry/event-registry.contract';
3+
import type { NFEventRegistryConfig } from './lib/2.app/config/registry.contract';
4+
5+
declare global {
6+
interface Window {
7+
__NF_REGISTRY__: NFEventRegistry;
8+
}
9+
}
10+
11+
(function (): void {
12+
const script = document.currentScript as HTMLScriptElement | null;
13+
14+
const config: NFEventRegistryConfig = {
15+
// Maximum number of different event types to keep in the registry.
16+
maxStreams: script?.dataset?.maxStreams ? Number(script.dataset.maxStreams) : 50,
17+
18+
// Maximum number of events to keep in the history for each event type.
19+
maxEvents: script?.dataset?.maxEvents ? Number(script.dataset.maxEvents) : 50,
20+
21+
// When trimming events, remove this percentage of the oldest events.
22+
// E.g. with 0.25 and maxEvents=50, when the 51st event is added, the oldest 12 events are removed,
23+
// leaving 38 events in the history.
24+
removePercentage: script?.dataset?.removePercentage
25+
? Number(script.dataset.removePercentage) / 100
26+
: 0.5,
27+
};
28+
29+
const registry = createRegistry(config);
30+
31+
window.__NF_REGISTRY__ = Object.freeze(registry());
32+
})();

src/lib/1.domain/registry/event-registry.contract.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ export type NFEventRegistry = {
1010
onReady<T>(name: string, callback: NFEventConsumer<T>): NFEventUnsubscribe;
1111
emit<T>(type: string, data: T): void;
1212
on<T>(type: string, callback: NFEventConsumer<NFEventData<T>>): NFEventUnsubscribe;
13+
clear(type?: string): void;
1314
};
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export type NFEventRegistryConfig = {
2+
maxStreams: number;
3+
maxEvents: number;
4+
removePercentage: number;
5+
};
6+
7+
export type NFEventRegistryOptions = Partial<NFEventRegistryConfig>;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import type { NFEventRegistry } from '../../../1.domain/registry/event-registry.contract';
2+
3+
export type ForManagingEvents = () => NFEventRegistry;

0 commit comments

Comments
 (0)