@schemeless/event-store
Advanced tools
Comparing version 2.3.1 to 2.4.0-rc1
@@ -20,2 +20,5 @@ import type { Observable } from 'rxjs'; | ||
} | ||
export interface EventStoreConfig { | ||
target: 'node' | 'browser'; | ||
} | ||
export * from '@schemeless/event-store-types'; |
import { EventFlow, IEventStoreRepo, SuccessEventObserver } from '@schemeless/event-store-types'; | ||
import { EventStore } from './EventStore.types'; | ||
export declare const makeEventStore: (eventStoreRepo: IEventStoreRepo) => (eventFlows: EventFlow[], successEventObservers?: SuccessEventObserver<any>[]) => Promise<EventStore>; | ||
import { EventStore, EventStoreConfig } from './EventStore.types'; | ||
export declare const makeEventStore: (eventStoreRepo: IEventStoreRepo) => (eventFlows: EventFlow[], successEventObservers?: SuccessEventObserver<any>[], eventStoreConfig?: EventStoreConfig) => Promise<EventStore>; |
@@ -20,5 +20,5 @@ "use strict"; | ||
const rxjs_1 = require("rxjs"); | ||
const makeEventStore = (eventStoreRepo) => (eventFlows, successEventObservers = []) => __awaiter(void 0, void 0, void 0, function* () { | ||
const mainQueue = makeMainQueue_1.makeMainQueue(eventFlows); | ||
const sideEffectQueue = makeSideEffectQueue_1.makeSideEffectQueue(eventFlows, mainQueue); | ||
const makeEventStore = (eventStoreRepo) => (eventFlows, successEventObservers = [], eventStoreConfig = { target: 'node' }) => __awaiter(void 0, void 0, void 0, function* () { | ||
const mainQueue = makeMainQueue_1.makeMainQueue(eventFlows, eventStoreConfig); | ||
const sideEffectQueue = makeSideEffectQueue_1.makeSideEffectQueue(eventFlows, mainQueue, eventStoreConfig); | ||
yield eventStoreRepo.init(); | ||
@@ -52,4 +52,4 @@ const mainQueueProcessed$ = mainQueue.processed$.pipe(Rx.concatMap(([doneEvents, eventTaskAndError]) => __awaiter(void 0, void 0, void 0, function* () { | ||
sideEffectQueue, | ||
receive: makeReceive_1.makeReceive(mainQueue, successEventObservers), | ||
replay: makeReplay_1.makeReplay(eventFlows, successEventObservers, eventStoreRepo), | ||
receive: makeReceive_1.makeReceive(mainQueue, successEventObservers, eventStoreConfig), | ||
replay: makeReplay_1.makeReplay(eventFlows, successEventObservers, eventStoreRepo, eventStoreConfig), | ||
eventStoreRepo: eventStoreRepo, | ||
@@ -56,0 +56,0 @@ output$, |
import type { EventFlow, IEventStoreRepo } from '@schemeless/event-store-types'; | ||
import { SuccessEventObserver } from '@schemeless/event-store-types'; | ||
export declare const makeReplay: (eventFlows: EventFlow[], successEventObservers: SuccessEventObserver<any>[], eventStoreRepo: IEventStoreRepo) => (startFromId?: string) => Promise<void>; | ||
import { EventStoreConfig } from './EventStore.types'; | ||
export declare const makeReplay: (eventFlows: EventFlow[], successEventObservers: SuccessEventObserver<any>[], eventStoreRepo: IEventStoreRepo, eventStoreConfig?: EventStoreConfig) => (startFromId?: string) => Promise<void>; |
@@ -25,3 +25,3 @@ "use strict"; | ||
const makeObserverQueue_1 = require("./queue/makeObserverQueue"); | ||
const makeReplay = (eventFlows, successEventObservers = [], eventStoreRepo) => (startFromId) => __awaiter(void 0, void 0, void 0, function* () { | ||
const makeReplay = (eventFlows, successEventObservers = [], eventStoreRepo, eventStoreConfig = { target: 'node' }) => (startFromId) => __awaiter(void 0, void 0, void 0, function* () { | ||
var e_1, _a; | ||
@@ -32,3 +32,3 @@ const eventFlowMap = registerEventFlowTypes_1.registerEventFlowTypes({}, eventFlows); | ||
const eventStoreIterator = yield eventStoreRepo.getAllEvents(pageSize, startFromId); | ||
const observerQueue = makeObserverQueue_1.makeObserverQueue(successEventObservers); | ||
const observerQueue = makeObserverQueue_1.makeObserverQueue(successEventObservers, eventStoreConfig); | ||
const subscription = observerQueue.processed$.subscribe(); | ||
@@ -35,0 +35,0 @@ observerQueue.queueInstance.drained$.subscribe(() => logger_1.logger.debug(`observerQueue drained`)); |
/// <reference types="better-queue" /> | ||
import type { BaseEvent, CreatedEvent } from '@schemeless/event-store-types'; | ||
export declare const makeApplyQueue: () => { | ||
import { EventStoreConfig } from '../EventStore.types'; | ||
export declare const makeApplyQueue: (eventStoreConfig: EventStoreConfig) => { | ||
id: string; | ||
@@ -5,0 +6,0 @@ queueInstance: import("better-queue")<{ |
@@ -6,6 +6,4 @@ "use strict"; | ||
const uuid_1 = require("uuid"); | ||
const makeApplyQueue = () => RxQueue_1.createRxQueue('apply:' + uuid_1.v4().substr(-4, 4), { | ||
filo: true, | ||
concurrent: 1, | ||
}); | ||
const betterQueueStore_1 = require("../util/betterQueueStore"); | ||
const makeApplyQueue = (eventStoreConfig) => RxQueue_1.createRxQueue('apply:' + uuid_1.v4().substr(-4, 4), Object.assign(Object.assign({}, betterQueueStore_1.getBetterQueueStoreOption(eventStoreConfig.target === 'browser')), { filo: true, concurrent: 1 })); | ||
exports.makeApplyQueue = makeApplyQueue; |
/// <reference types="better-queue" /> | ||
import type { BaseEvent, EventFlow } from '@schemeless/event-store-types'; | ||
export declare const makeMainQueue: (eventFlows: EventFlow<any>[]) => { | ||
import { EventStoreConfig } from '../EventStore.types'; | ||
export declare const makeMainQueue: (eventFlows: EventFlow<any>[], eventStoreConfig: EventStoreConfig) => { | ||
eventFlowMap: import("@schemeless/event-store-types").EventFlowMap; | ||
processed$: any; | ||
@@ -5,0 +7,0 @@ queueInstance: { |
@@ -13,7 +13,8 @@ "use strict"; | ||
const makeApplyQueue_1 = require("./makeApplyQueue"); | ||
const makeMainQueue = (eventFlows) => { | ||
const mainQueue = RxQueue_1.createRxQueue('main', { concurrent: 1 }); | ||
const betterQueueStore_1 = require("../util/betterQueueStore"); | ||
const makeMainQueue = (eventFlows, eventStoreConfig) => { | ||
const mainQueue = RxQueue_1.createRxQueue('main', Object.assign(Object.assign({}, betterQueueStore_1.getBetterQueueStoreOption(eventStoreConfig.target === 'browser')), { concurrent: 1 })); | ||
const eventFlowMap = registerEventFlowTypes_1.registerEventFlowTypes({}, eventFlows); | ||
const processed$ = mainQueue.process$.pipe(Rx.concatMap(({ task, done: mainQueueDone }) => { | ||
const applyQueue = makeApplyQueue_1.makeApplyQueue(); | ||
const applyQueue = makeApplyQueue_1.makeApplyQueue(eventStoreConfig); | ||
logEvent_1.logEvent(task, '✨', 'received'); | ||
@@ -27,2 +28,3 @@ applyQueue.push({ currentEvent: task }); | ||
return { | ||
eventFlowMap, | ||
processed$, | ||
@@ -29,0 +31,0 @@ queueInstance: mainQueue, |
@@ -8,4 +8,4 @@ "use strict"; | ||
describe('Main Queue', () => { | ||
it('should run', cb => { | ||
const mainQueue = makeMainQueue_1.makeMainQueue([Standard_event_1.StandardEvent, NestedOnce_event_1.NestedOnceEvent, NestedTwice_event_1.NestedTwiceEvent]); | ||
it('should run', (cb) => { | ||
const mainQueue = makeMainQueue_1.makeMainQueue([Standard_event_1.StandardEvent, NestedOnce_event_1.NestedOnceEvent, NestedTwice_event_1.NestedTwiceEvent], { target: 'node' }); | ||
mainQueue.processed$.subscribe(); | ||
@@ -15,3 +15,3 @@ mainQueue.push({ | ||
type: NestedTwice_event_1.NestedTwiceEvent.type, | ||
payload: { key: 'MainQueue1', positiveNumber: 1 } | ||
payload: { key: 'MainQueue1', positiveNumber: 1 }, | ||
}); | ||
@@ -21,3 +21,3 @@ mainQueue.push({ | ||
type: NestedOnce_event_1.NestedOnceEvent.type, | ||
payload: { key: 'MainQueue2', positiveNumber: 1 } | ||
payload: { key: 'MainQueue2', positiveNumber: 1 }, | ||
}, (err, result) => { | ||
@@ -24,0 +24,0 @@ cb(); |
/// <reference types="better-queue" /> | ||
import { CreatedEvent, SuccessEventObserver } from '@schemeless/event-store-types'; | ||
export declare const makeObserverQueue: (successEventObservers: SuccessEventObserver<any>[]) => { | ||
import { EventStoreConfig } from '../EventStore.types'; | ||
declare type ObserverMap = { | ||
[domainType: string]: SuccessEventObserver[]; | ||
}; | ||
export declare const makeObserverQueue: (successEventObservers: SuccessEventObserver<any>[], eventStoreConfig: EventStoreConfig) => { | ||
observerMap: ObserverMap; | ||
processed$: any; | ||
@@ -19,1 +24,2 @@ queueInstance: { | ||
}; | ||
export {}; |
@@ -18,2 +18,3 @@ "use strict"; | ||
const logEvent_1 = require("../util/logEvent"); | ||
const betterQueueStore_1 = require("../util/betterQueueStore"); | ||
const makeObserverMap = (successEventObservers) => { | ||
@@ -30,6 +31,4 @@ const observerMap = successEventObservers.reduce((acc, observer) => { | ||
}; | ||
const makeObserverQueue = (successEventObservers) => { | ||
const observerQueue = RxQueue_1.createRxQueue('applySuccessEventObservers', { | ||
concurrent: 1, | ||
}); | ||
const makeObserverQueue = (successEventObservers, eventStoreConfig) => { | ||
const observerQueue = RxQueue_1.createRxQueue('applySuccessEventObservers', Object.assign(Object.assign({}, betterQueueStore_1.getBetterQueueStoreOption(eventStoreConfig.target === 'browser')), { concurrent: 1 })); | ||
const observerMap = makeObserverMap(successEventObservers); | ||
@@ -56,2 +55,3 @@ const processed$ = observerQueue.process$.pipe(Rx.mergeMap(({ done, task: createdEvent }) => __awaiter(void 0, void 0, void 0, function* () { | ||
return { | ||
observerMap, | ||
processed$, | ||
@@ -58,0 +58,0 @@ queueInstance: observerQueue, |
import type { BaseEventInput, CreatedEvent, EventFlow } from '@schemeless/event-store-types'; | ||
import { makeMainQueue } from './makeMainQueue'; | ||
import { SuccessEventObserver } from '@schemeless/event-store-types'; | ||
export declare const makeReceive: (mainQueue: ReturnType<typeof makeMainQueue>, successEventObservers?: SuccessEventObserver<any>[]) => <PartialPayload, Payload extends PartialPayload>(eventFlow: EventFlow<PartialPayload, Payload>) => (eventInput: BaseEventInput<PartialPayload, undefined>) => Promise<[CreatedEvent<Payload, undefined>, ...CreatedEvent<any, undefined>[]]>; | ||
import { EventStoreConfig } from '../EventStore.types'; | ||
export declare const makeReceive: (mainQueue: ReturnType<typeof makeMainQueue>, successEventObservers: SuccessEventObserver<any>[], eventStoreConfig: EventStoreConfig) => <PartialPayload, Payload extends PartialPayload>(eventFlow: EventFlow<PartialPayload, Payload>) => (eventInput: BaseEventInput<PartialPayload, undefined>) => Promise<[CreatedEvent<Payload, undefined>, ...CreatedEvent<any, undefined>[]]>; |
@@ -5,7 +5,7 @@ "use strict"; | ||
const makeObserverQueue_1 = require("./makeObserverQueue"); | ||
const makeReceive = (mainQueue, successEventObservers = []) => (eventFlow) => (eventInput) => { | ||
const makeReceive = (mainQueue, successEventObservers = [], eventStoreConfig) => (eventFlow) => (eventInput) => { | ||
const event = Object.assign({}, eventInput, { | ||
domain: eventFlow.domain, | ||
type: eventFlow.type, | ||
created: eventInput.created || undefined | ||
created: eventInput.created || undefined, | ||
}); | ||
@@ -18,3 +18,3 @@ return new Promise((resolve, reject) => { | ||
else { | ||
const observerQueue = makeObserverQueue_1.makeObserverQueue(successEventObservers); | ||
const observerQueue = makeObserverQueue_1.makeObserverQueue(successEventObservers, eventStoreConfig); | ||
observerQueue.processed$.subscribe(); | ||
@@ -21,0 +21,0 @@ observerQueue.queueInstance.drained$.subscribe(() => resolve(doneEvents)); |
/// <reference types="better-queue" /> | ||
import { CreatedEvent, EventFlow } from '@schemeless/event-store-types'; | ||
import { mainQueueType } from './makeMainQueue'; | ||
export declare const makeSideEffectQueue: (eventFlows: EventFlow[], mainQueue: mainQueueType) => { | ||
import { EventStoreConfig } from '../EventStore.types'; | ||
export declare const makeSideEffectQueue: (eventFlows: EventFlow[], mainQueue: mainQueueType, eventStoreConfig: EventStoreConfig) => { | ||
processed$: any; | ||
@@ -6,0 +7,0 @@ queueInstance: { |
@@ -20,6 +20,5 @@ "use strict"; | ||
const logger_1 = require("../util/logger"); | ||
const makeSideEffectQueue = (eventFlows, mainQueue) => { | ||
const sideEffectQueue = RxQueue_1.createRxQueue('sideEffect', { | ||
concurrent: 1, | ||
}); | ||
const betterQueueStore_1 = require("../util/betterQueueStore"); | ||
const makeSideEffectQueue = (eventFlows, mainQueue, eventStoreConfig) => { | ||
const sideEffectQueue = RxQueue_1.createRxQueue('sideEffect', Object.assign(Object.assign({}, betterQueueStore_1.getBetterQueueStoreOption(eventStoreConfig.target === 'browser')), { concurrent: 1 })); | ||
const eventFlowMap = registerEventFlowTypes_1.registerEventFlowTypes({}, eventFlows); | ||
@@ -26,0 +25,0 @@ const processed$ = sideEffectQueue.process$.pipe(Rx.mergeMap(({ task: { retryCount, event }, done }) => __awaiter(void 0, void 0, void 0, function* () { |
@@ -15,3 +15,3 @@ "use strict"; | ||
push: mainQueuePush, | ||
}); | ||
}, { target: 'node' }); | ||
sideEffectQueue.processed$.subscribe((r) => { | ||
@@ -40,3 +40,3 @@ if (r.state === event_store_types_1.SideEffectsState.fail) { | ||
push: mainQueuePush, | ||
}); | ||
}, { target: 'node' }); | ||
sideEffectQueue.processed$.subscribe((r) => { | ||
@@ -43,0 +43,0 @@ if (r.state === event_store_types_1.SideEffectsState.done) { |
{ | ||
"name": "@schemeless/event-store", | ||
"version": "2.3.1", | ||
"version": "2.4.0-rc1", | ||
"typescript:main": "src/index.ts", | ||
@@ -26,2 +26,3 @@ "main": "dist/index.js", | ||
"better-queue": "^3.8.10", | ||
"better-queue-memory": "^1.0.4", | ||
"debug": "^4.2.0", | ||
@@ -53,3 +54,3 @@ "ramda": "^0.27.1", | ||
}, | ||
"gitHead": "26ddc2e14ffbd855c30333cbf9ee099f6b288137" | ||
"gitHead": "018dc3c8fe80e1c369a888432bacf6ce1c079b7f" | ||
} |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
79187
85
1593
8
2
+ Addedbetter-queue-memory@^1.0.4