The Deno Standard Library
Go to file
2019-01-27 10:21:00 -05:00
colors Rework color API (#134) 2019-01-19 05:09:35 -05:00
datetime fix format (#140) 2019-01-21 09:35:07 -06:00
examples Disable cat.ts test because it's broken on Windows. 2019-01-24 13:33:51 -05:00
flags Port prettier (#156) 2019-01-26 23:19:56 -05:00
fs Port prettier (#156) 2019-01-26 23:19:56 -05:00
http Remove race-condition in file_server tests (#125) 2019-01-17 13:08:59 -05:00
io fix possible range issues for copyBytes in io/util (#146) 2019-01-21 21:56:35 -06:00
log log: add tests (#136) 2019-01-27 10:21:00 -05:00
media_types Fix media_types running under Deno with ESM (#113) 2019-01-15 07:01:58 -05:00
prettier Port prettier (#156) 2019-01-26 23:19:56 -05:00
testing Port prettier (#156) 2019-01-26 23:19:56 -05:00
textproto Reorgnanize repos, examples and tests (#105) 2019-01-12 16:50:04 -05:00
ws format 2019-01-24 13:33:51 -05:00
.editorconfig add charset & trim_trailing_whitespace (#158) 2019-01-26 14:09:53 -05:00
azure-pipelines.yml Port prettier (#156) 2019-01-26 23:19:56 -05:00
format.ts Port prettier (#156) 2019-01-26 23:19:56 -05:00
LICENSE Happy New Year (#58) 2019-01-02 09:56:17 -05:00
README.md Style guide: metaprogramming, private filenames 2019-01-24 13:33:51 -05:00
test.ts log: add tests (#136) 2019-01-27 10:21:00 -05:00

Deno Standard Modules

Build Status

These modules do not have external dependencies and they are reviewed by the Deno core team. The intention is to have a standard set of high quality code that all Deno projects can use fearlessly.

Contributions are welcome!

How to use

These modules are tagged in accordance with Deno releases. So, for example, the v0.2.6 tag is guaranteed to work with deno v0.2.6. You can link to v0.2.6 using the URL https://deno.land/x/std@v0.2.6/

It's strongly recommended that you link to tagged releases rather than the master branch. The project is still young and we expect disruptive renames in the future.

Style Guide

Use TypeScript

Use the term "module" instead of "library" or "package"

For clarity and consistency avoid the terms "library" and "package". Instead use "module" to refer to a single JS or TS file and also to refer to a directory of TS/JS code.

Do not use the filename index.ts nor index.js

Deno does not treat "index.js" or "index.ts" in a special way. By using these filenames, it suggests that they can be left out of the module specifier when they cannot. This is confusing.

If a directory of code needs a default entry point, use the filename mod.ts. The filename mod.ts follows Rusts convention, is shorter than index.ts, and doesnt come with any preconceived notions about how it might work.

Within deno_std, do not depend on external code

deno_std is intended to be baseline functionality that all Deno programs can rely on. We want to guarantee to users that this code does not include potentially unreviewed third party code.

Within deno_std, minimize dependencies; do not make circular imports.

Although deno_std is a standalone codebase, we must still be careful to keep the internal dependencies simple and manageable. In particular, be careful to not to introduce circular imports.

For consistency, use underscores, not dashes in filenames.

Example: Instead of file-server.ts use file_server.ts.

Format code according using prettier.

More specifically, code should be wrapped at 80 columns and use 2-space indentation and use camel-case. Use //format.ts to invoke prettier.

Use JS Doc to document exported machinery

We strive for complete documentation. Every exported symbol ideally should have a documentation line.

If possible, use a single line for the JS Doc. Example:

/** foo does bar. */
export function foo() {
  // ...
}

See CONTRIBUTING.md for more details.

TODO Comments

TODO comments should be include an issue or the author's github username in parentheses. Example:

// TODO(ry) Add tests.
// TODO(#123) Support Windows.

Most files in deno_std should have the following copyright header:

// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.

If the code originates elsewhere, ensure that the file has the proper copyright headers. We only allow MIT, BSD, and Apache licensed code in deno_std.

Top level functions should not use arrow syntax

Top level functions should use the function keyword. Arrow syntax should be limited to closures.

Bad

export const foo(): string => {
  return "bar";
}

Good

export function foo(): string {
  return "bar";
}

Meta-programming is discouraged. Including the use of Proxy.

Be explicit even when it means more code.

There are some situations where it may make sense to use such techniques, but in the vast majority of cases it does not.

Sometimes there maybe situations where an internal module is necessary but its API is not meant to be stable or linked to. In this case prefix it with an underscore. By convention, only files in its own directory should import it.

When referencing Deno online, use the #denoland tag.

The name "deno" unfortunately is not especially unique on the internet. In order to centralize the community, please tag github project, tweet, and other content with #denoland.


Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.