UNPKG

bluecodex

Version:

Turn repetitive dev tasks into CLI commands with Typescript

53 lines (45 loc) 1.22 kB
/* * Types */ import { ioc } from "../ioc"; import { type ParseAliasToken, parseAliasToken } from "./parse-alias-token"; export type AliasMeta = { misspelling?: boolean; local?: boolean; }; export type Alias< Name extends string = string, Target extends string = string, > = { __objectType__: "alias"; name: Name; target: Target; meta: AliasMeta; }; /* * Functions */ /** * Aliases are defined with a string `name=target` */ export function alias<AliasToken extends `${string}=${string}`>( aliasToken: AliasToken, ): ParseAliasToken<AliasToken> { const parsedAliasToken = parseAliasToken(aliasToken); if (parsedAliasToken instanceof Error) return parsedAliasToken; return ioc.registry.selfRegisterAliasIfEnabled( parsedAliasToken, ) as ParseAliasToken<AliasToken>; } alias.misspelling = <AliasToken extends `${string}=${string}`>( aliasToken: AliasToken, ): ParseAliasToken<AliasToken> => { const parsedAliasToken = parseAliasToken(aliasToken); if (parsedAliasToken instanceof Error) return parsedAliasToken; return ioc.registry.selfRegisterAliasIfEnabled({ ...parsedAliasToken, meta: { misspelling: true, }, }) as ParseAliasToken<AliasToken>; };