-
@@ -52,7 +52,7 @@ PouchDB is now installed in your app and ready to use! (In production, you shoul
The rest of the work will be done inside `app.js`. We will start by creating a database to enter your todos. To create a database simply instantiate a new PouchDB object with the name of the database:
-{% highlight "js" %}
+{% highlight js %}
// EDITING STARTS HERE (you don't need to edit anything above this line)
const db = new PouchDB('todos');
@@ -65,7 +65,7 @@ You don't need to create a schema for the database. After giving it a name, you
The first thing we shall do is start writing items to the database. The main input will call `addTodo` with the current text when the user presses `Enter`. We can complete this function with the following code:
-{% highlight "js" %}
+{% highlight js %}
function addTodo(text) {
const todo = {
_id: new Date().toISOString(),
@@ -88,7 +88,7 @@ The `callback` function will be called once the document has been written (or fa
We have included a helper function `redrawTodosUI` that takes an array of todos to display, so all we need to do is read the todos from the database. Here we will simply read all the documents using `db.allDocs`. The `include_docs` option tells PouchDB to give us the data within each document, and the `descending` option tells PouchDB how to order the results based on their `_id` field, giving us newest first.
-{% highlight "js" %}
+{% highlight js %}
function showTodos() {
db.allDocs({include_docs: true, descending: true}, function(err, doc) {
redrawTodosUI(doc.rows);
@@ -102,7 +102,7 @@ Once you have included this code, you should be able to refresh the page to see
We don't want to refresh the page to see new items. More typically you would update the UI manually when you write data to it, however, in PouchDB you may be syncing data remotely, so you want to make sure you update whenever the remote data changes. To do this we will call `db.changes` which subscribes to updates to the database, wherever they come from. You can enter this code between the `remoteCouch` and `addTodo` declaration:
-{% highlight "js" %}
+{% highlight js %}
const remoteCouch = false;
db.changes({
@@ -120,7 +120,7 @@ So every time an update happens to the database, we redraw the UI to show the ne
When the user checks a checkbox, the `checkboxChanged` function will be called, so we'll fill in the code to edit the object and call `db.put`:
-{% highlight "js" %}
+{% highlight js %}
function checkboxChanged(todo, event) {
todo.completed = event.target.checked;
db.put(todo);
@@ -135,7 +135,7 @@ You can test that this works by checking a todo item and refreshing the page. It
To delete an object you can call db.remove with the object.
-{% highlight "js" %}
+{% highlight js %}
function deleteButtonPressed(todo) {
db.remove(todo);
}
@@ -147,7 +147,7 @@ Similar to editing a document, both the `_id` and `_rev` properties are required
`todoBlurred` is called when the user edits a document. Here we'll delete the document if the user has entered a blank title, and we'll update it otherwise.
-{% highlight "js" %}
+{% highlight js %}
function todoBlurred(todo, event) {
const trimmedText = event.target.value.trim();
if (!trimmedText) {
@@ -169,14 +169,14 @@ To replicate directly with CouchDB, you need to make sure CORS is enabled. Only
You can enable CORS in CouchDB using `curl` or the Futon web interface, but we've saved you some time by making a Node script called [add-cors-to-couchdb](https://github.com/pouchdb/add-cors-to-couchdb). Just run:
-{% highlight "bash" %}
+{% highlight bash %}
$ npm install -g add-cors-to-couchdb
$ add-cors-to-couchdb
{% endhighlight %}
Or if your database is not at `127.0.0.1:5984`:
-{% highlight "bash" %}
+{% highlight bash %}
$ add-cors-to-couchdb http://me.example.com -u myusername -p mypassword
{% endhighlight %}
@@ -188,7 +188,7 @@ You can check that CORS is now enabled by visiting [http://localhost:5984/_utils
Now we will have the todo list sync. Back in `app.js` we need to specify the address of the remote database. Remember to replace `user`, `pass` and `myname.example.com` with the credentials of your own CouchDB instance:
-{% highlight "js" %}
+{% highlight js %}
// EDITING STARTS HERE (you don't need to edit anything above this line)
const db = new PouchDB('todos');
@@ -197,7 +197,7 @@ const remoteCouch = 'http://user:pass@myname.example.com/todos';
Then we can implement the sync function like so:
-{% highlight "js" %}
+{% highlight js %}
function sync() {
syncDom.setAttribute('data-sync-state', 'syncing');
const opts = {live: true};
diff --git a/docs/guides/async-code.md b/docs/guides/async-code.md
index cbae358bbe..9f087c88c2 100644
--- a/docs/guides/async-code.md
+++ b/docs/guides/async-code.md
@@ -1,6 +1,6 @@
---
index: 6
-layout: guide
+layout: guide.html
title: Asynchronous code
sidebar: guides_nav.html
---
diff --git a/docs/guides/attachments.md b/docs/guides/attachments.md
index dfb1c24c09..37c0fc37c7 100644
--- a/docs/guides/attachments.md
+++ b/docs/guides/attachments.md
@@ -1,6 +1,6 @@
---
index: 9
-layout: guide
+layout: guide.html
title: Working with attachments
sidebar: guides_nav.html
---
diff --git a/docs/guides/bulk-operations.md b/docs/guides/bulk-operations.md
index fb487c6524..28ae8634fe 100644
--- a/docs/guides/bulk-operations.md
+++ b/docs/guides/bulk-operations.md
@@ -1,6 +1,6 @@
---
index: 8
-layout: guide
+layout: guide.html
title: Bulk operations
sidebar: guides_nav.html
---
diff --git a/docs/guides/changes.md b/docs/guides/changes.md
index f724b35b59..0bc3168016 100644
--- a/docs/guides/changes.md
+++ b/docs/guides/changes.md
@@ -1,6 +1,6 @@
---
index: 12
-layout: guide
+layout: guide.html
title: Changes feed
sidebar: guides_nav.html
---
diff --git a/docs/guides/compact-and-destroy.md b/docs/guides/compact-and-destroy.md
index fa7888393a..2c9ed1a9d2 100644
--- a/docs/guides/compact-and-destroy.md
+++ b/docs/guides/compact-and-destroy.md
@@ -1,6 +1,6 @@
---
index: 15
-layout: guide
+layout: guide.html
title: Compacting and destroying
sidebar: guides_nav.html
---
diff --git a/docs/guides/conflicts.md b/docs/guides/conflicts.md
index 2a9ba317d3..60898fe779 100644
--- a/docs/guides/conflicts.md
+++ b/docs/guides/conflicts.md
@@ -1,6 +1,6 @@
---
index: 11
-layout: guide
+layout: guide.html
title: Conflicts
sidebar: guides_nav.html
---
diff --git a/docs/guides/databases.md b/docs/guides/databases.md
index bab8a1adb4..6e1052799c 100644
--- a/docs/guides/databases.md
+++ b/docs/guides/databases.md
@@ -1,6 +1,6 @@
---
index: 4
-layout: guide
+layout: guide.html
title: Working with databases
sidebar: guides_nav.html
---
diff --git a/docs/guides/documents.md b/docs/guides/documents.md
index 5c438d65cd..4b3676e775 100644
--- a/docs/guides/documents.md
+++ b/docs/guides/documents.md
@@ -1,6 +1,6 @@
---
index: 5
-layout: guide
+layout: guide.html
title: Working with documents
sidebar: guides_nav.html
---
diff --git a/docs/guides/index.md b/docs/guides/index.md
index 04cada5790..b22939bcdb 100644
--- a/docs/guides/index.md
+++ b/docs/guides/index.md
@@ -1,6 +1,6 @@
---
index: 1
-layout: guide
+layout: guide.html
nav: Intro
title: Introduction to PouchDB
sidebar: guides_nav.html
diff --git a/docs/guides/local-documents.md b/docs/guides/local-documents.md
index 5fb4294ac7..e54a6c9158 100644
--- a/docs/guides/local-documents.md
+++ b/docs/guides/local-documents.md
@@ -1,6 +1,6 @@
---
index: 16
-layout: guide
+layout: guide.html
title: Local documents
sidebar: guides_nav.html
---
diff --git a/docs/guides/mango-queries.md b/docs/guides/mango-queries.md
index 1339454cbb..64ad8752e4 100644
--- a/docs/guides/mango-queries.md
+++ b/docs/guides/mango-queries.md
@@ -1,6 +1,6 @@
---
index: 13
-layout: guide
+layout: guide.html
title: Mango queries
sidebar: guides_nav.html
---
@@ -31,7 +31,7 @@ The `pouchdb.find.js` file is available in the `pouchdb` package in npm/Bower, o
If you are using Node, Browserify, Webpack, Rollup, etc., then you can install it like so:
-```sh
+```bash
npm install --save pouchdb-find
```
diff --git a/docs/guides/queries.md b/docs/guides/queries.md
index 3236fbb710..46bcfb409a 100644
--- a/docs/guides/queries.md
+++ b/docs/guides/queries.md
@@ -1,6 +1,6 @@
---
index: 14
-layout: guide
+layout: guide.html
title: Map/reduce queries
sidebar: guides_nav.html
---
diff --git a/docs/guides/replication.md b/docs/guides/replication.md
index 0b40099131..4f6a724205 100644
--- a/docs/guides/replication.md
+++ b/docs/guides/replication.md
@@ -1,6 +1,6 @@
---
index: 10
-layout: guide
+layout: guide.html
title: Replication
sidebar: guides_nav.html
---
diff --git a/docs/guides/setup-couchdb.md b/docs/guides/setup-couchdb.md
index ee293a58ad..19c962c299 100644
--- a/docs/guides/setup-couchdb.md
+++ b/docs/guides/setup-couchdb.md
@@ -1,6 +1,6 @@
---
index: 2
-layout: guide
+layout: guide.html
title: Setting up CouchDB
sidebar: guides_nav.html
---
@@ -11,7 +11,7 @@ One of the main benefits of learning PouchDB is that it's exactly the same as Co
For instance, in CouchDB you would fetch all documents using:
-```
+```bash
/db/_all_docs?include_docs=true
```
@@ -31,7 +31,7 @@ If you are on a Debian flavor of Linux (Ubuntu, Mint, etc.), you can install Cou
First, [enable the CouchDB package repository](https://docs.couchdb.org/en/stable/install/unix.html#enabling-the-apache-couchdb-package-repository) on your machine:
-```
+```bash
$ sudo apt update && sudo apt install -y curl apt-transport-https gnupg
$ curl https://couchdb.apache.org/repo/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1
source /etc/os-release
@@ -41,7 +41,7 @@ $ echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://
Next, update your package lists and install CouchDB:
-```
+```bash
$ sudo apt-get update
$ sudo apt-get install -y couchdb
```
@@ -52,7 +52,7 @@ If you are on a Mac or Windows you should install the official binaries from [th
If you have trouble installing CouchDB, you can also install PouchDB Server, which is a drop-in replacement for CouchDB that uses PouchDB under the hood:
-```
+```bash
$ npm install -g pouchdb-server
$ pouchdb-server --port 5984
```
@@ -63,7 +63,7 @@ PouchDB Server is currently experimental, and we do not recommend it for product
Once CouchDB is installed, it should be running at `localhost:5984`. To verify, you can open up your terminal and type
-```
+```bash
$ curl localhost:5984
```
@@ -86,13 +86,13 @@ If you see a screen like the following, then you are ready to rock and roll with
Enabling CORS is easy. Just install this handy script:
-```sh
+```bash
$ npm install -g add-cors-to-couchdb
```
And run it:
-```sh
+```bash
$ add-cors-to-couchdb
```
diff --git a/docs/guides/setup-pouchdb.md b/docs/guides/setup-pouchdb.md
index 938edbab50..baea6a4551 100644
--- a/docs/guides/setup-pouchdb.md
+++ b/docs/guides/setup-pouchdb.md
@@ -1,6 +1,6 @@
---
index: 3
-layout: guide
+layout: guide.html
title: Setting up PouchDB
sidebar: guides_nav.html
---
@@ -20,7 +20,7 @@ Download the latest **pouchdb-{{site.version}}.min.js** from the big green butto
Run this on the command line:
-```
+```bash
$ bower install pouchdb
```
@@ -34,7 +34,7 @@ Then in your `index.html`:
Run this on the command line:
-```
+```bash
$ npm install pouchdb
```
@@ -56,7 +56,7 @@ Add this to your `index.html`:
Run this on the command line:
-```
+```bash
$ npm install pouchdb
```
@@ -70,7 +70,7 @@ const PouchDB = require('pouchdb');
Run this on the command line:
-```
+```bash
$ npm install pouchdb @types/pouchdb
```
diff --git a/docs/guides/updating-deleting.md b/docs/guides/updating-deleting.md
index e4a3894340..ba3b8b6c82 100644
--- a/docs/guides/updating-deleting.md
+++ b/docs/guides/updating-deleting.md
@@ -1,6 +1,6 @@
---
index: 7
-layout: guide
+layout: guide.html
nav: Updating/deleting documents
title: Updating and deleting documents
sidebar: guides_nav.html
diff --git a/docs/index.md b/docs/index.md
index fab1ae7749..6cb3de42f8 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,5 +1,5 @@
---
-layout: default
+layout: default.html
title: PouchDB, the JavaScript Database that Syncs!
---
-{% highlight "js" %}
+{% highlight js %}
const db = new PouchDB('dbname');
db.put({
diff --git a/docs/learn.md b/docs/learn.md
index 6535eb7a6c..0b6e4a3409 100644
--- a/docs/learn.md
+++ b/docs/learn.md
@@ -1,5 +1,5 @@
---
-layout: 2ColLeft
+layout: 2ColLeft.html
title: About PouchDB
sidebar: nav.html
---
diff --git a/docs/manifest.appcache.liquid b/docs/manifest.appcache.liquid
index 59f094f7db..91cff3b043 100644
--- a/docs/manifest.appcache.liquid
+++ b/docs/manifest.appcache.liquid
@@ -14,10 +14,9 @@ CACHE:
{% for page in collections.posts %}{{ page.url | replace:'index.html','' }}
{% endfor %}
-/static/css/pouchdb.css
+/static/css/pouchdb.min.css
/static/favicon.ico
/static/js/code.min.js
-/static/js/stickyfill.min.js
https://code.jquery.com/jquery.min.js
https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js
diff --git a/docs/offline.md b/docs/offline.md
index ead364418e..105fbc1a23 100644
--- a/docs/offline.md
+++ b/docs/offline.md
@@ -1,5 +1,5 @@
---
-layout: default
+layout: default.html
title: Looks like you're offline...
edit: false
---
diff --git a/docs/posts/2014-04-01-pouchdb-2.1.0.md b/docs/posts/2014-04-01-pouchdb-2.1.0.md
index 2071b8072b..38e044d5f5 100644
--- a/docs/posts/2014-04-01-pouchdb-2.1.0.md
+++ b/docs/posts/2014-04-01-pouchdb-2.1.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 2.1.0
diff --git a/docs/posts/2014-04-01-welcome-to-the-pouchdb-blog.md b/docs/posts/2014-04-01-welcome-to-the-pouchdb-blog.md
index b3df50b13f..9794ab879c 100644
--- a/docs/posts/2014-04-01-welcome-to-the-pouchdb-blog.md
+++ b/docs/posts/2014-04-01-welcome-to-the-pouchdb-blog.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: Welcome to the PouchDB blog
diff --git a/docs/posts/2014-04-14-pagination-strategies-with-pouchdb.md b/docs/posts/2014-04-14-pagination-strategies-with-pouchdb.md
index 42072f5a41..bebb0e974e 100644
--- a/docs/posts/2014-04-14-pagination-strategies-with-pouchdb.md
+++ b/docs/posts/2014-04-14-pagination-strategies-with-pouchdb.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: Pagination strategies with PouchDB
diff --git a/docs/posts/2014-05-01-pouchdb-2.2.0.md b/docs/posts/2014-05-01-pouchdb-2.2.0.md
index e56e81a12d..db7464bae6 100644
--- a/docs/posts/2014-05-01-pouchdb-2.2.0.md
+++ b/docs/posts/2014-05-01-pouchdb-2.2.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 2.2.0
diff --git a/docs/posts/2014-05-01-secondary-indexes-have-landed-in-pouchdb.md b/docs/posts/2014-05-01-secondary-indexes-have-landed-in-pouchdb.md
index 720117ff05..8661423c4d 100644
--- a/docs/posts/2014-05-01-secondary-indexes-have-landed-in-pouchdb.md
+++ b/docs/posts/2014-05-01-secondary-indexes-have-landed-in-pouchdb.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: Secondary indexes have landed in PouchDB
diff --git a/docs/posts/2014-06-01-pouchdb-2.2.3.md b/docs/posts/2014-06-01-pouchdb-2.2.3.md
index e7c6f09b8d..51d34f20ac 100644
--- a/docs/posts/2014-06-01-pouchdb-2.2.3.md
+++ b/docs/posts/2014-06-01-pouchdb-2.2.3.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 2.2.3
diff --git a/docs/posts/2014-06-17-12-pro-tips-for-better-code-with-pouchdb.md b/docs/posts/2014-06-17-12-pro-tips-for-better-code-with-pouchdb.md
index 72583e558b..579f58854a 100644
--- a/docs/posts/2014-06-17-12-pro-tips-for-better-code-with-pouchdb.md
+++ b/docs/posts/2014-06-17-12-pro-tips-for-better-code-with-pouchdb.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: 12 pro tips for better code with PouchDB
diff --git a/docs/posts/2014-07-25-pouchdb-levels-up.md b/docs/posts/2014-07-25-pouchdb-levels-up.md
index 434b955908..dba5ecc51a 100644
--- a/docs/posts/2014-07-25-pouchdb-levels-up.md
+++ b/docs/posts/2014-07-25-pouchdb-levels-up.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB levels up
diff --git a/docs/posts/2014-08-12-pouchdb-3.0.0.md b/docs/posts/2014-08-12-pouchdb-3.0.0.md
index fcede66eea..b84b2be14c 100644
--- a/docs/posts/2014-08-12-pouchdb-3.0.0.md
+++ b/docs/posts/2014-08-12-pouchdb-3.0.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.0.0
diff --git a/docs/posts/2014-08-16-pouchdb-3.0.1.md b/docs/posts/2014-08-16-pouchdb-3.0.1.md
index 0e243e6442..423cb5dea0 100644
--- a/docs/posts/2014-08-16-pouchdb-3.0.1.md
+++ b/docs/posts/2014-08-16-pouchdb-3.0.1.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.0.1
diff --git a/docs/posts/2014-08-20-pouchdb-3.0.2.md b/docs/posts/2014-08-20-pouchdb-3.0.2.md
index 946b37242c..b895af0cb6 100644
--- a/docs/posts/2014-08-20-pouchdb-3.0.2.md
+++ b/docs/posts/2014-08-20-pouchdb-3.0.2.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.0.2
diff --git a/docs/posts/2014-08-29-pouchdb-3.0.3.md b/docs/posts/2014-08-29-pouchdb-3.0.3.md
index 150cd390b8..e1ab7cf70d 100644
--- a/docs/posts/2014-08-29-pouchdb-3.0.3.md
+++ b/docs/posts/2014-08-29-pouchdb-3.0.3.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.0.3
diff --git a/docs/posts/2014-09-04-pouchdb-3.0.4.md b/docs/posts/2014-09-04-pouchdb-3.0.4.md
index fc6fec8ae6..1b3fc4f936 100644
--- a/docs/posts/2014-09-04-pouchdb-3.0.4.md
+++ b/docs/posts/2014-09-04-pouchdb-3.0.4.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.0.4: Night of the Living Attachments
diff --git a/docs/posts/2014-09-07-pouchdb-3.0.5.md b/docs/posts/2014-09-07-pouchdb-3.0.5.md
index b8319a76ad..fcc37dd3e9 100644
--- a/docs/posts/2014-09-07-pouchdb-3.0.5.md
+++ b/docs/posts/2014-09-07-pouchdb-3.0.5.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.0.5: Turtles All the Way Down
diff --git a/docs/posts/2014-09-22-3.0.6.md b/docs/posts/2014-09-22-3.0.6.md
index 514cbe7203..781bb5e568 100644
--- a/docs/posts/2014-09-22-3.0.6.md
+++ b/docs/posts/2014-09-22-3.0.6.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.0.6: Safari Madness
diff --git a/docs/posts/2014-10-26-10-things-i-learned-from-reading-and-writing-the-pouchdb-source.md b/docs/posts/2014-10-26-10-things-i-learned-from-reading-and-writing-the-pouchdb-source.md
index b17172de48..acd7eef4ab 100644
--- a/docs/posts/2014-10-26-10-things-i-learned-from-reading-and-writing-the-pouchdb-source.md
+++ b/docs/posts/2014-10-26-10-things-i-learned-from-reading-and-writing-the-pouchdb-source.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: 10 things I learned from reading (and writing) the PouchDB source
diff --git a/docs/posts/2014-11-10-3.1.0.md b/docs/posts/2014-11-10-3.1.0.md
index 23bb46c88a..4a0456bc35 100644
--- a/docs/posts/2014-11-10-3.1.0.md
+++ b/docs/posts/2014-11-10-3.1.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.1.0: A Guide to Recognizing Your Marsupials (The PouchDB Guide)
diff --git a/docs/posts/2014-11-27-testing-pouchdb.md b/docs/posts/2014-11-27-testing-pouchdb.md
index b0a2b2db91..c25f9bc051 100644
--- a/docs/posts/2014-11-27-testing-pouchdb.md
+++ b/docs/posts/2014-11-27-testing-pouchdb.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: How we test PouchDB
diff --git a/docs/posts/2014-12-04-3.2.0.md b/docs/posts/2014-12-04-3.2.0.md
index 651bb04e36..37d0c6cd79 100644
--- a/docs/posts/2014-12-04-3.2.0.md
+++ b/docs/posts/2014-12-04-3.2.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.2.0: To code is human, to debug is divine
diff --git a/docs/posts/2014-12-11-the-pains-of-being-async-at-heart.md b/docs/posts/2014-12-11-the-pains-of-being-async-at-heart.md
index 10ff7b1a0e..55a7e58564 100644
--- a/docs/posts/2014-12-11-the-pains-of-being-async-at-heart.md
+++ b/docs/posts/2014-12-11-the-pains-of-being-async-at-heart.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: The Pains Of Being Async At Heart
diff --git a/docs/posts/2015-01-05-pouchdb-3.2.1-you-can-always-be-faster.md b/docs/posts/2015-01-05-pouchdb-3.2.1-you-can-always-be-faster.md
index ef97084cc8..6e2f3b555d 100644
--- a/docs/posts/2015-01-05-pouchdb-3.2.1-you-can-always-be-faster.md
+++ b/docs/posts/2015-01-05-pouchdb-3.2.1-you-can-always-be-faster.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.2.1: You can always be faster
diff --git a/docs/posts/2015-02-03-fix-up-look-sharp.md b/docs/posts/2015-02-03-fix-up-look-sharp.md
index 277f1e86f7..4e3a66ffb6 100644
--- a/docs/posts/2015-02-03-fix-up-look-sharp.md
+++ b/docs/posts/2015-02-03-fix-up-look-sharp.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.3.0: Fix Up, Look Sharp
author: Dale Harvey
diff --git a/docs/posts/2015-02-14-a-quick-one.md b/docs/posts/2015-02-14-a-quick-one.md
index a14717ee09..ead8a32e85 100644
--- a/docs/posts/2015-02-14-a-quick-one.md
+++ b/docs/posts/2015-02-14-a-quick-one.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.3.1: A quick one while he's away
author: Nolan Lawson
diff --git a/docs/posts/2015-02-28-efficiently-managing-ui-state-in-pouchdb.md b/docs/posts/2015-02-28-efficiently-managing-ui-state-in-pouchdb.md
index 609dde61a2..86c7f6304e 100644
--- a/docs/posts/2015-02-28-efficiently-managing-ui-state-in-pouchdb.md
+++ b/docs/posts/2015-02-28-efficiently-managing-ui-state-in-pouchdb.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: Efficiently managing UI state with PouchDB
diff --git a/docs/posts/2015-03-05-taming-the-async-beast-with-es7.md b/docs/posts/2015-03-05-taming-the-async-beast-with-es7.md
index eb923d7782..ee1ec9ae7d 100644
--- a/docs/posts/2015-03-05-taming-the-async-beast-with-es7.md
+++ b/docs/posts/2015-03-05-taming-the-async-beast-with-es7.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: Taming the asynchronous beast with ES7
@@ -13,7 +13,7 @@ We can't really help it. PouchDB is an abstraction over IndexedDB, WebSQL, Level
When I think of elegant database APIs, however, I'm still struck by the simplicity of LocalStorage:
-{% highlight "js" %}
+{% highlight js %}
if (!localStorage.foo) {
localStorage.foo = 'bar';
};
@@ -30,7 +30,7 @@ For PouchDB, we can try to mitigate the complexity of asynchronous APIs with pro
However, promisey code is still hard to read, because promises are basically a bolt-on replacement for language primitives like `try`, `catch`, and `return`:
-{% highlight "js" %}
+{% highlight js %}
var db = new PouchDB('mydb');
db.post({}).then(function (result) { // post a new doc
return db.get(result.id); // fetch the doc
@@ -49,7 +49,7 @@ Until recently, this was the best we could hope for. But all of that changes wit
What if I told you that, with ES7, you could rewrite the above code to look like this:
-{% highlight "js" %}
+{% highlight js %}
let db = new PouchDB('mydb');
try {
let result = await db.post({});
@@ -72,7 +72,7 @@ First, let's take a look at how ES7 is accomplishing this amazing feat.
ES7 gives us a new kind of function, the `async function`. Inside of an `async function`, we have a new keyword, `await`, which we use to "wait for" a promise:
-{% highlight "js" %}
+{% highlight js %}
async function myFunction() {
let result = await somethingThatReturnsAPromise();
console.log(result); // cool, we have a result
@@ -82,7 +82,7 @@ async function myFunction() {
If the promise resolves, we can immediately interact with it on the next line. And if it rejects, then an error is thrown. So `try`/`catch` actually works again!
-{% highlight "js" %}
+{% highlight js %}
async function myFunction() {
try {
await somethingThatReturnsAPromise();
@@ -104,7 +104,7 @@ First, consider a common idiom in PouchDB: we want to `get()` a document by `_id
With promises, you'd have to write something like this:
-{% highlight "js" %}
+{% highlight js %}
db.get('docid').catch(function (err) {
if (err.name === 'not_found') {
return {}; // new doc
@@ -117,7 +117,7 @@ db.get('docid').catch(function (err) {
With async functions, this becomes:
-{% highlight "js" %}
+{% highlight js %}
let doc;
try {
doc = await db.get('docid');
@@ -143,7 +143,7 @@ Another, more insidious problem is that you have to be careful to wrap your code
My advice is to ensure that your async functions are entirely surrounded by `try`/`catch`es, at least at the top level:
-{% highlight "js" %}
+{% highlight js %}
async function createNewDoc() {
let response = await db.post({}); // post a new doc
return await db.get(response.id); // find by id
@@ -165,7 +165,7 @@ Async functions get really impressive when it comes to iteration. For instance,
Using standard ES6 promises, we'd have to roll our own promise chain:
-{% highlight "js" %}
+{% highlight js %}
var promise = Promise.resolve();
var docs = [{}, {}, {}];
@@ -182,7 +182,7 @@ promise.then(function () {
This works, but it sure is ugly. It's also error-prone, because if you accidentally do:
-{% highlight "js" %}
+{% highlight js %}
docs.forEach(function (doc) {
promise = promise.then(db.post(doc));
});
@@ -192,7 +192,7 @@ Then the promises will actually execute *concurrently*, which can lead to unexpe
With ES7, though, we can just use a regular for-loop:
-{% highlight "js" %}
+{% highlight js %}
let docs = [{}, {}, {}];
for (let i = 0; i < docs.length; i++) {
@@ -203,7 +203,7 @@ for (let i = 0; i < docs.length; i++) {
This (very concise) code does the same thing as the promise chain! We can make it even shorter by using `for...of`:
-{% highlight "js" %}
+{% highlight js %}
let docs = [{}, {}, {}];
for (let doc of docs) {
@@ -213,7 +213,7 @@ for (let doc of docs) {
Note that you cannot use a `forEach()` loop here. If you were to naïvely write:
-{% highlight "js" %}
+{% highlight js %}
let docs = [{}, {}, {}];
// WARNING: this won't work
@@ -234,7 +234,7 @@ This is because you cannot use `await` from within a normal function. You have t
However, if you try to use an async function, then you will get a more subtle bug:
-{% highlight "js" %}
+{% highlight js %}
let docs = [{}, {}, {}];
// WARNING: this won't work
@@ -264,7 +264,7 @@ If we do want to execute multiple promises concurrently, though, then this is pr
Recall that with ES6 promises, we have `Promise.all()`. Let's use it to return an array of values from an array of promises:
-{% highlight "js" %}
+{% highlight js %}
var docs = [{}, {}, {}];
return Promise.all(docs.map(function (doc) {
@@ -276,7 +276,7 @@ return Promise.all(docs.map(function (doc) {
In ES7, we can do this is a more straightforward way:
-{% highlight "js" %}
+{% highlight js %}
let docs = [{}, {}, {}];
let promises = docs.map((doc) => db.post(doc));
@@ -289,7 +289,7 @@ console.log(results);
The most important parts are 1) creating the `promises` array, which starts invoking all the promises immediately, and 2) that we are `await`ing those promises within the main function. If we tried to use `Array.prototype.map`, then it wouldn't work:
-{% highlight "js" %}
+{% highlight js %}
let docs = [{}, {}, {}];
let promises = docs.map((doc) => db.post(doc));
@@ -306,7 +306,7 @@ The reason this doesn't work is because we are `await`ing inside of the sub-func
If you don't mind using `Promise.all`, you can also use it to tidy up the code a bit:
-{% highlight "js" %}
+{% highlight js %}
let docs = [{}, {}, {}];
let promises = docs.map((doc) => db.post(doc));
diff --git a/docs/posts/2015-04-05-filtered-replication.md b/docs/posts/2015-04-05-filtered-replication.md
index 946093acd8..8b67ad0496 100644
--- a/docs/posts/2015-04-05-filtered-replication.md
+++ b/docs/posts/2015-04-05-filtered-replication.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: Filtered replication: from Couch to Pouch and back
@@ -31,7 +31,7 @@ To reproduce the examples you’ll need PouchDB v3.4.0, which contains some bugf
The first step in implementing your server-side filtering solution is to create the design document. This is an example:
-{% highlight "js" %}
+{% highlight js %}
{
"_id": "_design/app",
"filters": {
@@ -61,7 +61,7 @@ We'll come back to this design document later. Now it's time to implement our cl
* `filter`: can take either the string corresponding to the filter function (see example below), or a JS function (for client-side filtering).
* `query_params`: takes a JS object. This object is what we find in the `req.query` object inside the design document function. Just what we need!
-{% highlight "js" %}
+{% highlight js %}
localDB.sync(remoteDB, {
live: true,
retry: true,
@@ -96,7 +96,7 @@ In PouchDB, this corresponds to `put()`ing a document with `_deleted: true`, rat
The next gotcha deserves a bit more space. I find it very counter-intuitive, and my guess is that you'll feel the same. Since you're interested in two-way replication, you want the client to not only read data, but write data as well. What you expect is that saves on the local database will get replicated to the remote database. Let's look at some code:
-{% highlight "js" %}
+{% highlight js %}
this.save = function (foobar) {
return localDB.get(foobar._id).then(function (doc) {
doc.someNiceField = foobar.someNiceField;
@@ -109,7 +109,7 @@ In ORM parlance, this is a "connected scenario" update. You retrieve the documen
If you followed this post step-by-step, however, this won't work. Why? To make two-way filtered replication work, the design document needs to be in both the remote database and the local database. To do this, we might decide to simply replicate the design document alongside the other documents. Hence our design document becomes:
-{% highlight "js" %}
+{% highlight js %}
{
"_id": "_design/app",
"filters": {
diff --git a/docs/posts/2015-04-07-better-late-than-never.md b/docs/posts/2015-04-07-better-late-than-never.md
index 2b9bd7a1f8..d68c7af7df 100644
--- a/docs/posts/2015-04-07-better-late-than-never.md
+++ b/docs/posts/2015-04-07-better-late-than-never.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.4.0: Better late than never
author: Dale Harvey
diff --git a/docs/posts/2015-05-07-pouchdb-3.5.0-vote-for-pouchdb.md b/docs/posts/2015-05-07-pouchdb-3.5.0-vote-for-pouchdb.md
index 900d6c4d66..ac7d436a1b 100644
--- a/docs/posts/2015-05-07-pouchdb-3.5.0-vote-for-pouchdb.md
+++ b/docs/posts/2015-05-07-pouchdb-3.5.0-vote-for-pouchdb.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.5.0: Vote for PouchDB
author: Dale Harvey
diff --git a/docs/posts/2015-05-18-we-have-a-problem-with-promises.md b/docs/posts/2015-05-18-we-have-a-problem-with-promises.md
index 0763e11214..d971dc4973 100644
--- a/docs/posts/2015-05-18-we-have-a-problem-with-promises.md
+++ b/docs/posts/2015-05-18-we-have-a-problem-with-promises.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: We have a problem with promises
author: Nolan Lawson
diff --git a/docs/posts/2015-06-01-pouchdb-3.6.0.md b/docs/posts/2015-06-01-pouchdb-3.6.0.md
index b30431fe8d..6c4c0bdc4a 100644
--- a/docs/posts/2015-06-01-pouchdb-3.6.0.md
+++ b/docs/posts/2015-06-01-pouchdb-3.6.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 3.6.0
author: Nolan Lawson
diff --git a/docs/posts/2015-08-03-pouchdb-4.0.0-ballast-overboard.md b/docs/posts/2015-08-03-pouchdb-4.0.0-ballast-overboard.md
index e251383df7..4405efda86 100644
--- a/docs/posts/2015-08-03-pouchdb-4.0.0-ballast-overboard.md
+++ b/docs/posts/2015-08-03-pouchdb-4.0.0-ballast-overboard.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 4.0.0 - Ballast Overboard
author: Dale Harvey
diff --git a/docs/posts/2015-09-01-pouchdb-4.0.1-gotta-go-fast.md b/docs/posts/2015-09-01-pouchdb-4.0.1-gotta-go-fast.md
index f92606f579..58a68abee6 100644
--- a/docs/posts/2015-09-01-pouchdb-4.0.1-gotta-go-fast.md
+++ b/docs/posts/2015-09-01-pouchdb-4.0.1-gotta-go-fast.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 4.0.1 - Gotta Go Fast
author: Nolan Lawson
diff --git a/docs/posts/2015-09-12-pouchdb-4.0.2-a-little-extra.md b/docs/posts/2015-09-12-pouchdb-4.0.2-a-little-extra.md
index 7a652b6ae8..08c93ba7a8 100644
--- a/docs/posts/2015-09-12-pouchdb-4.0.2-a-little-extra.md
+++ b/docs/posts/2015-09-12-pouchdb-4.0.2-a-little-extra.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 4.0.2 - A Little Extra
author: Nolan Lawson
diff --git a/docs/posts/2015-10-06-pouchdb-5.0.0-five-years-of-pouchdb.md b/docs/posts/2015-10-06-pouchdb-5.0.0-five-years-of-pouchdb.md
index cc0584c752..db730a51c3 100644
--- a/docs/posts/2015-10-06-pouchdb-5.0.0-five-years-of-pouchdb.md
+++ b/docs/posts/2015-10-06-pouchdb-5.0.0-five-years-of-pouchdb.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 5.0.0 - Five years of PouchDB
author: Nolan Lawson
diff --git a/docs/posts/2015-11-03-cover-all.md b/docs/posts/2015-11-03-cover-all.md
index 669dc2c066..f574ad32b4 100644
--- a/docs/posts/2015-11-03-cover-all.md
+++ b/docs/posts/2015-11-03-cover-all.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 5.1.0 - Cover all the things
author: Dale Harvey
diff --git a/docs/posts/2016-01-13-pouchdb-5.2.0-a-better-build-system-with-rollup.md b/docs/posts/2016-01-13-pouchdb-5.2.0-a-better-build-system-with-rollup.md
index 50b711ec43..292fef41ab 100644
--- a/docs/posts/2016-01-13-pouchdb-5.2.0-a-better-build-system-with-rollup.md
+++ b/docs/posts/2016-01-13-pouchdb-5.2.0-a-better-build-system-with-rollup.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 5.2.0: A better build system with Rollup
author: Nolan Lawson
diff --git a/docs/posts/2016-03-04-pouchdb-5.3.0-sqlite-support-in-node.md b/docs/posts/2016-03-04-pouchdb-5.3.0-sqlite-support-in-node.md
index 71aa24541b..ba6aae354f 100644
--- a/docs/posts/2016-03-04-pouchdb-5.3.0-sqlite-support-in-node.md
+++ b/docs/posts/2016-03-04-pouchdb-5.3.0-sqlite-support-in-node.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 5.3.0: SQLite support in Node
author: Nolan Lawson
diff --git a/docs/posts/2016-04-28-prebuilt-databases-with-pouchdb.md b/docs/posts/2016-04-28-prebuilt-databases-with-pouchdb.md
index 774e0e1168..a8ab136fbb 100644
--- a/docs/posts/2016-04-28-prebuilt-databases-with-pouchdb.md
+++ b/docs/posts/2016-04-28-prebuilt-databases-with-pouchdb.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: Prebuilt databases with PouchDB
author: Nolan Lawson
diff --git a/docs/posts/2016-06-06-introducing-pouchdb-custom-builds.md b/docs/posts/2016-06-06-introducing-pouchdb-custom-builds.md
index 6458f84ac2..31c0052219 100644
--- a/docs/posts/2016-06-06-introducing-pouchdb-custom-builds.md
+++ b/docs/posts/2016-06-06-introducing-pouchdb-custom-builds.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: Introducing PouchDB custom builds
author: Nolan Lawson
diff --git a/docs/posts/2016-06-06-pouchdb-5.4.0.md b/docs/posts/2016-06-06-pouchdb-5.4.0.md
index 094a7dc034..c8bf37d44b 100644
--- a/docs/posts/2016-06-06-pouchdb-5.4.0.md
+++ b/docs/posts/2016-06-06-pouchdb-5.4.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 5.4.0
author: Nolan Lawson
diff --git a/docs/posts/2016-09-05-pouchdb-6.0.0.md b/docs/posts/2016-09-05-pouchdb-6.0.0.md
index ccf2cfb6fe..d5f3efd453 100644
--- a/docs/posts/2016-09-05-pouchdb-6.0.0.md
+++ b/docs/posts/2016-09-05-pouchdb-6.0.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 6.0.0: Labour Day
author: Dale Harvey
diff --git a/docs/posts/2016-12-12-pouchdb-6.1.0.md b/docs/posts/2016-12-12-pouchdb-6.1.0.md
index 9c42937dc2..c344b69f5d 100644
--- a/docs/posts/2016-12-12-pouchdb-6.1.0.md
+++ b/docs/posts/2016-12-12-pouchdb-6.1.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 6.1.0
author: Nolan Lawson
diff --git a/docs/posts/2017-01-05-pouchdb-6.1.1.md b/docs/posts/2017-01-05-pouchdb-6.1.1.md
index f2bc8f0880..b749327b3d 100644
--- a/docs/posts/2017-01-05-pouchdb-6.1.1.md
+++ b/docs/posts/2017-01-05-pouchdb-6.1.1.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 6.1.1
author: Dale Harvey
diff --git a/docs/posts/2017-04-20-pouchdb-6.2.0.md b/docs/posts/2017-04-20-pouchdb-6.2.0.md
index 073cabc9c7..db343fa94c 100644
--- a/docs/posts/2017-04-20-pouchdb-6.2.0.md
+++ b/docs/posts/2017-04-20-pouchdb-6.2.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 6.2.0
author: Garren Smith
diff --git a/docs/posts/2017-07-13-pouchdb-6.3.0.md b/docs/posts/2017-07-13-pouchdb-6.3.0.md
index ea0e195e6d..e4c51f6bb7 100644
--- a/docs/posts/2017-07-13-pouchdb-6.3.0.md
+++ b/docs/posts/2017-07-13-pouchdb-6.3.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 6.3.0
author: Will Holley
diff --git a/docs/posts/2017-12-16-pouchdb-6.4.0.md b/docs/posts/2017-12-16-pouchdb-6.4.0.md
index 8e3636c56e..4c2d1cc0a0 100644
--- a/docs/posts/2017-12-16-pouchdb-6.4.0.md
+++ b/docs/posts/2017-12-16-pouchdb-6.4.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 6.4.0
author: Dale Harvey
diff --git a/docs/posts/2018-01-23-pouchdb-6.4.2.md b/docs/posts/2018-01-23-pouchdb-6.4.2.md
index f8942e991b..ce78b0519a 100644
--- a/docs/posts/2018-01-23-pouchdb-6.4.2.md
+++ b/docs/posts/2018-01-23-pouchdb-6.4.2.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 6.4.2 - Long live WebSQL
author: Dale Harvey
diff --git a/docs/posts/2018-06-21-pouchdb-7.0.0.md b/docs/posts/2018-06-21-pouchdb-7.0.0.md
index e3ac945194..615ebf6cf8 100644
--- a/docs/posts/2018-06-21-pouchdb-7.0.0.md
+++ b/docs/posts/2018-06-21-pouchdb-7.0.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 7.0 - 17.5% less PouchDB
author: Dale Harvey
diff --git a/docs/posts/2019-06-13-pouchdb-7.1.1.md b/docs/posts/2019-06-13-pouchdb-7.1.1.md
index 465bcbe391..d52ff4d88c 100644
--- a/docs/posts/2019-06-13-pouchdb-7.1.1.md
+++ b/docs/posts/2019-06-13-pouchdb-7.1.1.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 7.1.1 - Bug fixes and dependency updates
author: Garren Smith
diff --git a/docs/posts/2020-02-12-pouchdb-7.2.0.md b/docs/posts/2020-02-12-pouchdb-7.2.0.md
index 9dbb23c54b..506fce42fd 100644
--- a/docs/posts/2020-02-12-pouchdb-7.2.0.md
+++ b/docs/posts/2020-02-12-pouchdb-7.2.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 7.2.1 - New indexeddb adapter
author: Gareth Bowen
diff --git a/docs/posts/2022-04-13-pouchdb-7.3.0.md b/docs/posts/2022-04-13-pouchdb-7.3.0.md
index 9f38f056bb..c28bbd8bd4 100644
--- a/docs/posts/2022-04-13-pouchdb-7.3.0.md
+++ b/docs/posts/2022-04-13-pouchdb-7.3.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 7.3.0
author: Alba Herrerías
diff --git a/docs/posts/2022-11-11-pouchdb-7.3.1.md b/docs/posts/2022-11-11-pouchdb-7.3.1.md
index a0bbb87f23..0e5f7f34de 100644
--- a/docs/posts/2022-11-11-pouchdb-7.3.1.md
+++ b/docs/posts/2022-11-11-pouchdb-7.3.1.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 7.3.1
author: Alba Herrerías
diff --git a/docs/posts/2022-12-14-pouchdb-8.0.0.md b/docs/posts/2022-12-14-pouchdb-8.0.0.md
index c64a6212b2..c03f7d5033 100644
--- a/docs/posts/2022-12-14-pouchdb-8.0.0.md
+++ b/docs/posts/2022-12-14-pouchdb-8.0.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 8.0.0 — Modernizing PouchDB
author: Alba Herrerías
diff --git a/docs/posts/2023-02-09-pouchdb-8.0.1.md b/docs/posts/2023-02-09-pouchdb-8.0.1.md
index 19184520a9..63b12206f5 100644
--- a/docs/posts/2023-02-09-pouchdb-8.0.1.md
+++ b/docs/posts/2023-02-09-pouchdb-8.0.1.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 8.0.1
author: Alba Herrerías
diff --git a/docs/posts/2024-05-24-pouchdb-9.0.0.md b/docs/posts/2024-05-24-pouchdb-9.0.0.md
index 920bbe3029..ec93381bd0 100644
--- a/docs/posts/2024-05-24-pouchdb-9.0.0.md
+++ b/docs/posts/2024-05-24-pouchdb-9.0.0.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB 9.0.0
author: Alba Herrerías
diff --git a/docs/posts/2026-04-10-migration-to-nodesqlite.md b/docs/posts/2026-04-10-migration-to-nodesqlite.md
index 3d651cdaa9..9f3fbbb8be 100644
--- a/docs/posts/2026-04-10-migration-to-nodesqlite.md
+++ b/docs/posts/2026-04-10-migration-to-nodesqlite.md
@@ -1,5 +1,5 @@
---
-layout: post
+layout: post.html
title: PouchDB has a new adapter - nodesqlite
author: Alba Herrerías
diff --git a/docs/serviceWorker.js.liquid b/docs/serviceWorker.js.liquid
index 1a557c4a11..40cad22740 100644
--- a/docs/serviceWorker.js.liquid
+++ b/docs/serviceWorker.js.liquid
@@ -10,24 +10,19 @@ var newCacheName = 'pouchdb-assets-cache-v{{ site.time }}';
var criticalAssets = [
'/offline.html',
- '/static/css/pouchdb.css',
+ '/static/css/pouchdb.min.css',
];
+{%- assign pages = collections.pages | where_exp: "page", "page.url != '/manifest.appcache'" -%}
+{% assign guides = collections.guides %}
+
var pages = [
- {% for page in collections.pages %}
- {% if page.url != '/manifest.appcache' %}
- '{{ page.url | replace:'index.html','' }}',
- {% endif %}
- {% endfor %}
- {% for page in collections.guides %}
- '{{ page.url | replace:'index.html','' }}',
- {% endfor %}
-];
+ {% for page in pages %}'{{ page.url | replace:'index.html','' }}',
+ {% endfor %}{% for page in guides %}'{{ page.url | replace:'index.html','' }}'{% unless forloop.last %},{% endunless %}
+ {% endfor %}];
-var blogPosts = [
- {% for page in collections.posts %}
- '{{ page.url | replace:'index.html','' }}',
- {% endfor %}
+var blogPosts = [{% for page in collections.posts %}
+ '{{ page.url | replace:'index.html','' }}',{% endfor %}
];
// Only cache the first blog page
@@ -40,33 +35,33 @@ var nonCriticalAssets =
'https://cdn.jsdelivr.net/npm/pouchdb/dist/pouchdb.min.js',
]
.concat(pages)
- .filter(function(file) {
+ .filter(function (file) {
return file.indexOf('/blog/page') === -1;
})
.concat(blogPosts.slice(0, 5)); // Let's only cache the first five by default
-self.addEventListener('install', function(event) {
+self.addEventListener('install', function (event) {
event.waitUntil(
caches.open(newCacheName)
- .then(function(cache) {
+ .then(function (cache) {
cache.addAll(nonCriticalAssets);
// Only return the criticalAssets to waitUntil
// This will allow the noncritical assets to fail
return cache.addAll(criticalAssets);
})
- .then(function() {
+ .then(function () {
return self.skipWaiting();
})
);
});
-self.addEventListener('activate', function(event) {
+self.addEventListener('activate', function (event) {
// remove caches beginning "pouchdb-" that aren't the new cache
event.waitUntil(
caches.keys()
- .then(function(cacheNames) {
+ .then(function (cacheNames) {
return Promise.all(
- cacheNames.map(function(cacheName) {
+ cacheNames.map(function (cacheName) {
if (!/^pouchdb-/.test(cacheName)) {
return;
}
@@ -76,25 +71,32 @@ self.addEventListener('activate', function(event) {
})
);
})
- .then(function() {
+ .then(function () {
return self.clients.claim();
})
);
});
-self.addEventListener('fetch', function(event) {
- // Try the cache, if it's not in there try the network, then cache that response
- // if that network request fails show the offline.html page.
- event.respondWith(
- caches.open(newCacheName).then(function(cache) {
- return cache.match(event.request).then(function (response) {
- return response || fetch(event.request).then(function(response) {
- cache.put(event.request, response.clone());
- return response;
- }).catch(function () {
- return cache.match('/offline.html');
- });
- });
- })
- );
+self.addEventListener('fetch', function (event) {
+ // Ignore POST etc, which will happen when using PouchDB
+ // in the browser console
+ if(event.request.method === "GET") {
+ // Ignore requests from browser extensions etc
+ if ((event.request.url.indexOf('http') === 0)) {
+ // Try the cache, if it's not in there try the network, then cache that response
+ // if that network request fails show the offline.html page.
+ event.respondWith(
+ caches.open(newCacheName).then(function (cache) {
+ return cache.match(event.request).then(function (response) {
+ return response || fetch(event.request).then(function (response) {
+ cache.put(event.request, response.clone());
+ return response;
+ }).catch(function () {
+ return cache.match('/offline.html');
+ });
+ });
+ })
+ );
+ }
+ }
});
diff --git a/docs/src/code.js b/docs/src/code.js
index 6015637e03..017b3a143f 100644
--- a/docs/src/code.js
+++ b/docs/src/code.js
@@ -1,4 +1,4 @@
-function codeWrap(){
+function codeWrap() {
"use strict";
var DEFAULT_TYPE = 'promise';
@@ -7,10 +7,10 @@ function codeWrap(){
var codeIds =
$codes
- .map(function(div){
- return div.attributes["data-code-id"].value
+ .map(function (div) {
+ return div.attributes["data-code-id"].value;
})
- .filter(function(item, index, inputArray){
+ .filter(function (item, index, inputArray) {
// Each code block has multiple versions so let's only grab one.
return inputArray.indexOf(item) === index;
});
@@ -18,7 +18,7 @@ function codeWrap(){
wrap();
setAll();
- $('[data-code-tablist] [href]').on('click', function(e){
+ $('[data-code-tablist] [href]').on('click', function (e) {
var href = $(this).attr('href');
setAll(href.replace('#', ''));
@@ -28,7 +28,7 @@ function codeWrap(){
e.preventDefault();
});
- function wrap(){
+ function wrap() {
var codeTpl = '' +
'
' +
'- ' +
@@ -43,10 +43,10 @@ function codeWrap(){
'
' +
'
{{tabPanes}}
';
codeIds
- .forEach(function(id){
+ .forEach(function (id) {
var $code = $("[data-code-id='" + id + "']");
- var paneHtml = $code.get().map(function(div){
+ var paneHtml = $code.get().map(function (div) {
return div.outerHTML;
}).join('');
@@ -62,16 +62,16 @@ function codeWrap(){
$('[data-code-hide]').addClass('hide');
}
- function setAll(type){
+ function setAll(type) {
// We default to callback so no need to do anything the first time.
var firstTime = !localStorage.getItem('codeStyle');
- if(firstTime){
+ if (firstTime) {
localStorage.setItem('codeStyle', DEFAULT_TYPE);
}
type = type || localStorage.getItem('codeStyle');
- if(typeof type === "undefined" || type === null) {
+ if (typeof type === "undefined" || type === null) {
return;
}
@@ -86,22 +86,22 @@ function codeWrap(){
var setHeights = [];
- function setEqualHeights(){
- if(setHeights.length > 0){
+ function setEqualHeights() {
+ if (setHeights.length > 0) {
return;
}
codeIds
- .forEach(function(id){
+ .forEach(function (id) {
var $code = $("[data-code-id='" + id + "']");
var paneHeight = 0;
- $code.get().forEach(function(div){
+ $code.get().forEach(function (div) {
var originalDisplay = div.style.display;
div.style.display = 'block';
var clientHeight = div.clientHeight;
div.style.display = originalDisplay;
- if(clientHeight > paneHeight){
+ if (clientHeight > paneHeight) {
paneHeight = clientHeight;
}
});
@@ -113,7 +113,7 @@ function codeWrap(){
codeWrap();
function addCodeCopyButtons() {
- if (!navigator.clipboard.writeText) return;
+ if (!navigator.clipboard.writeText) {return;}
function copyCodeFor(codeElement) {
return () => {
@@ -134,8 +134,10 @@ function addCodeCopyButtons() {
function addButton(txt, parent) {
const btn = document.createElement('button');
btn.style.position = 'absolute';
- btn.style.top = '11.5px';
- btn.style.right = '11.5px';
+ btn.style.top = '6px';
+ btn.style.right = '6px';
+ btn.style.borderRadius = '5px';
+ btn.style.padding = '4px 10px 3px';
btn.textContent = txt;
btn.classList.add('btnCopyCode');
@@ -145,7 +147,7 @@ function addCodeCopyButtons() {
}
document
- .querySelectorAll('pre[data-copybutton]')
+ .querySelectorAll('pre[class^=language]')
.forEach(codeElement => {
codeElement.style.position = 'relative';
diff --git a/docs/src/less/pouchdb/code.less b/docs/src/less/pouchdb/code.less
index cff926eafc..07d13751ac 100644
--- a/docs/src/less/pouchdb/code.less
+++ b/docs/src/less/pouchdb/code.less
@@ -7,6 +7,8 @@ code {
pre {
padding-left: @pre-padding;
padding-right: @pre-padding;
+ background-color:@dry-slate;
+ color:@soft-green
}
@duck-egg: #66d9ef;
@@ -16,25 +18,39 @@ pre {
@pinky: #f92672;
@soft-green: #6eca97;
@dry-slate: #3f3f3f;
+@mud: #75715e;
@whitish: #f8f8f2;
-.language-bash { background-color:@dry-slate; color:@whitish }
.language-bash .token.parameter.variable { color:@pinky }
+.language-bash {
+ color: @whitish;
+}
-.language-html { background-color:@dry-slate; color:@soft-green }
-.language-js,.language-javascript { background-color:@dry-slate; color:@soft-green }
+.language-html { color:@soft-green }
+.language-html {
+ color: @whitish;
+ .tag,
+ .tag .punctuation {
+ color: #f92672;
+ }
+}
+.language-js,.language-javascript { color:@soft-green }
.token.attr-name { color:@martian-green }
.token.attr-value { color:@mustard }
-.token.tag .token.attr-value .attr-equals { color:@martian-green }
+.token.boolean { color:@duck-egg }
.token.tag .token.attr-value .token.punctuation { color:@mustard }
.token.class-name { color:@soft-green }
+.token.comment { color:@mud }
.token.function { color:@soft-green }
.token.keyword { color:@duck-egg }
.token.number { color:@purple }
.token.operator { color:@pinky }
.token.property + .token.operator { color:@whitish }
-.token.property { color:@martian-green }
+.token.property { color:@mustard }
+.token.parameter, .token.literal-property { color:@soft-green }
.token.punctuation { color:@whitish }
.token.string { color:@mustard }
.token.tag { color:@pinky }
.token.tag .token.punctuation { color:@pinky }
+
+.token.tag .token.attr-value .attr-equals, .token.attr-name, .token.attr-equals, .token.function-variable { color:@martian-green }
\ No newline at end of file
diff --git a/docs/src/less/pouchdb/navs.less b/docs/src/less/pouchdb/navs.less
index 18e848f638..2f8deb1893 100644
--- a/docs/src/less/pouchdb/navs.less
+++ b/docs/src/less/pouchdb/navs.less
@@ -59,7 +59,7 @@
}
@media (max-width: @screen-sm-min) {
- .nav-sidebar-wrapper { position: static !important; } /* !important used to override stickyfill */
+ .nav-sidebar-wrapper { position: static; }
.nav.nav-sidebar { margin-bottom: 25px; }
.nav-head,
.nav.nav-sidebar { text-align: center; }
@@ -88,6 +88,7 @@
color: #eee;
padding-bottom: 15px;
margin-bottom: -15px;
+ z-index: 1;
}
.nav-code > li > a:hover {
border-color: transparent;
diff --git a/docs/static/js/stickyfill.min.js b/docs/static/js/stickyfill.min.js
deleted file mode 100644
index 9d8326ff69..0000000000
--- a/docs/static/js/stickyfill.min.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*!
- * Stickyfill -- `position: sticky` polyfill
- * v. 1.1.3 | https://github.com/wilddeer/stickyfill
- * Copyright Oleg Korsunsky | http://wd.dizaina.net/
- *
- * MIT License
- */
-!function(a,b){function c(){y=D=z=A=B=C=K}function d(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])}function e(a){return parseFloat(a)||0}function f(){F={top:b.pageYOffset,left:b.pageXOffset}}function g(){return b.pageXOffset!=F.left?(f(),void z()):void(b.pageYOffset!=F.top&&(f(),i()))}function h(){setTimeout(function(){b.pageYOffset!=F.top&&(F.top=b.pageYOffset,i())},0)}function i(){for(var a=H.length-1;a>=0;a--)j(H[a])}function j(a){if(a.inited){var b=F.top<=a.limit.start?0:F.top>=a.limit.end?2:1;a.mode!=b&&p(a,b)}}function k(){for(var a=H.length-1;a>=0;a--)if(H[a].inited){var b=Math.abs(t(H[a].clone)-H[a].docOffsetTop),c=Math.abs(H[a].parent.node.offsetHeight-H[a].parent.height);if(b>=2||c>=2)return!1}return!0}function l(a){isNaN(parseFloat(a.computed.top))||a.isCell||"none"==a.computed.display||(a.inited=!0,a.clone||q(a),"absolute"!=a.parent.computed.position&&"relative"!=a.parent.computed.position&&(a.parent.node.style.position="relative"),j(a),a.parent.height=a.parent.node.offsetHeight,a.docOffsetTop=t(a.clone))}function m(a){var b=!0;a.clone&&r(a),d(a.node.style,a.css);for(var c=H.length-1;c>=0;c--)if(H[c].node!==a.node&&H[c].parent.node===a.parent.node){b=!1;break}b&&(a.parent.node.style.position=a.parent.css.position),a.mode=-1}function n(){for(var a=H.length-1;a>=0;a--)l(H[a])}function o(){for(var a=H.length-1;a>=0;a--)m(H[a])}function p(a,b){var c=a.node.style;switch(b){case 0:c.position="absolute",c.left=a.offset.left+"px",c.right=a.offset.right+"px",c.top=a.offset.top+"px",c.bottom="auto",c.width="auto",c.marginLeft=0,c.marginRight=0,c.marginTop=0;break;case 1:c.position="fixed",c.left=a.box.left+"px",c.right=a.box.right+"px",c.top=a.css.top,c.bottom="auto",c.width="auto",c.marginLeft=0,c.marginRight=0,c.marginTop=0;break;case 2:c.position="absolute",c.left=a.offset.left+"px",c.right=a.offset.right+"px",c.top="auto",c.bottom=0,c.width="auto",c.marginLeft=0,c.marginRight=0}a.mode=b}function q(a){a.clone=document.createElement("div");var b=a.node.nextSibling||a.node,c=a.clone.style;c.height=a.height+"px",c.width=a.width+"px",c.marginTop=a.computed.marginTop,c.marginBottom=a.computed.marginBottom,c.marginLeft=a.computed.marginLeft,c.marginRight=a.computed.marginRight,c.padding=c.border=c.borderSpacing=0,c.fontSize="1em",c.position="static",c.cssFloat=a.computed.cssFloat,a.node.parentNode.insertBefore(a.clone,b)}function r(a){a.clone.parentNode.removeChild(a.clone),a.clone=void 0}function s(a){var b=getComputedStyle(a),c=a.parentNode,d=getComputedStyle(c),f=a.style.position;a.style.position="relative";var g={top:b.top,marginTop:b.marginTop,marginBottom:b.marginBottom,marginLeft:b.marginLeft,marginRight:b.marginRight,cssFloat:b.cssFloat,display:b.display},h={top:e(b.top),marginBottom:e(b.marginBottom),paddingLeft:e(b.paddingLeft),paddingRight:e(b.paddingRight),borderLeftWidth:e(b.borderLeftWidth),borderRightWidth:e(b.borderRightWidth)};a.style.position=f;var i={position:a.style.position,top:a.style.top,bottom:a.style.bottom,left:a.style.left,right:a.style.right,width:a.style.width,marginTop:a.style.marginTop,marginLeft:a.style.marginLeft,marginRight:a.style.marginRight},j=u(a),k=u(c),l={node:c,css:{position:c.style.position},computed:{position:d.position},numeric:{borderLeftWidth:e(d.borderLeftWidth),borderRightWidth:e(d.borderRightWidth),borderTopWidth:e(d.borderTopWidth),borderBottomWidth:e(d.borderBottomWidth)}},m={node:a,box:{left:j.win.left,right:J.clientWidth-j.win.right},offset:{top:j.win.top-k.win.top-l.numeric.borderTopWidth,left:j.win.left-k.win.left-l.numeric.borderLeftWidth,right:-j.win.right+k.win.right-l.numeric.borderRightWidth},css:i,isCell:"table-cell"==b.display,computed:g,numeric:h,width:j.win.right-j.win.left,height:j.win.bottom-j.win.top,mode:-1,inited:!1,parent:l,limit:{start:j.doc.top-h.top,end:k.doc.top+c.offsetHeight-l.numeric.borderBottomWidth-a.offsetHeight-h.top-h.marginBottom}};return m}function t(a){for(var b=0;a;)b+=a.offsetTop,a=a.offsetParent;return b}function u(a){var c=a.getBoundingClientRect();return{doc:{top:c.top+b.pageYOffset,left:c.left+b.pageXOffset},win:c}}function v(){G=setInterval(function(){!k()&&z()},500)}function w(){clearInterval(G)}function x(){I&&(document[L]?w():v())}function y(){I||(f(),n(),b.addEventListener("scroll",g),b.addEventListener("wheel",h),b.addEventListener("resize",z),b.addEventListener("orientationchange",z),a.addEventListener(M,x),v(),I=!0)}function z(){if(I){o();for(var a=H.length-1;a>=0;a--)H[a]=s(H[a].node);n()}}function A(){b.removeEventListener("scroll",g),b.removeEventListener("wheel",h),b.removeEventListener("resize",z),b.removeEventListener("orientationchange",z),a.removeEventListener(M,x),w(),I=!1}function B(){A(),o()}function C(){for(B();H.length;)H.pop()}function D(a){for(var b=H.length-1;b>=0;b--)if(H[b].node===a)return;var c=s(a);H.push(c),I?l(c):y()}function E(a){for(var b=H.length-1;b>=0;b--)H[b].node===a&&(m(H[b]),H.splice(b,1))}var F,G,H=[],I=!1,J=a.documentElement,K=function(){},L="hidden",M="visibilitychange";void 0!==a.webkitHidden&&(L="webkitHidden",M="webkitvisibilitychange"),b.getComputedStyle||c();for(var N=["","-webkit-","-moz-","-ms-"],O=document.createElement("div"),P=N.length-1;P>=0;P--){try{O.style.position=N[P]+"sticky"}catch(Q){}""!=O.style.position&&c()}f(),b.Stickyfill={stickies:H,add:D,remove:E,init:y,rebuild:z,pause:A,stop:B,kill:C}}(document,window),window.jQuery&&!function($){$.fn.Stickyfill=function(){return this.each(function(){Stickyfill.add(this)}),this}}(window.jQuery);
\ No newline at end of file
diff --git a/docs/users.md b/docs/users.md
index 8d1d4a8ec4..5b147c3bee 100644
--- a/docs/users.md
+++ b/docs/users.md
@@ -1,5 +1,5 @@
---
-layout: 2ColLeft
+layout: 2ColLeft.html
title: Who's using PouchDB?
sidebar: nav.html
---
diff --git a/eleventy.config.js b/eleventy.config.js
new file mode 100644
index 0000000000..6d0d82097a
--- /dev/null
+++ b/eleventy.config.js
@@ -0,0 +1,105 @@
+const markdownIt = require('markdown-it');
+const Terser = require("terser");
+const through = require('through2');
+
+module.exports = eleventyConfig => {
+ process.env.TZ = 'UTC';
+ // Turn off extensionless layouts
+ // https://www.11ty.dev/docs/layouts/#omitting-the-layouts-file-extension
+ eleventyConfig.setLayoutResolution(false);
+ eleventyConfig.addPlugin(require("@11ty/eleventy-plugin-syntaxhighlight"));
+
+ eleventyConfig.addPassthroughCopy('./docs/asf.md');
+ eleventyConfig.addPassthroughCopy('./docs/static');
+ // Copy and minify src/code.js to _site/static/js
+ eleventyConfig.addPassthroughCopy(
+ {
+ "./docs/src/code.js": "static/js/code.min.js",
+ },
+ {
+ transform: function () {
+ let buffer = '';
+
+ return through(
+ function (chunk, enc, done) {
+ buffer += chunk.toString();
+ done();
+ },
+ function (done) {
+ // INFO: this usage is very specific to the pinned Terser 4.8.0,
+ // if Terser is ever updated, this will break.
+ const result = Terser.minify(buffer);
+ if (result.error) {
+ console.log('Error minifying code.js:', result.error);
+ }
+ done(null, result.code);
+ }
+ );
+ }
+ }
+ );
+
+ eleventyConfig.setLiquidOptions({
+ jekyllInclude: true,
+ });
+
+ // use e.g. /learn.html in preference to /learn/
+ eleventyConfig.addGlobalData('permalink', '/{{ page.filePathStem }}.html');
+
+ eleventyConfig.addCollection('guides', collectionApi => {
+ return collectionApi.getFilteredByTag('guides').sort((a, b) => a.data.index - b.data.index);
+ });
+
+ eleventyConfig.addCollection('pages', collectionApi => {
+ // zero-indexed, but skip page 1, as it's served at /blog/
+ const pageCount = Math.ceil(collectionApi.getFilteredByTag('posts').length / 5) - 1;
+ const blogPages = Array.from(
+ { length:pageCount },
+ (_, n) => ({
+ url: `/blog/page${n+2}/`,
+ }),
+ );
+
+ return [
+ ...collectionApi.getAll().filter(item => !item.data.tags),
+ ...blogPages,
+ ];
+ });
+
+ eleventyConfig.addCollection('posts', collectionApi => {
+ return collectionApi
+ .getFilteredByTag('posts')
+ .sort((a, b) => b.date - a.date || b.inputPath.localeCompare(a.inputPath));
+ });
+
+ eleventyConfig.addFilter('first_paragraph', function (content) {
+ const marker = '';
+ const idx = content.indexOf(marker);
+ if (idx === -1) {return content;}
+ return content.substring(0, idx + marker.length);
+ });
+
+ eleventyConfig.addFilter('liquid', function (content) {
+ if (!this.liquid) {return content;}
+
+ return this.liquid.parseAndRender(content, this.context);
+ });
+
+ const md = markdownIt({
+ html: true,
+ });
+
+ eleventyConfig.addFilter('inlinemarkdown', content => md.renderInline(content));
+ // Re-defined markdown-it lib to prevent eleventy messing with internals.
+ // See: https://github.com/11ty/eleventy/issues/2438
+ eleventyConfig.setLibrary('md', md);
+ eleventyConfig.addFilter('markdown', content => md.render(content));
+ eleventyConfig.addPairedShortcode('markdown', content => md.render(content));
+
+ return {
+ dir: {
+ input: './docs',
+ output: "docs/_site"
+ },
+ };
+};
diff --git a/package-lock.json b/package-lock.json
index 429ef0a423..d88f3cf0fd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,6 +11,7 @@
"dependencies": {
"@neighbourhoodie/websql": "2.0.4",
"double-ended-queue": "2.1.0-0",
+ "execa": "^9.6.1",
"fetch-cookie": "2.2.0",
"level": "6.0.1",
"level-codec": "9.0.2",
@@ -29,6 +30,7 @@
},
"devDependencies": {
"@11ty/eleventy": "3.1.2",
+ "@11ty/eleventy-plugin-syntaxhighlight": "^5.0.2",
"add-cors-to-couchdb": "0.0.6",
"body-parser": "1.20.3",
"browserify": "16.4.0",
@@ -36,7 +38,7 @@
"builtin-modules": "3.1.0",
"chai": "3.5.0",
"chai-as-promised": "5.3.0",
- "cssmin": "0.4.3",
+ "css-minify": "^2.1.0",
"denodeify": "1.2.1",
"eslint": "8.7.0",
"express": "4.22.0",
@@ -363,6 +365,20 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@11ty/eleventy-plugin-syntaxhighlight": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-syntaxhighlight/-/eleventy-plugin-syntaxhighlight-5.0.2.tgz",
+ "integrity": "sha512-T6xVVRDJuHlrFMHbUiZkHjj5o1IlLzZW+1IL9eUsyXFU7rY2ztcYhZew/64vmceFFpQwzuSfxQOXxTJYmKkQ+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prismjs": "^1.30.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/11ty"
+ }
+ },
"node_modules/@11ty/eleventy-utils": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-2.0.7.tgz",
@@ -593,6 +609,24 @@
"integrity": "sha512-EijGsv7kzd9I9g0ByCl6h42BWNGUZrlCSejfrb3AKeHC33SGbASu1VDf5O3rRiiUOhAC9CHdZxFPbZu0HmR70A==",
"license": "Apache 2"
},
+ "node_modules/@sec-ant/readable-stream": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
+ "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
+ "license": "MIT"
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@sindresorhus/slugify": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz",
@@ -1328,6 +1362,19 @@
"node": ">=6.0.0"
}
},
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.10.27",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.27.tgz",
+ "integrity": "sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/basic-auth": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
@@ -1491,6 +1538,13 @@
"node": ">= 0.8"
}
},
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -1992,6 +2046,40 @@
"xtend": "~4.0.1"
}
},
+ "node_modules/browserslist": {
+ "version": "4.28.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz",
+ "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "baseline-browser-mapping": "^2.10.12",
+ "caniuse-lite": "^1.0.30001782",
+ "electron-to-chromium": "^1.5.328",
+ "node-releases": "^2.0.36",
+ "update-browserslist-db": "^1.2.3"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
"node_modules/buffer": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
@@ -2125,6 +2213,47 @@
"node": ">=6"
}
},
+ "node_modules/caniuse-api": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
+ "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.0.0",
+ "caniuse-lite": "^1.0.0",
+ "lodash.memoize": "^4.1.2",
+ "lodash.uniq": "^4.5.0"
+ }
+ },
+ "node_modules/caniuse-api/node_modules/lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001791",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz",
+ "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
"node_modules/caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
@@ -2268,6 +2397,13 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
+ "node_modules/colord": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/colors": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
@@ -2744,6 +2880,35 @@
"sha.js": "^2.4.8"
}
},
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/crypto-browserify": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
@@ -2772,13 +2937,201 @@
"integrity": "sha512-g80sI65b5Gfg4BltF1GMdyjwiGWtQPnEMDmu1/QAA4S1UY+jmuZM5iopakOuUnkn6TUPJYsacKEeALnbd68r1Q==",
"dev": true
},
- "node_modules/cssmin": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/cssmin/-/cssmin-0.4.3.tgz",
- "integrity": "sha512-A0hOtBUV5dPB/gRKsLZsqoyeFHuKIWCXdumFdsK/0nlhwK1NRZHwtm0svdTA4uEpixZD+o0xs7MirNsG2X1JBg==",
+ "node_modules/css-declaration-sorter": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz",
+ "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.9"
+ }
+ },
+ "node_modules/css-minify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-minify/-/css-minify-2.1.0.tgz",
+ "integrity": "sha512-jIc/PIvd6nB2yOnHwg2naFNxS426cgvBvcHD62qF0s9wDwTbGkEY7CKRanZiiJBsHo0tDuA+2vZUnjVryUVDVw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^8.1.0",
+ "cssnano": "^5.0.7",
+ "postcss": "^8.3.6"
+ },
+ "bin": {
+ "css-minify": "bin/css-minify.js"
+ }
+ },
+ "node_modules/css-minify/node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/css-tree/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true,
+ "license": "MIT",
"bin": {
- "cssmin": "bin/cssmin"
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssnano": {
+ "version": "5.1.15",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz",
+ "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssnano-preset-default": "^5.2.14",
+ "lilconfig": "^2.0.3",
+ "yaml": "^1.10.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/cssnano"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/cssnano-preset-default": {
+ "version": "5.2.14",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz",
+ "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "css-declaration-sorter": "^6.3.1",
+ "cssnano-utils": "^3.1.0",
+ "postcss-calc": "^8.2.3",
+ "postcss-colormin": "^5.3.1",
+ "postcss-convert-values": "^5.1.3",
+ "postcss-discard-comments": "^5.1.2",
+ "postcss-discard-duplicates": "^5.1.0",
+ "postcss-discard-empty": "^5.1.1",
+ "postcss-discard-overridden": "^5.1.0",
+ "postcss-merge-longhand": "^5.1.7",
+ "postcss-merge-rules": "^5.1.4",
+ "postcss-minify-font-values": "^5.1.0",
+ "postcss-minify-gradients": "^5.1.1",
+ "postcss-minify-params": "^5.1.4",
+ "postcss-minify-selectors": "^5.2.1",
+ "postcss-normalize-charset": "^5.1.0",
+ "postcss-normalize-display-values": "^5.1.0",
+ "postcss-normalize-positions": "^5.1.1",
+ "postcss-normalize-repeat-style": "^5.1.1",
+ "postcss-normalize-string": "^5.1.0",
+ "postcss-normalize-timing-functions": "^5.1.0",
+ "postcss-normalize-unicode": "^5.1.1",
+ "postcss-normalize-url": "^5.1.0",
+ "postcss-normalize-whitespace": "^5.1.1",
+ "postcss-ordered-values": "^5.1.3",
+ "postcss-reduce-initial": "^5.1.2",
+ "postcss-reduce-transforms": "^5.1.0",
+ "postcss-svgo": "^5.1.0",
+ "postcss-unique-selectors": "^5.1.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/cssnano-utils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz",
+ "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/csso": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
+ "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "css-tree": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0.0"
}
},
"node_modules/d": {
@@ -3336,6 +3689,13 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
"dev": true
},
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.349",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.349.tgz",
+ "integrity": "sha512-QsWVGyRuY07Aqb234QytTfwd5d9AJlfNIQ5wIOl1L+PZDzI9d9+Fn0FRale/QYlFxt/bUnB0/nLd1jFPGxGK1A==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/elliptic": {
"version": "6.6.1",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz",
@@ -3653,10 +4013,11 @@
}
},
"node_modules/escalade": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -3881,20 +4242,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/eslint/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -3918,21 +4265,6 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
- "node_modules/eslint/node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/esm-import-transformer": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/esm-import-transformer/-/esm-import-transformer-3.0.5.tgz",
@@ -4096,6 +4428,44 @@
"safe-buffer": "^5.1.1"
}
},
+ "node_modules/execa": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz",
+ "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "figures": "^6.1.0",
+ "get-stream": "^9.0.0",
+ "human-signals": "^8.0.1",
+ "is-plain-obj": "^4.1.0",
+ "is-stream": "^4.0.1",
+ "npm-run-path": "^6.0.0",
+ "pretty-ms": "^9.2.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^4.0.0",
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": "^18.19.0 || >=20.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/execa/node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/express": {
"version": "4.22.0",
"resolved": "https://registry.npmjs.org/express/-/express-4.22.0.tgz",
@@ -4313,21 +4683,48 @@
"tough-cookie": "^4.0.0"
}
},
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
+ "node_modules/figures": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz",
+ "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
+ "license": "MIT",
"dependencies": {
- "flat-cache": "^3.0.4"
+ "is-unicode-supported": "^2.0.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/filesize": {
- "version": "10.1.6",
- "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz",
+ "node_modules/figures/node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/filesize": {
+ "version": "10.1.6",
+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz",
"integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==",
"dev": true,
"license": "BSD-3-Clause",
@@ -4660,6 +5057,22 @@
"node": ">= 0.4"
}
},
+ "node_modules/get-stream": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
+ "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sec-ant/readable-stream": "^0.4.1",
+ "is-stream": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/get-symbol-description": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
@@ -5212,6 +5625,15 @@
"integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
"dev": true
},
+ "node_modules/human-signals": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz",
+ "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
"node_modules/humble-localstorage": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/humble-localstorage/-/humble-localstorage-1.4.2.tgz",
@@ -5725,6 +6147,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-stream": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
+ "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-string": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
@@ -5817,8 +6251,7 @@
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
"node_modules/iso-639-1": {
"version": "3.1.5",
@@ -6458,6 +6891,16 @@
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
"dev": true
},
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/linkify-it": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
@@ -6577,6 +7020,13 @@
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
+ "node_modules/lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -6708,6 +7158,13 @@
"safe-buffer": "^5.1.2"
}
},
+ "node_modules/mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
"node_modules/mdurl": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
@@ -7255,6 +7712,25 @@
"node": ">= 0.6"
}
},
+ "node_modules/nanoid": {
+ "version": "3.3.12",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz",
+ "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
"node_modules/napi-macros": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz",
@@ -7340,6 +7816,13 @@
"node-gyp-build-test": "build-test.js"
}
},
+ "node_modules/node-releases": {
+ "version": "2.0.38",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz",
+ "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/node-retrieve-globals": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/node-retrieve-globals/-/node-retrieve-globals-6.0.1.tgz",
@@ -7429,6 +7912,60 @@
"node": ">=0.10.0"
}
},
+ "node_modules/normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
+ "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^4.0.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
"node_modules/nunjucks": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz",
@@ -7763,6 +8300,18 @@
"node": ">= 0.10"
}
},
+ "node_modules/parse-ms": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
+ "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/parse-srcset": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
@@ -7807,7 +8356,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -7898,6 +8446,13 @@
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
"dev": true
},
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/picomatch": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
@@ -8016,128 +8571,610 @@
"node": ">= 0.4"
}
},
- "node_modules/posthtml": {
- "version": "0.16.7",
- "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.7.tgz",
- "integrity": "sha512-7Hc+IvlQ7hlaIfQFZnxlRl0jnpWq2qwibORBhQYIb0QbNtuicc5ZxvKkVT71HJ4Py1wSZ/3VR1r8LfkCtoCzhw==",
+ "node_modules/postcss": {
+ "version": "8.5.14",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz",
+ "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==",
"dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"license": "MIT",
"dependencies": {
- "posthtml-parser": "^0.11.0",
- "posthtml-render": "^3.0.0"
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
},
"engines": {
- "node": ">=12.0.0"
+ "node": "^10 || ^12 || >=14"
}
},
- "node_modules/posthtml-match-helper": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/posthtml-match-helper/-/posthtml-match-helper-2.0.3.tgz",
- "integrity": "sha512-p9oJgTdMF2dyd7WE54QI1LvpBIkNkbSiiECKezNnDVYhGhD1AaOnAkw0Uh0y5TW+OHO8iBdSqnd8Wkpb6iUqmw==",
+ "node_modules/postcss-calc": {
+ "version": "8.2.4",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz",
+ "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=18"
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.9",
+ "postcss-value-parser": "^4.2.0"
},
"peerDependencies": {
- "posthtml": "^0.16.6"
+ "postcss": "^8.2.2"
}
},
- "node_modules/posthtml-parser": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz",
- "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==",
+ "node_modules/postcss-colormin": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz",
+ "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "htmlparser2": "^7.1.1"
+ "browserslist": "^4.21.4",
+ "caniuse-api": "^3.0.0",
+ "colord": "^2.9.1",
+ "postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": ">=12"
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
}
},
- "node_modules/posthtml-render": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz",
- "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==",
+ "node_modules/postcss-convert-values": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz",
+ "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "is-json": "^2.0.1"
+ "browserslist": "^4.21.4",
+ "postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": ">=12"
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
}
},
- "node_modules/pouchdb-abstract-mapreduce": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.1.tgz",
- "integrity": "sha512-0zKXVFBvrfc1KnN0ggrB762JDmZnUpePHywo9Bq3Jy+L1FnoG7fXM5luFfvv5/T0gEw+ZTIwoocZECMnESBI9w==",
+ "node_modules/postcss-discard-comments": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
+ "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==",
"dev": true,
- "dependencies": {
- "pouchdb-binary-utils": "7.3.1",
- "pouchdb-collate": "7.3.1",
- "pouchdb-collections": "7.3.1",
- "pouchdb-errors": "7.3.1",
- "pouchdb-fetch": "7.3.1",
- "pouchdb-mapreduce-utils": "7.3.1",
- "pouchdb-md5": "7.3.1",
- "pouchdb-utils": "7.3.1"
+ "license": "MIT",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
}
},
- "node_modules/pouchdb-all-dbs": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pouchdb-all-dbs/-/pouchdb-all-dbs-1.1.1.tgz",
- "integrity": "sha512-UUnsdmcnRSQ8MAOYSJjfTwKkQNb/6fvOfd/f7dNNivWZ2YDYVuMfgw1WQdL634yEtcXTxAENZ/EyLRdzPCB41A==",
+ "node_modules/postcss-discard-duplicates": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
+ "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==",
"dev": true,
- "dependencies": {
- "argsarray": "0.0.1",
- "es3ify": "^0.2.2",
- "inherits": "~2.0.1",
- "pouchdb-promise": "6.4.3",
- "tiny-queue": "^0.2.0"
+ "license": "MIT",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
}
},
- "node_modules/pouchdb-auth": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pouchdb-auth/-/pouchdb-auth-4.2.0.tgz",
- "integrity": "sha512-Enp9A8PvsJOdcxnHYl/RcZnOgGxI3Fbip5bZGF8pdOOKg2jJpKr6V/VRdFYGt7eWPbB4W0UZXrGxarePVjg10w==",
+ "node_modules/postcss-discard-empty": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
+ "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==",
"dev": true,
- "dependencies": {
- "base64url": "^3.0.0",
- "couchdb-calculate-session-id": "^1.1.0",
- "crypto-lite": "^0.2.0",
- "pouchdb-bulkdocs-wrapper": "4.2.0",
- "pouchdb-plugin-error": "4.2.0",
- "pouchdb-promise": "^6.4.1",
- "pouchdb-req-http-query": "4.2.0",
- "pouchdb-system-db": "4.2.0",
- "pouchdb-validation": "4.2.0",
- "pouchdb-wrappers": "4.2.0",
- "promise-nodify": "^1.0.2",
- "secure-random": "^1.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
}
},
- "node_modules/pouchdb-binary-utils": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.1.tgz",
- "integrity": "sha512-crZJNfAEOnUoRk977Qtmk4cxEv6sNKllQ6vDDKgQrQLFjMUXma35EHzNyIJr1s76J77Q4sqKQAmxz9Y40yHGtw==",
+ "node_modules/postcss-discard-overridden": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
+ "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-merge-longhand": {
+ "version": "5.1.7",
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz",
+ "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "buffer-from": "1.1.2"
+ "postcss-value-parser": "^4.2.0",
+ "stylehacks": "^5.1.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
}
},
- "node_modules/pouchdb-bulkdocs-wrapper": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pouchdb-bulkdocs-wrapper/-/pouchdb-bulkdocs-wrapper-4.2.0.tgz",
- "integrity": "sha512-9Zuzot30FoD4Cp9ZqIjb6/7+xyXTFRaXzp1wdigzecdp/D6wgWqo6rKCXKHTZYPEcGB97vMNRYqld6wbA89FCA==",
+ "node_modules/postcss-merge-rules": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz",
+ "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "pouchdb-promise": "^6.4.1"
+ "browserslist": "^4.21.4",
+ "caniuse-api": "^3.0.0",
+ "cssnano-utils": "^3.1.0",
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
}
},
- "node_modules/pouchdb-changeslike-wrapper": {
- "version": "4.2.0",
+ "node_modules/postcss-minify-font-values": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz",
+ "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-gradients": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz",
+ "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "colord": "^2.9.1",
+ "cssnano-utils": "^3.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-params": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz",
+ "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "cssnano-utils": "^3.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-minify-selectors": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz",
+ "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-charset": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
+ "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-display-values": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz",
+ "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-positions": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz",
+ "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-repeat-style": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz",
+ "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-string": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz",
+ "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-timing-functions": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz",
+ "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-unicode": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz",
+ "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-url": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz",
+ "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "normalize-url": "^6.0.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-normalize-whitespace": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz",
+ "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-ordered-values": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz",
+ "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssnano-utils": "^3.1.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-reduce-initial": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz",
+ "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "caniuse-api": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-reduce-transforms": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz",
+ "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-svgo": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
+ "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.2.0",
+ "svgo": "^2.7.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-unique-selectors": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz",
+ "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.5"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/posthtml": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.7.tgz",
+ "integrity": "sha512-7Hc+IvlQ7hlaIfQFZnxlRl0jnpWq2qwibORBhQYIb0QbNtuicc5ZxvKkVT71HJ4Py1wSZ/3VR1r8LfkCtoCzhw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "posthtml-parser": "^0.11.0",
+ "posthtml-render": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/posthtml-match-helper": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/posthtml-match-helper/-/posthtml-match-helper-2.0.3.tgz",
+ "integrity": "sha512-p9oJgTdMF2dyd7WE54QI1LvpBIkNkbSiiECKezNnDVYhGhD1AaOnAkw0Uh0y5TW+OHO8iBdSqnd8Wkpb6iUqmw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "posthtml": "^0.16.6"
+ }
+ },
+ "node_modules/posthtml-parser": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz",
+ "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "htmlparser2": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/posthtml-render": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz",
+ "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-json": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/pouchdb-abstract-mapreduce": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.1.tgz",
+ "integrity": "sha512-0zKXVFBvrfc1KnN0ggrB762JDmZnUpePHywo9Bq3Jy+L1FnoG7fXM5luFfvv5/T0gEw+ZTIwoocZECMnESBI9w==",
+ "dev": true,
+ "dependencies": {
+ "pouchdb-binary-utils": "7.3.1",
+ "pouchdb-collate": "7.3.1",
+ "pouchdb-collections": "7.3.1",
+ "pouchdb-errors": "7.3.1",
+ "pouchdb-fetch": "7.3.1",
+ "pouchdb-mapreduce-utils": "7.3.1",
+ "pouchdb-md5": "7.3.1",
+ "pouchdb-utils": "7.3.1"
+ }
+ },
+ "node_modules/pouchdb-all-dbs": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pouchdb-all-dbs/-/pouchdb-all-dbs-1.1.1.tgz",
+ "integrity": "sha512-UUnsdmcnRSQ8MAOYSJjfTwKkQNb/6fvOfd/f7dNNivWZ2YDYVuMfgw1WQdL634yEtcXTxAENZ/EyLRdzPCB41A==",
+ "dev": true,
+ "dependencies": {
+ "argsarray": "0.0.1",
+ "es3ify": "^0.2.2",
+ "inherits": "~2.0.1",
+ "pouchdb-promise": "6.4.3",
+ "tiny-queue": "^0.2.0"
+ }
+ },
+ "node_modules/pouchdb-auth": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-auth/-/pouchdb-auth-4.2.0.tgz",
+ "integrity": "sha512-Enp9A8PvsJOdcxnHYl/RcZnOgGxI3Fbip5bZGF8pdOOKg2jJpKr6V/VRdFYGt7eWPbB4W0UZXrGxarePVjg10w==",
+ "dev": true,
+ "dependencies": {
+ "base64url": "^3.0.0",
+ "couchdb-calculate-session-id": "^1.1.0",
+ "crypto-lite": "^0.2.0",
+ "pouchdb-bulkdocs-wrapper": "4.2.0",
+ "pouchdb-plugin-error": "4.2.0",
+ "pouchdb-promise": "^6.4.1",
+ "pouchdb-req-http-query": "4.2.0",
+ "pouchdb-system-db": "4.2.0",
+ "pouchdb-validation": "4.2.0",
+ "pouchdb-wrappers": "4.2.0",
+ "promise-nodify": "^1.0.2",
+ "secure-random": "^1.1.1"
+ }
+ },
+ "node_modules/pouchdb-binary-utils": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.1.tgz",
+ "integrity": "sha512-crZJNfAEOnUoRk977Qtmk4cxEv6sNKllQ6vDDKgQrQLFjMUXma35EHzNyIJr1s76J77Q4sqKQAmxz9Y40yHGtw==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "1.1.2"
+ }
+ },
+ "node_modules/pouchdb-bulkdocs-wrapper": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pouchdb-bulkdocs-wrapper/-/pouchdb-bulkdocs-wrapper-4.2.0.tgz",
+ "integrity": "sha512-9Zuzot30FoD4Cp9ZqIjb6/7+xyXTFRaXzp1wdigzecdp/D6wgWqo6rKCXKHTZYPEcGB97vMNRYqld6wbA89FCA==",
+ "dev": true,
+ "dependencies": {
+ "pouchdb-promise": "^6.4.1"
+ }
+ },
+ "node_modules/pouchdb-changeslike-wrapper": {
+ "version": "4.2.0",
"resolved": "https://registry.npmjs.org/pouchdb-changeslike-wrapper/-/pouchdb-changeslike-wrapper-4.2.0.tgz",
"integrity": "sha512-vsz3sTXH2YdWTd+dSBWEFOrdtIM07peQ9dSzROONyG7dqGlr9e2uSj+mXqTm8jBLDwUfcjZu16DTUg2AdWtWJg==",
"dev": true
@@ -8932,6 +9969,21 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/pretty-ms": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz",
+ "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==",
+ "license": "MIT",
+ "dependencies": {
+ "parse-ms": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/prismjs": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz",
@@ -9728,6 +10780,16 @@
"truncate-utf8-bytes": "^1.0.0"
}
},
+ "node_modules/sax": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz",
+ "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=11.0.0"
+ }
+ },
"node_modules/section-matter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
@@ -9977,7 +11039,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -9989,7 +11050,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -10085,6 +11145,18 @@
"integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==",
"dev": true
},
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/simple-concat": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
@@ -10134,6 +11206,16 @@
"node": ">= 8"
}
},
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/source-map-support": {
"version": "0.5.21",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
@@ -10202,6 +11284,14 @@
"node": "^16.14.0 || >=18.0.0"
}
},
+ "node_modules/stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/stacktrace-parser": {
"version": "0.1.10",
"resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
@@ -10535,6 +11625,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/strip-final-newline": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
+ "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -10547,6 +11649,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/stylehacks": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz",
+ "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.4",
+ "postcss-selector-parser": "^6.0.4"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
"node_modules/subarg": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
@@ -10580,6 +11699,38 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/svgo": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.2.tgz",
+ "integrity": "sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^7.2.0",
+ "css-select": "^4.1.3",
+ "css-tree": "^1.1.3",
+ "csso": "^4.2.0",
+ "picocolors": "^1.0.0",
+ "sax": "^1.5.0",
+ "stable": "^0.1.8"
+ },
+ "bin": {
+ "svgo": "bin/svgo"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/svgo/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
"node_modules/syntax-error": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
@@ -11147,6 +12298,18 @@
"undeclared-identifiers": "bin.js"
}
},
+ "node_modules/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/union": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz",
@@ -11176,6 +12339,37 @@
"node": ">= 0.8"
}
},
+ "node_modules/update-browserslist-db": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
"node_modules/update-notifier": {
"version": "0.1.10",
"resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.1.10.tgz",
@@ -11598,6 +12792,16 @@
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
},
+ "node_modules/yaml": {
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz",
+ "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/yargs": {
"version": "15.4.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
@@ -11683,6 +12887,18 @@
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
+ },
+ "node_modules/yoctocolors": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz",
+ "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
}
}
}
diff --git a/package.json b/package.json
index e8eed0f0a3..15ad5a4b1f 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,8 @@
"release": "./bin/release.sh",
"publish-site": "./bin/publish-site.sh",
"build-site": "node ./bin/build-site.js",
+ "build:less": "lessc docs/src/less/pouchdb/pouchdb.less docs/static/css/pouchdb.css && css-minify -f docs/static/css/pouchdb.css -o docs/static/css/",
+ "build11": "npm run build:less && eleventy",
"test-coverage": "./bin/test-coverage.sh",
"coverage": "COVERAGE=1 SERVER=pouchdb-server POUCHDB_SERVER_FLAGS=--in-memory PLUGINS=pouchdb-find ./bin/test-coverage.sh",
"build-test": "npm run build-test-utils && npm run build-perf",
@@ -36,7 +38,9 @@
"url": "https://github.com/apache/pouchdb.git"
},
"dependencies": {
+ "@neighbourhoodie/websql": "2.0.4",
"double-ended-queue": "2.1.0-0",
+ "execa": "^9.6.1",
"fetch-cookie": "2.2.0",
"level": "6.0.1",
"level-codec": "9.0.2",
@@ -51,11 +55,11 @@
"spark-md5": "3.0.2",
"through2": "3.0.2",
"uuid": "8.3.2",
- "vuvuzela": "1.0.3",
- "@neighbourhoodie/websql": "2.0.4"
+ "vuvuzela": "1.0.3"
},
"devDependencies": {
"@11ty/eleventy": "3.1.2",
+ "@11ty/eleventy-plugin-syntaxhighlight": "^5.0.2",
"add-cors-to-couchdb": "0.0.6",
"body-parser": "1.20.3",
"browserify": "16.4.0",
@@ -63,7 +67,7 @@
"builtin-modules": "3.1.0",
"chai": "3.5.0",
"chai-as-promised": "5.3.0",
- "cssmin": "0.4.3",
+ "css-minify": "^2.1.0",
"denodeify": "1.2.1",
"eslint": "8.7.0",
"express": "4.22.0",