const addServiceToRuntime =
<T extends Context.Tag<any, any>>(tag: T, service: Context.Tag.Service<T>) =>
<Services>(
self: Runtime.Runtime<Services>,
): Runtime.Runtime<Services | Context.Tag.Identifier<T>> =>
Runtime.make({
context: self.context.pipe(Context.add(tag, service)),
fiberRefs: FiberRefs.empty(),
runtimeFlags: Runtime.defaultRuntimeFlags,
})
export const createGraphQLRuntime = (
runtime: ServerRuntime,
userAccess: UserAccess,
) => addServiceToRuntime(UserAccessTag, userAccess)(runtime)
const addServiceToRuntime =
<T extends Context.Tag<any, any>>(tag: T, service: Context.Tag.Service<T>) =>
<Services>(
self: Runtime.Runtime<Services>,
): Runtime.Runtime<Services | Context.Tag.Identifier<T>> =>
Runtime.make({
context: self.context.pipe(Context.add(tag, service)),
fiberRefs: FiberRefs.empty(),
runtimeFlags: Runtime.defaultRuntimeFlags,
})
export const createGraphQLRuntime = (
runtime: ServerRuntime,
userAccess: UserAccess,
) => addServiceToRuntime(UserAccessTag, userAccess)(runtime)