Files
triggerdotdev--trigger.dev/packages/core/src/v3/locals/index.ts
T
2026-07-13 13:32:57 +08:00

46 lines
1.1 KiB
TypeScript

const API_NAME = "locals";
import { getGlobal, registerGlobal, unregisterGlobal } from "../utils/globals.js";
import { NoopLocalsManager } from "./manager.js";
import { type LocalsKey, type LocalsManager } from "./types.js";
const NOOP_LOCALS_MANAGER = new NoopLocalsManager();
export class LocalsAPI implements LocalsManager {
private static _instance?: LocalsAPI;
private constructor() {}
public static getInstance(): LocalsAPI {
if (!this._instance) {
this._instance = new LocalsAPI();
}
return this._instance;
}
public setGlobalLocalsManager(localsManager: LocalsManager): boolean {
return registerGlobal(API_NAME, localsManager);
}
public disable() {
unregisterGlobal(API_NAME);
}
public createLocal<T>(id: string): LocalsKey<T> {
return this.#getManager().createLocal(id);
}
public getLocal<T>(key: LocalsKey<T>): T | undefined {
return this.#getManager().getLocal(key);
}
public setLocal<T>(key: LocalsKey<T>, value: T): void {
return this.#getManager().setLocal(key, value);
}
#getManager(): LocalsManager {
return getGlobal(API_NAME) ?? NOOP_LOCALS_MANAGER;
}
}