36 lines · 1.4 KB · TypeScript
RawDownload
import type { ThreadEnvMode } from "@t3tools/contracts"; /** * Canonical priority order for a project's default thread env mode: * per-project setting > checked-in t3.json > global server setting. * * An explicit composer pick outranks all of these; callers apply it before * consulting the defaults. Web resolves the sources imperatively at draft * creation, mobile reactively — both must route through this function so the * platforms cannot disagree on the order. */export function resolveDefaultThreadEnvMode(sources: {  readonly projectSetting: ThreadEnvMode | null | undefined;  readonly projectFile: ThreadEnvMode | null | undefined;  readonly globalDefault: ThreadEnvMode;}): ThreadEnvMode {  return sources.projectSetting ?? sources.projectFile ?? sources.globalDefault;} /** * True once the resolved default can no longer change: an explicit pick or a * source that outranks t3.json decided, or the file read settled. While * false, nothing may persist the provisional default (for example into a * draft's workspace selection) — it could differ from the final value. */export function isDefaultThreadEnvModeSettled(sources: {  readonly explicitMode: ThreadEnvMode | undefined;  readonly projectSetting: ThreadEnvMode | null | undefined;  readonly projectFilePending: boolean;}): boolean {  return (    sources.explicitMode !== undefined ||    sources.projectSetting != null ||    !sources.projectFilePending  );}