Skip to content

Commit dda8f59

Browse files
push result ok
1 parent dd278a8 commit dda8f59

File tree

6 files changed

+23
-49
lines changed

6 files changed

+23
-49
lines changed

packages/sources/node/src/__tests__/destination.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ describe('Destination', () => {
320320

321321
expect(result).toEqual({
322322
event: expect.any(Object),
323-
status: { ok: false },
323+
ok: false,
324324
successful: [
325325
{
326326
id: 'mockDestination',
@@ -361,7 +361,7 @@ describe('Destination', () => {
361361
result = await elb(mockEvent);
362362
expect(result).toStrictEqual(
363363
expect.objectContaining({
364-
status: { ok: true },
364+
ok: true,
365365
successful: [expect.objectContaining({ id: 'mockDestination' })],
366366
queued: [expect.objectContaining({ id: 'destinationConsent' })],
367367
}),
@@ -370,7 +370,7 @@ describe('Destination', () => {
370370
result = await elb('walker consent', { test: false });
371371
expect(result).toStrictEqual(
372372
expect.objectContaining({
373-
status: { ok: true },
373+
ok: true,
374374
successful: [],
375375
queued: [],
376376
failed: [],
@@ -386,7 +386,7 @@ describe('Destination', () => {
386386
);
387387
expect(result).toStrictEqual(
388388
expect.objectContaining({
389-
status: { ok: true },
389+
ok: true,
390390
successful: [expect.objectContaining({ id: 'destinationConsent' })],
391391
queued: [],
392392
}),

packages/sources/node/src/__tests__/source.test.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ describe('Source Node', () => {
6565
expect.anything(),
6666
);
6767
expect(result).toEqual({
68+
ok: true,
6869
event: mockEvent,
69-
status: { ok: true },
7070
successful: [{ id: 'mock', destination: mockDestination }],
7171
queued: [],
7272
failed: [],
@@ -124,13 +124,10 @@ describe('Source Node', () => {
124124
const elbWithZeroParams = elb as unknown as () => Promise<Elb.PushResult>;
125125

126126
result = await elbWithZeroParams();
127-
128-
expect(result.status).toHaveProperty('ok', false);
129-
expect(result.status.error).toBe('Error: Event name is required');
127+
expect(result.ok).toBeFalsy();
130128

131129
result = await elb('foo');
132-
expect(result.status).toHaveProperty('ok', false);
133-
expect(result.status.error).toBe('Error: Event name is invalid');
130+
expect(result.ok).toBeFalsy();
134131
});
135132

136133
test('globals', async () => {

packages/sources/node/src/lib/push.ts

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { WalkerOS } from '@elbwalker/types';
22
import type { SourceNode, Elb } from '../types';
33
import {
44
assign,
5+
createPushResult,
56
isCommand,
67
isSameType,
78
pushToDestinations,
@@ -15,12 +16,7 @@ export function createPush(instance: SourceNode.Instance): Elb.Fn {
1516
data: Elb.PushData = {},
1617
options?: Elb.PushOptions,
1718
) => {
18-
let result: Elb.PushResult = {
19-
status: { ok: false },
20-
successful: [],
21-
queued: [],
22-
failed: [],
23-
};
19+
let result: Elb.PushResult;
2420

2521
return await tryCatchAsync(
2622
async (
@@ -36,28 +32,19 @@ export function createPush(instance: SourceNode.Instance): Elb.Fn {
3632

3733
if (command) {
3834
// Command event
39-
const commandResult = await handleCommand(
40-
instance,
41-
command,
42-
data,
43-
options,
44-
);
45-
result = assign(result, commandResult);
35+
result = await handleCommand(instance, command, data, options);
4636
} else if (event) {
4737
// Regular event
48-
const eventResult = await pushToDestinations(instance, event);
49-
result = assign(result, eventResult);
50-
result.event = event;
38+
result = await pushToDestinations(instance, event);
5139
}
5240

53-
return assign({ status: { ok: true } }, result);
41+
return createPushResult(result);
5442
},
5543
(error) => {
5644
// Call custom error handling
5745
if (instance.config.onError) instance.config.onError(error, instance);
5846

59-
result.status.error = String(error);
60-
return result;
47+
return createPushResult({ ok: false });
6148
},
6249
)(nameOrEvent, data, options);
6350
};

packages/types/src/elb.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,7 @@ export type PushContext = WalkerOS.OrderedProperties;
5454

5555
export interface PushResult extends Destination.Result {
5656
event?: WalkerOS.Event;
57-
status: Status;
58-
}
59-
60-
export interface Status {
6157
ok: boolean;
62-
error?: string;
6358
}
6459

6560
type FnParameters<T> = T extends (...args: unknown[]) => unknown

packages/utils/src/__tests__/destination.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ describe('Destination', () => {
5353
test('allowed', async () => {
5454
const instance = createInstance({ allowed: false });
5555
let result = await pushToDestinations(instance, event);
56-
expect(result.status.ok).toBeFalsy();
56+
expect(result.ok).toBeFalsy();
5757

5858
instance.allowed = true;
5959
result = await pushToDestinations(instance, event);
60-
expect(result.status.ok).toBeTruthy();
60+
expect(result.ok).toBeTruthy();
6161
});
6262

6363
test('preventing data manipulation', async () => {
@@ -108,7 +108,7 @@ describe('Destination', () => {
108108
destination,
109109
});
110110
expect(result.failed).toHaveLength(1);
111-
expect(result.status.ok).toBeFalsy();
111+
expect(result.ok).toBeFalsy();
112112
expect(mockPush).toHaveBeenCalledTimes(1);
113113
expect(destination.dlq).toContainEqual([event, new Error('kaputt')]);
114114
});

packages/utils/src/core/destination.ts

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export async function pushToDestinations(
5252
const { allowed, consent, globals, user } = instance;
5353

5454
// Check if instance is allowed to push
55-
if (!allowed) return createPushResult({ status: { ok: false } });
55+
if (!allowed) return createPushResult({ ok: false });
5656

5757
// Add event to the instance queue
5858
if (event) instance.queue.push(event);
@@ -194,12 +194,13 @@ export async function pushToDestinations(
194194
}
195195
}
196196

197-
return {
198-
status: { ok },
197+
return createPushResult({
198+
ok,
199+
event,
199200
successful,
200201
queued,
201202
failed,
202-
};
203+
});
203204
}
204205

205206
export async function destinationInit<
@@ -310,19 +311,13 @@ export async function resolveMappingData(
310311
export function createPushResult(
311312
partialResult?: Partial<Elb.PushResult>,
312313
): Elb.PushResult {
313-
const result: Elb.PushResult = assign(
314+
return assign(
314315
{
316+
ok: !partialResult?.failed?.length,
315317
successful: [],
316318
queued: [],
317319
failed: [],
318-
status: {},
319320
},
320321
partialResult,
321322
);
322-
323-
// Check if some destinations failed
324-
if (!isDefined(result.status.ok))
325-
result.status.ok = result.failed.length === 0;
326-
327-
return result;
328323
}

0 commit comments

Comments
 (0)