* 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