📄 RuleCreator.ts
¶
📊 Analysis Summary¶
Metric | Count |
---|---|
🔧 Functions | 2 |
📦 Imports | 6 |
🔄 Re-exports | 1 |
📐 Interfaces | 3 |
📑 Type Aliases | 2 |
📚 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 string>({ meta, name, ...rule }: Readonly<RuleWithMetaAndName<Options, MessageIds, PluginDocs>>) => RuleModule<...>
¶
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>
>): RuleModule<MessageIds, Options, PluginDocs> {
return createRule<Options, MessageIds, PluginDocs>({
meta: {
...meta,
docs: {
...meta.docs,
url: urlCreator(name),
},
},
...rule,
});
};
}
-
JSDoc:
-
Parameters:
urlCreator: (ruleName: string) => string
- Return Type:
<Options extends readonly unknown[], MessageIds extends string>({ meta, name, ...rule }: Readonly<RuleWithMetaAndName<Options, MessageIds, PluginDocs>>) => RuleModule<...>
- Calls:
createRule
urlCreator
- Internal Comments:
`createRule({¶
create,
defaultOptions,
meta,
}: Readonly
`
Code
function createRule<
Options extends readonly unknown[],
MessageIds extends string,
PluginDocs = unknown,
>({
create,
defaultOptions,
meta,
}: Readonly<RuleWithMeta<Options, MessageIds, PluginDocs>>): RuleModule<
MessageIds,
Options,
PluginDocs
> {
return {
create(context: Readonly<RuleContext<MessageIds, Options>>): RuleListener {
const optionsWithDefault = applyDefault(defaultOptions, context.options);
return create(context, optionsWithDefault);
},
defaultOptions,
meta,
};
}
- Parameters:
{ create, defaultOptions, meta, }: Readonly<RuleWithMeta<Options, MessageIds, PluginDocs>>
- Return Type: `RuleModule<
MessageIds,
Options,
PluginDocs
`
- Calls:
applyDefault (from ./applyDefault)
create
Interfaces¶
RuleCreateAndOptions<Options extends readonly unknown[], MessageIds extends string>
¶
Interface Code
Properties¶
Name | Type | Optional | Description |
---|---|---|---|
create |
`( | ||
context: Readonly |
|||
optionsWithDefault: Readonly |
|||
) => RuleListener` | ✗ | ||
defaultOptions |
Readonly<Options> |
✗ |
RuleWithMeta<Options extends readonly unknown[], MessageIds extends string, Docs = unknown>
¶
Interface Code
Properties¶
Name | Type | Optional | Description |
---|---|---|---|
meta |
RuleMetaData<MessageIds, Docs, Options> |
✗ |
RuleWithMetaAndName<Options extends readonly unknown[], MessageIds extends string, Docs = unknown>
¶
Interface Code
Properties¶
Name | Type | Optional | Description |
---|---|---|---|
meta |
NamedCreateRuleMeta<MessageIds, Docs, Options> |
✗ | |
name |
string |
✗ |
Type Aliases¶
NamedCreateRuleMetaDocs
¶
NamedCreateRuleMeta<MessageIds extends string extends string, PluginDocs = unknown = unknown, Options extends readonly unknown[] = [] extends readonly unknown[] = []>
¶
type NamedCreateRuleMeta<MessageIds extends string extends string, PluginDocs = unknown = unknown, Options extends readonly unknown[] = [] extends readonly unknown[] = []> = {
docs: PluginDocs & RuleMetaDataDocs;
} & Omit<RuleMetaData<MessageIds, PluginDocs, Options>, 'docs'>;