* 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
* Add instrument-middleware.js
* Make it do some fancy require-ing
* Use it
* Prefix names
* dot prefix
* Improve async detection
* Add some comments
* Can't instrument error handler
* Move search results to use relative urls
* ..and now we have real mark tags instead of em tags
Co-authored-by: Chiedo John <2156688+chiedo@users.noreply.github.com>
* 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>
* 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