* Remove json.parse(json.stringify( usage to improve performance
* Fix missing / duplicate keys in some renders
* Fix missing react-is dependency (only seemed to cause problems from pruning on the heroku deploy)
* Add nextjs tag to datadog-connect config when nextjs is a query param
* Fix router.asPath usage to exclude query param
* Fix styling inconsistencies noticed when testing
* Add a few tests
* fix: req.csrfToken doesn't always exist (e.g. 500 page)
* feat: update dockerfile and add nextjs to build
* fix: run linter
* move @babel deps -> dev deps
* move webpack looking things from deps -> dev deps
* move pa11y-ci to optional dep
* explicitly include optional deps for pa11y
* allow heroku dev deps to be installed
* fix: update postcss module
* fix: update dockerfile build
* tmp: disable renderReact
* see if another deploy is slower/faster
* move a few more packages to devDeps
* upgrade to package-lock v2
* use dayjs instead of date-fns
* move cross-env to devDeps
* remove unused 'del' package
* commit husky precommit hooks
* add hrtime to clone-for-build.js
* Revert "add hrtime to clone-for-build.js"
This reverts commit 70ee647bacce833f4ed2f621f62c63c1d85e5413.
* update babel/eslint
* fix: remove unused plugin
* try a .slugignore
* fix: heroku-postbuild to use npm run build
* fix: i cannot spell dereferenced
* add .next/cache to heroku cacheDirectories
* test cached build
* remove aws-sdk, see what breaks
* move jest-puppeteer to optional deps
* fix: update browser-test.yml to use newer node version
* move jimp to optional dependencies
* move puppeteer to optional dependencies
* fix: ci optional include
* fix: bad copy pasta
* remove previous react experiment
* update tests/README.md with note about optional deps
* bump node test version back to 14
* convert package-lock back to v1
* fix: use node 15.x to leverage npm optional deps
* fix: optional dep install
* test: see what happens with heroku/nodejs-typescript buildpack
* back to heroku/nodejs buildpack
* move jest to optional
* revert jest move
* remove .slugignore
* cleanup dockerfile, move xlsx-population to optional, add comment about optional deps
* Update Dockerfile
Co-authored-by: James M. Greene <JamesMGreene@github.com>
Co-authored-by: James M. Greene <JamesMGreene@github.com>
* feat: add nextjs middleware handling split
* fix: eslint errors
* fix: filter boolean from csp list
* fix: feature flag nextjs server start
* feat: add prettier rules for ts,tsx files
* fix: remove unnecessary async from next middleware
* fix: next middleware name
* Update tsconfig.json
Co-authored-by: James M. Greene <JamesMGreene@github.com>
* Update next-env.d.ts
Co-authored-by: James M. Greene <JamesMGreene@github.com>
* fix: add typescript linting to lint command
* add comment for unsafe-eval, update webpack to use eval in development
* fix: feature flag typo
Co-authored-by: James M. Greene <JamesMGreene@github.com>
* Use existing 'github' script helper to get Octokit instance
* Move @octokit/rest to devDeps
We only use it in scripts, currently
* Removed outdated delete-unused-staging-apps script
* 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
* 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
* 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
- 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
* 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>
* 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>
* 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
* 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