| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Do you think it would be possible to work on re-using as much code as possible? I think that would be a very good idea if we can make it work (because it’s going to happen eventually anyway). |
Sorry, something went wrong.
|
without overstepping this pr too much, maybe we can take this opportunity to think of a new way to group our compression stuff, both in terms of source and namespace (require('compression/brotli') or something) |
Sorry, something went wrong.
|
As per Introducing New Modules policy, beware: |
Sorry, something went wrong.
I managed to miss that, I can talk to the author but maybe this could be moved under a scope as brought up in nodejs/TSC#389 |
Sorry, something went wrong.
|
hey guys, I'm the owner of brotli on npm. That package is a hand coded decoder + emscripten ported encoder which both work in the browser as well as node. I'd be happy to make the package's API compatible with whatever API node decides on and use it as a browserify-style port so it can be used in the browser. WDYT? |
Sorry, something went wrong.
There was a problem hiding this comment.
Doc part LGTM with some nits. Sorry for a big bunch of them)
And thank you!
Sorry, something went wrong.
| @@ -81,6 +81,10 @@ added: v9.6.0 | |||
|
|
|||
| Enable experimental ES Module support in the `vm` module. | |||
|
|
|||
| ### `--expose-brotli` | |||
|
|
|||
There was a problem hiding this comment.
Should we add metadata?
<!-- YAML added: REPLACEME -->
Sorry, something went wrong.
There was a problem hiding this comment.
I didn't know what I should put there so I just removed those. Should they just be set to like v10.x.x? Or I guess REPLACEME works too :)
Sorry, something went wrong.
There was a problem hiding this comment.
also with our pattern i think it should be --experimental-brotli
Sorry, something went wrong.
There was a problem hiding this comment.
If I recall correctly, REPLACEME has some part in build automation as a do-not-forget-to-replace guard)
Sorry, something went wrong.
| @@ -0,0 +1,404 @@ | |||
| # Brotli | |||
|
|
|||
|
|
||
| ## Threadpool Usage | ||
|
|
||
| Note that all brotli APIs except those that are explicitly synchronous use |
There was a problem hiding this comment.
brotli APIs -> `brotli` APIs?
Sorry, something went wrong.
| content-encoding mechanism defined by | ||
| [HTTP](https://tools.ietf.org/html/rfc7230#section-4.2). | ||
|
|
||
| The HTTP [`Accept-Encoding`][] header is used within an http request to identify |
There was a problem hiding this comment.
http request -> HTTP request or `http` request?
Sorry, something went wrong.
|
|
||
| // Note: This is not a conformant accept-encoding parser. | ||
| // See https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3 | ||
| // Note: A quality of 4 is a good balace of speed and quality. |
There was a problem hiding this comment.
balace ->balance?
Sorry, something went wrong.
| Error codes for decompression operations. | ||
|
|
||
| ## brotli.constants | ||
|
|
| to supply options to the `brotli` classes and will call the supplied callback | ||
| with `callback(error, result)`. | ||
|
|
||
| Every method has a `*Sync` counterpart, which accept the same arguments, but |
There was a problem hiding this comment.
accept -> accepts?
Sorry, something went wrong.
| Every method has a `*Sync` counterpart, which accept the same arguments, but | ||
| without a callback. | ||
|
|
||
| ### brotli.compress(buffer[, options][, callback]) |
There was a problem hiding this comment.
If it can be a string, then buffer -> data here and below?
Sorry, something went wrong.
| - `buffer` {Buffer|TypedArray|DataView|ArrayBuffer|string} | ||
|
|
||
| Decompress a chunk of data with [Decompress][]. | ||
| If callback is omitted a Promise will be returned. |
There was a problem hiding this comment.
Promise -> `Promise` or even {Promise} (will be linkified)?
Ditto below.
Sorry, something went wrong.
|
|
||
| - `buffer` {Buffer|TypedArray|DataView|ArrayBuffer|string} | ||
|
|
||
| Decompress a chunk of data with [Decompress][]. |
There was a problem hiding this comment.
Compress a chunk of data with [Compress][].
Sorry, something went wrong.
|
@vsemozhetbyt a few of the things you mentioned also apply to the zlib docs, those should probably be looked over sometime as well. |
Sorry, something went wrong.
|
|
||
| Compress a stream. | ||
|
|
||
| ### new brotli.Compress(options) |
There was a problem hiding this comment.
[options]?
Sorry, something went wrong.
|
|
||
| Decompress a stream. | ||
|
|
||
| ### new brotli.Decompress(options) |
There was a problem hiding this comment.
[options]?
Sorry, something went wrong.
| [`Accept-Encoding`]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3 | ||
| [`ArrayBuffer`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer | ||
| [`brotli/encode.h`]: https://github.com/google/brotli/blob/v1.0.4/c/include/brotli/encode.h | ||
| [`brotli/decode.h`]: https://github.com/google/brotli/blob/v1.0.4/c/include/brotli/decode.h |
There was a problem hiding this comment.
We usually sort bottom references in ASCII order, so this should go before the [`brotli/encode.h`]:.
Sorry, something went wrong.
There was a problem hiding this comment.
References below also need some resorting.
Sorry, something went wrong.
There was a problem hiding this comment.
Don't know how I managed to mess up sorting 😆
Sorry, something went wrong.
Yeah, our docs are far from ideal, but we are working on them) |
Sorry, something went wrong.
|
I will go ahead and create brotli label) |
Sorry, something went wrong.
|
|
||
| // Note: This is not a conformant accept-encoding parser. | ||
| // See https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3 | ||
| // Note: A quality of 4 is a good balace of speed and quality. |
Sorry, something went wrong.
There was a problem hiding this comment.
I believe «Note: » prefixes were removed from the docs earlier in #18592.
Are those needed here?
Sorry, something went wrong.
|
@vsemozhetbyt thanks for the docs review! Hopefully I have fixed everything now. |
Sorry, something went wrong.
| if (!acceptEncoding) { | ||
| acceptEncoding = ''; | ||
| } | ||
| let acceptEncoding = request.headers['accept-encoding'] || ''; |
There was a problem hiding this comment.
May be const now)
Sorry, something went wrong.
There was a problem hiding this comment.
If only eslint for vscode checked markdown too.
Sorry, something went wrong.
There was a problem hiding this comment.
Can eslint-plugin-markdown be of any help? We use it in CI and local linting.
Also, you can just run from the project root for linting code fragments in docs:
node tools/node_modules/eslint/bin/eslint.js --ext=.md doc
Sorry, something went wrong.
| [`Accept-Encoding`]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3 | ||
| [`ArrayBuffer`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer | ||
| [`brotli/encode.h`]: https://github.com/google/brotli/blob/v1.0.4/c/include/brotli/encode.h | ||
| [`brotli.constants`]: #brotli_constants |
There was a problem hiding this comment.
If this intended to refer brotli.constants property (and not just "Constants" section), then this should be #brotli_brotli_constants.
Sorry, something went wrong.
I am unsure how this would be done for the C++ code, but it might be worth a shot for the JS. |
Sorry, something went wrong.
| Note that some options are only relevant when compressing, and are | ||
| ignored by the decompression classes. | ||
| Note that some options are only relevant when compressing or decompressing, | ||
| and are simply ignored. |
There was a problem hiding this comment.
I am not sure, but it seems a bit incomplete or confusing now. Maybe something like "and are simply ignored when inappropriate."?
Sorry, something went wrong.
There was a problem hiding this comment.
Something like "and invalid options are simply ignored" should also work.
Sorry, something went wrong.
Refs: nodejs#20458 Co-authored-by: Hackzzila <admin@hackzzila.com>
Refs: #20458 Co-authored-by: Hackzzila <admin@hackzzila.com> PR-URL: #24938 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Jan Krems <jan.krems@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Refs: #20458 Co-authored-by: Hackzzila <admin@hackzzila.com> PR-URL: #24938 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Jan Krems <jan.krems@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Refs: nodejs#20458 Co-authored-by: Hackzzila <admin@hackzzila.com> PR-URL: nodejs#24938 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Jan Krems <jan.krems@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Refs: nodejs#20458 Co-authored-by: Hackzzila <admin@hackzzila.com> PR-URL: nodejs#24938 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Jan Krems <jan.krems@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Refs: #20458 Co-authored-by: Hackzzila <admin@hackzzila.com> Backport-PR-URL: #27681 PR-URL: #24938 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Jan Krems <jan.krems@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Refs: #20458 Co-authored-by: Hackzzila <admin@hackzzila.com> Backport-PR-URL: #27681 PR-URL: #24938 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Jan Krems <jan.krems@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
| Back | FazBrowse Home | New Git URL |
Fixes: #18964
Adds brotli support to core. The brotli module must be enabled with --expose-brotli. The api, and most of the source code, is almost identical to the zlib module.
There are a few things that need polishing but I thought I would open this up for discussion.
/cc @MylesBorins
Checklist