bluecodex
Version:
Turn repetitive dev tasks into CLI commands with Typescript
53 lines (45 loc) • 1.22 kB
text/typescript
/*
* 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>;
};