diff --git a/scripts/build.sh b/scripts/build.sh index dfadd89..1e9e1f7 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -9,7 +9,7 @@ DIST_DIR="dist" TYPES_DIR="${DIST_DIR}/types" # build types -npx tsc -p tsconfig.build.json || exit 1 +npx tsc -p tsconfig.build.json # Delete unnecessary files (other than those related to index.d.ts) find ${DIST_DIR} -mindepth 1 ! -name 'index.d.ts' ! -name 'index.d.ts.map' -exec rm -rf {} + @@ -20,7 +20,7 @@ mv ${DIST_DIR}/index.d.ts ${TYPES_DIR}/ mv ${DIST_DIR}/index.d.ts.map ${TYPES_DIR}/ # build -pkgroll --tsconfig=tsconfig.build.json || exit 1 +pkgroll --tsconfig=tsconfig.build.json # restore type definition files mv ${TYPES_DIR}/index.d.ts ${DIST_DIR}/ diff --git a/src/types/symbolFlags.ts b/src/constants/tsInternalFlags.ts similarity index 63% rename from src/types/symbolFlags.ts rename to src/constants/tsInternalFlags.ts index b2471e7..e3c22a9 100644 --- a/src/types/symbolFlags.ts +++ b/src/constants/tsInternalFlags.ts @@ -1,14 +1,14 @@ /** * Implementing `SymbolFlags` defined in typescript on your own, in order not to include TypeScript in dependencies */ -export enum SymbolFlags { - Class = 32, -} +export const SYMBOL_FLAGS = { + CLASS: 32, +} as const; /** * Implementing `SyntaxKind` defined in typescript on your own, in order not to include TypeScript in dependencies */ -export enum SyntaxKind { - ClassDeclaration = 263, - Constructor = 176, -} +export const SYNTAX_KIND = { + CLASS_DECLARATION: 263, + CONSTRUCTOR: 176, +} as const; diff --git a/src/rules/no-class-in-interface.ts b/src/rules/no-class-in-interface.ts index d1f39fb..b0d0e1c 100644 --- a/src/rules/no-class-in-interface.ts +++ b/src/rules/no-class-in-interface.ts @@ -1,6 +1,6 @@ import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils"; -import { SymbolFlags } from "../types/symbolFlags"; +import { SYMBOL_FLAGS } from "../constants/tsInternalFlags"; /** * Enforces the use of interface types instead of class in interface properties @@ -38,7 +38,7 @@ export const noClassInInterface = ESLintUtils.RuleCreator.withoutDocs({ if (!type.symbol) continue; // NOTE: check class type - const isClass = type.symbol.flags === SymbolFlags.Class; + const isClass = type.symbol.flags === SYMBOL_FLAGS.CLASS; if (!isClass) continue; context.report({ diff --git a/src/rules/no-public-class-fields.ts b/src/rules/no-public-class-fields.ts index 7c7616a..efb5416 100644 --- a/src/rules/no-public-class-fields.ts +++ b/src/rules/no-public-class-fields.ts @@ -6,7 +6,7 @@ import { TSESTree, } from "@typescript-eslint/utils"; -import { SymbolFlags } from "../types/symbolFlags"; +import { SYMBOL_FLAGS } from "../constants/tsInternalFlags"; import { isConstructOrStackType } from "../utils/typeCheck"; type Context = TSESLint.RuleContext<"noPublicClassFields", []>; @@ -91,7 +91,7 @@ const validateClassMember = ( const type = parserServices.getTypeAtLocation(member); if (!type.symbol) continue; - const isClass = type.symbol.flags === SymbolFlags.Class; + const isClass = type.symbol.flags === SYMBOL_FLAGS.CLASS; if (!isClass) continue; context.report({ @@ -133,7 +133,7 @@ const validateConstructorParameterProperty = ( const type = parserServices.getTypeAtLocation(param); if (!type.symbol) continue; - const isClass = type.symbol.flags === SymbolFlags.Class; + const isClass = type.symbol.flags === SYMBOL_FLAGS.CLASS; if (!isClass) continue; context.report({ diff --git a/src/utils/parseType.ts b/src/utils/parseType.ts index 35178cb..fa084ad 100644 --- a/src/utils/parseType.ts +++ b/src/utils/parseType.ts @@ -6,7 +6,7 @@ import { Type, } from "typescript"; -import { SyntaxKind } from "../types/symbolFlags"; +import { SYNTAX_KIND } from "../constants/tsInternalFlags"; /** * Parses type to get the property names of the class constructor. @@ -33,7 +33,7 @@ export const getConstructorPropertyNames = (type: Type): string[] => { const isClassDeclaration = ( declaration: Declaration ): declaration is ClassDeclaration => { - return declaration.kind === SyntaxKind.ClassDeclaration; + return declaration.kind === SYNTAX_KIND.CLASS_DECLARATION; }; /** @@ -42,5 +42,5 @@ const isClassDeclaration = ( const isConstructorDeclaration = ( node: Node ): node is ConstructorDeclaration => { - return node.kind === SyntaxKind.Constructor; + return node.kind === SYNTAX_KIND.CONSTRUCTOR; };