Skip to content

Commit f439c04

Browse files
authored
Interval trigger fix (#290)
1 parent eae305b commit f439c04

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

src/interval/index.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,11 @@ export function interval<S extends unknown, F extends unknown>({
131131
return {
132132
tick,
133133
isRunning: $isRunning,
134-
'@@trigger': {
134+
'@@trigger': () => ({
135135
setup,
136136
teardown,
137137
fired: tick,
138-
},
138+
}),
139139
};
140140
}
141141

@@ -153,6 +153,10 @@ function toStoreNumber(value: number | Store<number> | unknown): Store<number> {
153153
/**
154154
* @see {@link https://withease.pages.dev/protocols/trigger.html}
155155
*/
156-
type TriggerProtocol = {
157-
'@@trigger': { fired: Event<void>; setup: Event<void>; teardown: Event<void> };
156+
export type TriggerProtocol = {
157+
'@@trigger': () => {
158+
setup: Event<void>;
159+
teardown: Event<void>;
160+
fired: Event<unknown> | Event<void>;
161+
};
158162
};

src/interval/interval.fork.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,22 +107,22 @@ test('does not leaves unresolved timeout effect, if stopped', async () => {
107107
describe('@@trigger', () => {
108108
test('fire tick on start and stop after teardown', async () => {
109109
const listener = jest.fn();
110-
const intervalTrigger = interval({ timeout: 1 });
110+
const intervalTrigger = interval({ timeout: 1 })['@@trigger']();
111111

112112
const scope = fork();
113113

114114
const unwatch = createWatch({
115-
unit: intervalTrigger['@@trigger'].fired,
115+
unit: intervalTrigger.fired,
116116
fn: listener,
117117
scope,
118118
});
119119

120-
allSettled(intervalTrigger['@@trigger'].setup, { scope });
120+
allSettled(intervalTrigger.setup, { scope });
121121

122122
await wait(1);
123123
expect(listener).toBeCalledTimes(1);
124124

125-
await allSettled(intervalTrigger['@@trigger'].teardown, { scope });
125+
await allSettled(intervalTrigger.teardown, { scope });
126126

127127
await wait(10);
128128
expect(listener).toBeCalledTimes(1);

0 commit comments

Comments
 (0)