eslint / json

JSON language plugin for ESLint
Apache License 2.0
46 stars 4 forks source link

New rule: Normalize string keys #32

Closed bmeck closed 5 days ago

bmeck commented 1 month ago

Rule details

Normalize string keys

What type of rule is this?

Suggests an alternate way of doing something

Example code

Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize , there are examples of unicode that are similar in character. Generally this could mean that there is a key mismatch on 2 apparently similar strings. Suggesting using a normalized form to avoid this potential issue would be good so that the following 2 object don't have mismatched keys:

{
  "Amélie": 1
}
{
  "Amélie": 2
}

There are valid use cases for these key mismatches, but they are generally very specific in scope.

Participation

Additional comments

Similar mismatches or deception such as using Bidi mixing / zero width characters etc. are potentially in the same vein but likely would be a different scope since those have associated CVEs.

nzakas commented 1 month ago

Ah interesting. I agree this would be good to catch. I'm wondering if this should be part of no-duplicate-keys via an option or a completely separate rule. What do you think?

bmeck commented 1 month ago

@nzakas I think duplicate keys via a config would be sane but the name of that role is a bit awkward since this occurs without having more than 1 key.

nzakas commented 1 month ago

Fair point. A new rule it is! Maybe no-unnormalized-keys?