Base configuration
This commit is contained in:
10
.editorconfig
Normal file
10
.editorconfig
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# top-most EditorConfig file
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
indent_style = tab
|
||||||
|
indent_size = 4
|
||||||
|
tab_width = 4
|
||||||
11
.eslintignore
Normal file
11
.eslintignore
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
node_modules/
|
||||||
|
|
||||||
|
dist/
|
||||||
|
|
||||||
|
main.js
|
||||||
|
|
||||||
|
**/*.js
|
||||||
|
*.js
|
||||||
|
|
||||||
|
**/*.mjs
|
||||||
|
*.mjs
|
||||||
255
.eslintrc
Normal file
255
.eslintrc
Normal file
@@ -0,0 +1,255 @@
|
|||||||
|
{
|
||||||
|
"root": true,
|
||||||
|
"parser": "@typescript-eslint/parser",
|
||||||
|
"env": {
|
||||||
|
"node": true
|
||||||
|
},
|
||||||
|
"plugins": [
|
||||||
|
"@typescript-eslint",
|
||||||
|
"deprecation",
|
||||||
|
"prettier",
|
||||||
|
"import",
|
||||||
|
"jsdoc",
|
||||||
|
"@stylistic"
|
||||||
|
],
|
||||||
|
"extends": [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:@typescript-eslint/eslint-recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended",
|
||||||
|
"plugin:jsdoc/recommended-typescript"
|
||||||
|
],
|
||||||
|
"parserOptions": {
|
||||||
|
"sourceType": "module",
|
||||||
|
"project": "./tsconfig.json"
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"prettier/prettier": "warn",
|
||||||
|
"array-callback-return": ["error"],
|
||||||
|
"@typescript-eslint/no-unused-vars": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"argsIgnorePattern": "^_",
|
||||||
|
"varsIgnorePattern": "^_",
|
||||||
|
"caughtErrorsIgnorePattern": "^_",
|
||||||
|
"args": "none"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"no-warning-comments": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
"terms": ["@todo"],
|
||||||
|
"location": "anywhere"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"no-unused-vars": "off",
|
||||||
|
"@typescript-eslint/ban-ts-comment": "off",
|
||||||
|
"no-prototype-builtins": "off",
|
||||||
|
"@typescript-eslint/no-empty-function": "off",
|
||||||
|
"deprecation/deprecation": "warn",
|
||||||
|
"no-console": "error",
|
||||||
|
"max-len": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
"code": 100,
|
||||||
|
"comments": 100,
|
||||||
|
"ignoreUrls": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"@typescript-eslint/naming-convention": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
"selector": "classProperty",
|
||||||
|
"modifiers": ["private"],
|
||||||
|
"format": [],
|
||||||
|
"custom": {
|
||||||
|
"regex": "^(_{1,2}I[A-Z][a-zA-Z0-9]*_?|_{1,2}[a-z][a-zA-Z0-9]*)$",
|
||||||
|
"match": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"selector": "classProperty",
|
||||||
|
"modifiers": ["private", "readonly"],
|
||||||
|
"format": [],
|
||||||
|
"custom": {
|
||||||
|
"regex": "^(_{1,2}I[A-Z][a-zA-Z0-9]*_?|_{1,2}[a-z][a-zA-Z0-9]*|_{2}[a-zA-Z][a-zA-Z0-9]*)$",
|
||||||
|
"match": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"selector": "classProperty",
|
||||||
|
"modifiers": ["protected"],
|
||||||
|
"format": [],
|
||||||
|
"custom": {
|
||||||
|
"regex": "^(_{1,2}I[A-Z][a-zA-Z0-9]*_?|_{1,2}[a-z][a-zA-Z0-9]*)$",
|
||||||
|
"match": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"selector": ["typeProperty", "classProperty"],
|
||||||
|
"types": ["boolean"],
|
||||||
|
"format": ["PascalCase"],
|
||||||
|
"prefix": ["is", "has", "can", "did", "will", "should"],
|
||||||
|
"leadingUnderscore": "allow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"selector": "memberLike",
|
||||||
|
"modifiers": ["public"],
|
||||||
|
"format": ["camelCase"],
|
||||||
|
"leadingUnderscore": "forbid",
|
||||||
|
"filter": {
|
||||||
|
"regex": "^(Events|Styles|Classes|Then|TextContent|El)$",
|
||||||
|
"match": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"selector": "typeProperty",
|
||||||
|
"modifiers": ["public"],
|
||||||
|
"format": null,
|
||||||
|
"filter": {
|
||||||
|
"regex": ".*-event$",
|
||||||
|
"match": true
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"regex": "^[a-z]+(-[a-z]+)*-event$",
|
||||||
|
"match": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"selector": "typeProperty",
|
||||||
|
"modifiers": ["public"],
|
||||||
|
"format": ["camelCase"],
|
||||||
|
"filter": {
|
||||||
|
"regex": ".*-event$|^(Events|Styles|Classes|Then|TextContent|El)$",
|
||||||
|
"match": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"@typescript-eslint/no-unused-expressions": "off",
|
||||||
|
"@stylistic/padding-line-between-statements": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
"blankLine": "always",
|
||||||
|
"prev": "*",
|
||||||
|
"next": [
|
||||||
|
"return",
|
||||||
|
"if",
|
||||||
|
"multiline-const",
|
||||||
|
"function",
|
||||||
|
"multiline-expression",
|
||||||
|
"multiline-let",
|
||||||
|
"block-like"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"blankLine": "always",
|
||||||
|
"prev": ["function"],
|
||||||
|
"next": "*"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"import/order": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
"groups": [
|
||||||
|
["builtin", "external"],
|
||||||
|
["internal"],
|
||||||
|
["parent", "sibling"]
|
||||||
|
],
|
||||||
|
"newlines-between": "never",
|
||||||
|
"alphabetize": {
|
||||||
|
"order": "asc",
|
||||||
|
"caseInsensitive": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jsdoc/no-undefined-types": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
"disableReporting": true,
|
||||||
|
"markVariablesAsUsed": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jsdoc/require-jsdoc": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
"require": {
|
||||||
|
"FunctionDeclaration": true,
|
||||||
|
"MethodDefinition": true,
|
||||||
|
"ClassDeclaration": true,
|
||||||
|
"ArrowFunctionExpression": false,
|
||||||
|
"FunctionExpression": false
|
||||||
|
},
|
||||||
|
"minLineCount": 10
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jsdoc/require-param": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
"exemptedBy": ["deprecated", "inheritdoc"]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jsdoc/require-description": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
"contexts": [
|
||||||
|
"FunctionDeclaration",
|
||||||
|
"MethodDefinition",
|
||||||
|
"ClassDeclaration",
|
||||||
|
"ClassExpression"
|
||||||
|
],
|
||||||
|
"descriptionStyle": "body",
|
||||||
|
"exemptedBy": ["deprecated", "inheritdoc"]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jsdoc/require-returns": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
"checkGetters": false,
|
||||||
|
"exemptedBy": ["deprecated", "inheritdoc"]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jsdoc/check-tag-names": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
"definedTags": ["remarks", "jest-environment", "singleton"]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jsdoc/check-alignment": "warn",
|
||||||
|
"jsdoc/check-indentation": "warn",
|
||||||
|
"jsdoc/no-restricted-syntax": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"contexts": [
|
||||||
|
{
|
||||||
|
"context": "MethodDefinition[kind='get']",
|
||||||
|
"comment": "JsdocBlock:has(JsdocTag[tag='returns'])",
|
||||||
|
"message": "JSDoc @returns comments are not allowed in getters."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"@typescript-eslint/prefer-readonly": "warn",
|
||||||
|
"@typescript-eslint/explicit-function-return-type": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
"allowExpressions": true,
|
||||||
|
"allowTypedFunctionExpressions": true,
|
||||||
|
"allowHigherOrderFunctions": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"@typescript-eslint/prefer-string-starts-ends-with": "warn",
|
||||||
|
"@typescript-eslint/no-misused-promises": "warn",
|
||||||
|
"@typescript-eslint/prefer-optional-chain": "warn"
|
||||||
|
},
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"files": ["*.test.ts", "*.spec.ts"],
|
||||||
|
"rules": {
|
||||||
|
"jsdoc/require-jsdoc": "off",
|
||||||
|
"jsdoc/require-param": "off",
|
||||||
|
"jsdoc/require-description": "off",
|
||||||
|
"jsdoc/require-returns": "off",
|
||||||
|
"@typescript-eslint/explicit-function-return-type": "off"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
20
.prettierrc.json
Normal file
20
.prettierrc.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"printWidth": 80,
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": true,
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"useTabs": false,
|
||||||
|
"tabWidth": 4,
|
||||||
|
"endOfLine": "auto",
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
".prettierrc",
|
||||||
|
".eslintrc"
|
||||||
|
],
|
||||||
|
"options": {
|
||||||
|
"parser": "json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
22
jest.config.cjs
Normal file
22
jest.config.cjs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
module.exports = {
|
||||||
|
setupFilesAfterEnv: ['./scripts/jest.setup.js'],
|
||||||
|
preset: 'ts-jest',
|
||||||
|
testEnvironment: 'node',
|
||||||
|
testMatch: ['**/__tests__/**/*.test.ts', '**/?(*.)+(test).ts'],
|
||||||
|
testPathIgnorePatterns: ['\\.spec\\.ts$', '\\.performance\\.test\\.ts$'],
|
||||||
|
moduleDirectories: ['node_modules', 'src'],
|
||||||
|
moduleNameMapper: {
|
||||||
|
'^src/(.*)$': '<rootDir>/src/$1',
|
||||||
|
},
|
||||||
|
collectCoverage: true,
|
||||||
|
coverageDirectory: '.locale/coverage',
|
||||||
|
coverageReporters: ['text', 'lcov'],
|
||||||
|
coverageThreshold: {
|
||||||
|
global: {
|
||||||
|
branches: 70,
|
||||||
|
functions: 70,
|
||||||
|
lines: 70,
|
||||||
|
statements: 70,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
41
package.json
Normal file
41
package.json
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"name": "vhdldoc",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "VHDL Documentation Generator using web-tree-sitter",
|
||||||
|
"main": "dist/index.js",
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc",
|
||||||
|
"start": "ts-node -r tsconfig-paths/register src/index.ts",
|
||||||
|
"lint": "eslint --ext .ts .",
|
||||||
|
"lint:fix": "eslint --fix --ext .ts .",
|
||||||
|
"format": "prettier --write .",
|
||||||
|
"test": "jest",
|
||||||
|
"test:watch": "jest --watch",
|
||||||
|
"docs": "typedoc"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "MIT",
|
||||||
|
"devDependencies": {
|
||||||
|
"@stylistic/eslint-plugin": "^2.6.2",
|
||||||
|
"@types/jest": "^29.5.12",
|
||||||
|
"@types/node": "^20.14.11",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^8.1.0",
|
||||||
|
"@typescript-eslint/parser": "^8.1.0",
|
||||||
|
"eslint": "^8.56.0",
|
||||||
|
"eslint-plugin-deprecation": "^3.0.0",
|
||||||
|
"eslint-plugin-import": "^2.29.1",
|
||||||
|
"eslint-plugin-jsdoc": "^50.2.2",
|
||||||
|
"eslint-plugin-prettier": "^5.2.1",
|
||||||
|
"jest": "^29.7.0",
|
||||||
|
"prettier": "^3.2.5",
|
||||||
|
"ts-jest": "^29.2.3",
|
||||||
|
"ts-node": "^10.9.2",
|
||||||
|
"typedoc": "^0.26.5",
|
||||||
|
"typescript": "^5.5.3"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ts-injex": "github:PxaMMaxP/TSinjex",
|
||||||
|
"wavedrom": "^3.5.0",
|
||||||
|
"web-tree-sitter": "^0.22.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
34
tsconfig.json
Normal file
34
tsconfig.json
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES2020",
|
||||||
|
"module": "commonjs",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"baseUrl": "src", // ⚠️ Wichtig: Startpunkt für Pfad-Aliase
|
||||||
|
"paths": {
|
||||||
|
"*": ["*", "./*"] // ⚠️ Ermöglicht z. B. import { X } from 'elements/X'
|
||||||
|
},
|
||||||
|
"outDir": "./dist",
|
||||||
|
"rootDir": "./src",
|
||||||
|
"declaration": true,
|
||||||
|
"declarationMap": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"inlineSources": true,
|
||||||
|
"allowJs": true,
|
||||||
|
"importHelpers": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"emitDecoratorMetadata": true,
|
||||||
|
"strict": true,
|
||||||
|
"strictNullChecks": true,
|
||||||
|
"strictPropertyInitialization": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"lib": ["ES2020", "DOM"]
|
||||||
|
},
|
||||||
|
"include": ["src/**/*.ts"],
|
||||||
|
"exclude": ["node_modules"]
|
||||||
|
}
|
||||||
|
|
||||||
18
typedoc.json
Normal file
18
typedoc.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"entryPoints": [
|
||||||
|
"src/**/*.ts"
|
||||||
|
],
|
||||||
|
"out": ".locale/docs",
|
||||||
|
"tsconfig": "tsconfig.json",
|
||||||
|
"excludePrivate": false,
|
||||||
|
"excludeProtected": false,
|
||||||
|
"excludeExternals": false,
|
||||||
|
"includeVersion": true,
|
||||||
|
"readme": "README.md",
|
||||||
|
"exclude": [
|
||||||
|
"**/*.test.ts",
|
||||||
|
"**/*.spec.ts"
|
||||||
|
],
|
||||||
|
"theme": "default",
|
||||||
|
"hideGenerator": true
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user