feat: pretty build output
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@valkyr/event-store",
|
"name": "@valkyr/event-store",
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"exports": {
|
"exports": {
|
||||||
".": "./mod.ts",
|
".": "./mod.ts",
|
||||||
"./browser": "./adapters/browser/adapter.ts",
|
"./browser": "./adapters/browser/adapter.ts",
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import z, { ZodType } from "zod";
|
import z, { ZodType } from "zod";
|
||||||
|
|
||||||
|
import { Prettify } from "../types/utilities.ts";
|
||||||
import { EventValidationError } from "./errors.ts";
|
import { EventValidationError } from "./errors.ts";
|
||||||
import { getLogicalTimestamp } from "./time.ts";
|
import { getLogicalTimestamp } from "./time.ts";
|
||||||
import { toPrettyErrorLines } from "./zod.ts";
|
import { toPrettyErrorLines } from "./zod.ts";
|
||||||
@@ -16,7 +17,7 @@ export class Event<TEventState extends EventState = EventState> {
|
|||||||
*
|
*
|
||||||
* @param data - Schema used to parse and infer the data supported by the event.
|
* @param data - Schema used to parse and infer the data supported by the event.
|
||||||
*/
|
*/
|
||||||
data<TData extends ZodType>(data: TData): Event<Omit<TEventState, "data"> & { data: TData }> {
|
data<TData extends ZodType>(data: TData): Event<Prettify<Omit<TEventState, "data"> & { data: TData }>> {
|
||||||
return new Event<Omit<TEventState, "data"> & { data: TData }>({ ...this.state, data });
|
return new Event<Omit<TEventState, "data"> & { data: TData }>({ ...this.state, data });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,7 +27,7 @@ export class Event<TEventState extends EventState = EventState> {
|
|||||||
*
|
*
|
||||||
* @param meta - Schema used to parse and infer the meta supported by the event.
|
* @param meta - Schema used to parse and infer the meta supported by the event.
|
||||||
*/
|
*/
|
||||||
meta<TMeta extends ZodType>(meta: TMeta): Event<Omit<TEventState, "meta"> & { meta: TMeta }> {
|
meta<TMeta extends ZodType>(meta: TMeta): Event<Prettify<Omit<TEventState, "meta"> & { meta: TMeta }>> {
|
||||||
return new Event<Omit<TEventState, "meta"> & { meta: TMeta }>({ ...this.state, meta });
|
return new Event<Omit<TEventState, "meta"> & { meta: TMeta }>({ ...this.state, meta });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { AggregateRoot } from "../../libraries/aggregate.ts";
|
import { AggregateRoot } from "../../libraries/aggregate.ts";
|
||||||
import { Events } from "./events.ts";
|
import { EventRecord, Events } from "./events.ts";
|
||||||
|
|
||||||
export class User extends AggregateRoot<Events> {
|
export class User extends AggregateRoot<Events> {
|
||||||
static override readonly name = "user";
|
static override readonly name = "user";
|
||||||
@@ -19,7 +19,7 @@ export class User extends AggregateRoot<Events> {
|
|||||||
// Reducer
|
// Reducer
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
|
|
||||||
with(event: Events["$events"][number]["$record"]) {
|
with(event: EventRecord) {
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
case "user:name:given-set": {
|
case "user:name:given-set": {
|
||||||
this.name.given = event.data;
|
this.name.given = event.data;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import z from "zod";
|
|||||||
|
|
||||||
import { event } from "../../libraries/event.ts";
|
import { event } from "../../libraries/event.ts";
|
||||||
import { EventFactory } from "../../libraries/event-factory.ts";
|
import { EventFactory } from "../../libraries/event-factory.ts";
|
||||||
|
import { Prettify } from "../../types/utilities.ts";
|
||||||
|
|
||||||
export const auditor = z.strictObject({ auditor: z.string() });
|
export const auditor = z.strictObject({ auditor: z.string() });
|
||||||
|
|
||||||
@@ -33,3 +34,5 @@ export const events = new EventFactory([
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
export type Events = typeof events;
|
export type Events = typeof events;
|
||||||
|
|
||||||
|
export type EventRecord = Prettify<Events["$events"][number]["$record"]>;
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
import type { Empty } from "./common.ts";
|
import type { Empty } from "./common.ts";
|
||||||
|
|
||||||
|
export type Prettify<T> = {
|
||||||
|
[K in keyof T]: T[K];
|
||||||
|
} & {};
|
||||||
|
|
||||||
export type ExcludeEmptyFields<T> = {
|
export type ExcludeEmptyFields<T> = {
|
||||||
[K in keyof T as T[K] extends Empty ? never : K]: T[K];
|
[K in keyof T as T[K] extends Empty ? never : K]: T[K];
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user