Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: use eslint-config-neon for packages. #8579

Merged
merged 18 commits into from Sep 1, 2022
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 4 additions & 1 deletion .eslintrc.json
@@ -1,9 +1,12 @@
{
"root": true,
"extends": "marine/prettier/node",
"extends": ["neon/common", "neon/node", "neon/typescript", "neon/prettier"],
"parserOptions": {
"project": "./tsconfig.eslint.json"
},
"rules": {
"@typescript-eslint/consistent-type-definitions": ["error", "interface"]
},
"ignorePatterns": ["**/dist/*"],
"env": {
"jest": true
Expand Down
2 changes: 1 addition & 1 deletion packages/actions/__tests__/formatTag.test.ts
@@ -1,5 +1,5 @@
import { describe, test, expect } from 'vitest';
import { formatTag } from '../src';
import { formatTag } from '../src/index.js';

describe('Format Tag', () => {
test('GIVEN tag with a prefix THEN format tag to not contain the prefix', () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/actions/package.json
Expand Up @@ -48,7 +48,7 @@
"@typescript-eslint/parser": "^5.36.1",
"@vitest/coverage-c8": "^0.22.1",
"eslint": "^8.23.0",
"eslint-config-marine": "^9.4.1",
"eslint-config-neon": "^0.1.22",
"eslint-config-prettier": "^8.5.0",
"eslint-import-resolver-typescript": "^3.5.0",
"eslint-plugin-import": "^2.26.0",
Expand Down
1 change: 1 addition & 0 deletions packages/actions/src/formatTag/formatTag.ts
@@ -1,4 +1,5 @@
export function formatTag(tag: string) {
// eslint-disable-next-line unicorn/no-unsafe-regex, prefer-named-capture-group
const parsed = /(^@.*\/(?<package>.*)@v?)?(?<semver>\d+.\d+.\d+)-?.*/.exec(tag);

if (parsed?.groups) {
Expand Down
2 changes: 1 addition & 1 deletion packages/actions/src/formatTag/index.ts
@@ -1,5 +1,5 @@
import { getInput, setOutput } from '@actions/core';
import { formatTag } from './formatTag';
import { formatTag } from './formatTag.js';

const tag = getInput('tag', { required: true });
const parsed = formatTag(tag);
Expand Down
2 changes: 1 addition & 1 deletion packages/actions/src/index.ts
@@ -1 +1 @@
export * from './formatTag/formatTag';
export * from './formatTag/formatTag.js';
2 changes: 1 addition & 1 deletion packages/api-extractor-utils/package.json
Expand Up @@ -38,7 +38,7 @@
"@typescript-eslint/eslint-plugin": "^5.36.1",
"@typescript-eslint/parser": "^5.36.1",
"eslint": "^8.23.0",
"eslint-config-marine": "^9.4.1",
"eslint-config-neon": "^0.1.22",
"eslint-config-prettier": "^8.5.0",
"eslint-import-resolver-typescript": "^3.5.0",
"eslint-plugin-import": "^2.26.0",
Expand Down
54 changes: 27 additions & 27 deletions packages/api-extractor-utils/src/ApiNodeJSONEncoder.ts
Expand Up @@ -18,58 +18,58 @@ import {
type ApiConstructor,
type ApiItemContainerMixin,
} from '@microsoft/api-extractor-model';
import { generateTypeParamData } from './TypeParameterJSONEncoder';
import { type TokenDocumentation, resolveName, genReference, genToken, genParameter, generatePath } from './parse';
import { createCommentNode } from './tsdoc';
import { generateTypeParamData } from './TypeParameterJSONEncoder.js';
import { type TokenDocumentation, resolveName, genReference, genToken, genParameter, generatePath } from './parse.js';
import type { DocBlockJSON } from './tsdoc/CommentBlock';
import type { AnyDocNodeJSON } from './tsdoc/CommentNode';
import { type DocNodeContainerJSON, nodeContainer } from './tsdoc/CommentNodeContainer';
import { type DocNodeContainerJSON, nodeContainer } from './tsdoc/CommentNodeContainer.js';
import { createCommentNode } from './tsdoc/index.js';

export interface ReferenceData {
name: string;
path: string;
}

export interface InheritanceData {
parentKey: string;
parentName: string;
path: string;
parentKey: string;
}

export interface ApiInheritableJSON {
inheritanceData: InheritanceData | null;
}

export interface ApiItemJSON {
comment: AnyDocNodeJSON | null;
containerKey: string;
deprecated: DocNodeContainerJSON | null;
excerpt: string;
excerptTokens: TokenDocumentation[];
kind: string;
name: string;
path: string[];
referenceData: ReferenceData;
excerpt: string;
excerptTokens: TokenDocumentation[];
remarks: DocNodeContainerJSON | null;
summary: DocNodeContainerJSON | null;
deprecated: DocNodeContainerJSON | null;
comment: AnyDocNodeJSON | null;
containerKey: string;
path: string[];
}

export interface ApiPropertyItemJSON extends ApiItemJSON, ApiInheritableJSON {
optional: boolean;
propertyTypeTokens: TokenDocumentation[];
readonly: boolean;
optional: boolean;
}

export interface ApiTypeParameterListJSON {
typeParameters: ApiTypeParameterJSON[];
}

export interface ApiTypeParameterJSON {
name: string;
commentBlock: DocBlockJSON | null;
constraintTokens: TokenDocumentation[];
defaultTokens: TokenDocumentation[];
name: string;
optional: boolean;
commentBlock: DocBlockJSON | null;
}

export interface ApiParameterListJSON {
Expand All @@ -81,38 +81,38 @@ export interface ApiMethodSignatureJSON
ApiTypeParameterListJSON,
ApiParameterListJSON,
ApiInheritableJSON {
returnTypeTokens: TokenDocumentation[];
optional: boolean;
overloadIndex: number;
returnTypeTokens: TokenDocumentation[];
}

export interface ApiMethodJSON extends ApiMethodSignatureJSON {
static: boolean;
protected: boolean;
static: boolean;
}

export interface ApiParameterJSON {
name: string;
isOptional: boolean;
tokens: TokenDocumentation[];
name: string;
paramCommentBlock: DocBlockJSON | null;
tokens: TokenDocumentation[];
}

export interface ApiClassJSON extends ApiItemJSON, ApiTypeParameterListJSON {
constructor: ApiConstructorJSON | null;
properties: ApiPropertyItemJSON[];
methods: ApiMethodJSON[];
extendsTokens: TokenDocumentation[];
implementsTokens: TokenDocumentation[][];
methods: ApiMethodJSON[];
properties: ApiPropertyItemJSON[];
}

export interface ApiTypeAliasJSON extends ApiItemJSON, ApiTypeParameterListJSON {
typeTokens: TokenDocumentation[];
}

export interface EnumMemberData {
name: string;
initializerTokens: TokenDocumentation[];
name: string;
summary: DocNodeContainerJSON | null;
}

Expand All @@ -121,19 +121,19 @@ export interface ApiEnumJSON extends ApiItemJSON {
}

export interface ApiInterfaceJSON extends ApiItemJSON, ApiTypeParameterListJSON {
properties: ApiPropertyItemJSON[];
methods: ApiMethodSignatureJSON[];
extendsTokens: TokenDocumentation[][] | null;
methods: ApiMethodSignatureJSON[];
properties: ApiPropertyItemJSON[];
}

export interface ApiVariableJSON extends ApiItemJSON {
typeTokens: TokenDocumentation[];
readonly: boolean;
typeTokens: TokenDocumentation[];
}

export interface ApiFunctionJSON extends ApiItemJSON, ApiTypeParameterListJSON, ApiParameterListJSON {
returnTypeTokens: TokenDocumentation[];
overloadIndex: number;
returnTypeTokens: TokenDocumentation[];
}

export interface ApiConstructorJSON extends ApiItemJSON, ApiParameterListJSON {
Expand Down Expand Up @@ -203,7 +203,7 @@ export class ApiNodeJSONEncoder {

public static encodeParameterList(
model: ApiModel,
item: ApiParameterListMixin & ApiDeclaredItem,
item: ApiDeclaredItem & ApiParameterListMixin,
version: string,
): { parameters: ApiParameterJSON[] } {
return {
Expand All @@ -213,7 +213,7 @@ export class ApiNodeJSONEncoder {

public static encodeTypeParameterList(
model: ApiModel,
item: ApiTypeParameterListMixin & ApiDeclaredItem,
item: ApiDeclaredItem & ApiTypeParameterListMixin,
version: string,
): ApiTypeParameterListJSON {
return {
Expand Down
@@ -1,13 +1,13 @@
import type { TypeParameter, ApiModel, ApiItem } from '@microsoft/api-extractor-model';
import { type TokenDocumentation, genToken } from './parse';
import { type DocBlockJSON, block } from './tsdoc/CommentBlock';
import { type TokenDocumentation, genToken } from './parse.js';
import { type DocBlockJSON, block } from './tsdoc/CommentBlock.js';

export interface TypeParameterData {
name: string;
commentBlock: DocBlockJSON | null;
constraintTokens: TokenDocumentation[];
defaultTokens: TokenDocumentation[];
name: string;
optional: boolean;
commentBlock: DocBlockJSON | null;
}

export function generateTypeParamData(
Expand Down
8 changes: 4 additions & 4 deletions packages/api-extractor-utils/src/index.ts
@@ -1,4 +1,4 @@
export * from './ApiNodeJSONEncoder';
export * from './parse';
export * from './tsdoc';
export * from './TypeParameterJSONEncoder';
export * from './ApiNodeJSONEncoder.js';
export * from './parse.js';
export * from './tsdoc/index.js';
export * from './TypeParameterJSONEncoder.js';
40 changes: 19 additions & 21 deletions packages/api-extractor-utils/src/parse.ts
Expand Up @@ -14,8 +14,8 @@ import {
} from '@microsoft/api-extractor-model';
import type { DocNode, DocParagraph, DocPlainText } from '@microsoft/tsdoc';
import { type Meaning, ModuleSource } from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference';
import { createCommentNode } from './tsdoc';
import type { DocBlockJSON } from './tsdoc/CommentBlock';
import type { DocBlockJSON } from './tsdoc/CommentBlock.js';
import { createCommentNode } from './tsdoc/index.js';

export function findPackage(model: ApiModel, name: string): ApiPackage | undefined {
return (model.findMembersByName(name)[0] ?? model.findMembersByName(`@discordjs/${name}`)[0]) as
Expand Down Expand Up @@ -54,6 +54,7 @@ export function generatePath(items: readonly ApiItem[], version: string) {
}
}

// eslint-disable-next-line prefer-named-capture-group, unicorn/no-unsafe-regex
return path.replace(/@discordjs\/(.*)\/(.*)?/, `$1/${version}/$2`);
}

Expand All @@ -70,26 +71,22 @@ export function resolveDocComment(item: ApiDocumentedItem) {

const { summarySection } = tsdocComment;

function recurseNodes(nodes: readonly DocNode[] | undefined): string | null {
if (!nodes) {
function recurseNodes(node: DocNode | undefined): string | null {
if (!node) {
return null;
}

for (const node of nodes) {
switch (node.kind) {
case 'Paragraph':
return recurseNodes((node as DocParagraph).nodes);
case 'PlainText':
return (node as DocPlainText).text;
default:
return null;
}
switch (node.kind) {
case 'Paragraph':
return recurseNodes(node as DocParagraph);
case 'PlainText':
return (node as DocPlainText).text;
default:
return null;
}

return null;
}

return recurseNodes(summarySection.nodes);
return recurseNodes(summarySection);
}

export function findReferences(model: ApiModel, excerpt: Excerpt) {
Expand All @@ -107,6 +104,7 @@ export function findReferences(model: ApiModel, excerpt: Excerpt) {

break;
}

default:
break;
}
Expand Down Expand Up @@ -142,16 +140,16 @@ export function getProperties(item: ApiItem) {
}

export interface TokenDocumentation {
text: string;
path: string | null;
kind: string;
path: string | null;
text: string;
}

export interface ParameterDocumentation {
name: string;
isOptional: boolean;
tokens: TokenDocumentation[];
name: string;
paramCommentBlock: DocBlockJSON | null;
tokens: TokenDocumentation[];
}

function createDapiTypesURL(meaning: Meaning, name: string) {
Expand All @@ -174,7 +172,7 @@ export function genReference(item: ApiItem, version: string) {

export function genToken(model: ApiModel, token: ExcerptToken, version: string) {
if (token.canonicalReference) {
// @ts-expect-error
// @ts-expect-error Symbol is not publicly accessible
iCrawl marked this conversation as resolved.
Show resolved Hide resolved
token.canonicalReference._navigation = '.';
}

Expand Down
4 changes: 2 additions & 2 deletions packages/api-extractor-utils/src/tsdoc/CommentBlock.ts
@@ -1,8 +1,8 @@
import type { ApiModel, ApiItem } from '@microsoft/api-extractor-model';
import type { DocBlock } from '@microsoft/tsdoc';
import { blockTag, type DocBlockTagJSON } from './CommentBlockTag.js';
import { type AnyDocNodeJSON, type DocNodeJSON, node } from './CommentNode.js';
import { createCommentNode } from '.';
import { blockTag, type DocBlockTagJSON } from './CommentBlockTag';
import { type AnyDocNodeJSON, type DocNodeJSON, node } from './CommentNode';

export interface DocBlockJSON extends DocNodeJSON {
content: AnyDocNodeJSON[];
Expand Down
@@ -1,5 +1,5 @@
import type { DocBlockTag } from '@microsoft/tsdoc';
import { type DocNodeJSON, node } from './CommentNode';
import { type DocNodeJSON, node } from './CommentNode.js';

export interface DocBlockTagJSON extends DocNodeJSON {
tagName: string;
Expand Down
@@ -1,5 +1,5 @@
import type { DocCodeSpan } from '@microsoft/tsdoc';
import { type DocNodeJSON, node } from './CommentNode';
import { type DocNodeJSON, node } from './CommentNode.js';

export interface DocCodeSpanJSON extends DocNodeJSON {
code: string;
Expand Down
12 changes: 6 additions & 6 deletions packages/api-extractor-utils/src/tsdoc/CommentNode.ts
Expand Up @@ -12,14 +12,14 @@ export interface DocNodeJSON {
}

export type AnyDocNodeJSON =
| DocNodeJSON
| DocPlainTextJSON
| DocNodeContainerJSON
| DocLinkTagJSON
| DocFencedCodeJSON
| DocBlockJSON
| DocCodeSpanJSON
| DocCommentJSON
| DocCodeSpanJSON;
| DocFencedCodeJSON
| DocLinkTagJSON
| DocNodeContainerJSON
| DocNodeJSON
| DocPlainTextJSON;

export function node(node: DocNode): DocNodeJSON {
return {
Expand Down
@@ -1,7 +1,7 @@
import type { ApiItem, ApiModel } from '@microsoft/api-extractor-model';
import type { DocNodeContainer } from '@microsoft/tsdoc';
import { type AnyDocNodeJSON, type DocNodeJSON, node } from './CommentNode.js';
import { createCommentNode } from '.';
import { type AnyDocNodeJSON, type DocNodeJSON, node } from './CommentNode';

export interface DocNodeContainerJSON extends DocNodeJSON {
nodes: AnyDocNodeJSON[];
Expand Down
@@ -1,5 +1,5 @@
import type { DocFencedCode } from '@microsoft/tsdoc';
import { type DocNodeJSON, node } from './CommentNode';
import { type DocNodeJSON, node } from './CommentNode.js';

export interface DocFencedCodeJSON extends DocNodeJSON {
code: string;
Expand Down