1
0
mirror of synced 2026-01-06 15:01:04 -05:00
Commit Graph

139 Commits

Author SHA1 Message Date
Mike Surowiec
4a931237ea Merge branch 'main' into update-webpack-dep 2021-04-13 16:55:31 -07:00
Mike Surowiec
1c5cd44a83 fix: move ajv from devDeps to deps 2021-04-13 16:49:31 -07:00
Kevin Heis
46c16001c3 Upgrade Primer with translation shim for trashcan icon (#18735)
* Revert "Revert "Upgrade Primer CSS to 16 (#18713)""

This reverts commit c01d3e302e.

* Add a hack to handle trashcan icon in translated content
2021-04-13 18:38:04 +00:00
Mike Surowiec
c01d3e302e Revert "Upgrade Primer CSS to 16 (#18713)"
This reverts commit 49377f9096.
2021-04-13 09:19:28 -07:00
Kevin Heis
49377f9096 Upgrade Primer CSS to 16 (#18713)
* Upgrade primer to 16

* Upgrade colors in scss

* Get SCSS to build

* Initial dark mode support

* trashcan -> trash

* More specific search browser test

* Fix link color on homepage

* Update overrides.scss

* Upgrade some colors to primer variables

* Hide dark mode support for now

* Apply suggestions from code review

* Update overrides.scss
2021-04-13 16:00:46 +00:00
Sarah Schneider
53b7208fe9 Merge branch 'main' into update-webpack-dep 2021-04-09 12:22:18 -04:00
Vanessa Yuen
bbd9f03f6e Populate product-landing "What's new" section using GitHub Changelog (#18328)
Co-authored-by: Jason Etcovitch <jasonetco@github.com>
Co-authored-by: Rachael Sewell <rachmari@github.com>
Co-authored-by: Sarah Schneider <sarahs@users.noreply.github.com>
2021-04-08 20:51:37 +00:00
Sarah Schneider
62955e3843 fix browser tests for webpack 5 2021-04-07 12:05:09 -04:00
Sarah Schneider
d75621aa0e update webpack plugins and remove friendly-errors-webpack-plugin abandonware 2021-04-07 11:26:39 -04:00
Sarah Schneider
583914fc8c sigh retry assert in dependencies 2021-04-07 08:27:44 -04:00
Sarah Schneider
640b9866db move assert to devdeps 2021-04-06 19:19:41 -04:00
Sarah Schneider
274ef8287a update webpack to resolve dependabot alert 2021-04-06 16:33:03 -04:00
Sarah Schneider
107b8e5bc0 Move scheduled tasks code into docs repo (#17926)
Co-authored-by: Rachael Sewell <rachmari@github.com> - https://github.com/github/docs-internal/pull/18453
2021-04-02 12:42:41 -07:00
James M. Greene
d8e0b29fcd Use node-redis for soft-purging cache on deploy (#18474)
* Use [node-]redis as a direct dependency

* Extract Redis client creation to its own module

* Attach extensive logging in the Redis client creation module

* Allow the rate limiter to pass requests when Redis is disconnected

* Update rate-limit-redis

* Default error input to empty object for formatRedisError method

* Provide a name for the rate limiter's Redis client

* Include redis-mock, exclude ioredis/ioredis-mock

* Remove unused RedisAccessor#exists method

* Switch RedisAccessor to use redis/redis-mock

* Provide a name for logging on the Redis page cache

* Remove extraneous trailing space from Redis logging prefix

Our updated use of console.* will already be adding a space after the prefix

* Replace ioredis-mock with redis-mock in tests

* Revert removal of ioredis dependency

* Bind Redis client to async promisified methods

* Extract former RedisAccessor constructor tests to new create-client tests

* Update RedisAccessor tests to work with the callback-based redis client

* Handle formatting Redis errors (or not) with more resiliency

* Remove ioredis as a dependency

* Update Redis soft-purging script to use node-redis

* Do more promisifying for less ugly code

* Add comment explaining TTL of -1

* Make the script executable
2021-03-30 20:40:28 +00:00
James M. Greene
84547e54c7 Use node-redis for page cache (#18421)
* Use [node-]redis as a direct dependency

* Extract Redis client creation to its own module

* Attach extensive logging in the Redis client creation module

* Allow the rate limiter to pass requests when Redis is disconnected

* Update rate-limit-redis

* Default error input to empty object for formatRedisError method

* Provide a name for the rate limiter's Redis client

* Include redis-mock, exclude ioredis/ioredis-mock

* Remove unused RedisAccessor#exists method

* Switch RedisAccessor to use redis/redis-mock

* Provide a name for logging on the Redis page cache

* Remove extraneous trailing space from Redis logging prefix

Our updated use of console.* will already be adding a space after the prefix

* Replace ioredis-mock with redis-mock in tests

* Revert removal of ioredis dependency

* Bind Redis client to async promisified methods

* Extract former RedisAccessor constructor tests to new create-client tests

* Update RedisAccessor tests to work with the callback-based redis client

* Handle formatting Redis errors (or not) with more resiliency
2021-03-29 17:34:22 +00:00
Vanessa Yuen
a8d54c9af7 Improvements in tools to help merge crowdin PRs (#18409)
- add `script/test-render-translation.js` to render all translated content to catch malformed liquid that would cause render errors
- improve test output for `script/fix-translation-errors.js` and `tests/content/lint-files.js`
- make it so `script/reset-translated-file.js` can handle files that have been renamed
2021-03-26 19:21:45 +00:00
James M. Greene
23bcc0bb06 Use node-redis for rate limiter (#18416)
* Use [node-]redis as a direct dependency
* Extract Redis client creation to its own module
* Attach extensive logging in the Redis client creation module
* Allow the rate limiter to pass requests when Redis is disconnected
* Update rate-limit-redis
* Default error input to empty object for formatRedisError method
* Provide a name for the rate limiter's Redis client

Co-authored-by: Kevin Heis <heiskr@users.noreply.github.com>
Co-authored-by: Rachael Sewell <rachmari@github.com>
2021-03-25 23:54:25 +00:00
James M. Greene
6e20ed7927 Implement app clustering (#17752)
* Install throng for easy cluster management
* Extract the Express app construction into its own file
* Switch server.js to use app clustering for deployed environments
* Worker count is based on the lesser of process.env.WEB_CONCURRENCY and the count of CPUs
* Reading clustered output is difficult, let's prefix the std{out,err} streams

Co-authored-by: Jason Etcovitch <jasonetco@github.com>
2021-03-19 20:07:46 +00:00
Rachael Sewell
e067616355 add script to read topics spreadsheet (#18175) 2021-03-11 17:20:27 -08:00
James M. Greene
fd7d0eeb1a Add timeout and abort middleware and processing halts (#18177)
* Add middleware to timeout requests after a period

* Add halt-on-dropped-connection middleware to stop the middleware processing stack if the connection was already dropped

* Add a few strategic bail-out spots for dropped connections during the render-page middleware

* Handle 404s and HEAD requests earlier in the page rendering flow

* Add a few more strategic bail-out spots for dropped connections during the render-page middleware

* Add middleware to notice aborted requests

* Add a check for aborted requests into the isConnectionDropped logic

* Reformat comment for consistency

* Handle aborted requests correctly in the error handler

* Explicit returns for consistency
2021-03-09 19:14:02 +00:00
Jason Etcovitch
7e3229e39a Fix translated glossary links (#17734)
* npm start should be ja

* Add special handling for glossary headings

* Don't sort glossary

* Use English slug to maintain anchor, re-add sort
2021-02-12 19:23:40 +00:00
Rachael Sewell
01e52046f0 migrate away from AWS S3 (#17669) 2021-02-12 10:25:45 -08:00
Jason Etcovitch
e68e6a5185 Revert "Revert "Absorb @github-docs/frontmatter (#17783)" (#17793)" (#17799)
* Revert "Revert "Absorb @github-docs/frontmatter (#17783)" (#17793)"

This reverts commit 11baf43eee.

* Move revalidator to depedencies
2021-02-11 11:15:59 -05:00
Jason Etcovitch
6e0c2319b4 Set engines.node to 14+ (#17777)
* Set engines.node

* Add setup-node to browser-test workflow

* Updoot ianwalter/puppeteer-container
2021-02-11 15:40:08 +00:00
Jason Etcovitch
11baf43eee Revert "Absorb @github-docs/frontmatter (#17783)" (#17793)
This reverts commit 1e96c03489.
2021-02-10 20:28:41 +00:00
Jason Etcovitch
1e96c03489 Absorb @github-docs/frontmatter (#17783) 2021-02-10 15:10:46 -05:00
Jason Etcovitch
39e0e0dda1 Use Liquidjs instead of Liquid (#16743)
* Install liquidjs, uninstall liquid

* Comment a bunch of stuff out to get going

* Fix invalid includes

* Fix all includes (path => 'path')

* Get the homepage to render

* Do link-in-list kinda

* Revert "Fix all includes (path => 'path')"

This reverts commit d6fead646353aa5041d9229470a62a1d487456b9.

* Support non-dynamic partials

* Extract getTemplate helper

* Do remaining custom Liquid tags

* Fix some custom tag bugs

* Moar bugs

* Re-add link tag

* Cleaner diff

* Actually fix extended markdown tags

* Fully comment out version matchers

* Smaller diff

* Rely only on Liquid internals for conditionals

* Use new operators option in Liquid engine

* Fix link.js

* Don't need options

* Updoot to the right doot

* Fix some bugs

* Fix another bug

* Pass a test

* Fix the translate bits

* Adjust a test

* Fix another invalid Liquid bug

* Two more borked translations

* Found some more

* Don't need this change

* Revert "Don't need this change"

This reverts commit a916d619747f0492865a69c3e237c97c4d4e7fad.

* This should fix the broken links

* Missed one

* Revert "This should fix the broken links"

This reverts commit e6c2cc0d9055d958706260d57edbe293281c150e.

* Revert "Missed one"

This reverts commit bbe1f23baf16e020f6f7931589decb1afc75dfbd.

* Updoot liquidjs
2021-02-08 12:58:51 -05:00
James M. Greene
f7ec320b64 npm audit fix (#17675) 2021-02-06 23:57:14 +00:00
Kevin Heis
e07c603b7d Remove html-truncate, truncate with CSS instead (#17630)
* Remove html-truncate, truncate with CSS instead

* Update search.js
2021-02-02 17:55:05 +00:00
Vanessa Yuen
a1d93a7619 Lint translation files (#17561)
### Why:

A lot of content gets mistranslated, some common patterns are: frontmatter date and enums getting translated, liquid tags get translated or go missing during the translation process. These translation errors are tough to catch, especially when they often come in huge PRs. 

### What's being changed:

- Frontmatter is also getting linted against schema as part of `lint-files`
- When an environment variable `TEST_TRANSLATION` is passed,
   - `lint-files` will run its tests against all files that have been newly translated (by git-diffing between `translations` branch and `main` branch), and
   - results are outputted using a custom jest reporter. The output is formatted in a way that makes it easy to exclude the problematic translated files from being merged, and to share the errors with [localization support](https://github.com/github/localization-support/issues/489). 
- Run the implemented translation test as part of the existing `Node.js Tests - Translations` workflow
2021-02-01 17:59:33 +01:00
Jason Etcovitch
53ad15c959 Use hast-util-to-string to get heading text (#17576) 2021-01-29 21:42:35 +00:00
Jason Etcovitch
bd63f47636 Remove cheerio from Page#render (#17566)
* Write our plugin

* Include it

* Move the RegEx

* Don't rewriteLocalLinks with cheerio anymore

* Process after HTML ast is generated

* Use the same logic as before, just to see if it'll pass

* Don't require languageCode/version

* Only work on local links

* Needs an href

* Only update href if there's a new one to use

* Check for node.properties

* Some links are just mean

* Move use-english-headings to be a plugin

* Bail if no englishHeadings were passed

* Install rehype-wrap

* Wrap ol > li img in div.procedural-image-wrapper

* Test for platform without cheerio

* Use a plugin for rewriteAssetPathsToS3

* Remove cheerio from page.render

* Fix require paths

* SImplify

* Fix some 🐛s

* Use our own rehype-wrap

* Move rewriteAssetPathsToS3 after HTML AST

* Remove some console logs

* Fix check for includesPlatformSpecificContent

* Rename ast => tree
2021-01-29 15:44:50 -05:00
Kevin Heis
8b86fd8fef Reduce minified JS bundle size from 189kb to 73kb (#17552) 2021-01-28 22:12:04 +00:00
Jason Etcovitch
2572d7bb85 Remove hubdown and use our own markdown pipeline (#17551)
* Uninstall hubdown, install unified deps

* Create create-processor

* Use it

* Update a doc

* Tweak the language

* Use the same versions that hubdown used
2021-01-28 17:06:19 -05:00
Kevin Heis
d9d61f42ef Add Lunr as a site search option (#17388)
* Add Lunr as a site search option

* Use a class like the Algolia option does

* Lint

* Working on showing real content, prep for highlighting

* Move searching to their own files

* Split out ridiculous fn

* Add highlighting

* Less lunr search code

* A little more tidy

* Then chain on write too

* Mark from server too

* Write a batch of indices

* Update compress.js

* Highlighting with fewer calls

* Update lunr-search.js

* Update lunr-search.js

* Update lunr-search.js

* Update lunr-search.js

* Update lunr-search.js

* Update lunr-search.js
2021-01-28 19:38:22 +00:00
Jason Etcovitch
4a761418a9 Add a test for the WIP language banner link change (#17480)
* Add a test

* Try adding de

* Let's try all languages
2021-01-26 20:06:58 -05:00
Jason Etcovitch
b4171bf0d5 Use AST parsing for lint file checking (#17471)
* Add markdown parsing dependencies

* Use it for the link test

* Use ast tests for hard-coded language

* Dedupe visiting for links

* Add new mdast utils to check-deps exclusions
2021-01-26 17:45:23 +00:00
Kevin Heis
99a85ff4ef Push query string when searching (#17417)
* Push query string when searching

* Update search.js

* Fix browser test, remove querystring dependency (new shiny!)

* Remove language and version from visible URL

* Avoid casting event interface

* Update search.js

* Update browser.js
2021-01-25 11:52:55 -08:00
Sarah Schneider
6bbd10838d we do not need this env var anymore 2021-01-22 10:07:13 -05:00
Sarah Schneider
b0677b2442 use script instead of jest, much faster 2021-01-22 09:28:06 -05:00
Sarah Schneider
0c5b78ee3b use linkinator for internal link checking 2021-01-21 16:36:22 -05:00
Kevin Heis
2fb2e962bc Move site search to use an endpoint (#17359)
* Move site search to use an endpoint

* Update browser.js

* Update search.js

* Update lib/search/versions.js

Co-authored-by: James M. Greene <JamesMGreene@github.com>

* Fix URLs

Co-authored-by: James M. Greene <JamesMGreene@github.com>
2021-01-20 15:37:42 +00:00
Sarah Schneider
03d7260abb update linkinator 2021-01-12 10:02:59 -05:00
James M. Greene
068c472084 Cache rendered pages in Redis (#17106)
* Explicitly set the Redis database number used for rate limiting

* Switch to using ioredis as the Redis client for rate limiting

* Install ioredis-mock as a primary dependency

* Create a Redis BasicAccessor class and tests

* Switch rendered page caching to use Redis for storage

* Add support for additional Redis SET options like TTLs

* Remove currently unused methods

* Rename redis-accessors/basic to redis-accessor and remove extra fluff

* Change default behavior for cache setting to throw if an error occurs

Add option allowSetFailures to facilitate graceful failures

* Allow SET failures to fail gracefully for the rendered page cache

* Remove as-yet unneeded serialization options from RedisAccessor

* Move Redis client construction into RedisAccessor constructor, just pass in databaseNumber as option

* Remove rendered-page-cache in favor of direct RedisAccessor use

* Add tests for RedisAccessor constructor param validations

* Eliminate one roundtrip to Redis for the cached HTML existence check

Are we fast yet?

* Set a rendered page cache TTL of 24 hours
2021-01-06 15:30:51 -06:00
Kevin Heis
59f375ab1d Merge branch 'main' into default-platform 2020-12-16 14:36:46 -08:00
Kevin Heis
0f685115f7 Revert file reads from async to sync (#16979)
* Revert file reads from async to sync

* Async funness

* Fix warm server timers

Co-authored-by: Chiedo John <chiedo@chiedosbmacbook.lan>
2020-12-15 22:04:41 +00:00
Jason Etcovitch
eaf2a67fa1 Use connectDatadog(e) (#16888)
* npm i connect-datadog

* Add connectDatadog middleware

* Add comments

* Use DD_API_KEY to gate

Co-authored-by: Chiedo John <2156688+chiedo@users.noreply.github.com>
2020-12-11 13:13:18 -05:00
Simran Spiller
4afc7d4035 Merge remote-tracking branch 'upstream/main' into default-platform 2020-12-11 01:13:32 +01:00
Vanessa Yuen
f44d5aa648 Add VS Code debugger config (#16819)
* add config for using vscode debugger

reference: https://github.com/Microsoft/vscode-recipes/tree/master/nodemon

* some docs

Co-authored-by: Kevin Heis <heiskr@users.noreply.github.com>
2020-12-10 18:37:06 +00:00
Kevin Heis
e7406b7336 Merge branch 'main' into default-platform 2020-12-09 15:06:30 -08:00