Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .commitlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": ["@commitlint/config-conventional"]
}
84 changes: 0 additions & 84 deletions .eslintrc.yml

This file was deleted.

1 change: 0 additions & 1 deletion .husky/commit-msg

This file was deleted.

1 change: 0 additions & 1 deletion .husky/pre-commit

This file was deleted.

1 change: 0 additions & 1 deletion .husky/pre-push

This file was deleted.

6 changes: 0 additions & 6 deletions .lintstagedrc

This file was deleted.

11 changes: 11 additions & 0 deletions @types/eslint-plugin-promise.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
declare module 'eslint-plugin-promise' {
import { type Linter } from 'eslint';

const plugin: {
configs: {
'flat/recommended': Linter.Config;
};
};

export default plugin;
}
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[![License: MIT](https://img.shields.io/github/license/itskyedo/woff2-encoder?color=blue)](https://github.com/itskyedo/woff2-encoder/blob/main/LICENSE)
[![NPM Version](https://img.shields.io/npm/v/woff2-encoder.svg?logo=npm&color=red)](https://npmjs.org/package/woff2-encoder)
[![Download Count](https://img.shields.io/npm/dm/woff2-encoder.svg?color=green)](https://npmjs.org/package/woff2-encoder)
[![Download Count](https://img.shields.io/npm/dm/woff2-encoder.svg?color=brightgreen)](https://npmjs.org/package/woff2-encoder)

A TypeScript library for handling WOFF2 encoding using WebAssembly.

Expand All @@ -12,7 +12,7 @@ A TypeScript library for handling WOFF2 encoding using WebAssembly.

### Prerequisites

- If using Node, `>= 18.x`
- If using Node, `>= 20.x`

### Installation

Expand Down
120 changes: 120 additions & 0 deletions eslint.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
/* eslint sort/object-properties: warn */

import js from '@eslint/js';
import tsParser from '@typescript-eslint/parser';
import { defineConfig, globalIgnores } from 'eslint/config';
import eslintConfigPrettier from 'eslint-config-prettier/flat';
import importPlugin from 'eslint-plugin-import';
import jsdocPlugin from 'eslint-plugin-jsdoc';
import promisePlugin from 'eslint-plugin-promise';
import sortPlugin from 'eslint-plugin-sort';
import { configs as tseslintConfigs } from 'typescript-eslint';

export default defineConfig(
globalIgnores(['dist/', 'build/', 'node_modules/', './src/_generated/']),
js.configs.recommended,
promisePlugin.configs['flat/recommended'],
sortPlugin.configs['flat/recommended'],
jsdocPlugin.configs['flat/recommended-typescript'],
{
rules: {
'jsdoc/check-param-names': ['error', { checkDestructured: false }],
'jsdoc/require-description-complete-sentence': 'error',
'jsdoc/require-hyphen-before-param-description': [
'error',
'always',
{ tags: { '*': 'always', returns: 'never', yields: 'never' } },
],
'jsdoc/require-jsdoc': 'off',
'jsdoc/require-param': ['error', { checkDestructuredRoots: false }],
'jsdoc/require-returns': ['error', { checkGetters: false }],
'jsdoc/tag-lines': ['error', 'always', { count: 0, startLines: 1 }],
},
},
tseslintConfigs.recommendedTypeChecked,
tseslintConfigs.stylisticTypeChecked,
{
extends: [
importPlugin.flatConfigs.recommended,
importPlugin.flatConfigs.typescript,
],
files: ['**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}'],
languageOptions: {
parserOptions: {
parser: tsParser,
projectService: true,
tsconfigRootDir: import.meta.dirname,
},
},
settings: {
'import/resolver': {
node: true,
typescript: true,
},
},
},
{
rules: {
'@typescript-eslint/consistent-generic-constructors': [
'error',
'type-annotation',
],
'@typescript-eslint/consistent-type-imports': [
'warn',
{ fixStyle: 'inline-type-imports' },
],
'@typescript-eslint/dot-notation': [
'error',
{
allowPrivateClassPropertyAccess: true,
allowProtectedClassPropertyAccess: true,
},
],
'@typescript-eslint/naming-convention': [
'error',
{
format: ['StrictPascalCase'],
selector: 'typeLike',
},
{
format: ['StrictPascalCase'],
prefix: ['T'],
selector: 'typeParameter',
},
],
'@typescript-eslint/no-empty-object-type': [
'error',
{ allowInterfaces: 'with-single-extends' },
],
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-inferrable-types': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{
args: 'all',
argsIgnorePattern: '^_',
caughtErrors: 'all',
caughtErrorsIgnorePattern: '^_',
destructuredArrayIgnorePattern: '^_',
ignoreRestSiblings: true,
varsIgnorePattern: '^_',
},
],
'import/consistent-type-specifier-style': ['warn', 'prefer-inline'],
'import/extensions': ['error', 'always', { ignorePackages: true }],
'import/no-cycle': 'error',
'no-warning-comments': 'warn',
'require-yield': 'off',
'security/detect-object-injection': 'off',
'security/detect-unsafe-regex': 'off',
'sort/object-properties': 'off',
},
},
{
files: ['**/*.test.ts', '**/*.spec.ts'],
rules: {
'@typescript-eslint/no-unsafe-assignment': 'off',
},
},
eslintConfigPrettier
);
7 changes: 7 additions & 0 deletions lefthook.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
commit-msg:
jobs:
- run: npx commitlint --edit

pre-push:
jobs:
- run: npm run check && npm run test
Loading
Loading