* cleanup FEATURE_NEXTJS
* fixing some server tests
* updating article a for server tests
* update h2 to h4 map topic tests
* data off on TOCs
* updating dropdown article versions links
* Update so markdown renders in intros
* updating typo and all server tests are now passing
* remove nextjs feature flag
* head.js tests pass
* updating article-version-picker
* remove nextjs feature flag browser test
* update header.js tests
* fix page-titles.js test
* fix deprecated-enterprise versions
* adding early access
* testing
* getting childTocItem
* fixing table of contents to show child toc items
* updated to 2 because the sidebar article also has the same link
* remove comment
* updating pick
* Update TocLandingContext.tsx
* update package.json and change className to h4 for h2
* updating with mikes feedback
* remove a.active test
* React clean up: Delete unnecessary layouts/includes Part 2 (#20143)
* Delete unnecessary layouts
* setting back tests failing :(
* update layouts
* delete unnecessary includes
* remove github-ae-release-notes and updating layouts
* remove a.active test
* First run of script
* Get the app running --- ish
* Get NextJS working
* Remove `node:`
* Get more tests passing in unit directory
* Update FailBot test to use nock
* Update test.yml
* Update Dockerfile
* tests/content fixes
* Update page.js
* Update build-changelog.js
* updating tests/routing
* Update orphan-tests.js
* updating tests/rendering
* Update .eslintrc.js
* Update .eslintrc.js
* Install jest/globals
* "linting" tests
* staging update to server.mjs
* Change '.github/allowed-actions.js' to a ESM export
* Lint
* Fixes for the main package.json
* Move Jest to be last in the npm test command so we can pass args
* Just use 'npm run lint' in the npm test command
* update algolia label script
* update openapi script
* update require on openapi
* Update enterprise-algolia-label.js
* forgot JSON.parse
* Update lunr-search-index.js
* Always explicitly include process.cwd() for JSON file reads pathed from project root
* update graphql/update-files.js script
* Update other npm scripts using jest to pass ESM NODE_OPTIONS
* Update check-for-enterprise-issues-by-label.js for ESM
* Update create-enterprise-issue.js for ESM
* Import jest global for browser tests
* Convert 'script/deploy' to ESM
Co-authored-by: Grace Park <gracepark@github.com>
Co-authored-by: James M. Greene <jamesmgreene@github.com>
* enable more react landing pages
* move nextjs page logic to separate middleware
* enable codespaces landing page + fixes
* enable /education
* enable /admin
* use pathToRegexp to match routes for react rendering
* run lint
* fix: typo in url
* update sidebar test
* Add color mode selector in footer
* Interpret color mode from cookie
* Update render-page.js
* Delete color-mode.js
* Update render-page.js
* Make this more resilient to HTML tag changes
* Update scroll-button.scss
* 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 [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 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
* 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