@schemeless/event-store
Advanced tools
Comparing version 2.2.0-rc.3 to 2.2.0-rc.4
@@ -16,3 +16,2 @@ "use strict"; | ||
const makeMainQueue_1 = require("./queue/makeMainQueue"); | ||
const makeObserverQueue_1 = require("./queue/makeObserverQueue"); | ||
const makeReceive_1 = require("./queue/makeReceive"); | ||
@@ -22,14 +21,2 @@ const makeReplay_1 = require("./makeReplay"); | ||
const rxjs_1 = require("rxjs"); | ||
const assignObserver = (output$, successEventObservers) => { | ||
const observerQueue = makeObserverQueue_1.makeObserverQueue(successEventObservers); | ||
const result$ = output$.pipe(Rx.tap((eventOutput) => { | ||
if (eventOutput.state === event_store_types_1.EventOutputState.success) { | ||
observerQueue.push(eventOutput.event); | ||
} | ||
})); | ||
return { | ||
result$, | ||
observerQueue, | ||
}; | ||
}; | ||
const makeEventStore = (eventStoreRepo) => (eventFlows, successEventObservers = []) => __awaiter(void 0, void 0, void 0, function* () { | ||
@@ -61,7 +48,7 @@ const mainQueue = makeMainQueue_1.makeMainQueue(eventFlows); | ||
const doneAndSideEffect$ = rxjs_1.merge(mainQueueProcessed$, sideEffectQueue.processed$); | ||
const { result$, observerQueue } = assignObserver(doneAndSideEffect$, successEventObservers); | ||
const output$ = rxjs_1.merge(result$, observerQueue.processed$); | ||
// const { result$, observerQueue } = assignObserver(doneAndSideEffect$, successEventObservers); | ||
const output$ = doneAndSideEffect$; | ||
return { | ||
mainQueue, | ||
receive: makeReceive_1.makeReceive(mainQueue), | ||
receive: makeReceive_1.makeReceive(mainQueue, successEventObservers), | ||
replay: makeReplay_1.makeReplay(eventFlows, successEventObservers, eventStoreRepo), | ||
@@ -68,0 +55,0 @@ eventStoreRepo: eventStoreRepo, |
@@ -33,2 +33,3 @@ "use strict"; | ||
const subscription = observerQueue.processed$.subscribe(); | ||
observerQueue.queueInstance.drained$.subscribe(() => logger_1.logger.info(`replay all done`)); | ||
try { | ||
@@ -51,3 +52,3 @@ for (var eventStoreIterator_1 = __asyncValues(eventStoreIterator), eventStoreIterator_1_1; eventStoreIterator_1_1 = yield eventStoreIterator_1.next(), !eventStoreIterator_1_1.done;) { | ||
else { | ||
logger_1.logger.info(`replay finished`); | ||
logger_1.logger.info(`replay apply done, waiting for observer finished`); | ||
break; | ||
@@ -54,0 +55,0 @@ } |
@@ -9,2 +9,3 @@ "use strict"; | ||
filters: [Standard_event_1.StandardEvent, NestedOnce_event_1.NestedOnceEvent], | ||
priority: 1, | ||
apply: (event) => { | ||
@@ -11,0 +12,0 @@ exports.mockObserverApply(); |
@@ -15,2 +15,3 @@ "use strict"; | ||
const RxQueue_1 = require("./RxQueue"); | ||
const R = require("ramda"); | ||
const Rx = require("rxjs/operators"); | ||
@@ -40,3 +41,6 @@ const logEvent_1 = require("../util/logEvent"); | ||
// apply observers | ||
yield Promise.all(observersToApply.map((o) => o.apply(createdEvent))); | ||
const orderedObserversToApply = R.sortBy(R.prop('priority'))(observersToApply); | ||
for (const observerToApply of orderedObserversToApply) { | ||
yield observerToApply.apply(createdEvent); | ||
} | ||
logEvent_1.logEvent(createdEvent, '👀', 'OB:OK'); | ||
@@ -43,0 +47,0 @@ done(); |
import type { BaseEventInput, CreatedEvent, EventFlow } from '@schemeless/event-store-types'; | ||
import { makeMainQueue } from './makeMainQueue'; | ||
export declare const makeReceive: (mainQueue: ReturnType<typeof makeMainQueue>) => <PartialPayload, Payload extends PartialPayload>(eventFlow: EventFlow<PartialPayload, Payload>) => (eventInput: BaseEventInput<PartialPayload, undefined>) => Promise<[CreatedEvent<Payload, undefined>, ...CreatedEvent<any, undefined>[]]>; | ||
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>[]]>; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.makeReceive = void 0; | ||
const makeReceive = (mainQueue) => (eventFlow) => (eventInput) => { | ||
const makeObserverQueue_1 = require("./makeObserverQueue"); | ||
const makeReceive = (mainQueue, successEventObservers = []) => (eventFlow) => (eventInput) => { | ||
const event = Object.assign({}, eventInput, { | ||
@@ -10,5 +11,15 @@ domain: eventFlow.domain, | ||
return new Promise((resolve, reject) => { | ||
mainQueue.push(event, (err, doneEvents) => err ? reject(err.error) : resolve(doneEvents)); | ||
mainQueue.push(event, (err, doneEvents) => { | ||
if (err) { | ||
reject(err.error); | ||
} | ||
else { | ||
const observerQueue = makeObserverQueue_1.makeObserverQueue(successEventObservers); | ||
observerQueue.processed$.subscribe(); | ||
observerQueue.queueInstance.drained$.subscribe(() => resolve(doneEvents)); | ||
doneEvents.forEach((event) => observerQueue.push(event)); | ||
} | ||
}); | ||
}); | ||
}; | ||
exports.makeReceive = makeReceive; |
@@ -13,4 +13,3 @@ "use strict"; | ||
exports.getTestEventStore = void 0; | ||
// import { EventStoreRepo } from '@schemeless/event-store-adapter-typeorm'; | ||
const event_store_adapter_dynamodb_1 = require("@schemeless/event-store-adapter-dynamodb"); | ||
const event_store_adapter_typeorm_1 = require("@schemeless/event-store-adapter-typeorm"); | ||
const makeEventStore_1 = require("../makeEventStore"); | ||
@@ -34,7 +33,7 @@ const defaultInMemDBOption = { | ||
else { | ||
// const eventStoreRepo = new EventStoreRepo(defaultInMenDBOptionEventSourcing); | ||
const eventStoreRepo = new event_store_adapter_dynamodb_1.EventStoreRepo('test', { | ||
region: 'us-east-2', | ||
endpoint: 'http://127.0.0.1:8000', | ||
}); | ||
const eventStoreRepo = new event_store_adapter_typeorm_1.EventStoreRepo(defaultInMenDBOptionEventSourcing); | ||
// const eventStoreRepo = new EventStoreRepo('test', { | ||
// region: 'us-east-2', | ||
// endpoint: 'http://127.0.0.1:8000', | ||
// }); | ||
eventStore = yield makeEventStore_1.makeEventStore(eventStoreRepo)(allEventFlows, successEventObservers); | ||
@@ -41,0 +40,0 @@ eventStore.output$.subscribe(console.log); |
{ | ||
"name": "@schemeless/event-store", | ||
"version": "2.2.0-rc.3", | ||
"version": "2.2.0-rc.4", | ||
"typescript:main": "src/index.ts", | ||
@@ -24,3 +24,3 @@ "main": "dist/index.js", | ||
"dependencies": { | ||
"@schemeless/event-store-types": "^2.1.0", | ||
"@schemeless/event-store-types": "^2.2.0", | ||
"better-queue": "^3.8.10", | ||
@@ -53,3 +53,3 @@ "debug": "^4.2.0", | ||
}, | ||
"gitHead": "40153898d31f0273f4c61441edd4af623511d5f0" | ||
"gitHead": "a45b597f1b3ad8422705fd81e9b62ef66e788ce9" | ||
} |
74200
1490