Each package or functionality must be accompanied by full coverage testing.
Due to Javascript type coercion, all test assertions must use strict equality checking.
- expect(1).toBe('1')
- expect(1).toEqual('1')
+ expect(1).toStrictEqual(1)
TODO comments should usually include the author's github username in parentheses. Example:
// TODO(fuxingloh): Add tests.
Please follow the guidelines outlined at https://github.com/JellyfishSDK/.github/blob/main/CODE_OF_CONDUCT.md
Each package, feature, code and decision should be explicit and well documented over implicitly guessing.
TypeScript must be used for all code written in this project.
Heavily adapted from deno style guide.
Example: Use foo.bar.ts
instead of foo-bar.ts
.
It's an anti-pattern for scaling code, it gives a false impression of separation of concern. All it does is create a mass of code concentration within project that were better separated.
An analogy for this problem is file organization in projects. Many of us have come to agree that organizing files by file type (e.g. splitting everything into html, js and css folders) don't really scale. The code related to a feature will be forced to be split between three folders, just for a false impression of "separation of concerns". The key here is that "concerns" is not defined by file type. Instead, most of us opt to organize files by feature or responsibility. vuejs/rfcs#55 (comment)