First, thank you for being interested in contributing! We hope this page helps
as a guide. When in doubt, look at the files in this folder, read through issues
and PRs regarding the
Discussion) or visit the
#deno-std channel on our Discord and ask.
Currently, those are the general ideas behind how the module is implemented:
- Provide a clear, specific toolbox and vocabulary for common tasks with
- Optimize each specific tasks for maximum runtime and memory efficiency
- Functions are expected to be pure by default, side effects (like mutation of
arguments) need to be clearly marked, documented and the function put into the
- Accept and return
Records - we are optimizing for the most
common use cases and leave more general approaches to the
ES iterator helpers proposal
- Some implementations for common tasks are pretty trivial - this is fine. It
still provides a readable vocabulary to express a common task, is as optimized
as possible and helps newcomers. Be aware that it might not be everyone's
style to use small functions and we do not want to change that, just offer a
way to do so if desired
- All functions can be imported in isolation to reduce bundle size if important
- All functions are implemented in Typescript
If you want to post a PR, this checklist might help you to speed up the process
by solving most common review comments upfront.
- Did you support importing from
mod.ts as well as your functions file?
- Have you made sure to allocate as little memory and do as little steps in your
algorithm as possible?
- Did you add/adapt JSDoc comments, add/adapt an example, made sure that the
example uses the
ts markdown tag and
assertEquals to show the result?
- Did you add/adapt your functions documentation in
- Did you make sure not to mutate the arguments passe to your function?
- Did you add tests ensuring no mutation, empty input and corner cases?
- Are your types flat, meaning there is no unnecessary alias in them that makes
your users "go to type definition" twice to understand what to pass?
- Document and maintain browser