chore: generate
This commit is contained in:
parent
c50d65b4d6
commit
aed03078f8
3 changed files with 18 additions and 39 deletions
|
|
@ -33,10 +33,7 @@ type State = {
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Interface {
|
export interface Interface {
|
||||||
readonly publish: <D extends BusEvent.Definition>(
|
readonly publish: <D extends BusEvent.Definition>(def: D, properties: BusProperties<D>) => Effect.Effect<void>
|
||||||
def: D,
|
|
||||||
properties: BusProperties<D>,
|
|
||||||
) => Effect.Effect<void>
|
|
||||||
readonly subscribe: <D extends BusEvent.Definition>(def: D) => Stream.Stream<Payload<D>>
|
readonly subscribe: <D extends BusEvent.Definition>(def: D) => Stream.Stream<Payload<D>>
|
||||||
readonly subscribeAll: () => Stream.Stream<Payload>
|
readonly subscribeAll: () => Stream.Stream<Payload>
|
||||||
readonly subscribeCallback: <D extends BusEvent.Definition>(
|
readonly subscribeCallback: <D extends BusEvent.Definition>(
|
||||||
|
|
@ -85,10 +82,7 @@ export const layer = Layer.effect(
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function publish<D extends BusEvent.Definition>(
|
function publish<D extends BusEvent.Definition>(def: D, properties: BusProperties<D>) {
|
||||||
def: D,
|
|
||||||
properties: BusProperties<D>,
|
|
||||||
) {
|
|
||||||
return Effect.gen(function* () {
|
return Effect.gen(function* () {
|
||||||
const s = yield* InstanceState.get(state)
|
const s = yield* InstanceState.get(state)
|
||||||
const payload: Payload = { type: def.type, properties }
|
const payload: Payload = { type: def.type, properties }
|
||||||
|
|
@ -184,17 +178,11 @@ const { runPromise, runSync } = makeRuntime(Service, layer)
|
||||||
|
|
||||||
// runSync is safe here because the subscribe chain (InstanceState.get, PubSub.subscribe,
|
// runSync is safe here because the subscribe chain (InstanceState.get, PubSub.subscribe,
|
||||||
// Scope.make, Effect.forkScoped) is entirely synchronous. If any step becomes async, this will throw.
|
// Scope.make, Effect.forkScoped) is entirely synchronous. If any step becomes async, this will throw.
|
||||||
export async function publish<D extends BusEvent.Definition>(
|
export async function publish<D extends BusEvent.Definition>(def: D, properties: BusProperties<D>) {
|
||||||
def: D,
|
|
||||||
properties: BusProperties<D>,
|
|
||||||
) {
|
|
||||||
return runPromise((svc) => svc.publish(def, properties))
|
return runPromise((svc) => svc.publish(def, properties))
|
||||||
}
|
}
|
||||||
|
|
||||||
export function subscribe<D extends BusEvent.Definition>(
|
export function subscribe<D extends BusEvent.Definition>(def: D, callback: (event: Payload<D>) => unknown) {
|
||||||
def: D,
|
|
||||||
callback: (event: Payload<D>) => unknown,
|
|
||||||
) {
|
|
||||||
return runSync((svc) => svc.subscribeCallback(def, callback))
|
return runSync((svc) => svc.subscribeCallback(def, callback))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,10 @@ import { Schema as EffectSchema, Types } from "effect"
|
||||||
import { zodObject } from "@/util/effect-zod"
|
import { zodObject } from "@/util/effect-zod"
|
||||||
import { isRecord } from "@/util/record"
|
import { isRecord } from "@/util/record"
|
||||||
|
|
||||||
export type Definition<Schema extends EffectSchema.Top = EffectSchema.Top, BusSchema extends EffectSchema.Top = Schema> = {
|
export type Definition<
|
||||||
|
Schema extends EffectSchema.Top = EffectSchema.Top,
|
||||||
|
BusSchema extends EffectSchema.Top = Schema,
|
||||||
|
> = {
|
||||||
type: string
|
type: string
|
||||||
version: number
|
version: number
|
||||||
aggregate: string
|
aggregate: string
|
||||||
|
|
@ -87,10 +90,13 @@ export function define<
|
||||||
Agg extends string,
|
Agg extends string,
|
||||||
Schema extends EffectSchema.Top,
|
Schema extends EffectSchema.Top,
|
||||||
BusSchema extends EffectSchema.Top = Schema,
|
BusSchema extends EffectSchema.Top = Schema,
|
||||||
>(input: { type: Type; version: number; aggregate: Agg; schema: Schema; busSchema?: BusSchema }): Definition<
|
>(input: {
|
||||||
Schema,
|
type: Type
|
||||||
BusSchema
|
version: number
|
||||||
> {
|
aggregate: Agg
|
||||||
|
schema: Schema
|
||||||
|
busSchema?: BusSchema
|
||||||
|
}): Definition<Schema, BusSchema> {
|
||||||
if (frozen) {
|
if (frozen) {
|
||||||
throw new Error("Error defining sync event: sync system has been frozen")
|
throw new Error("Error defining sync event: sync system has been frozen")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10570,8 +10570,7 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"required": ["url"]
|
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
"anyOf": [
|
"anyOf": [
|
||||||
|
|
@ -10636,8 +10635,7 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"required": ["created", "updated", "compacting", "archived"]
|
|
||||||
},
|
},
|
||||||
"permission": {
|
"permission": {
|
||||||
"anyOf": [
|
"anyOf": [
|
||||||
|
|
@ -10676,20 +10674,7 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"required": [
|
|
||||||
"id",
|
|
||||||
"slug",
|
|
||||||
"projectID",
|
|
||||||
"workspaceID",
|
|
||||||
"directory",
|
|
||||||
"parentID",
|
|
||||||
"summary",
|
|
||||||
"title",
|
|
||||||
"version",
|
|
||||||
"permission",
|
|
||||||
"revert"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["sessionID", "info"]
|
"required": ["sessionID", "info"]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue