diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 9d08a1a8..00000000 --- a/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..feae8ed0 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,66 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint', 'react', 'react-hooks'], + parserOptions: { parser: '@babel/eslint-parser', requireConfigFile: false }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + 'plugin:import/typescript', + 'plugin:import/recommended', + 'plugin:react/recommended', + 'plugin:react-hooks/recommended', + 'plugin:import/typescript' + ], + settings: { react: { version: 'detect' } }, + env: { browser: true, node: true }, + rules: { + '@typescript-eslint/no-non-null-assertion': 0, + 'react/prop-types': 0, + + // React + 'react-hooks/rules-of-hooks': 'off', + 'react/no-unknown-property': 'off', + + // Import Rules + 'import/no-cycle': ['warn', { maxDepth: Infinity }], + 'import/no-unresolved': 'off', + 'import/export': 'off', + + // TS Rules + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-explicit-any': 'warn', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-this-alias': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-inferrable-types': 'off', + '@typescript-eslint/no-unused-vars': ['warn'], + '@typescript-eslint/no-empty-interface': 'off', + '@typescript-eslint/method-signature-style': 'error', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/naming-convention': [ + 'error', + { selector: 'variableLike', format: ['camelCase', 'PascalCase', 'UPPER_CASE'] }, + { + selector: 'memberLike', + format: ['camelCase', 'PascalCase', 'snake_case', 'UPPER_CASE'], + filter: { + regex: '/.*|@.*|[a-z|-|~|@].*', + match: false + } + }, + { selector: 'variable', format: ['camelCase', 'PascalCase', 'UPPER_CASE', 'snake_case'] }, + { selector: 'parameter', format: ['camelCase', 'PascalCase'], leadingUnderscore: 'allow' }, + { selector: 'typeLike', format: ['PascalCase'] } + ], + + // Common Rules + 'no-self-assign': 'off', + 'no-constant-condition': 'off', + 'no-unused-vars': 'warn', + curly: ['error', 'multi', 'consistent'], + 'no-console': ['error', { allow: ['warn', 'error', 'debug', 'info', 'groupCollapsed', 'groupEnd', 'time', 'timeEnd'] }] + } +} diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..0fc76767 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @seonglae \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..24071f11 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,5 @@ +github: + - seonglae +custom: + - 'https://paypal.me/seonglae' + - 'https://www.buymeacoffee.com/seongland' diff --git a/.github/ISSUE_TEMPLATE/01_bug_report.yml b/.github/ISSUE_TEMPLATE/01_bug_report.yml new file mode 100644 index 00000000..6af80feb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/01_bug_report.yml @@ -0,0 +1,22 @@ +--- +name: 🐛 Bug Report +description: Something isn't working as expected +labels: + - bug +body: + - type: input + id: testcase + attributes: + label: Reproducible test case + description: + If possible, please create a minimal test case that reproduces your + problem. + validations: + required: true + - type: textarea + id: summary + attributes: + label: Additional information + description: + Please share any other relevant information not mentioned above. What + did you expect to happen? What do you think the problem might be? diff --git a/.github/ISSUE_TEMPLATE/02_feature_request.yml b/.github/ISSUE_TEMPLATE/02_feature_request.yml new file mode 100644 index 00000000..8aaaa875 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/02_feature_request.yml @@ -0,0 +1,28 @@ +--- +name: 🟢 Feature Request +description: Wouldn’t it be nice if +labels: + - feature +body: + - type: textarea + id: summary + attributes: + label: What? + description: Describe your feature idea + validations: + required: true + - type: textarea + id: why + attributes: + label: Why? + description: Describe the problem you are facing + validations: + required: true + - type: textarea + id: alternatives + attributes: + label: How? + description: + Describe you tried or ideas to implement the feature + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/03_others.yml b/.github/ISSUE_TEMPLATE/03_others.yml new file mode 100644 index 00000000..c391ffc9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/03_others.yml @@ -0,0 +1,11 @@ +--- +name: Other Issue +description: Other kind of the issue +body: + - type: textarea + id: summary + attributes: + label: Summary + description: Any precise description of the issue + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..3ba13e0c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false diff --git a/.github/branch-convention.md b/.github/branch-convention.md new file mode 100644 index 00000000..a89989a3 --- /dev/null +++ b/.github/branch-convention.md @@ -0,0 +1,9 @@ +## Git Branch name Convention + +#### TL;DR: + +Branch name must be matched by the following regex: + +```re +^(feature|bug|document|style|refactor|test|deps)\/\#[0-9]{1,5}-[a-z|A-Z|\-|0-9]{1,20} +``` diff --git a/.github/commit-convention.md b/.github/commit-convention.md new file mode 100644 index 00000000..38784461 --- /dev/null +++ b/.github/commit-convention.md @@ -0,0 +1,92 @@ +## Git Commit Message Convention + +> This is adapted from [Vite's commit convention](https://github.com/vitejs/vite/blob/main/.github/commit-convention.md). + +#### TL;DR: + +Messages must be matched by the following regex: + + +```re +^(revert: )?(feat|fix|docs|refactor|test|build|lint|format|merge|typing|perf|meta|deps)(\(.+\))?: .{1,50} +``` + +#### Examples + +Appears under "Features" header, `dev` subheader: + +``` +feat(dev): add 'comments' option +``` + +Appears under "Bug Fixes" header, `dev` subheader, with a link to issue #28: + +``` +fix(dev): fix dev error + +close #28 +``` + +Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation: + +``` +perf(build): remove 'foo' option + +BREAKING CHANGE: The 'foo' option has been removed. +``` + +The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header. + +``` +revert: feat(compiler): add 'comments' option + +This reverts commit 667ecc1654a317a13331b17617d973392f415f02. +``` + +### Full Message Format + +A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**: + +``` +(): + + + +