β¬ οΈ Back to Table of Contents
π RuleCreator¶
π Analysis Summary¶
| Metric | Count |
|---|---|
| π§ Functions | 2 |
| π¦ Imports | 6 |
| π Re-exports | 1 |
| π Interfaces | 3 |
| π Type Aliases | 3 |
π Table of Contents¶
π οΈ File Location:¶
π packages/utils/src/eslint-utils/RuleCreator.ts
π¦ Imports¶
| Name | Source |
|---|---|
RuleContext |
../ts-eslint/Rule |
RuleListener |
../ts-eslint/Rule |
RuleMetaData |
../ts-eslint/Rule |
RuleMetaDataDocs |
../ts-eslint/Rule |
RuleModule |
../ts-eslint/Rule |
applyDefault |
./applyDefault |
Re-exports¶
| Type | Source | Exported Names |
|---|---|---|
| named | ../ts-eslint/Rule |
RuleListener, RuleModule |
Functions¶
RuleCreator(urlCreator: (ruleName: string) => string): <Options extends readonly unknown[], MessageIds extends str⦶
Creates reusable function to create rules with default options and docs URLs.
Parameters:
urlCreatorany: Creates a documentation URL for a given rule name.
Returns: undefined
Function to create a rule with the docs URL format.
Raw JSDoc
Calls:
createRuleurlCreator
Internal Comments:
// This function will get much easier to call when this is merged https://github.com/Microsoft/TypeScript/pull/26349
// TODO - when the above PR lands; add type checking for the context.report `data` property
Code
export function RuleCreator<PluginDocs = unknown>(
urlCreator: (ruleName: string) => string,
) {
// This function will get much easier to call when this is merged https://github.com/Microsoft/TypeScript/pull/26349
// TODO - when the above PR lands; add type checking for the context.report `data` property
return function createNamedRule<
Options extends readonly unknown[],
MessageIds extends string,
>({
meta,
name,
...rule
}: Readonly<
RuleWithMetaAndName<Options, MessageIds, PluginDocs>
>): RuleModuleWithName<MessageIds, Options, PluginDocs> {
const ruleWithDocs = createRule<Options, MessageIds, PluginDocs>({
meta: {
...meta,
docs: {
...meta.docs,
url: urlCreator(name),
},
},
name,
...rule,
});
return ruleWithDocs as RuleModuleWithName<MessageIds, Options, PluginDocs>;
};
}
createRule({ create, // Keep accepting depβ¦: Readonly<RuleWithMeta<Options, MessageIβ¦): RuleModule< MessageIds, Options, PluginDocs >¶
Parameters:
{ create, // Keep accepting deprecated defaultOptions for backward compatibility. // eslint-disable-next-line @typescript-eslint/no-deprecated defaultOptions, meta, name, }Readonly<RuleWithMeta<Options, MessageIds, PluginDocs>>
Returns: `RuleModule< MessageIds, Options, PluginDocs
`
Calls:
applyDefault (from ./applyDefault)create
Code
function createRule<
Options extends readonly unknown[],
MessageIds extends string,
PluginDocs = unknown,
>({
create,
// Keep accepting deprecated defaultOptions for backward compatibility.
// eslint-disable-next-line @typescript-eslint/no-deprecated
defaultOptions,
meta,
name,
}: Readonly<RuleWithMeta<Options, MessageIds, PluginDocs>>): RuleModule<
MessageIds,
Options,
PluginDocs
> {
const resolvedDefaultOptions = (meta.defaultOptions ??
defaultOptions ??
[]) as Readonly<Options>;
return {
create(context: Readonly<RuleContext<MessageIds, Options>>): RuleListener {
const optionsWithDefault = applyDefault(
resolvedDefaultOptions,
context.options,
);
return create(context, optionsWithDefault);
},
defaultOptions,
meta,
name,
};
}
Interfaces¶
RuleCreateAndOptions<Options extends readonly unknown[], MessageIds extends string>¶
Interface Code
export interface RuleCreateAndOptions<
Options extends readonly unknown[],
MessageIds extends string,
> {
create: (
context: Readonly<RuleContext<MessageIds, Options>>,
optionsWithDefault: Readonly<Options>,
) => RuleListener;
/** @deprecated Use meta.defaultOptions instead */
defaultOptions?: Readonly<Options>;
}
Properties¶
| Name | Type | Optional | Description |
|---|---|---|---|
create |
( context: Readonly<RuleContext<MessageIds, Options>>, optionsWithDefault: Re... |
β | not shown |
defaultOptions |
Readonly<Options> |
β | not shown |
RuleWithMeta<Options extends readonly unknown[], MessageIds extends string, Docs = unknown>¶
Interface Code
Properties¶
| Name | Type | Optional | Description |
|---|---|---|---|
meta |
RuleMetaData<MessageIds, Docs, Options> |
β | not shown |
name |
string |
β | not shown |
RuleWithMetaAndName<Options extends readonly unknown[], MessageIds extends string, Docs = unknown>¶
Interface Code
Properties¶
| Name | Type | Optional | Description |
|---|---|---|---|
meta |
NamedCreateRuleMeta<MessageIds, Docs, Options> |
β | not shown |
name |
string |
β | not shown |
Type Aliases¶
NamedCreateRuleMetaDocs¶
NamedCreateRuleMeta<MessageIds extends string, PluginDocs = unknown, Options extends readonly unknown[] = []>¶
type NamedCreateRuleMeta<MessageIds extends string, PluginDocs = unknown, Options extends readonly unknown[] = []> = {
docs: PluginDocs & RuleMetaDataDocs;
} & Omit<RuleMetaData<MessageIds, PluginDocs, Options>, 'docs'>;
RuleModuleWithName<MessageIds extends string, Options extends readonly unknown[] = [], Docs = unknown, ExtendedRuleListener extends RuleListener = RuleListener>¶
type RuleModuleWithName<MessageIds extends string, Options extends readonly unknown[] = [], Docs = unknown, ExtendedRuleListener extends RuleListener = RuleListener> = RuleModule<MessageIds, Options, Docs, ExtendedRuleListener> & {
name: string;
};
Generated by Syntax Scribe