Skip to content

List of JavaScript Kata to Update

Voile edited this page May 6, 2020 · 31 revisions

Strict mode and arguments.callee

arguments.callee should not be used even if it succeeds (which happens in user solution), because it doesn't work in strict mode and the test fixture runs in strict mode.

arguments.callee.caller can be replaced by using named functions f and then access f.caller. Getters cannot have a function name, so Object.defineProperty should be used instead. Note that the use of Function.caller is still extremely discouraged since it is deprecated, and it doesn't work in strict mode either.

Native BigInts in Node

Native BigInts are available in Node 10.x. JS versions of all BigInt katas (arithmetic operations to numbers represented as strings) should be removed once Node 8.x is deprecated in the future.

Though they should've been removed already anyway since bignumber.js is installed in the environment, which means require would have to be disabled. Which does nothing anyway because people can just copy the entire minified source code from the bignumber.js repo into their solution, and things go out of hand very quickly with this.


Let's start by deprecating Node 6.x.

The following kata does not have 8.x/10.x supported. Some of these can be retired if it's not possible (or not worth the effort) to fix.

  1. Algebraic Data Types Should be retired because Church numbers have already been done too many times. Moreover, the restrictions in the kata (no use of arithmetic operators) isn't working.
  2. Anakin's Colorful Protocol Droids
    • Relies on specific version of Babel that no longer exists
    • Preloaded defines Droid constructor function, solution defines its methods
  3. Fast Stats on an Array Should be retired because it is made obsolete by ES6's addition of Proxy
  4. Green Glass Roof- Puzzles #6
    • SyntaxError: Unexpected token (
  5. Helper Functions and Recursion - Factorials, Permutations and Combinations Should be retired because it's a duplicate of 3 existing katas (this, this and this), and the recursion check can never be realized in JS
  6. Implement Debounce
    • Overrides require
  7. Shorten Me: Array Declaration I (Console) Should be retired because the requirement itself is coupled to the specific Node version (it's the property key list of Node 6.x's console implementation), there is no point maintaining compatibility for this kata
  8. Token passing - Hack this code #2 Should be retired because it does not conform to beta kata standard: the task is unspecified, with kata author insisting that, paraphrased, "it is the puzzle of the kata".
  9. Type Aware - Advanced Test Fixture #1 Should be retired because the test suite is reinventing the testing framework in an extremely hacky, fragile and hostile way.
Clone this wiki locally