* 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
* 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>
* get link liquid tag to accept variables as param
* new liquid tag `link_as_article_card`
* refactor link liquid tag slightly so we can control what props get rendered
* generalize filterCodeExample to use in all guides section
* pass in `js-filter-card-max` instead of hardcode max
* tweaks and add `data` to CSP for images
* add liquid tag tests
* add some browser tests for card filters
* we still need to rely on `getPathWithLanguage` for hrefs that already have the language code embedded
Co-authored-by: Emily Gould <4822039+emilyistoofunky@users.noreply.github.com>
* remove unnecessary `render` methods
* we don't use `link_with_short_title` anymore
* remove `shortTitle` option
* remove ink_with_short_title tag test
* Add read-frontmatter.js
* Use it
* Page static read/init are async now
* Fix some blockers
* I'm confused
* Fix some more bugs
* Use frontmatter schema, ensure end fence exists
* Fix a bug
* Still read full contents for index.md files
* Remove comment
* Only get ToC items for index pages
* Readd frontmatter error and verdadero handling
* Fix some borked tests
* Simplify the code
* Add a comment
* Remove redundant variable
* Re-simplify the Page construction
* End chunk _after_ endline
* Just use Page.init
* 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
* Support [...] in data tag path
* Use forloop.index0 to get data tag path
* Commit whitespace change to not keep getting it
* Recursively render glossary terms as well
* Add tests to verify Liquid data tag can handle bracketed access
* Remove superfluous 'set' for context in tests
* Avoid the mystery guest anti-pattern... move the test data closer to the test
* Escape the `-` character in the data regex
Co-authored-by: Jason Etcovitch <jasonetco@github.com>
Co-authored-by: Chiedo John <2156688+chiedo@users.noreply.github.com>
* Update tests to use fs.promises when not top-level
* Move two to asyncFilter
* Update site-data-references.js
* Update site-data-references.js
* Clear out await fs.exists
* Lint
* A few more fixes
* Can't use async when defining tests