{"id":25583446,"url":"https://github.com/hugoalh/deno-lint-rules","last_synced_at":"2026-01-19T12:00:41.731Z","repository":{"id":278537471,"uuid":"935937915","full_name":"hugoalh/deno-lint-rules","owner":"hugoalh","description":"A Deno lint plugin with hugoalh rules.","archived":false,"fork":false,"pushed_at":"2026-01-16T10:18:20.000Z","size":1042,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-16T23:50:16.394Z","etag":null,"topics":["deno","deno-lint","lint","rule","rules"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hugoalh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-20T09:09:07.000Z","updated_at":"2026-01-16T10:18:24.000Z","dependencies_parsed_at":"2025-03-08T04:19:48.836Z","dependency_job_id":"9b72c2a4-da95-46c5-acd3-4f3039272f63","html_url":"https://github.com/hugoalh/deno-lint-rules","commit_stats":null,"previous_names":["hugoalh/deno-lint-rules"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/hugoalh/deno-lint-rules","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugoalh%2Fdeno-lint-rules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugoalh%2Fdeno-lint-rules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugoalh%2Fdeno-lint-rules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugoalh%2Fdeno-lint-rules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hugoalh","download_url":"https://codeload.github.com/hugoalh/deno-lint-rules/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugoalh%2Fdeno-lint-rules/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28567861,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T08:53:44.001Z","status":"ssl_error","status_checked_at":"2026-01-19T08:52:40.245Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deno","deno-lint","lint","rule","rules"],"created_at":"2025-02-21T06:17:05.364Z","updated_at":"2026-01-19T12:00:41.724Z","avatar_url":"https://github.com/hugoalh.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hugoalh Deno Lint Rules\n\n[**⚖️** MIT](./LICENSE.md)\n\n[![GitHub: hugoalh/deno-lint-rules](https://img.shields.io/github/v/release/hugoalh/deno-lint-rules?label=hugoalh/deno-lint-rules\u0026labelColor=181717\u0026logo=github\u0026logoColor=ffffff\u0026sort=semver\u0026style=flat \"GitHub: hugoalh/deno-lint-rules\")](https://github.com/hugoalh/deno-lint-rules)\n[![JSR: @hugoalh/deno-lint-rules](https://img.shields.io/jsr/v/@hugoalh/deno-lint-rules?label=@hugoalh/deno-lint-rules\u0026labelColor=F7DF1E\u0026logo=jsr\u0026logoColor=000000\u0026style=flat \"JSR: @hugoalh/deno-lint-rules\")](https://jsr.io/@hugoalh/deno-lint-rules)\n\nA Deno lint plugin with hugoalh rules.\n\n## ▶️ Begin - Deno\n\n- **[Deno](https://deno.land/)** \u003e= v2.5.4\n\n### 🛡️ Runtime Permissions\n\nThis does not request any runtime permission.\n\n### #️⃣ Sources\n\n- GitHub Raw\n  ```\n  https://raw.githubusercontent.com/hugoalh/deno-lint-rules/{Tag}/mod.ts\n  ```\n- JSR\n  ```\n  jsr:@hugoalh/deno-lint-rules[@{Tag}]\n  ```\n\n\u003e [!NOTE]\n\u003e - It is recommended to include tag for immutability.\n\u003e - These are not part of the public APIs hence should not be used:\n\u003e   - Benchmark/Test file (e.g.: `example.bench.ts`, `example.test.ts`).\n\u003e   - Entrypoint name or path include any underscore prefix (e.g.: `_example.ts`, `foo/_example.ts`).\n\u003e   - Identifier/Namespace/Symbol include any underscore prefix (e.g.: `_example`, `Foo._example`).\n\n### ⤵️ Entrypoints\n\n| **Name** | **Path** | **Description** |\n|:--|:--|:--|\n| `.` | `./mod.ts` | Default; Use recommended rules without configure. |\n| `./setup` | `./setup.ts` | Setup; Configure rules. |\n\n### 🧩 APIs\n\n- ```ts\n  function setup(options?: PluginOptions): Deno.lint.Plugin;\n  ```\n\n\u003e [!NOTE]\n\u003e - For the full or prettier documentation, can visit via:\n\u003e   - [Deno CLI `deno doc`](https://docs.deno.com/runtime/reference/cli/doc/)\n\u003e   - [JSR](https://jsr.io/@hugoalh/deno-lint-rules)\n\n### ✍️ Examples\n\n- Use recommended rules without configure, via Deno configuration file\n  ```jsonc\n  {\n    \"lint\": {\n      \"plugins\": [\n        \"jsr:@hugoalh/deno-lint-rules[@{Tag}]\"\n      ]\n    }\n  }\n  ```\n- Configure rules\n  ```ts\n  /* .hugoalh.lint.ts */\n  import { setup } from \"HUGOALH_DENO_LINT_RULES/setup\";\n  export default setup({\n    ...\n  }) satisfies Deno.lint.Plugin as Deno.lint.Plugin;\n  ```\n  ```jsonc\n  /* deno.jsonc */\n  {\n    \"lint\": {\n      \"plugins\": [\n        \"./.hugoalh.lint.ts\"\n      ]\n    }\n  }\n  ```\n\n## 🧩 Rules\n\n\u003e | **Legend** | **Description** |\n\u003e |:-:|:--|\n\u003e | ✔️ | Recommended; Enable by default. |\n\u003e | 🔧 | Configurable. |\n\u003e | 🩹 | Fixer is available. |\n\n|  | **Identifier (Prefix `hugoalh/`)** | **Description** |\n|:-:|:--|:--|\n| ✔️ | [`ascii-identifier`](./_rules/ascii_identifier.md) | Require the identifier contain only ASCII characters. |\n| 🩹 | [`curly-arrow-function`](./_rules/curly_arrow_function.md) | Require the body of the arrow function expression is in block. |\n| 🩹 | [`curly-do-while`](./_rules/curly_do_while.md) | Require the body of the `do-while` statement is in block. |\n| 🩹 | [`curly-else`](./_rules/curly_else.md) | Require the body of the `else` statement is in block. |\n| 🩹 | [`curly-for-in`](./_rules/curly_for_in.md) | Require the body of the `for-in` statement is in block. |\n| 🩹 | [`curly-for-of`](./_rules/curly_for_of.md) | Require the body of the `for-of` statement is in block. |\n| 🩹 | [`curly-for`](./_rules/curly_for.md) | Require the body of the `for` statement is in block. |\n| 🩹 | [`curly-if`](./_rules/curly_if.md) | Require the body of the `if` statement is in block. |\n| 🩹 | [`curly-while`](./_rules/curly_while.md) | Require the body of the `while` statement is in block. |\n| 🩹 | [`curly-with`](./_rules/curly_with.md) | Require the body of the `with` statement is in block. |\n|  | [`deno-coverage-ignore-file-reason`](./_rules/deno_coverage_ignore_file_reason.md) | Require the Deno coverage ignore file directive have a reason. |\n|  | [`deno-coverage-ignore-line-reason`](./_rules/deno_coverage_ignore_line_reason.md) | Require the Deno coverage ignore line directive have a reason. |\n|  | [`deno-coverage-ignore-start-reason`](./_rules/deno_coverage_ignore_start_reason.md) | Require the Deno coverage ignore start directive have a reason. |\n|  | [`deno-fmt-ignore-file-reason`](./_rules/deno_fmt_ignore_file_reason.md) | Require the Deno format ignore file directive have a reason. |\n|  | [`deno-fmt-ignore-line-reason`](./_rules/deno_fmt_ignore_line_reason.md) | Require the Deno format ignore line directive have a reason. |\n| ✔️ | [`deno-lint-ignore-file-reason`](./_rules/deno_lint_ignore_file_reason.md) | Require the Deno lint ignore file directive have a reason. |\n| ✔️ | [`deno-lint-ignore-line-reason`](./_rules/deno_lint_ignore_line_reason.md) | Require the Deno lint ignore line directive have a reason. |\n| ✔️🔧🩹 | [`fmt-hex-case`](./_rules/fmt_hex_case.md) | Require normalize the case of the hex number; Default to upper case. |\n| ✔️🩹 | [`fmt-jsdoc`](./_rules/fmt_jsdoc.md) | Require normalize the JSDoc. |\n| ✔️🩹 | [`fmt-numeric-base-case`](./_rules/fmt_numeric_base_case.md) | Require normalize the case of the numeric base to lower case. |\n| ✔️🩹 | [`fmt-numeric-exponent-case`](./_rules/fmt_numeric_exponent_case.md) | Require normalize the case of the numeric exponent to lower case. |\n| 🔧🩹 | [`fmt-numeric-exponent-sign`](./_rules/fmt_numeric_exponent_sign.md) | Require normalize the sign of the numeric exponent. |\n| ✔️🔧🩹 | [`fmt-numeric-separation`](./_rules/fmt_numeric_separation.md) | Require normalize the numeric separation. |\n| ✔️ | [`import-at-start`](./_rules/import_at_start.md) | Require `import` statement locate at the start of the script. |\n| ✔️ | [`jsdoc-deprecated-reason`](./_rules/jsdoc_deprecated_reason.md) | Require the JSDoc `@deprecated` tag have a reason. |\n| 🔧 | [`max-complexity`](./_rules/max_complexity.md) | Restrict maximum complexity of the code. |\n| 🔧 | [`max-file-size`](./_rules/max_file_size.md) | Restrict maximum size of the script file. |\n| 🔧 | [`max-nest-ternaries`](./_rules/max_nest_ternaries.md) | Restrict maximum nest of the ternary expressions. |\n| 🔧 | [`max-params`](./_rules/max_params.md) | Restrict maximum number of parameters per function/method definition. |\n|  | [`no-alert`](./_rules/no_alert.md) | Forbid use of `alert`. |\n| 🩹 | [`no-character-ambiguous`](./_rules/no_character_ambiguous.md) | Forbid character which is ambiguous. |\n|  | [`no-character-invisible`](./_rules/no_character_invisible.md) | Forbid character which is invisible. |\n| ✔️🩹 | [`no-class-constructor-return`](./_rules/no_class_constructor_return.md) | Forbid `return` statement with value in the class constructor. |\n|  | [`no-confirm`](./_rules/no_confirm.md) | Forbid use of `confirm`. |\n|  | [`no-decorator`](./_rules/no_decorator.md) | Forbid use of decorator. |\n|  | [`no-delete`](./_rules/no_delete.md) | Forbid use of `delete` operator. |\n| ✔️🩹 | [`no-deno-types`](./_rules/no_deno_types.md) | Forbid use of `@deno-types` directive. |\n|  | [`no-deno`](./_rules/no_deno.md) | Forbid use of `Deno`. |\n| ✔️🩹 | [`no-depend-from-absolute`](./_rules/no_depend_from_absolute.md) | Forbid depend module via absolute path. |\n| ✔️ | [`no-depend-from-data`](./_rules/no_depend_from_data.md) | Forbid depend module via protocol `data:`. |\n| ✔️ | [`no-depend-from-dlmr`](./_rules/no_depend_from_dlmr.md) | Forbid depend module from DLMR (Deno Land Module Registry). |\n| ✔️🩹 | [`no-depend-from-file`](./_rules/no_depend_from_file.md) | Forbid depend module via protocol `file:`. |\n| ✔️🩹 | [`no-depend-from-http`](./_rules/no_depend_from_http.md) | Forbid depend module via protocol `http:`. |\n|  | [`no-depend-from-https`](./_rules/no_depend_from_https.md) | Forbid depend module via protocol `https:`. |\n|  | [`no-depend-from-jsr-protocol`](./_rules/no_depend_from_jsr_protocol.md) | Forbid depend module from JSR via protocol `jsr:`. |\n| ✔️ | [`no-depend-from-jsr-url`](./_rules/no_depend_from_jsr_url.md) | Forbid depend module from JSR via URL. |\n| ✔️ | [`no-depend-from-node-non-functional`](./_rules/no_depend_from_node_non_functional.md) | Forbid depend non functional NodeJS module in Deno. |\n|  | [`no-depend-from-node`](./_rules/no_depend_from_node.md) | Forbid depend NodeJS module (i.e.: via protocol `node:`). |\n|  | [`no-depend-from-npm-protocol`](./_rules/no_depend_from_npm_protocol.md) | Forbid depend module from NPM via protocol `npm:`. |\n| ✔️🩹 | [`no-depend-from-npm-url`](./_rules/no_depend_from_npm_url.md) | Forbid depend module from NPM via URL. |\n| ✔️ | [`no-depend-from-self`](./_rules/no_depend_from_self.md) | Forbid depend self. |\n|  | [`no-depend-type-bytes`](./_rules/no_depend_type_bytes.md) | Forbid depend file or script with bytes type. |\n|  | [`no-depend-type-json`](./_rules/no_depend_type_json.md) | Forbid depend JSON file, or file or script with JSON type. |\n|  | [`no-depend-type-text`](./_rules/no_depend_type_text.md) | Forbid depend file or script with text type. |\n|  | [`no-depend-type-wasm`](./_rules/no_depend_type_wasm.md) | Forbid depend WASM (WebAssembly) module. |\n| ✔️🩹 | [`no-duplicate-awaits`](./_rules/no_duplicate_awaits.md) | Forbid duplicate `await`s. |\n| ✔️ | [`no-duplicate-export-sources`](./_rules/no_duplicate_export_sources.md) | Forbid duplicate `export` sources. |\n| ✔️ | [`no-duplicate-import-identifiers`](./_rules/no_duplicate_import_identifiers.md) | Forbid duplicate `import` identifiers. |\n| ✔️ | [`no-duplicate-import-sources`](./_rules/no_duplicate_import_sources.md) | Forbid duplicate `import` sources. |\n| ✔️ | [`no-duplicate-interfaces`](./_rules/no_duplicate_interfaces.md) | Forbid duplicate `interface`s. |\n| ✔️🩹 | [`no-duplicate-set-types`](./_rules/no_duplicate_set_types.md) | Forbid duplicate set types in intersection or union. |\n| ✔️🩹 | [`no-duplicate-typeofs`](./_rules/no_duplicate_typeofs.md) | Forbid duplicate `typeof`s. |\n| ✔️ | [`no-duplicate-types`](./_rules/no_duplicate_types.md) | Forbid duplicate `type`s. |\n| ✔️🩹 | [`no-duplicate-voids`](./_rules/no_duplicate_voids.md) | Forbid duplicate `void`s. |\n| ✔️🩹 | [`no-empty-comment-block`](./_rules/no_empty_comment_block.md) | Forbid empty comment block. |\n| ✔️🩹 | [`no-empty-comment-line`](./_rules/no_empty_comment_line.md) | Forbid empty comment line. |\n| ✔️🩹 | [`no-empty-jsdoc`](./_rules/no_empty_jsdoc.md) | Forbid empty JSDoc. |\n| ✔️ | [`no-empty-yield`](./_rules/no_empty_yield.md) | Forbid empty `yield`. |\n| ✔️ | [`no-enum-mix-value-type`](./_rules/no_enum_mix_value_type.md) | Forbid use of `enum` with mix value type. |\n| ✔️ | [`no-enum`](./_rules/no_enum.md) | Forbid use of `enum`. |\n| ✔️ | [`no-export-depend`](./_rules/no_export_depend.md) | Forbid export dependency. |\n| ✔️🩹 | [`no-float-dot-lone`](./_rules/no_float_dot_lone.md) | Forbid float with lone dot (`.`). |\n| ✔️🩹 | [`no-float-dot-start`](./_rules/no_float_dot_start.md) | Forbid float without integer but with start dot (`.`). |\n|  | [`no-iife`](./_rules/no_iife.md) | Forbid use of IIFE (immediately invoked function expression). |\n|  | [`no-import-dynamic`](./_rules/no_import_dynamic.md) | Forbid import module dynamically. |\n|  | [`no-import-source`](./_rules/no_import_source.md) | Forbid import file, module, or script as source. |\n| ✔️🩹 | [`no-misuse-for`](./_rules/no_misuse_for.md) | Forbid misuse `for` statement. |\n| ✔️🩹 | [`no-misuse-switch`](./_rules/no_misuse_switch.md) | Forbid misuse `switch` statement. |\n| ✔️ | [`no-modifier-private`](./_rules/no_modifier_private.md) | Forbid use of modifier `private`. |\n| ✔️ | [`no-modifier-public`](./_rules/no_modifier_public.md) | Forbid use of modifier `public`. |\n| ✔️ | [`no-nan`](./_rules/no_nan.md) | Forbid use of `NaN`. |\n|  | [`no-prompt`](./_rules/no_prompt.md) | Forbid use of `prompt`. |\n| 🩹 | [`no-sequence-assignment`](./_rules/no_sequence_assignment.md) | Forbid sequence assignments and variables declaration. |\n| ✔️🩹 | [`no-split-interface`](./_rules/no_split_interface.md) | Forbid split `interface` with same identifier. |\n| ✔️🩹 | [`no-type-assertion-angle-bracket`](./_rules/no_type_assertion_angle_bracket.md) | Forbid type assertion with angle bracket syntax. |\n| ✔️🩹 | [`no-unknown-jsdoc-tag`](./_rules/no_unknown_jsdoc_tag.md) | Forbid unknown JSDoc tag. |\n| ✔️ | [`no-unsafe-number`](./_rules/no_unsafe_number.md) | Forbid unsafe number. |\n| ✔️🩹 | [`no-use-strict`](./_rules/no_use_strict.md) | Forbid use of `use strict` directive. |\n| ✔️🩹 | [`no-useless-block`](./_rules/no_useless_block.md) | Forbid useless block and nest block. |\n| ✔️🩹 | [`no-useless-calculate-strings`](./_rules/no_useless_calculate_strings.md) | Forbid useless calculate on strings. |\n| ✔️ | [`no-useless-catch`](./_rules/no_useless_catch.md) | Forbid useless `catch` statement. |\n| ✔️🩹 | [`no-useless-continue`](./_rules/no_useless_continue.md) | Forbid useless `continue` statement. |\n| ✔️ | [`no-useless-else`](./_rules/no_useless_else.md) | Forbid useless `else` statement. |\n| ✔️🩹 | [`no-useless-export`](./_rules/no_useless_export.md) | Forbid useless `export` statement. |\n| ✔️ | [`no-useless-expression`](./_rules/no_useless_expression.md) | Forbid useless expression which will do nothing. |\n| ✔️🩹 | [`no-useless-numeric-exponent`](./_rules/no_useless_numeric_exponent.md) | Forbid useless numeric exponent. |\n| ✔️🩹 | [`no-useless-switch-case`](./_rules/no_useless_switch_case.md) | Forbid useless `switch` case. |\n| ✔️🩹 | [`no-useless-template-string-expression`](./_rules/no_useless_template_string_expression.md) | Forbid useless expression in the template string. |\n| 🔧🩹 | [`no-useless-template-string`](./_rules/no_useless_template_string.md) | Forbid useless template string. |\n| ✔️🩹 | [`no-useless-ternary`](./_rules/no_useless_ternary.md) | Forbid useless ternary expression. |\n| ✔️ | [`no-useless-type`](./_rules/no_useless_type.md) | Forbid useless `type`. |\n|  | [`no-using`](./_rules/no_using.md) | Forbid use of `using` statement and `await using` statement. |\n|  | [`no-void`](./_rules/no_void.md) | Forbid use of void operator. |\n| ✔️🩹 | [`prefer-interface`](./_rules/prefer_interface.md) | Prefer to use `interface` instead of `type`. |\n| ✔️ | [`std-on-jsr`](./_rules/std_on_jsr.md) | Require depend Deno Standard Library (std) from JSR. |\n|  | [`symbol-description`](./_rules/symbol_description.md) | Require `Symbol` to have a description. |\n| ✔️🩹 | [`unique-array`](./_rules/unique_array.md) | Require the literal array have unique elements when explicitly specify before with block comment. |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhugoalh%2Fdeno-lint-rules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhugoalh%2Fdeno-lint-rules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhugoalh%2Fdeno-lint-rules/lists"}