aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoris2020-02-02 13:53:54 +0100
committerJoris2020-02-02 13:58:19 +0100
commit0ce8744897b9aa13ea568a6985da9570e4aca90b (patch)
tree3619508ff9ec5d846c567c3562d05ca77e686c76
parent13d29804ba4bb8d578fb0278ddeb6e187bbafa6f (diff)
Use zola generator
- Use CSS instead of Haskell with Clay - Use TypeScript instead of PureScript
-rw-r--r--.envrc1
-rw-r--r--.gitignore9
-rw-r--r--.gitlab-ci.yml8
-rw-r--r--.tmuxinator.yml8
-rw-r--r--Makefile38
-rw-r--r--README.md22
-rwxr-xr-xbuild2
-rw-r--r--config.toml15
-rw-r--r--content/desserts/_index.md2
-rw-r--r--content/desserts/hyperglucidique/_index.md2
-rw-r--r--content/desserts/hyperglucidique/brownie-aux-noix.md24
-rw-r--r--content/desserts/hyperglucidique/che-chuoi.md (renamed from recettes/desserts/hyperglucidique/che-chuoi.md)20
-rw-r--r--content/desserts/hyperglucidique/cheesecake.md30
-rw-r--r--content/desserts/hyperglucidique/cookies.md32
-rw-r--r--content/desserts/hyperglucidique/creme-aux-oeufs.md26
-rw-r--r--content/desserts/hyperglucidique/creme-chocolat.md21
-rw-r--r--content/desserts/hyperglucidique/crepes.md25
-rw-r--r--content/desserts/hyperglucidique/financiers-sortosville.md (renamed from recettes/desserts/hyperglucidique/financiers-sortosville.md)18
-rw-r--r--content/desserts/hyperglucidique/financiers.md (renamed from recettes/desserts/hyperglucidique/financiers.md)10
-rw-r--r--content/desserts/hyperglucidique/fondant-chocolat.md24
-rw-r--r--content/desserts/hyperglucidique/galette-des-rois.md27
-rw-r--r--content/desserts/hyperglucidique/gateau-aux-noisettes.md20
-rw-r--r--content/desserts/hyperglucidique/shortbread.md45
-rw-r--r--content/desserts/hypoglucidique/_index.md2
-rw-r--r--content/desserts/hypoglucidique/choco-cacahuete.md24
-rw-r--r--content/desserts/hypoglucidique/fudge.md (renamed from recettes/desserts/hypoglucidique/fudge.md)20
-rw-r--r--content/desserts/hypoglucidique/mousse-chocolat.md22
-rw-r--r--content/nettoyage/_index.md2
-rw-r--r--content/nettoyage/lessive-au-lierre.md23
-rw-r--r--content/nettoyage/lessive-au-savon-de-marseille.md24
-rw-r--r--content/plats/_index.md2
-rw-r--r--content/plats/galettes-2.md (renamed from recettes/desserts/hyperglucidique/galettes.md)24
-rw-r--r--content/plats/galettes.md30
-rw-r--r--content/plats/pate-brisee-farine-complete.md26
-rw-r--r--content/plats/pate-brisee.md19
-rw-r--r--content/plats/riz-vinaigre-casserole.md53
-rw-r--r--content/plats/riz-vinaigre-vita-vapeur.md32
-rw-r--r--content/plats/soupe-potimarron-butternut.md28
-rw-r--r--content/plats/tarte-oignons.md28
-rw-r--r--content/plats/tarte-viande.md (renamed from recettes/plats/tarte-viande.md)18
-rw-r--r--content/plats/tartiflette.md27
-rw-r--r--content/plats/tortillas.md19
-rw-r--r--cooking.cabal14
-rwxr-xr-xdeploy18
-rw-r--r--design/Main.hs126
-rwxr-xr-xdev33
-rw-r--r--index.html5
-rw-r--r--js/src/Dom.js12
-rw-r--r--js/src/Dom.purs88
-rw-r--r--js/src/EditableNumber.purs55
-rw-r--r--js/src/Main.purs50
-rw-r--r--js/src/Number.purs22
-rw-r--r--js/src/Parser.purs76
-rw-r--r--js/test/Main.purs61
-rw-r--r--main.ts158
-rw-r--r--nix/purescript.nix49
-rw-r--r--package-lock.json3339
-rw-r--r--package.json6
-rw-r--r--psc-package.json18
-rw-r--r--recettes/desserts/hyperglucidique/brownie-aux-noix.md24
-rw-r--r--recettes/desserts/hyperglucidique/cheesecake.md30
-rw-r--r--recettes/desserts/hyperglucidique/cookies.md32
-rw-r--r--recettes/desserts/hyperglucidique/creme-aux-oeufs.md26
-rw-r--r--recettes/desserts/hyperglucidique/creme-chocolat.md21
-rw-r--r--recettes/desserts/hyperglucidique/crepes.md25
-rw-r--r--recettes/desserts/hyperglucidique/fondant-chocolat.md24
-rw-r--r--recettes/desserts/hyperglucidique/galette-des-rois.md27
-rw-r--r--recettes/desserts/hyperglucidique/gateau-aux-noisettes.md20
-rw-r--r--recettes/desserts/hyperglucidique/shortbread.md45
-rw-r--r--recettes/desserts/hypoglucidique/choco-cacahuete.md24
-rw-r--r--recettes/desserts/hypoglucidique/mousse-chocolat.md22
-rw-r--r--recettes/nettoyage/lessive-au-lierre.md23
-rw-r--r--recettes/nettoyage/lessive-au-savon-de-marseille.md24
-rw-r--r--recettes/plats/galettes.md30
-rw-r--r--recettes/plats/pate-brisee-farine-complete.md26
-rw-r--r--recettes/plats/pate-brisee.md19
-rw-r--r--recettes/plats/riz-vinaigre-casserole.md53
-rw-r--r--recettes/plats/riz-vinaigre-vita-vapeur.md32
-rw-r--r--recettes/plats/soupe-potimarron-butternut.md28
-rw-r--r--recettes/plats/tarte-oignons.md28
-rw-r--r--recettes/plats/tartiflette.md27
-rw-r--r--recettes/plats/tortillas.md19
-rw-r--r--res.js4
-rw-r--r--seeother/index.html11
-rw-r--r--shell.nix22
-rw-r--r--src/Main.hs57
-rw-r--r--stack.yaml5
-rw-r--r--static/icon.png (renamed from images/icon.png)bin3110 -> 3110 bytes
-rw-r--r--static/main.css136
-rw-r--r--templates/index.html77
-rw-r--r--templates/page.html15
-rw-r--r--templates/recipe-list.html39
-rw-r--r--templates/recipe.html16
-rw-r--r--templates/section.html4
94 files changed, 1171 insertions, 4826 deletions
diff --git a/.envrc b/.envrc
deleted file mode 100644
index 051d09d..0000000
--- a/.envrc
+++ /dev/null
@@ -1 +0,0 @@
-eval "$(lorri direnv)"
diff --git a/.gitignore b/.gitignore
index b75aea5..859b0f4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,3 @@
-.psc-package/
-dist-newstyle/
-_cache/
-node_modules/
-output/
-public/
+static/main.js
+static/main.js.map
+public
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
deleted file mode 100644
index b5c6c9a..0000000
--- a/.gitlab-ci.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-image: alpine:latest
-pages:
- stage: deploy
- script:
- - mv seeother public
- artifacts:
- paths:
- - public
diff --git a/.tmuxinator.yml b/.tmuxinator.yml
index 4bc638d..e445c6c 100644
--- a/.tmuxinator.yml
+++ b/.tmuxinator.yml
@@ -1,8 +1,12 @@
name: cooking
-startup_window: app
+startup_window: main
windows:
- console:
- clear
- main:
- - make install watch
+ panes:
+ - zola:
+ - zola serve
+ - ts:
+ - ./dev watch-ts
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 908f5ac..0000000
--- a/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-all: build
-
-start:
- @tmuxinator local
-
-stop:
- @tmux kill-session -t cooking
-
-test:
- @pulp --psc-package test --src-path js
-
-clean:
- @rm -rf node_modules
- @rm -rf .psc-package
- @cabal new-exec cooking clean > /dev/null 2>&1 || true
- @cabal new-clean > /dev/null
-
-install:
- @npm install
- @psc-package install
-
-.PHONY: build
-build:
- @cabal new-build
- @cabal new-exec cooking build
-
-deploy:
- @make clean build
- @cabal new-exec cooking deploy
-
-watch:
- @nodemon --watch src -e hs --exec 'make watch-command --silent'
-
-watch-js:
- @pulp --psc-package --watch build --src-path js
-
-watch-command:
- @(killall cooking || :) && sleep 1 && cabal new-build && cabal new-exec cooking watch
diff --git a/README.md b/README.md
index e8247c6..8dc99d7 100644
--- a/README.md
+++ b/README.md
@@ -1,35 +1,25 @@
# Cooking
-Live [here](https://guyonvarch.gitlab.io/cooking).
-
-[![build status](https://gitlab.com/guyonvarch/cooking/badges/master/build.svg)](https://gitlab.com/guyonvarch/cooking/commits/master)
+Available at [https://cooking.guyonvarch.me](https://cooking.guyonvarch.me).
## Gettings started
-1. Install nix and follow the instructions:
-
-```bash
-curl https://nixos.org/nix/install | sh
-```
-
-2. Setup `direnv`.
-
-3. Then, start the environment with:
+Start the environment with:
```bash
-make start
+./dev start
```
-4. Later, stop the environment with:
+Later, stop the environment with:
```bash
-make stop
+./dev stop
```
## Deploy
```bash
-./make deploy
+nix-shell --run ./deploy
```
## Improvements
diff --git a/build b/build
deleted file mode 100755
index 5234b3b..0000000
--- a/build
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env bash
-nix-shell --command "make clean install build"
diff --git a/config.toml b/config.toml
new file mode 100644
index 0000000..c042417
--- /dev/null
+++ b/config.toml
@@ -0,0 +1,15 @@
+# The URL the site will be built for
+base_url = "https://cooking.guyonvarch.me"
+
+# Whether to automatically compile all Sass files in the sass directory
+compile_sass = false
+
+# Whether to do syntax highlighting
+# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
+highlight_code = false
+
+# Whether to build a search index to be used later on by a JavaScript library
+build_search_index = false
+
+[extra]
+# Put all your custom variables here
diff --git a/content/desserts/_index.md b/content/desserts/_index.md
new file mode 100644
index 0000000..ac36e06
--- /dev/null
+++ b/content/desserts/_index.md
@@ -0,0 +1,2 @@
++++
++++
diff --git a/content/desserts/hyperglucidique/_index.md b/content/desserts/hyperglucidique/_index.md
new file mode 100644
index 0000000..ac36e06
--- /dev/null
+++ b/content/desserts/hyperglucidique/_index.md
@@ -0,0 +1,2 @@
++++
++++
diff --git a/content/desserts/hyperglucidique/brownie-aux-noix.md b/content/desserts/hyperglucidique/brownie-aux-noix.md
new file mode 100644
index 0000000..4d04165
--- /dev/null
+++ b/content/desserts/hyperglucidique/brownie-aux-noix.md
@@ -0,0 +1,24 @@
++++
+title = "Brownie aux noix"
++++
+
+Ingrédients
+===========
+
+- 225 g de chocolat noir
+- 190 g de beurre
+- 100 g de sucre
+- 3 CS de farine
+- 2 grosses poignées de cerneaux de noix de pécan
+- 6 œufs
+
+Recette
+=======
+
+1. Mettre à fondre le beurre et le chocolat.
+2. Ajouter le sucre.
+3. Allumer le four à 180°C.
+4. Ajouter les œufs un à un dans la préparation en mélangeant à chaque fois.
+5. Ajouter la farine.
+6. Casser les cerneaux de noix en 2 ou 3 puis les mélanger à la pâte.
+7. Mettre au four environ 20 minutes.
diff --git a/recettes/desserts/hyperglucidique/che-chuoi.md b/content/desserts/hyperglucidique/che-chuoi.md
index 5e739e1..054f275 100644
--- a/recettes/desserts/hyperglucidique/che-chuoi.md
+++ b/content/desserts/hyperglucidique/che-chuoi.md
@@ -1,6 +1,6 @@
----
-title: Che chuôi
----
++++
+title = "Che chuôi"
++++
Ingrédients (6 personnes)
=========================
@@ -18,10 +18,10 @@ Ingrédients (6 personnes)
Recette
=======
-#. Couper les bananes en tout petits morceaux.
-#. Les faire revenir à la poêle avec du beurre jusqu’à ce qu’elles aient un peu doré.
-#. Dans une casserole moyenne, chauffer le lait de coco, l’eau, le sel et la vanille.
-#. Aux premières ébullitions, verser le sucre et bien mélanger jusqu’à ce qu’il ait fondu.
-#. Ajouter les bananes et cuire 5 min.
-#. Ajouter le tapioca et cuire 10 min. Faire attention à ce que le mélange ne colle pas dans le fond de la casserole.
-#. Laisser tiédir, puis décorer avec du sésame grillé et/ou des cacahuètes pilées.
+1. Couper les bananes en tout petits morceaux.
+2. Les faire revenir à la poêle avec du beurre jusqu’à ce qu’elles aient un peu doré.
+3. Dans une casserole moyenne, chauffer le lait de coco, l’eau, le sel et la vanille.
+4. Aux premières ébullitions, verser le sucre et bien mélanger jusqu’à ce qu’il ait fondu.
+5. Ajouter les bananes et cuire 5 min.
+6. Ajouter le tapioca et cuire 10 min. Faire attention à ce que le mélange ne colle pas dans le fond de la casserole.
+7. Laisser tiédir, puis décorer avec du sésame grillé et/ou des cacahuètes pilées.
diff --git a/content/desserts/hyperglucidique/cheesecake.md b/content/desserts/hyperglucidique/cheesecake.md
new file mode 100644
index 0000000..7025c78
--- /dev/null
+++ b/content/desserts/hyperglucidique/cheesecake.md
@@ -0,0 +1,30 @@
++++
+title = "Cheesecake"
++++
+
+# Ingrédients
+
+## Pour la préparation
+
+- 800 g de carré frais
+- 100 g de fromage blanc
+- 150 g de sucre
+- 3 œufs
+- 1 citron
+- 250 g de mascarpone
+
+## Pour le fond
+
+- 1 paquet de petit beurre mixé
+- des noix de pécan caramélisées
+
+# Recette
+
+1. Mixer les petits beurres et les placer dans un plat.
+2. Ajouter les noix de pécan caramélisées.
+3. Dans un saladier, mélanger le sucre avec les jaunes, le carré frais, la
+ mascarpone, le citron (jus et/ou zeste) et le fromage blanc.
+4. Incorporer les blancs en neige.
+5. Verser le mélange sur le fond de tarte préparé.
+6. Cuire à 180° pendant 30 à 40 minutes
+7. Laisser refoidir.
diff --git a/content/desserts/hyperglucidique/cookies.md b/content/desserts/hyperglucidique/cookies.md
new file mode 100644
index 0000000..8c79ed6
--- /dev/null
+++ b/content/desserts/hyperglucidique/cookies.md
@@ -0,0 +1,32 @@
++++
+title = "Cookies"
++++
+
+Ingrédients (45 cookies)
+========================
+
+- 250 g de beurre
+- 300 g de pépites de chocolat
+- 2 œufs
+- 350 g de farine
+- 125 g de sucre semoule
+- 125 g de sucre brun
+- 1 cuillère à café de levure en poudre
+- sel
+
+Recette
+=======
+
+1. Travailler le beurre mou avec les deux sucres jusqu'à obtention d'un mélange
+ homogène.
+2. Ajouter les œufs et mélanger bien.
+3. Joindre la farine tamisée, le sel et la levure en poudre.
+4. Mélanger à nouveau.
+5. Rajouter les pépites de chocolat et mélanger.
+6. Recouvrer le plateau du four de papier cuisson ou sulfurisé, et à l'aide de
+ 2 cuillères à café, disposer-y des petits tas de pâte de la valeur d'une
+ noix.
+7. Veiller à bien les espacer car la pâte s'étale asser fort.
+8. Enfourner et compter une dizaine de minutes de cuisson (four préchauffé à
+ 180°C).
+9. Laisser les cookies cuits sur une grille pour les laisser refroidir.
diff --git a/content/desserts/hyperglucidique/creme-aux-oeufs.md b/content/desserts/hyperglucidique/creme-aux-oeufs.md
new file mode 100644
index 0000000..a5a93a6
--- /dev/null
+++ b/content/desserts/hyperglucidique/creme-aux-oeufs.md
@@ -0,0 +1,26 @@
++++
+title = "Crème aux œufs"
++++
+
+Ingrédients
+===========
+
+- 8 œufs
+- 1 L lait
+- 80 g sucre
+- 1 sachet de sucre vanillé (ou 1 gousse de vanille)
+
+Recette
+=======
+
+1. Chauffer dans une casserole le lait et le sucre vanillé (ou la gousse).
+2. Pendant ce temps, dans un grand saladier, battre les œufs entiers, puis
+ ajouter le sucre et battre jusqu'à ce que le mélange devienne blanc et
+ mousseux.
+3. Quand le lait est chaud, le verser sur la préparation aux œufs et battre le
+ tout.
+4. Préchauffer le four à 180°C.
+5. Préparer le bain-marie : verser de l'eau chaude sur la plaque noire du four.
+6. Verser la crème aux œufs dans un moule.
+7. Cuire environ 35 min, la crème est prête une fois dorée.
+8. Laisser refroidir avant dégustation !
diff --git a/content/desserts/hyperglucidique/creme-chocolat.md b/content/desserts/hyperglucidique/creme-chocolat.md
new file mode 100644
index 0000000..15fb481
--- /dev/null
+++ b/content/desserts/hyperglucidique/creme-chocolat.md
@@ -0,0 +1,21 @@
++++
+title = "Crème au chocolat"
++++
+
+Ingrédients
+===========
+
+- 120 g de chocolat
+- 750 cl de lait
+- 65 g de sucre
+- 4 CS de Maïzena
+- 2 jaunes d’œufs
+
+Recette
+=======
+
+1. Faire fondre le chocolat dans le lait.
+2. Ajouter le sucre, attendre qu’il soit dissout.
+3. Mélanger, dans un bol, la Maïzena et les jaunes d’œufs et verser dans le
+ chocolat.
+4. Remuer sans arrêt.
diff --git a/content/desserts/hyperglucidique/crepes.md b/content/desserts/hyperglucidique/crepes.md
new file mode 100644
index 0000000..31e1199
--- /dev/null
+++ b/content/desserts/hyperglucidique/crepes.md
@@ -0,0 +1,25 @@
++++
+title = "Crêpes"
++++
+
+Ingrédients (25 crêpes)
+=======================
+
+- 500 g de farine
+- 1 sachet de levure
+- 1 pincée de sel
+- 4 ou 5 œufs
+- 1 L de lait
+- 1 petit verre d’alcool
+- 1 petit verre d’huile végétale (tournesol)
+
+Recette
+=======
+
+1. Verser la farine, la levure chimique et le sel dans un saladier.
+2. Former un puits.
+3. Ajouter les œufs en mélangeant progressivement.
+4. Ajouter le lait en mélangeant progressivement.
+5. Ajouter 1 petit verre d’alcool.
+6. Ajouter 1 petit verre d’huile végétale.
+7. Mélanger le tout.
diff --git a/recettes/desserts/hyperglucidique/financiers-sortosville.md b/content/desserts/hyperglucidique/financiers-sortosville.md
index dd8b869..35f94c0 100644
--- a/recettes/desserts/hyperglucidique/financiers-sortosville.md
+++ b/content/desserts/hyperglucidique/financiers-sortosville.md
@@ -1,6 +1,6 @@
----
-title: Financiers de Sortosville
----
++++
+title = "Financiers de Sortosville"
++++
Ingrédients (20 mini financiers)
================================
@@ -18,10 +18,10 @@ Ingrédients (20 mini financiers)
Recette
=======
-#. Faire fondre le beurre et le laisser refroidir.
-#. Dans un saladier, mélanger l’amande, le sucre, le miel, la compote, la
+1. Faire fondre le beurre et le laisser refroidir.
+2. Dans un saladier, mélanger l’amande, le sucre, le miel, la compote, la
farine l’arôme d’amande et la vanille.
-#. Monter les blancs d’œuf en neige avec une pincée de sel et les incorporer délicatement à la préparation précédente jusqu’à obtenir un mélange homogène.
-#. Ajouter le beurre fondu et mélanger.
-#. Introduire la préparation dans des moules.
-#. Cuire au four environ 15 minutes à 180°C.
+3. Monter les blancs d’œuf en neige avec une pincée de sel et les incorporer délicatement à la préparation précédente jusqu’à obtenir un mélange homogène.
+4. Ajouter le beurre fondu et mélanger.
+5. Introduire la préparation dans des moules.
+6. Cuire au four environ 15 minutes à 180°C.
diff --git a/recettes/desserts/hyperglucidique/financiers.md b/content/desserts/hyperglucidique/financiers.md
index aa2b731..060b16c 100644
--- a/recettes/desserts/hyperglucidique/financiers.md
+++ b/content/desserts/hyperglucidique/financiers.md
@@ -1,6 +1,6 @@
----
-title: Financiers
----
++++
+title = "Financiers"
++++
Ingrédients
===========
@@ -16,5 +16,5 @@ Ingrédients
Recette
=======
-#. Mélanger le tout.
-#. Cuire 10 minutes au four à 200°C.
+1. Mélanger le tout.
+2. Cuire 10 minutes au four à 200°C.
diff --git a/content/desserts/hyperglucidique/fondant-chocolat.md b/content/desserts/hyperglucidique/fondant-chocolat.md
new file mode 100644
index 0000000..b34843d
--- /dev/null
+++ b/content/desserts/hyperglucidique/fondant-chocolat.md
@@ -0,0 +1,24 @@
++++
+title = "Fondant au chocolat"
++++
+
+Ingrédients
+===========
+
+- 125 g de chocolat noir
+- 125 g de beurre
+- 125 g de sucre semoule
+- 3 œufs
+- 1 cc de Maïzena
+- sel
+
+Recette
+=======
+
+1. Mettre à fondre le chocolat avec le beurre.
+2. Mélanger les jaunes d’œufs et le sucre, puis y incorporer la Maïzena lorsque
+ le mélange devient mousseux.
+3. Mélanger les deux préparations ensemble.
+4. Battre les blancs en neige avec du sel, puis les incorporer doucement au
+ mélange.
+5. Cuire à 180°C.
diff --git a/content/desserts/hyperglucidique/galette-des-rois.md b/content/desserts/hyperglucidique/galette-des-rois.md
new file mode 100644
index 0000000..fd63c6e
--- /dev/null
+++ b/content/desserts/hyperglucidique/galette-des-rois.md
@@ -0,0 +1,27 @@
++++
+title = "Galette des rois"
++++
+
+Ingrédients
+===========
+
+- 2 pâtes feuilletées
+- 300 g de poudre d’amande
+- 150 g de sucre de canne
+- 150 g de beurre mou
+- 4 œufs
+- quelques gouttes d’amande amère
+- 1 fève
+
+Recette
+=======
+
+1. Placer une pâte feuilletée dans un moule à tarte.
+2. Piquer la pâte avec une fourchette.
+3. Dans un saladier, mélanger la poudre d’amandes, le sucre, les œufs, le
+beurre mou, et quelques gouttes d’amande amère.
+4. Verser la pâte obtenue dans le moule à tarte et y cache la fève au bord.
+5. Recouvrir avec la 2ème pâte feuilletée, en collant bien les bords et en
+enlevant la pâte en trop.
+6. Enfourner pendant 20 à 30 minutes à 200°C, vérifier régulièrement la
+cuisson.
diff --git a/content/desserts/hyperglucidique/gateau-aux-noisettes.md b/content/desserts/hyperglucidique/gateau-aux-noisettes.md
new file mode 100644
index 0000000..58d4ed1
--- /dev/null
+++ b/content/desserts/hyperglucidique/gateau-aux-noisettes.md
@@ -0,0 +1,20 @@
++++
+title = "Gâteau aux noisettes"
++++
+
+Ingrédients (8 personnes)
+=========================
+
+- 250 g de noisettes en poudre
+- 80 g de sucre en poudre
+- 5 oeufs
+
+Recette
+=======
+
+1. Séparer les blancs des jaunes d’œufs.
+2. Ajouter le sucre aux jaunes d’œufs.
+3. Battre les blancs en neige.
+4. Y incorporer doucement les noisettes et les jaunes.
+5. Verser la préparation dans un moule beurré.
+6. Cuire 20 minutes à 180°C.
diff --git a/content/desserts/hyperglucidique/shortbread.md b/content/desserts/hyperglucidique/shortbread.md
new file mode 100644
index 0000000..ccfe56d
--- /dev/null
+++ b/content/desserts/hyperglucidique/shortbread.md
@@ -0,0 +1,45 @@
++++
+title = "Shortbread"
++++
+
+Ingrédients
+===========
+
+- 175 g de farine
+- 175 g de beurre
+- 60 g de cassonade
+- 40 cl de lait concentré sucré
+- 20 cl de lait concentré non sucré
+- 150 g de chocolat noir
+- 1 CS de Maïzena
+
+Recette
+=======
+
+Biscuit
+-------
+
+1. Sortir le beurre pour le ramollir à température ambiante.
+2. Préchauffer le four à 190°C.
+3. Beurrer les parois d’un moule carré ou recouvrer-le de papier sulfurisé.
+4. Mélanger la farine, la cassonade et 125 g de beurre mou en morceaux.
+5. Étaler la pâte obtenue dans le moule.
+6. Piquer la préparation à la fourchette.
+7. Enfourner 10 minutes.
+
+Caramel
+-------
+
+1. Mettre 50 g de beurre à fondre dans une casserole.
+2. Toujours en cuisson, y ajouter les laits concentrés. et la Maïzena.
+3. Remuer jusqu’à l’obtention d’une crème épaisse à la couleur dorée.
+4. Verser le caramel crémeux sur le biscuit.
+5. Laisser refroidir.
+
+Chocolat
+--------
+
+1. Casser le chocolat en morceaux dans une casserole.
+2. Le faire fondre à feu doux avec une cuillère à soupe d’eau.
+3. Recouvrir le caramel avec le chocolat fondu.
+4. Laisser refroidir.
diff --git a/content/desserts/hypoglucidique/_index.md b/content/desserts/hypoglucidique/_index.md
new file mode 100644
index 0000000..ac36e06
--- /dev/null
+++ b/content/desserts/hypoglucidique/_index.md
@@ -0,0 +1,2 @@
++++
++++
diff --git a/content/desserts/hypoglucidique/choco-cacahuete.md b/content/desserts/hypoglucidique/choco-cacahuete.md
new file mode 100644
index 0000000..12ede4f
--- /dev/null
+++ b/content/desserts/hypoglucidique/choco-cacahuete.md
@@ -0,0 +1,24 @@
++++
+title = "Chocolat cacahuète"
++++
+
+Ingrédients
+===========
+
+- peanut butter
+- frozen mix of berries (blueberry, blackberry, strawberry etc)
+- coconut flakes
+- 99% chocolate
+- butter
+- stevia
+
+Recette
+=======
+
+In a glass:
+
+1. Add ~2tbps of peanut butter (100%, organic)
+2. Add a bit of melted butter to it, to make it more creamy
+3. Add a few tablespoons of berries and coconut flakes and stevia (you can experiment with the proportions)
+4. Crush/mix this stuff together
+5. Melt a couple of pieces of chocolate in butter, also add stevia to this and pour it over the mixture
diff --git a/recettes/desserts/hypoglucidique/fudge.md b/content/desserts/hypoglucidique/fudge.md
index 2c0bfd6..1b88b28 100644
--- a/recettes/desserts/hypoglucidique/fudge.md
+++ b/content/desserts/hypoglucidique/fudge.md
@@ -1,6 +1,6 @@
----
-title: Fudge
----
++++
+title = "Fudge"
++++
Ingrédients (24 parts)
======================
@@ -14,15 +14,15 @@ Ingrédients (24 parts)
Recette
=======
-#. Porter la crème et la vanille à ébullition dans une casserole. Dès que les
+1. Porter la crème et la vanille à ébullition dans une casserole. Dès que les
bulles apparaissent, mettre à feu doux et laisser mijoter. Remuer de temps en
temps et laisser réduire de moitié jusqu’à obtenir une pâte épaisse (environ 30
minutes).
-#. Ajouter le beurre en remuant jusqu’à l’obtention d’une pâte homogène.
-#. Arrêter le feu et ajouter le chocolat en remuant jusqu’à ce qu’il ait fondu.
+2. Ajouter le beurre en remuant jusqu’à l’obtention d’une pâte homogène.
+3. Arrêter le feu et ajouter le chocolat en remuant jusqu’à ce qu’il ait fondu.
Ajouter éventuellement un arôme.
-#. Verser dans un plat rectangulaire et laisser refroidir au réfrigérateur
+4. Verser dans un plat rectangulaire et laisser refroidir au réfrigérateur
pendant une nuit.
-#. Sortir le fudge 2 heures à température ambiante avant de le servir.
-#. Saupoudrer éventuellement le dessus de cacao.
-#. À conserver au réfrigérateur ou au congélateur.
+5. Sortir le fudge 2 heures à température ambiante avant de le servir.
+6. Saupoudrer éventuellement le dessus de cacao.
+7. À conserver au réfrigérateur ou au congélateur.
diff --git a/content/desserts/hypoglucidique/mousse-chocolat.md b/content/desserts/hypoglucidique/mousse-chocolat.md
new file mode 100644
index 0000000..c900c1c
--- /dev/null
+++ b/content/desserts/hypoglucidique/mousse-chocolat.md
@@ -0,0 +1,22 @@
++++
+title = "Mousse au chocolat"
++++
+
+Ingrédients (5 parts)
+=====================
+
+- 200 g de chocolat
+- 5 œufs
+- sel
+
+Recette
+=======
+
+1. Faire fondre le chocolat au bain-marie, sans le remuer afin d’éviter de le
+rendre granuleux, puis le laisser refroidir.
+2. Séparer les jaunes des blancs d’œufs.
+3. Monter les blancs en neige avec une pincée de sel.
+4. Incorporer les jaunes un à un au chocolat.
+5. Incorporer très délicatement les blancs en neige.
+6. Verser dans des pots.
+7. Laisser refroidir au moins 2 heures au réfrigérateur.
diff --git a/content/nettoyage/_index.md b/content/nettoyage/_index.md
new file mode 100644
index 0000000..ac36e06
--- /dev/null
+++ b/content/nettoyage/_index.md
@@ -0,0 +1,2 @@
++++
++++
diff --git a/content/nettoyage/lessive-au-lierre.md b/content/nettoyage/lessive-au-lierre.md
new file mode 100644
index 0000000..b22e8db
--- /dev/null
+++ b/content/nettoyage/lessive-au-lierre.md
@@ -0,0 +1,23 @@
++++
+title = "Ressive au lierre"
++++
+
+Ingrédients (1L de lessive)
+===========================
+
+- 100 g de feuilles de lierre
+- 1 L d’eau
+
+Recette
+=======
+
+1. Laver les feuilles à l’eau claire.
+2. Froisser les feuilles à la main.
+3. Mettre les feuilles à l’eau dans une casserole.
+4. Porter l’eau à ébullition.
+5. Laisser cuire à feux doux 15 minutes avec un couvercle.
+6. Laisser refroidir et macérer 24 heures avec un couvercle.
+7. Presser les feuilles.
+8. Verser dans une bouteille en filtrant les feuilles avec un chiffon fin.
+
+La lessive se conserve 3 semaines à l’abri de la lumière.
diff --git a/content/nettoyage/lessive-au-savon-de-marseille.md b/content/nettoyage/lessive-au-savon-de-marseille.md
new file mode 100644
index 0000000..59aa712
--- /dev/null
+++ b/content/nettoyage/lessive-au-savon-de-marseille.md
@@ -0,0 +1,24 @@
++++
+title = "Ressive au savon de Marseille"
++++
+
+Ingrédients (1L de lessive)
+===========================
+
+- 50 g de savon de Marseille (vert de préférence, avec au min. 72% d’huile végétale)
+- 1 L d’eau
+- 1 CS de bicarbonate de soude
+
+Recette
+=======
+
+1. Râper le savon de Marseille.
+2. Chauffer le savon dans l’eau.
+3. Mélanger jusqu’à la dissolution du savon.
+4. Laisser tiédir.
+5. Ajouter le bicarbonate de soude.
+6. Laisser refroidir.
+7. Mixer pour éviter que la lessive ne devienne compact.
+8. Verser dans un contenant.
+
+La lessive se met directement dans le tambour.
diff --git a/content/plats/_index.md b/content/plats/_index.md
new file mode 100644
index 0000000..ac36e06
--- /dev/null
+++ b/content/plats/_index.md
@@ -0,0 +1,2 @@
++++
++++
diff --git a/recettes/desserts/hyperglucidique/galettes.md b/content/plats/galettes-2.md
index f7bd235..0e07941 100644
--- a/recettes/desserts/hyperglucidique/galettes.md
+++ b/content/plats/galettes-2.md
@@ -1,6 +1,6 @@
----
-title: Galettes
----
++++
+title = "Galettes (2)"
++++
Ingrédients
===========
@@ -27,16 +27,16 @@ Recette
1ère partie
-----------
-#. Mélanger la farine de sarrasin, la farine de froment et le sel.
-#. Ajouter l’eau.
-#. Battre plusieurs minutes avec une cuillère ou spatule en bois.
-#. Couvrir d’un tochon propre.
-#. Laisser reposer quelques heures, dans une pièce tempérée ou au réfrigérateur.
+1. Mélanger la farine de sarrasin, la farine de froment et le sel.
+2. Ajouter l’eau.
+3. Battre plusieurs minutes avec une cuillère ou spatule en bois.
+4. Couvrir d’un tochon propre.
+5. Laisser reposer quelques heures, dans une pièce tempérée ou au réfrigérateur.
2ème partie
-----------
-#. Ajouter le miel et l’œuf.
-#. Battre.
-#. Ajouter le lait et l’eau.
-#. Mélanger.
+1. Ajouter le miel et l’œuf.
+2. Battre.
+3. Ajouter le lait et l’eau.
+4. Mélanger.
diff --git a/content/plats/galettes.md b/content/plats/galettes.md
new file mode 100644
index 0000000..b00051f
--- /dev/null
+++ b/content/plats/galettes.md
@@ -0,0 +1,30 @@
++++
+title = "Galettes (1)"
++++
+
+Ingrédients
+===========
+
+- 200 g de sarrasin
+- 1 L d’eau
+- 120 g de farine de froment T55
+- 120 g de farine de seigle T130
+- 60 g de farine aux 5 céréales
+- 1 grand verre de lait entier
+- 2 cc rases de sel
+- 70 g de beurre
+- 2 œufs
+- 1 CS rase de miel
+
+Recette
+=======
+
+1. Mélanger les farines.
+2. Former un puit et y casser les œufs.
+3. Mélanger avec une cuillère en bois ou un fouet.
+4. Faire fondre le beurre à la casserole.
+5. Ajouter dans la casserole : le lait, le sel et le miel.
+6. Verser progressivement dans le puits en remuant.
+7. Verser l’eau en remuant.
+8. Laisser reposer 4 ou 5 heures.
+9. Beurrer la poêle pour chaque galette.
diff --git a/content/plats/pate-brisee-farine-complete.md b/content/plats/pate-brisee-farine-complete.md
new file mode 100644
index 0000000..66bde10
--- /dev/null
+++ b/content/plats/pate-brisee-farine-complete.md
@@ -0,0 +1,26 @@
++++
+title = "Pâte brisée à la farine complète"
++++
+
+Ingrédients (1 pâte)
+====================
+
+- 125 g de farine T80
+- 30 ml d’huile supportant la cuisson (olive)
+- 60 ml d’eau froide
+- 0.5 cc de sel fin
+- des herbes séchées (romarin, thym)
+
+Recette
+=======
+
+Travailler le moins possible la pâte pour éviter qu’elle ne durcisse à la cuisson.
+
+1. Mélanger la farine, le sel et les herbes dans un saladier.
+2. Ajouter l’huile et l’eau et mélanger à la fourchette.
+3. Former une boule.
+4. Étaler la pâte avec quelques gestes rapides.
+5. Tapisser un moule.
+6. Laisser reposer 30 minutes au frais.
+7. Piquer la pâte à la fourchette.
+8. Chauffer 15 minutes à blanc à 175°c jusqu’à ce que la pâte soit dorée.
diff --git a/content/plats/pate-brisee.md b/content/plats/pate-brisee.md
new file mode 100644
index 0000000..395feab
--- /dev/null
+++ b/content/plats/pate-brisee.md
@@ -0,0 +1,19 @@
++++
+title = "Pâte brisée"
++++
+
+Ingrédients (1 pâte)
+====================
+
+- 200 g de farine
+- 100 g de beurre
+- 0.5 cc de sel
+- 50 mL d’eau
+
+Recette
+=======
+
+1. Sortir le beurre du réfrigérateur pour qu’il soit mou.
+2. Mélanger la farine et le sel dans un plat.
+3. Ajouter le beurre et mélanger avec les doigts.
+4. Ajouter l’eau.
diff --git a/content/plats/riz-vinaigre-casserole.md b/content/plats/riz-vinaigre-casserole.md
new file mode 100644
index 0000000..67f66ac
--- /dev/null
+++ b/content/plats/riz-vinaigre-casserole.md
@@ -0,0 +1,53 @@
++++
+title = "Riz vinaigré à la casserole"
++++
+
+Ingrédients (8 feuilles)
+========================
+
+- 400 g de riz rond
+- 400 mL d’eau
+- 50 mL de vinaigre de riz
+- 0,5 cc de sel
+- 2 CS de sucre
+
+Recette
+=======
+
+Préparation du riz
+------------------
+
+1. Verser dans un saladier :
+ 1. un peu de sel ;
+ 2. le riz ;
+ 3. de l’eau jusqu’au dessus du niveau du riz.
+2. Remuer le riz en le soulevant.
+3. Tant que l’eau se trouble, changer l’eau et remuer à nouveau.
+4. Égoutter le riz.
+
+Chauffe du riz
+--------------
+
+1. Verser dans une casserole :
+ 1. de l’eau ;
+ 2. la préparation de riz.
+2. Poser un couvercle sur la casserole et le garder durant tout le temps de
+ chauffe.
+3. Porter l’eau à ébullition.
+4. Chauffer :
+ 1. 2 minutes à feu fort ;
+ 1. puis 10 minutes à feu doux.
+5. Sortir la casserole du feu et attendre 10 minutes.
+
+Mélange final
+-------------
+
+1. Verser le riz dans un saladier.
+2. Désolidariser le riz.
+3. Laisser refroidir le riz.
+4. Verser dans une casserole le vinaigre de riz, le sucre et le sel.
+5. Poser la casserole sur le feu.
+6. Mélanger jusqu’à ce que les grains disparaissent.
+7. Retirer la casserole du feu à la première trace d’ébullition.
+8. Verser le mélange sur le riz.
+9. Mélanger le tout.
diff --git a/content/plats/riz-vinaigre-vita-vapeur.md b/content/plats/riz-vinaigre-vita-vapeur.md
new file mode 100644
index 0000000..a13435c
--- /dev/null
+++ b/content/plats/riz-vinaigre-vita-vapeur.md
@@ -0,0 +1,32 @@
++++
+title = "Riz vinaigré à la vapeur"
++++
+
+Ingrédients (2 chirachis)
+=========================
+
+- 300 g de riz rond
+- 40 ml de vinaigre de riz
+- 0,5 cc de sel
+- 1,5 CS de sucre
+
+Recette
+=======
+
+### Préparation du riz
+
+1. Laver le riz.
+2. Mettre le riz dans un récipient avec un peu de sel.
+3. Recouvrir le riz d'eau chaude 1 cm au dessus du niveau du riz.
+4. Chauffer 35 minutes.
+
+### Préparation du vinaigre
+
+1. Verser dans une casserole le vinaigre de riz, le sel et le sucre.
+2. Poser la casserole sur le feu.
+3. Mélanger jusqu’à ce que les grains disparaissent.
+4. Retirer la casserole du feu à la première trace d’ébullition.
+
+### Mélange final
+
+1. Mélanger le tout.
diff --git a/content/plats/soupe-potimarron-butternut.md b/content/plats/soupe-potimarron-butternut.md
new file mode 100644
index 0000000..9de0b88
--- /dev/null
+++ b/content/plats/soupe-potimarron-butternut.md
@@ -0,0 +1,28 @@
++++
+title = "Soupe de potimarron et de butternut"
++++
+
+Ingrédients
+===========
+
+- 2 petits potimarrons
+- 1 petit butternut
+- 1,5 cubes de poule bio
+- 2 oignons jaunes
+- 1 gousse d’ail
+- Des épices
+
+Recette
+=======
+
+1. Cuire le butternut au four.
+2. Dorer les oignons dans une poêle avec de l’huile.
+3. Ajouter le bouillon de poule délayé dans un peu d’eau chaude.
+4. Eplucher et couper les deux potimarrons en cubes. Ajouter par-dessus les
+oignons, mélanger, couvrir et cuire quelques minutes.
+5. Ajouter l’ail, une petite CS d’épices.
+6. Couvrir d’eau, et cuire jusqu’à cuisson du potimarron.
+7. Ajouter le butternut, mixer et goûter. Ajouter les épices si nécessaire,
+petit à petit. Servir.
+8. Selon les goûts : ajouter du beurre, de la crème, des allumettes de bacon ou
+du fromage en dés ou râpé.
diff --git a/content/plats/tarte-oignons.md b/content/plats/tarte-oignons.md
new file mode 100644
index 0000000..34b19b9
--- /dev/null
+++ b/content/plats/tarte-oignons.md
@@ -0,0 +1,28 @@
++++
+title = "Tarte aux oignons"
++++
+
+Ingrédients (6 parts)
+=====================
+
+- 1 pâte brisée
+- 500 g d’oignons
+- 3 œufs
+- 25 cl de crème fraîche
+- sel
+- poivre
+- muscade
+- moutarde
+- fromage
+
+Recette
+=======
+
+1. Étaler la pâte dans un moule à tarte, la piquer et appliquer la moutarde dans le fond.
+2. Dorer les oignons à la poêle, y ajouter du sel, du poivre et de la muscade.
+3. Couper le feu et ajouter la crème fraîche.
+4. Battre les œufs en mélangeant les jaunes et les blancs.
+5. Verser les oignons avec les œufs battus.
+6. Verser le mélange dans le moule.
+7. Gratiner le dessus avec du fromage.
+8. Cuire 35 minutes à 200°C.
diff --git a/recettes/plats/tarte-viande.md b/content/plats/tarte-viande.md
index 46542de..413053b 100644
--- a/recettes/plats/tarte-viande.md
+++ b/content/plats/tarte-viande.md
@@ -1,6 +1,6 @@
----
-title: Tarte à la viande
----
++++
+title = "Tarte à la viande"
++++
Ingrédients (6 parts)
=====================
@@ -39,16 +39,16 @@ Gratin
Recette
=======
-#. Préchauffer le four à 175°C.
-#. Cuire les oignons et l’ail dans du beurre ou de l’huile d’olive à feu moyen
+1. Préchauffer le four à 175°C.
+2. Cuire les oignons et l’ail dans du beurre ou de l’huile d’olive à feu moyen
pendant quelques minutes, jusqu’à ce que l’oignon soit doré. Ajouter la viande
hachée et laisser cuire. Ajouter de l’origan ou du basilic. Saler et poivrer.
-#. Ajouter le concentré de tomate ou le pesto, puis ajouter l’eau. Laisser
+2. Ajouter le concentré de tomate ou le pesto, puis ajouter l’eau. Laisser
mijoter pendant au moins 20 minutes à feu doux.
-#. Mélanger tous les ingrédients pour la pâte, avec un mixer ou à la main avec
+3. Mélanger tous les ingrédients pour la pâte, avec un mixer ou à la main avec
une fourchette, jusqu’à obtenir une boule. Placer du papier cuisson dans un
plat, puis y étaler la pâte.
-#. Précuire la pâte pendant 10 à 15 minutes. Ajouter ensuite la garniture et
+4. Précuire la pâte pendant 10 à 15 minutes. Ajouter ensuite la garniture et
le gratin par dessus.
-#. Cuire 30 à 40 minutes sur la grille du dessous jusqu’à ce que la tarte soit
+5. Cuire 30 à 40 minutes sur la grille du dessous jusqu’à ce que la tarte soit
dorée.
diff --git a/content/plats/tartiflette.md b/content/plats/tartiflette.md
new file mode 100644
index 0000000..dfbb0b7
--- /dev/null
+++ b/content/plats/tartiflette.md
@@ -0,0 +1,27 @@
++++
+title = "Tartiflette"
++++
+
+# Ingrédients (4 personnes)
+
+- 12 pommes de terre moyennes
+- 400 g de tofu
+- 25 cl de crème fraîche
+- 1 cube de bouillon de légumes
+- 1 oignon
+- 10 cl de vin blanc
+- 1 reblochon
+- sauce soja
+
+# Recette
+
+1. Couper les pommes de terre en cubes et les cuire.
+2. Mettre le cube de bouillon à fondre dans un verre d’eau bouillante.
+3. Émincer très finement les oignons.
+4. Couper le tofu en petits cubes.
+5. Faire revenir les oignons et le tofu avec la sauce soja jusqu’à ce que les oignons soient fondants.
+6. Déglacer avec le vin blanc et laisser réduire.
+7. Ajouter la crème et attendre l’ébulition.
+8. Ajouter le verre de bouillon puis laisser mijoter à feu très doux.
+9. Mettre les pommes de terre dans un plat, ajouter la sauce puis une couche de tranches de reblochon.
+10. Cuire 20 min au four à 200°C.
diff --git a/content/plats/tortillas.md b/content/plats/tortillas.md
new file mode 100644
index 0000000..358965f
--- /dev/null
+++ b/content/plats/tortillas.md
@@ -0,0 +1,19 @@
++++
+title = "Tortillas"
++++
+
+# Ingrédients (2 personnes)
+
+- 250 g de farine de blé
+- 5 cl d’huile de tournesol
+- 13 cl d’eau tiède salée (dépend de la farine)
+- 1 cuillère à café rase de sel
+
+# Recette
+
+1. Mélanger la farine, le sel et l’huile.
+2. Ajouter l’eau tiède salée jusqu’à former une boule lisse mais non collante.
+3. Entourer la pâte dans torchon propre et laisser reposer 1 heure.
+4. Découper la boule en 3 fois le nombre de personnes.
+5. Étaler chaque boule pour obtenir un crêpe épaisse d’1 diamètre de 20 cm environ.
+6. Cuire les tortillas à la poêle sans matières grasses, ne pas les laisser dorer.
diff --git a/cooking.cabal b/cooking.cabal
deleted file mode 100644
index dade873..0000000
--- a/cooking.cabal
+++ /dev/null
@@ -1,14 +0,0 @@
-name: cooking
-version: 0.1.0.0
-build-type: Simple
-cabal-version: >= 1.10
-
-executable cooking
- main-is: Main.hs
- hs-source-dirs: src
- ghc-options: -threaded
- default-language: Haskell2010
- build-depends: base >= 4.12
- , hakyll == 4.*
- , clay
- , process
diff --git a/deploy b/deploy
new file mode 100755
index 0000000..43c3adf
--- /dev/null
+++ b/deploy
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+set -e
+
+# Cleanup
+rm -rf public
+rm -f static/main.js
+rm -f static/main.js.map
+
+# Build JavaScript
+tsc --pretty --removeComments --strict --noUnusedLocals --noUnusedParameters --noImplicitReturns main.ts --outFile main-big.js
+closure-compiler main-big.js --js_output_file static/main.js
+rm main-big.js
+
+# Build site
+zola build
+
+# Transfer
+rsync -avzh public/ guyonvarch.me:/var/www/cooking.guyonvarch.me --delete
diff --git a/design/Main.hs b/design/Main.hs
deleted file mode 100644
index b057cb4..0000000
--- a/design/Main.hs
+++ /dev/null
@@ -1,126 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-import Clay
-import qualified Clay.Media as Media
-import Data.Monoid ((<>))
-
-color1 = rgb 113 68 30
-color2 = rgb 13 13 81
-color3 = rgb 230 230 230
-
-main :: IO ()
-main = putCss $ do
-
- appearKeyframes
-
- body ? do
- maxWidth responsiveLimit
- sym2 margin (px 0) auto
- mobile $ fontSize (px 14)
- desktop $ fontSize (px 18)
-
- ".header" ? do
- display block
- sym2 padding (px 15) (px 0)
- sym2 margin (px 0) auto
- backgroundColor color1
- color white
- fontWeight bold
- textAlign center
- hover & textDecoration none
- desktop $ do
- fontSize (px 32)
- marginBottom (px 30)
- borderRadius (px 0) (px 0) (px 5) (px 5)
- mobile $ do
- fontSize (px 22)
- marginBottom (px 20)
-
- a ? do
- textDecoration none
- color color2
- hover & textDecoration underline
-
- "#content" ? do
-
- animationName "appear"
- animationDuration (sec 0.2)
- animationTimingFunction easeIn
- animationIterationCount (iterationCount 1.0)
-
- mobile $ sym2 margin (px 0) (px 20)
-
- (h1 <> h2) ? color color1
-
- h1 ? do
- desktop $ fontSize (px 28)
- mobile $ fontSize (px 22)
-
- h2 ? do
- desktop $ fontSize (px 22)
- mobile $ fontSize (px 18)
-
- ".number" ? do
- fontSize inherit
- backgroundColor color3
- sym borderRadius (px 5)
- sym padding (px 2)
- borderStyle none
- textAlign (alignSide sideCenter)
- desktop $ width (px 70)
- mobile $ width (px 50)
-
- (ul <> ol) ? do
- listStyleType none
- desktop $ paddingLeft (px 15)
- mobile $ paddingLeft (px 0)
-
- li ? do
- marginBottom (em 0.8)
- lineHeight (em 1.6)
-
- (ol <> ul) |> li |> (ol <> ul) ? do
- marginTop (em 0.5)
- marginLeft (px 30)
-
- ol ? do
- "counter-reset" -: "ol"
-
- li ? do
- desktop $ paddingLeft (px 40)
- mobile $ paddingLeft (px 30)
- position relative
- textAlign justify
- before & do
- display inline
- position absolute
- top (px 0)
- left (px 0)
- "counter-increment" -: "ol"
- "content" -: "counter(ol)"
- marginRight (px 10)
- backgroundColor color1
- color white
- sym borderRadius (pct 50)
- fontWeight bold
- width (em 1.6)
- textAlign (alignSide sideCenter)
-
-mobile :: Css -> Css
-mobile = query Media.screen [ Media.maxWidth responsiveLimit ]
-
-desktop :: Css -> Css
-desktop = query Media.screen [ Media.minWidth responsiveLimit ]
-
-responsiveLimit :: Size LengthUnit
-responsiveLimit = px 800
-
-appearKeyframes :: Css
-appearKeyframes = keyframes
- "appear"
- [ (0, do
- "transform" -: "translateX(20px)"
- opacity 0
- )
- , (100, "transform" -: "translateX(0px)")
- ]
diff --git a/dev b/dev
new file mode 100755
index 0000000..b7eddfe
--- /dev/null
+++ b/dev
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+cd "$(dirname $0)"
+CMD="$1"
+PROJECT="cooking"
+
+if [ "$CMD" = "start" ]; then
+
+ nix-shell --run "tmuxinator local"
+
+elif [ "$CMD" = "stop" ]; then
+
+ nix-shell --run "tmux kill-session -t $PROJECT"
+
+elif [ "$CMD" = "watch-ts" ]; then
+
+ tsc \
+ --watch \
+ --pretty \
+ --sourceMap \
+ --removeComments \
+ --strict \
+ --noUnusedLocals \
+ --noUnusedParameters \
+ --noImplicitReturns \
+ --outDir static \
+ main.ts
+
+else
+
+ echo "Usage: $0 start|stop|watch-ts"
+ exit 1
+
+fi
diff --git a/index.html b/index.html
deleted file mode 100644
index f8bc60b..0000000
--- a/index.html
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Recettes
----
-
-$partial("templates/recipe-list.html")$
diff --git a/js/src/Dom.js b/js/src/Dom.js
deleted file mode 100644
index 6835c1f..0000000
--- a/js/src/Dom.js
+++ /dev/null
@@ -1,12 +0,0 @@
-"use strict";
-
-exports.onInput = function (elt) {
- return function (f) {
- return function () {
- elt.oninput = function(e) {
- f(e.target.value)()
- }
- return {};
- };
- };
-};
diff --git a/js/src/Dom.purs b/js/src/Dom.purs
deleted file mode 100644
index 4176153..0000000
--- a/js/src/Dom.purs
+++ /dev/null
@@ -1,88 +0,0 @@
-module Dom
- ( onInput
- , selectElement
- , selectElements
- , selectElementFrom
- , selectElementsFrom
- , replaceElement
- , appendNodes
- , setValue
- ) where
-
-import Data.Array (range, catMaybes) as Array
-import Data.Maybe (Maybe(Nothing, Just))
-import Data.Traversable (sequence) as Traversable
-import Effect (Effect)
-import Prelude
-
-import Web.DOM.Element (toParentNode, fromNode) as Element
-import Web.DOM.Internal.Types (Element, Node, NodeList)
-import Web.DOM.Node (replaceChild, parentNode, appendChild) as Node
-import Web.DOM.NodeList (length, item) as NodeList
-import Web.DOM.ParentNode (QuerySelector)
-import Web.DOM.ParentNode (querySelector, querySelectorAll) as DOM
-import Web.HTML (window) as HTML
-import Web.HTML.HTMLDocument as HTMLDocument
-import Web.HTML.HTMLInputElement (setValue, fromElement) as HTMLInputElement
-import Web.HTML.Window (document) as Window
-
-foreign import onInput :: Element -> (String -> Effect Unit) -> Effect Unit
-
-selectElement :: QuerySelector -> Effect (Maybe Element)
-selectElement query = do
- document <- HTML.window >>= Window.document
- DOM.querySelector query (HTMLDocument.toParentNode document)
-
-selectElements :: QuerySelector -> Effect (Array Element)
-selectElements query = do
- document <- HTML.window >>= Window.document
- nodeList <- DOM.querySelectorAll query (HTMLDocument.toParentNode document)
- getNodes nodeList
-
-selectElementFrom :: Element -> QuerySelector -> Effect (Maybe Element)
-selectElementFrom elem query =
- DOM.querySelector query (Element.toParentNode elem)
-
-selectElementsFrom :: Element -> QuerySelector -> Effect (Array Element)
-selectElementsFrom elem query = do
- nodeList <- DOM.querySelectorAll query (Element.toParentNode elem)
- getNodes nodeList
-
-getNodes :: NodeList -> Effect (Array Element)
-getNodes nodeList = do
- length <- NodeList.length nodeList
- Array.range 0 length
- # (map (\i -> (concatMaybe <<< map Element.fromNode) <$> NodeList.item i nodeList))
- # Traversable.sequence
- # map Array.catMaybes
-
-concatMaybe :: forall a. Maybe (Maybe a) -> Maybe a
-concatMaybe mma =
- case mma of
- Just x -> x
- Nothing -> Nothing
-
-replaceElement :: Node -> Node -> Effect Unit
-replaceElement before after = do
- parent <- Node.parentNode before
- case parent of
- Just n -> do
- _ <- Node.replaceChild after before n
- pure unit
- Nothing ->
- pure unit
-
-appendNodes :: Node -> Array Node -> Effect Unit
-appendNodes parent nodes =
- nodes
- # map (\n -> Node.appendChild n parent)
- # Traversable.sequence
- # map (const unit)
-
-setValue :: String -> Element -> Effect Unit
-setValue value elem =
- case HTMLInputElement.fromElement elem of
- Just inputElem -> do
- HTMLInputElement.setValue value inputElem
- _ ->
- pure unit
diff --git a/js/src/EditableNumber.purs b/js/src/EditableNumber.purs
deleted file mode 100644
index 02ffe58..0000000
--- a/js/src/EditableNumber.purs
+++ /dev/null
@@ -1,55 +0,0 @@
-module EditableNumber
- ( NumberElem
- , set
- ) where
-
-import Data.Maybe (Maybe(..))
-import Effect (Effect)
-import Prelude
-import Web.DOM.Document (createElement, createTextNode) as Document
-import Web.DOM.Element (setClassName, setAttribute, toNode) as Element
-import Web.DOM.Internal.Types (Element, Node)
-import Web.DOM.Node (textContent) as Node
-import Web.DOM.Text (toNode) as Text
-import Web.HTML (window) as HTML
-import Web.HTML.HTMLDocument (toDocument) as HTMLDocument
-import Web.HTML.Window (document) as Window
-
-import Dom (replaceElement, appendNodes) as Dom
-import Number (format) as Number
-import Parser (TextWithNumber)
-import Parser (textWithNumber) as Parser
-
-type NumberElem =
- { elem :: Element
- , number :: Number
- }
-
-set :: { tag :: String, node :: Node } -> Effect (Maybe NumberElem)
-set { tag, node } = do
- content <- Node.textContent node
- case Parser.textWithNumber content of
- Just twn -> do
- textWithNumber <- textWithNumberElem tag twn
- Dom.replaceElement node (Element.toNode textWithNumber)
- pure (Just { elem: textWithNumber, number: twn.number })
- Nothing ->
- pure Nothing
-
-textWithNumberElem :: String -> TextWithNumber -> Effect Element
-textWithNumberElem tag { begin, number, end } = do
- document <- HTMLDocument.toDocument <$> (HTML.window >>= Window.document)
- elem <- Document.createElement tag document
- beginNode <- Text.toNode <$> Document.createTextNode begin document
- numberNode <- numberElem number
- endNode <- Text.toNode <$> Document.createTextNode end document
- Dom.appendNodes (Element.toNode elem) [ beginNode, Element.toNode numberNode, endNode ]
- pure elem
-
-numberElem :: Number -> Effect Element
-numberElem number = do
- document <- HTMLDocument.toDocument <$> (HTML.window >>= Window.document)
- container <- Document.createElement "input" document
- Element.setClassName "number" container
- Element.setAttribute "value" (Number.format number) container
- pure container
diff --git a/js/src/Main.purs b/js/src/Main.purs
deleted file mode 100644
index 0ff5fd7..0000000
--- a/js/src/Main.purs
+++ /dev/null
@@ -1,50 +0,0 @@
-module Main (main) where
-
-import Data.Array (catMaybes) as Array
-import Data.Maybe (Maybe(..))
-import Data.Traversable (sequence, sequence_) as Traversable
-import Effect (Effect)
-import Prelude
-import Web.DOM.Element (toNode) as Element
-import Web.DOM.Internal.Types (Node)
-import Web.DOM.ParentNode (QuerySelector(..))
-
-import Dom (selectElement, selectElements, onInput, setValue, selectElementFrom) as Dom
-import EditableNumber (NumberElem)
-import EditableNumber (set) as EditableNumber
-import Number (format) as Number
-import Parser (number) as Parser
-
-main :: Effect Unit
-main = do
- tagElems <- getNumberElements
- numberElems <- Array.catMaybes <$> (Traversable.sequence $ map EditableNumber.set tagElems)
- Traversable.sequence_ $ map (onInput numberElems) numberElems
-
-getNumberElements :: Effect (Array { tag :: String, node :: Node })
-getNumberElements = do
- let fromElem tag elem = { tag: tag, node: Element.toNode elem }
- h1 <- map (fromElem "h1") <$> Dom.selectElement (QuerySelector "h1")
- lis <- map (fromElem "li") <$> Dom.selectElements (QuerySelector "ul > li")
- pure $ (maybeToArray h1 <> lis)
-
-onInput :: Array NumberElem -> NumberElem -> Effect Unit
-onInput numberElems { elem, number } = do
- Dom.onInput elem (\value -> do
- case Parser.number value of
- Just newNumber ->
- numberElems
- # map (\ne -> do
- inputNode <- Dom.selectElementFrom ne.elem (QuerySelector "input")
- case inputNode of
- Just node -> Dom.setValue (Number.format (ne.number / number * newNumber)) node
- _ -> pure unit
- )
- # Traversable.sequence_
- _ ->
- pure unit
- )
-
-maybeToArray :: forall a. Maybe a -> Array a
-maybeToArray (Just x) = [ x ]
-maybeToArray _ = []
diff --git a/js/src/Number.purs b/js/src/Number.purs
deleted file mode 100644
index 0403f19..0000000
--- a/js/src/Number.purs
+++ /dev/null
@@ -1,22 +0,0 @@
-module Number
- ( format
- , roundAt
- ) where
-
-import Data.Int (round, toNumber, pow) as Int
-import Data.String (Pattern(..), Replacement(..))
-import Data.String (replace) as String
-import Math (round) as Math
-import Prelude
-
-format :: Number -> String
-format number =
- if Math.round number == number then
- show (Int.round number)
- else
- String.replace (Pattern ".") (Replacement ",") (show (roundAt 1 number))
-
-roundAt :: Int -> Number -> Number
-roundAt at n =
- let exp = Int.toNumber (Int.pow 10 at)
- in Math.round (n * exp) / exp
diff --git a/js/src/Parser.purs b/js/src/Parser.purs
deleted file mode 100644
index b378e96..0000000
--- a/js/src/Parser.purs
+++ /dev/null
@@ -1,76 +0,0 @@
-module Parser
- ( TextWithNumber
- , textWithNumber
- , number
- ) where
-
-import Control.Alt ((<|>))
-import Data.Array as Array
-import Data.Char as Char
-import Data.Either (Either(Right))
-import Data.Int as Int
-import Data.Maybe (fromMaybe) as Maybe
-import Data.Maybe (Maybe(Just, Nothing))
-import Data.String.CodeUnits as String
-import Prelude
-import Text.Parsing.Parser (Parser)
-import Text.Parsing.Parser (runParser) as Parser
-import Text.Parsing.Parser.Combinators (optionMaybe) as Parser
-import Text.Parsing.Parser.String (satisfy, anyChar, string, eof) as Parser
-
-type TextWithNumber =
- { begin :: String
- , number :: Number
- , end :: String
- }
-
-textWithNumber :: String -> Maybe TextWithNumber
-textWithNumber input =
- case Parser.runParser input textWithNumberParser of
- Right x -> Just x
- _ -> Nothing
-
-number :: String -> Maybe Number
-number input =
- case Parser.runParser input (numberParser <* Parser.eof) of
- Right x -> Just x
- _ -> Nothing
-
-textWithNumberParser :: Parser String TextWithNumber
-textWithNumberParser = do
- begin <- String.fromCharArray <$> Array.many notDigit
- num <- numberParser
- end <- String.fromCharArray <$> Array.many Parser.anyChar
- pure { begin: begin, number: num, end: end }
-
-notDigit :: Parser String Char
-notDigit = Parser.satisfy (not <<< isDigit)
-
-numberParser :: Parser String Number
-numberParser = do
- whole <- numberFromIntArray <$> Array.some digit
- decimal <- Parser.optionMaybe $ do
- _ <- Parser.string "," <|> Parser.string "."
- digits <- Array.some digit
- let decimals = numberFromIntArray digits
- pure $ Int.toNumber decimals / Int.toNumber (Int.pow 10 (Array.length digits))
- pure (Int.toNumber whole + Maybe.fromMaybe 0.0 decimal)
-
-numberFromIntArray :: Array Int -> Int
-numberFromIntArray xs =
- Array.range 0 (Array.length xs - 1)
- # map (Int.pow 10)
- # Array.reverse
- # Array.zipWith (*) xs
- # Array.foldl (+) 0
-
-digit :: Parser String Int
-digit = map (\c -> Char.toCharCode c - zeroCode) $ Parser.satisfy isDigit
-
-isDigit :: Char -> Boolean
-isDigit char =
- let code = Char.toCharCode char
- in code >= zeroCode && code <= zeroCode + 9
-
-zeroCode :: Int
-zeroCode = 48
diff --git a/js/test/Main.purs b/js/test/Main.purs
deleted file mode 100644
index 3a4f03c..0000000
--- a/js/test/Main.purs
+++ /dev/null
@@ -1,61 +0,0 @@
-module Test.Main
- ( main
- ) where
-
-import Data.Maybe (Maybe(Just, Nothing))
-import Effect (Effect)
-import Prelude
-import Test.Spec (describe, it)
-import Test.Spec.Assertions (shouldEqual)
-import Test.Spec.Reporter.Console (consoleReporter)
-import Test.Spec.Runner (run)
-
-import Number (roundAt, format) as Number
-import Parser (TextWithNumber)
-import Parser (textWithNumber, number) as Parser
-
-main :: Effect Unit
-main = run [consoleReporter] do
-
- describe "Number" do
- it "rounds numbers" $ do
- (Number.roundAt 0 0.0) `shouldEqual` (0.0)
- (Number.roundAt 5 0.0) `shouldEqual` (0.0)
- (Number.roundAt 0 12.3456) `shouldEqual` (12.0)
- (Number.roundAt 1 12.3456) `shouldEqual` (12.3)
- (Number.roundAt 2 12.3456) `shouldEqual` (12.35)
- (Number.roundAt 3 12.3456) `shouldEqual` (12.346)
- (Number.roundAt 4 12.3456) `shouldEqual` (12.3456)
- (Number.roundAt 5 12.3456) `shouldEqual` (12.3456)
-
- it "formats numbers" $ do
- (Number.format 0.0) `shouldEqual` "0"
- (Number.format 0.1) `shouldEqual` "0,1"
- (Number.format 12.3456) `shouldEqual` "12,3"
- (Number.format 12.9) `shouldEqual` "12,9"
- (Number.format 12.99) `shouldEqual` "13,0"
- (Number.format 123456.0) `shouldEqual` "123456"
- (Number.format 1234.5678) `shouldEqual` "1234,6"
-
- describe "Parser" do
- it "parses number" $ do
- (Parser.number "") `shouldEqual` Nothing
- (Parser.number "auie") `shouldEqual` Nothing
- (Parser.number "13.8auie") `shouldEqual` Nothing
- (Parser.number "13.") `shouldEqual` Nothing
- (Parser.number ".8") `shouldEqual` Nothing
- (Parser.number "13") `shouldEqual` (Just 13.0)
- (Parser.number "13,8") `shouldEqual` (Just 13.8)
- (Parser.number "13.8") `shouldEqual` (Just 13.8)
- (Parser.number "123 456") `shouldEqual` Nothing
-
- it "parses textWithNumber" $ do
- map showTwn (Parser.textWithNumber "") `shouldEqual` Nothing
- map showTwn (Parser.textWithNumber "0") `shouldEqual` Just (showTwn { begin: "", number: 0.0, end: "" })
- map showTwn (Parser.textWithNumber "13,8") `shouldEqual` Just (showTwn { begin: "", number: 13.8, end: "" })
- map showTwn (Parser.textWithNumber "begin 0 end") `shouldEqual` Just (showTwn { begin: "begin ", number: 0.0, end: " end" })
- map showTwn (Parser.textWithNumber "14end") `shouldEqual` Just (showTwn { begin: "", number: 14.0, end: "end" })
- map showTwn (Parser.textWithNumber "begin14") `shouldEqual` Just (showTwn { begin: "begin", number: 14.0, end: "" })
-
-showTwn :: TextWithNumber -> String
-showTwn { begin, number, end } = begin <> show number <> end
diff --git a/main.ts b/main.ts
new file mode 100644
index 0000000..9e1a3bb
--- /dev/null
+++ b/main.ts
@@ -0,0 +1,158 @@
+const itemEntries =
+ nodeListToArray(document.querySelectorAll('.g-Recipe ul > li'))
+ .map(function(itemNode) {
+ return {
+ tag: 'li',
+ node: itemNode
+ };
+ })
+
+
+const h1 = document.querySelector<HTMLElement>('.g-Recipe h1')
+
+if (h1 !== null) {
+ itemEntries.push(
+ { tag: 'h1'
+ , node: h1
+ }
+ )
+}
+
+const inputs = setInputs(itemEntries)
+
+inputs.map(function(input) {
+ input.node.oninput = function(e) {
+ if (e.target !==null) {
+ const parsed: ParsedNumber | undefined = parseNumber((e.target as HTMLInputElement).value)
+
+ if (parsed !== undefined && parsed.before === '' && parsed.after === '') {
+ const factor = parsed.number / input.number
+ inputs.map(function(input2) {
+ input2.node.value = prettyPrintNumber(input2.number * factor)
+ })
+ }
+ }
+ }
+})
+
+interface InputEntry {
+ tag: string;
+ node: HTMLElement;
+}
+
+function setInputs(xs: Array<InputEntry>) {
+ const res = []
+
+ for (var i = 0; i < xs.length; i++) {
+ const parsed = parseNumber(xs[i].node.innerText)
+
+ if (parsed !== undefined) {
+ const numberNode = parsedNumberNode(xs[i].tag, parsed)
+ const parentNode = xs[i].node.parentNode
+
+ if (parentNode) {
+ parentNode.replaceChild(numberNode.all, xs[i].node)
+ res.push({
+ number: parsed.number,
+ node: numberNode.number
+ })
+ }
+ }
+ }
+
+ return res
+}
+
+function parsedNumberNode(tag: string, parsedNumber: ParsedNumber) {
+ const node = document.createElement(tag)
+
+ node.appendChild(document.createTextNode(parsedNumber.before))
+
+ const numberNode = document.createElement('input')
+ numberNode.className = 'g-Number'
+ numberNode.value = prettyPrintNumber(parsedNumber.number)
+ node.appendChild(numberNode)
+
+ node.appendChild(document.createTextNode(parsedNumber.after))
+
+ return {
+ all: node,
+ number: numberNode,
+ }
+}
+
+interface ParsedNumber {
+ before: string;
+ number: number;
+ after: string;
+}
+
+function parseNumber(str: string): ParsedNumber | undefined {
+ for (var start = 0; start < str.length; start++) {
+ if (isDigit(str.charAt(start))) {
+ break
+ }
+ }
+
+ if (start === str.length) {
+ return undefined
+ }
+
+ // Integer part
+ var integerPart = '';
+ for (var end = start; end < str.length; end++) {
+ const c = str.charAt(end)
+
+ if (!isDigit(c)) {
+ break
+ } else {
+ integerPart += c
+ }
+ }
+
+ // Decimal sign
+ if (end < str.length && (str.charAt(end) === '.' || str.charAt(end) === ',')) {
+ end++
+ }
+
+ // Decimal part
+ var decimalPart = '';
+ for (; end < str.length; end++) {
+ const c = str.charAt(end)
+
+ if (!isDigit(c)) {
+ break
+ } else {
+ decimalPart += c
+ }
+ }
+
+
+ return {
+ before: str.substring(0, start),
+ number: parseFloat(integerPart + (decimalPart !== '' ? '.' + decimalPart : '')),
+ after: str.substring(end, str.length)
+ }
+}
+
+function isDigit(c: string) {
+ return c >= '0' && c <= '9'
+}
+
+function nodeListToArray(nodeList: NodeListOf<HTMLElement>): Array<HTMLElement> {
+ const xs: Array<HTMLElement> = [];
+ nodeList.forEach(function(node) {
+ xs.push(node)
+ })
+ return xs
+}
+
+function prettyPrintNumber(n: number): string {
+ const xs = n.toString().split('.')
+
+ if (xs.length == 2) {
+ return xs[0] + ',' + xs[1].substring(0, 2)
+ } else {
+ return xs[0]
+ }
+}
diff --git a/nix/purescript.nix b/nix/purescript.nix
deleted file mode 100644
index 5b757b4..0000000
--- a/nix/purescript.nix
+++ /dev/null
@@ -1,49 +0,0 @@
-{ stdenv, fetchurl, makeWrapper, patchelf, gmpxx, ncurses5, zlib }:
-
-with stdenv; with lib;
-
-mkDerivation rec {
- name = "purescript-binary-${version}";
- version = "0.12.0";
- platform = {
- "x86_64-linux" = "linux64";
- }.${hostPlatform.system};
- src = fetchurl {
- url =
- "https://github.com/"
- + "purescript/purescript/releases/download/"
- + "v${version}/${platform}.tar.gz";
- sha256 = {
- "x86_64-linux" = "1wf7n5y8qsa0s2p0nb5q81ck6ajfyp9ijr72bf6j6bhc6pcpgmyc";
- }.${hostPlatform.system};
- name = "purescript.tar.gz";
- };
-
- buildInputs = [ makeWrapper ];
- unpackCmd = "tar -xzf $curSrc";
-
- installPhase = ''
- mkdir -p $out/bin $out/lib
- cp purs $out/bin/
- runHook postInstall
- '';
-
- postInstall = let
- libs = makeLibraryPath [ cc.cc gmpxx ncurses5 zlib ];
- in ''
- interpreter="$(cat $NIX_CC/nix-support/dynamic-linker)"
- ${patchelf}/bin/patchelf \
- --set-interpreter $interpreter \
- $out/bin/purs
- wrapProgram $out/bin/purs \
- --prefix LD_LIBRARY_PATH : ${libs}
- '';
-
- meta = {
- description = "A small strongly typed programming language with expressive
- types that compiles to JavaScript, written in and inspired by Haskell.";
- homepage = http://www.purescript.org/;
- license = licenses.bsd3;
- platforms = [ "x86_64-linux" ];
- };
-}
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index bae50cb..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,3339 +0,0 @@
-{
- "requires": true,
- "lockfileVersion": 1,
- "dependencies": {
- "JSONStream": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
- "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
- "dev": true,
- "requires": {
- "jsonparse": "^1.2.0",
- "through": ">=2.2.7 <3"
- }
- },
- "acorn": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz",
- "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==",
- "dev": true
- },
- "acorn-dynamic-import": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz",
- "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==",
- "dev": true
- },
- "acorn-node": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.6.2.tgz",
- "integrity": "sha512-rIhNEZuNI8ibQcL7ANm/mGyPukIaZsRNX9psFNQURyJW0nu6k8wjSDld20z6v2mDBWqX13pIEnk9gGZJHIlEXg==",
- "dev": true,
- "requires": {
- "acorn": "^6.0.2",
- "acorn-dynamic-import": "^4.0.0",
- "acorn-walk": "^6.1.0",
- "xtend": "^4.0.1"
- }
- },
- "acorn-walk": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz",
- "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==",
- "dev": true
- },
- "anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dev": true,
- "requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- },
- "dependencies": {
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
- }
- },
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true
- },
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
- "dev": true
- },
- "array-filter": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
- "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
- "dev": true
- },
- "array-map": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
- "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
- "dev": true
- },
- "array-reduce": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
- "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
- "dev": true
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true
- },
- "asn1.js": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
- "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
- "dev": true,
- "requires": {
- "bn.js": "^4.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
- }
- },
- "assert": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
- "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
- "dev": true,
- "requires": {
- "util": "0.10.3"
- },
- "dependencies": {
- "inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
- "dev": true
- },
- "util": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
- "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
- "dev": true,
- "requires": {
- "inherits": "2.0.1"
- }
- }
- }
- },
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
- "dev": true
- },
- "async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- },
- "async-each": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
- "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
- "dev": true
- },
- "atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
- "base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "base64-js": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
- "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
- "dev": true
- },
- "binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
- "dev": true
- },
- "bn.js": {
- "version": "4.11.8",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
- "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "brorand": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
- "dev": true
- },
- "browser-pack": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz",
- "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==",
- "dev": true,
- "requires": {
- "JSONStream": "^1.0.3",
- "combine-source-map": "~0.8.0",
- "defined": "^1.0.0",
- "safe-buffer": "^5.1.1",
- "through2": "^2.0.0",
- "umd": "^3.0.0"
- }
- },
- "browser-resolve": {
- "version": "1.11.3",
- "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
- "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
- "dev": true,
- "requires": {
- "resolve": "1.1.7"
- },
- "dependencies": {
- "resolve": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
- "dev": true
- }
- }
- },
- "browserify": {
- "version": "13.3.0",
- "resolved": "https://registry.npmjs.org/browserify/-/browserify-13.3.0.tgz",
- "integrity": "sha1-tanJAgJD8McORnW+yCI7xifkFc4=",
- "dev": true,
- "requires": {
- "JSONStream": "^1.0.3",
- "assert": "^1.4.0",
- "browser-pack": "^6.0.1",
- "browser-resolve": "^1.11.0",
- "browserify-zlib": "~0.1.2",
- "buffer": "^4.1.0",
- "cached-path-relative": "^1.0.0",
- "concat-stream": "~1.5.1",
- "console-browserify": "^1.1.0",
- "constants-browserify": "~1.0.0",
- "crypto-browserify": "^3.0.0",
- "defined": "^1.0.0",
- "deps-sort": "^2.0.0",
- "domain-browser": "~1.1.0",
- "duplexer2": "~0.1.2",
- "events": "~1.1.0",
- "glob": "^7.1.0",
- "has": "^1.0.0",
- "htmlescape": "^1.1.0",
- "https-browserify": "~0.0.0",
- "inherits": "~2.0.1",
- "insert-module-globals": "^7.0.0",
- "labeled-stream-splicer": "^2.0.0",
- "module-deps": "^4.0.8",
- "os-browserify": "~0.1.1",
- "parents": "^1.0.1",
- "path-browserify": "~0.0.0",
- "process": "~0.11.0",
- "punycode": "^1.3.2",
- "querystring-es3": "~0.2.0",
- "read-only-stream": "^2.0.0",
- "readable-stream": "^2.0.2",
- "resolve": "^1.1.4",
- "shasum": "^1.0.0",
- "shell-quote": "^1.6.1",
- "stream-browserify": "^2.0.0",
- "stream-http": "^2.0.0",
- "string_decoder": "~0.10.0",
- "subarg": "^1.0.0",
- "syntax-error": "^1.1.1",
- "through2": "^2.0.0",
- "timers-browserify": "^1.0.1",
- "tty-browserify": "~0.0.0",
- "url": "~0.11.0",
- "util": "~0.10.1",
- "vm-browserify": "~0.0.1",
- "xtend": "^4.0.0"
- },
- "dependencies": {
- "concat-stream": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
- "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
- "dev": true,
- "requires": {
- "inherits": "~2.0.1",
- "readable-stream": "~2.0.0",
- "typedarray": "~0.0.5"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
- "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "~1.0.0",
- "process-nextick-args": "~1.0.6",
- "string_decoder": "~0.10.x",
- "util-deprecate": "~1.0.1"
- }
- }
- }
- },
- "process-nextick-args": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
- "dev": true
- }
- }
- },
- "browserify-aes": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
- "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
- "dev": true,
- "requires": {
- "buffer-xor": "^1.0.3",
- "cipher-base": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.3",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "browserify-cache-api": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/browserify-cache-api/-/browserify-cache-api-3.0.1.tgz",
- "integrity": "sha1-liR+hT8Gj9bg1FzHPwuyzZd47wI=",
- "dev": true,
- "requires": {
- "async": "^1.5.2",
- "through2": "^2.0.0",
- "xtend": "^4.0.0"
- }
- },
- "browserify-cipher": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
- "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
- "dev": true,
- "requires": {
- "browserify-aes": "^1.0.4",
- "browserify-des": "^1.0.0",
- "evp_bytestokey": "^1.0.0"
- }
- },
- "browserify-des": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
- "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
- "dev": true,
- "requires": {
- "cipher-base": "^1.0.1",
- "des.js": "^1.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
- }
- },
- "browserify-incremental": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/browserify-incremental/-/browserify-incremental-3.1.1.tgz",
- "integrity": "sha1-BxPLdYckemMqnwjPG9FpuHi2Koo=",
- "dev": true,
- "requires": {
- "JSONStream": "^0.10.0",
- "browserify-cache-api": "^3.0.0",
- "through2": "^2.0.0",
- "xtend": "^4.0.0"
- },
- "dependencies": {
- "JSONStream": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.10.0.tgz",
- "integrity": "sha1-dDSdDYlSK3HzDwoD/5vSDKbxKsA=",
- "dev": true,
- "requires": {
- "jsonparse": "0.0.5",
- "through": ">=2.2.7 <3"
- }
- },
- "jsonparse": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz",
- "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=",
- "dev": true
- }
- }
- },
- "browserify-rsa": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
- "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "randombytes": "^2.0.1"
- }
- },
- "browserify-sign": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
- "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.1",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.2",
- "elliptic": "^6.0.0",
- "inherits": "^2.0.1",
- "parse-asn1": "^5.0.0"
- }
- },
- "browserify-zlib": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
- "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
- "dev": true,
- "requires": {
- "pako": "~0.2.0"
- }
- },
- "buffer": {
- "version": "4.9.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
- "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
- "dev": true,
- "requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
- }
- },
- "buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
- "dev": true
- },
- "buffer-from": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
- "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
- "dev": true
- },
- "buffer-xor": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
- "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
- "dev": true
- },
- "builtin-status-codes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
- "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
- "dev": true
- },
- "cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- }
- },
- "cached-path-relative": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz",
- "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==",
- "dev": true
- },
- "chokidar": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz",
- "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==",
- "dev": true,
- "requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "fsevents": "^1.2.7",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- }
- },
- "cipher-base": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
- "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
- "colors": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz",
- "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==",
- "dev": true
- },
- "combine-source-map": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz",
- "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=",
- "dev": true,
- "requires": {
- "convert-source-map": "~1.1.0",
- "inline-source-map": "~0.6.0",
- "lodash.memoize": "~3.0.3",
- "source-map": "~0.5.3"
- }
- },
- "component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "console-browserify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
- "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
- "dev": true,
- "requires": {
- "date-now": "^0.1.4"
- }
- },
- "constants-browserify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
- "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
- "dev": true
- },
- "convert-source-map": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
- "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=",
- "dev": true
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
- "dev": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
- "dev": true
- },
- "create-ecdh": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
- "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "elliptic": "^6.0.0"
- }
- },
- "create-hash": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
- "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
- "dev": true,
- "requires": {
- "cipher-base": "^1.0.1",
- "inherits": "^2.0.1",
- "md5.js": "^1.3.4",
- "ripemd160": "^2.0.1",
- "sha.js": "^2.4.0"
- }
- },
- "create-hmac": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
- "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
- "dev": true,
- "requires": {
- "cipher-base": "^1.0.3",
- "create-hash": "^1.1.0",
- "inherits": "^2.0.1",
- "ripemd160": "^2.0.0",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
- },
- "crypto-browserify": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
- "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
- "dev": true,
- "requires": {
- "browserify-cipher": "^1.0.0",
- "browserify-sign": "^4.0.0",
- "create-ecdh": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.0",
- "diffie-hellman": "^5.0.0",
- "inherits": "^2.0.1",
- "pbkdf2": "^3.0.3",
- "public-encrypt": "^4.0.0",
- "randombytes": "^2.0.0",
- "randomfill": "^1.0.3"
- }
- },
- "dash-ast": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz",
- "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==",
- "dev": true
- },
- "date-now": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
- "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
- "dev": true
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "dev": true
- },
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "dependencies": {
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "defined": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
- "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
- "dev": true
- },
- "deps-sort": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz",
- "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=",
- "dev": true,
- "requires": {
- "JSONStream": "^1.0.3",
- "shasum": "^1.0.0",
- "subarg": "^1.0.0",
- "through2": "^2.0.0"
- }
- },
- "des.js": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
- "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
- }
- },
- "detective": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz",
- "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==",
- "dev": true,
- "requires": {
- "acorn": "^5.2.1",
- "defined": "^1.0.0"
- },
- "dependencies": {
- "acorn": {
- "version": "5.7.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
- "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
- "dev": true
- }
- }
- },
- "diffie-hellman": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
- "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "miller-rabin": "^4.0.0",
- "randombytes": "^2.0.0"
- }
- },
- "domain-browser": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
- "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=",
- "dev": true
- },
- "duplexer2": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.2"
- }
- },
- "elliptic": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
- "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
- "dev": true,
- "requires": {
- "bn.js": "^4.4.0",
- "brorand": "^1.0.1",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.0"
- }
- },
- "es6-promise": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
- "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=",
- "dev": true
- },
- "events": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
- "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
- "dev": true
- },
- "evp_bytestokey": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
- "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
- "dev": true,
- "requires": {
- "md5.js": "^1.3.4",
- "safe-buffer": "^5.1.1"
- }
- },
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true
- },
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "dev": true,
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "fsevents": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.8.tgz",
- "integrity": "sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA==",
- "dev": true,
- "optional": true,
- "requires": {
- "nan": "^2.12.1",
- "node-pre-gyp": "^0.12.0"
- },
- "dependencies": {
- "abbrev": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "aproba": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "are-we-there-yet": {
- "version": "1.1.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "chownr": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "console-control-strings": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "debug": {
- "version": "4.1.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "deep-extend": {
- "version": "0.6.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "delegates": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "detect-libc": {
- "version": "1.0.3",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "fs-minipass": {
- "version": "1.2.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minipass": "^2.2.1"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "gauge": {
- "version": "2.7.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "glob": {
- "version": "7.1.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "iconv-lite": {
- "version": "0.4.24",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ignore-walk": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "ini": {
- "version": "1.3.5",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "isarray": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "0.0.8",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "minipass": {
- "version": "2.3.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- }
- },
- "minizlib": {
- "version": "1.2.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minipass": "^2.2.1"
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "ms": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "needle": {
- "version": "2.3.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "debug": "^4.1.0",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- }
- },
- "node-pre-gyp": {
- "version": "0.12.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.1",
- "needle": "^2.2.1",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.2.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4"
- }
- },
- "nopt": {
- "version": "4.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
- },
- "npm-bundled": {
- "version": "1.0.6",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "npm-packlist": {
- "version": "1.4.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "object-assign": {
- "version": "4.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "once": {
- "version": "1.4.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "osenv": {
- "version": "0.1.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "process-nextick-args": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "rc": {
- "version": "1.2.8",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "readable-stream": {
- "version": "2.3.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "rimraf": {
- "version": "2.6.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "safer-buffer": {
- "version": "2.1.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "sax": {
- "version": "1.2.4",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "semver": {
- "version": "5.7.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "tar": {
- "version": "4.4.8",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "chownr": "^1.1.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.3.4",
- "minizlib": "^1.1.1",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.2"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "wide-align": {
- "version": "1.1.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "string-width": "^1.0.2 || 2"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "yallist": {
- "version": "3.0.3",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "get-assigned-identifiers": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz",
- "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==",
- "dev": true
- },
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
- "dev": true
- },
- "glob": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
- "dev": true,
- "requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
- }
- },
- "graceful-fs": {
- "version": "4.1.15",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
- "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
- "dev": true
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- }
- },
- "has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "hash-base": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
- "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "hash.js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
- "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
- }
- },
- "hmac-drbg": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
- "dev": true,
- "requires": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "htmlescape": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
- "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=",
- "dev": true
- },
- "https-browserify": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
- "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=",
- "dev": true
- },
- "ieee754": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
- "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
- "dev": true
- },
- "indexof": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
- "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
- },
- "inline-source-map": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz",
- "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=",
- "dev": true,
- "requires": {
- "source-map": "~0.5.3"
- }
- },
- "insert-module-globals": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz",
- "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==",
- "dev": true,
- "requires": {
- "JSONStream": "^1.0.3",
- "acorn-node": "^1.5.2",
- "combine-source-map": "^0.8.0",
- "concat-stream": "^1.6.1",
- "is-buffer": "^1.1.0",
- "path-is-absolute": "^1.0.1",
- "process": "~0.11.0",
- "through2": "^2.0.0",
- "undeclared-identifiers": "^1.1.2",
- "xtend": "^4.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
- "dev": true,
- "requires": {
- "binary-extensions": "^1.0.0"
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- },
- "json-stable-stringify": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz",
- "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=",
- "dev": true,
- "requires": {
- "jsonify": "~0.0.0"
- }
- },
- "jsonify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
- "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
- "dev": true
- },
- "jsonparse": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- },
- "labeled-stream-splicer": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz",
- "integrity": "sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "isarray": "^2.0.4",
- "stream-splicer": "^2.0.0"
- },
- "dependencies": {
- "isarray": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz",
- "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==",
- "dev": true
- }
- }
- },
- "lodash.memoize": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz",
- "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=",
- "dev": true
- },
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
- "dev": true
- },
- "map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "dev": true,
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
- "md5.js": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
- "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
- "dev": true,
- "requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "miller-rabin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
- "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
- "dev": true,
- "requires": {
- "bn.js": "^4.0.0",
- "brorand": "^1.0.1"
- }
- },
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true
- },
- "minimalistic-assert": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
- "dev": true
- },
- "minimalistic-crypto-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
- "dev": true
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- },
- "mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
- "dev": true,
- "requires": {
- "minimist": "0.0.8"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
- }
- }
- },
- "module-deps": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz",
- "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=",
- "dev": true,
- "requires": {
- "JSONStream": "^1.0.3",
- "browser-resolve": "^1.7.0",
- "cached-path-relative": "^1.0.0",
- "concat-stream": "~1.5.0",
- "defined": "^1.0.0",
- "detective": "^4.0.0",
- "duplexer2": "^0.1.2",
- "inherits": "^2.0.1",
- "parents": "^1.0.0",
- "readable-stream": "^2.0.2",
- "resolve": "^1.1.3",
- "stream-combiner2": "^1.1.1",
- "subarg": "^1.0.0",
- "through2": "^2.0.0",
- "xtend": "^4.0.0"
- },
- "dependencies": {
- "concat-stream": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
- "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
- "dev": true,
- "requires": {
- "inherits": "~2.0.1",
- "readable-stream": "~2.0.0",
- "typedarray": "~0.0.5"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
- "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "~1.0.0",
- "process-nextick-args": "~1.0.6",
- "string_decoder": "~0.10.x",
- "util-deprecate": "~1.0.1"
- }
- }
- }
- },
- "process-nextick-args": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
- "dev": true
- }
- }
- },
- "mold-source-map": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/mold-source-map/-/mold-source-map-0.4.0.tgz",
- "integrity": "sha1-z2fgsxxHq5uttcnCVlGGISe7gxc=",
- "dev": true,
- "requires": {
- "convert-source-map": "^1.1.0",
- "through": "~2.2.7"
- },
- "dependencies": {
- "through": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz",
- "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=",
- "dev": true
- }
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
- "dev": true
- },
- "nan": {
- "version": "2.13.2",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz",
- "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==",
- "dev": true,
- "optional": true
- },
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- }
- },
- "neo-async": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
- "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
- "dev": true
- },
- "node-static": {
- "version": "0.7.11",
- "resolved": "https://registry.npmjs.org/node-static/-/node-static-0.7.11.tgz",
- "integrity": "sha512-zfWC/gICcqb74D9ndyvxZWaI1jzcoHmf4UTHWQchBNuNMxdBLJMDiUgZ1tjGLEIe/BMhj2DxKD8HOuc2062pDQ==",
- "dev": true,
- "requires": {
- "colors": ">=0.6.0",
- "mime": "^1.2.9",
- "optimist": ">=0.3.4"
- }
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- },
- "object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
- "dev": true,
- "requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.0"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optimist": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
- "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
- "dev": true,
- "requires": {
- "minimist": "~0.0.1",
- "wordwrap": "~0.0.2"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
- "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
- "dev": true
- },
- "wordwrap": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
- "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
- "dev": true
- }
- }
- },
- "os-browserify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz",
- "integrity": "sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=",
- "dev": true
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "dev": true
- },
- "pako": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
- "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
- "dev": true
- },
- "parents": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
- "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=",
- "dev": true,
- "requires": {
- "path-platform": "~0.11.15"
- }
- },
- "parse-asn1": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz",
- "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==",
- "dev": true,
- "requires": {
- "asn1.js": "^4.0.0",
- "browserify-aes": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3",
- "safe-buffer": "^5.1.1"
- }
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "dev": true
- },
- "path-browserify": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
- "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
- "dev": true
- },
- "path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
- },
- "path-platform": {
- "version": "0.11.15",
- "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
- "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=",
- "dev": true
- },
- "pbkdf2": {
- "version": "3.0.17",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
- "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
- "dev": true,
- "requires": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
- "dev": true
- },
- "process": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
- "dev": true
- },
- "process-nextick-args": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
- "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
- "dev": true
- },
- "public-encrypt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
- "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "parse-asn1": "^5.0.0",
- "randombytes": "^2.0.1",
- "safe-buffer": "^5.1.2"
- }
- },
- "pulp": {
- "version": "12.3.1",
- "resolved": "https://registry.npmjs.org/pulp/-/pulp-12.3.1.tgz",
- "integrity": "sha512-UVkXppOVShd8GRe+dGWGihGhYgPnwGv2GszGAUUKlWg61qB5yFBlcNHJywyE0yZhuA5HWTt5JCmnfVYqTL0hqQ==",
- "dev": true,
- "requires": {
- "browserify": "^13.1.0",
- "browserify-incremental": "^3.0.1",
- "concat-stream": "^1.4.6",
- "glob": "^7.1.1",
- "minimatch": "^3.0.3",
- "mold-source-map": "^0.4.0",
- "node-static": "^0.7.9",
- "read": "^1.0.7",
- "sorcery": "^0.10.0",
- "string-stream": "0.0.7",
- "temp": "^0.8.1",
- "through": "^2.3.8",
- "tree-kill": "^1.0.0",
- "watchpack": "^1.0.1",
- "which": "^1.2.1",
- "wordwrap": "1.0.0"
- }
- },
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- },
- "querystring": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
- "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
- "dev": true
- },
- "querystring-es3": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
- "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
- "dev": true
- },
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "randomfill": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
- "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
- "dev": true,
- "requires": {
- "randombytes": "^2.0.5",
- "safe-buffer": "^5.1.0"
- }
- },
- "read": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
- "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
- "dev": true,
- "requires": {
- "mute-stream": "~0.0.4"
- }
- },
- "read-only-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
- "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.2"
- }
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- },
- "dependencies": {
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
- }
- },
- "regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
- "dev": true
- },
- "repeat-element": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
- "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true
- },
- "resolve": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz",
- "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
- "dev": true
- },
- "ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true
- },
- "rimraf": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "ripemd160": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
- "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
- "dev": true,
- "requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
- },
- "sander": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz",
- "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=",
- "dev": true,
- "requires": {
- "es6-promise": "^3.1.2",
- "graceful-fs": "^4.1.3",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.2"
- }
- },
- "set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "sha.js": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "shasum": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz",
- "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=",
- "dev": true,
- "requires": {
- "json-stable-stringify": "~0.0.0",
- "sha.js": "~2.4.4"
- }
- },
- "shell-quote": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
- "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
- "dev": true,
- "requires": {
- "array-filter": "~0.0.0",
- "array-map": "~0.0.0",
- "array-reduce": "~0.0.0",
- "jsonify": "~0.0.0"
- }
- },
- "simple-concat": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",
- "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=",
- "dev": true
- },
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "requires": {
- "kind-of": "^3.2.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "sorcery": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz",
- "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=",
- "dev": true,
- "requires": {
- "buffer-crc32": "^0.2.5",
- "minimist": "^1.2.0",
- "sander": "^0.5.0",
- "sourcemap-codec": "^1.3.0"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- },
- "source-map-resolve": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
- "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
- "dev": true,
- "requires": {
- "atob": "^2.1.1",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "source-map-url": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
- "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
- "dev": true
- },
- "sourcemap-codec": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz",
- "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==",
- "dev": true
- },
- "split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.0"
- }
- },
- "static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "dev": true,
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "stream-browserify": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
- "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
- "dev": true,
- "requires": {
- "inherits": "~2.0.1",
- "readable-stream": "^2.0.2"
- }
- },
- "stream-combiner2": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
- "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
- "dev": true,
- "requires": {
- "duplexer2": "~0.1.0",
- "readable-stream": "^2.0.2"
- }
- },
- "stream-http": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
- "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
- "dev": true,
- "requires": {
- "builtin-status-codes": "^3.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.3.6",
- "to-arraybuffer": "^1.0.0",
- "xtend": "^4.0.0"
- }
- },
- "stream-splicer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz",
- "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.2"
- }
- },
- "string-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/string-stream/-/string-stream-0.0.7.tgz",
- "integrity": "sha1-z83oJ5n6YvMDQpqqeTNu6INDMv4=",
- "dev": true
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- },
- "subarg": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
- "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
- "dev": true,
- "requires": {
- "minimist": "^1.1.0"
- }
- },
- "syntax-error": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
- "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==",
- "dev": true,
- "requires": {
- "acorn-node": "^1.2.0"
- }
- },
- "temp": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
- "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
- "dev": true,
- "requires": {
- "os-tmpdir": "^1.0.0",
- "rimraf": "~2.2.6"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.2.8",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
- "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
- "dev": true
- }
- }
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "requires": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "timers-browserify": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
- "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=",
- "dev": true,
- "requires": {
- "process": "~0.11.0"
- }
- },
- "to-arraybuffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
- "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
- "dev": true
- },
- "to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- },
- "tree-kill": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz",
- "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==",
- "dev": true
- },
- "tty-browserify": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
- "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
- "dev": true
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
- "dev": true
- },
- "umd": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz",
- "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==",
- "dev": true
- },
- "undeclared-identifiers": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz",
- "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==",
- "dev": true,
- "requires": {
- "acorn-node": "^1.3.0",
- "dash-ast": "^1.0.0",
- "get-assigned-identifiers": "^1.2.0",
- "simple-concat": "^1.0.0",
- "xtend": "^4.0.1"
- }
- },
- "union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- }
- },
- "unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "dev": true,
- "requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
- "dev": true
- }
- }
- },
- "upath": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz",
- "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==",
- "dev": true
- },
- "urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "dev": true
- },
- "url": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
- "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
- "dev": true,
- "requires": {
- "punycode": "1.3.2",
- "querystring": "0.2.0"
- },
- "dependencies": {
- "punycode": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
- "dev": true
- }
- }
- },
- "use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true
- },
- "util": {
- "version": "0.10.4",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
- "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
- "dev": true,
- "requires": {
- "inherits": "2.0.3"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
- },
- "vm-browserify": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
- "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
- "dev": true,
- "requires": {
- "indexof": "0.0.1"
- }
- },
- "watchpack": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
- "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
- "dev": true,
- "requires": {
- "chokidar": "^2.0.2",
- "graceful-fs": "^4.1.2",
- "neo-async": "^2.5.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "xtend": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
- "dev": true
- }
- }
-}
diff --git a/package.json b/package.json
deleted file mode 100644
index 7c10e20..0000000
--- a/package.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "private": true,
- "devDependencies": {
- "pulp": "^12.3.1"
- }
-}
diff --git a/psc-package.json b/psc-package.json
deleted file mode 100644
index eedb386..0000000
--- a/psc-package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "cooking",
- "set": "psc-0.12.2",
- "source": "https://github.com/purescript/package-sets.git",
- "depends": [
- "console",
- "effect",
- "integers",
- "math",
- "maybe",
- "parsing",
- "prelude",
- "spec",
- "strings",
- "web-dom",
- "web-html"
- ]
-}
diff --git a/recettes/desserts/hyperglucidique/brownie-aux-noix.md b/recettes/desserts/hyperglucidique/brownie-aux-noix.md
deleted file mode 100644
index 9bf75df..0000000
--- a/recettes/desserts/hyperglucidique/brownie-aux-noix.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Brownie aux noix
----
-
-Ingrédients
-===========
-
-- 225 g de chocolat noir
-- 190 g de beurre
-- 100 g de sucre
-- 3 CS de farine
-- 2 grosses poignées de cerneaux de noix de pécan
-- 6 œufs
-
-Recette
-=======
-
-#. Mettre à fondre le beurre et le chocolat.
-#. Ajouter le sucre.
-#. Allumer le four à 180°C.
-#. Ajouter les œufs un à un dans la préparation en mélangeant à chaque fois.
-#. Ajouter la farine.
-#. Casser les cerneaux de noix en 2 ou 3 puis les mélanger à la pâte.
-#. Mettre au four environ 20 minutes.
diff --git a/recettes/desserts/hyperglucidique/cheesecake.md b/recettes/desserts/hyperglucidique/cheesecake.md
deleted file mode 100644
index 74fe156..0000000
--- a/recettes/desserts/hyperglucidique/cheesecake.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Cheesecake
----
-
-# Ingrédients
-
-## Pour la préparation
-
-- 800 g de carré frais
-- 100 g de fromage blanc
-- 150 g de sucre
-- 3 œufs
-- 1 citron
-- 250 g de mascarpone
-
-## Pour le fond
-
-- 1 paquet de petit beurre mixé
-- des noix de pécan caramélisées
-
-# Recette
-
-#. Mixer les petits beurres et les placer dans un plat.
-#. Ajouter les noix de pécan caramélisées.
-#. Dans un saladier, mélanger le sucre avec les jaunes, le carré frais, la
- mascarpone, le citron (jus et/ou zeste) et le fromage blanc.
-#. Incorporer les blancs en neige.
-#. Verser le mélange sur le fond de tarte préparé.
-#. Cuire à 180° pendant 30 à 40 minutes
-#. Laisser refoidir.
diff --git a/recettes/desserts/hyperglucidique/cookies.md b/recettes/desserts/hyperglucidique/cookies.md
deleted file mode 100644
index f56dafd..0000000
--- a/recettes/desserts/hyperglucidique/cookies.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: Cookies
----
-
-Ingrédients (45 cookies)
-========================
-
-- 250 g de beurre
-- 300 g de pépites de chocolat
-- 2 œufs
-- 350 g de farine
-- 125 g de sucre semoule
-- 125 g de sucre brun
-- 1 cuillère à café de levure en poudre
-- sel
-
-Recette
-=======
-
-#. Travailler le beurre mou avec les deux sucres jusqu'à obtention d'un mélange
- homogène.
-#. Ajouter les œufs et mélanger bien.
-#. Joindre la farine tamisée, le sel et la levure en poudre.
-#. Mélanger à nouveau.
-#. Rajouter les pépites de chocolat et mélanger.
-#. Recouvrer le plateau du four de papier cuisson ou sulfurisé, et à l'aide de
- 2 cuillères à café, disposer-y des petits tas de pâte de la valeur d'une
- noix.
-#. Veiller à bien les espacer car la pâte s'étale asser fort.
-#. Enfourner et compter une dizaine de minutes de cuisson (four préchauffé à
- 180°C).
-#. Laisser les cookies cuits sur une grille pour les laisser refroidir.
diff --git a/recettes/desserts/hyperglucidique/creme-aux-oeufs.md b/recettes/desserts/hyperglucidique/creme-aux-oeufs.md
deleted file mode 100644
index fefa927..0000000
--- a/recettes/desserts/hyperglucidique/creme-aux-oeufs.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-title: Crème aux œufs
----
-
-Ingrédients
-===========
-
-- 8 œufs
-- 1 L lait
-- 80 g sucre
-- 1 sachet de sucre vanillé (ou 1 gousse de vanille)
-
-Recette
-=======
-
-#. Chauffer dans une casserole le lait et le sucre vanillé (ou la gousse).
-#. Pendant ce temps, dans un grand saladier, battre les œufs entiers, puis
- ajouter le sucre et battre jusqu'à ce que le mélange devienne blanc et
- mousseux.
-#. Quand le lait est chaud, le verser sur la préparation aux œufs et battre le
- tout.
-#. Préchauffer le four à 180°C.
-#. Préparer le bain-marie : verser de l'eau chaude sur la plaque noire du four.
-#. Verser la crème aux œufs dans un moule.
-#. Cuire environ 35 min, la crème est prête une fois dorée.
-#. Laisser refroidir avant dégustation !
diff --git a/recettes/desserts/hyperglucidique/creme-chocolat.md b/recettes/desserts/hyperglucidique/creme-chocolat.md
deleted file mode 100644
index 0d6422b..0000000
--- a/recettes/desserts/hyperglucidique/creme-chocolat.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Crème au chocolat
----
-
-Ingrédients
-===========
-
-- 120 g de chocolat
-- 750 cl de lait
-- 65 g de sucre
-- 4 CS de Maïzena
-- 2 jaunes d’œufs
-
-Recette
-=======
-
-#. Faire fondre le chocolat dans le lait.
-#. Ajouter le sucre, attendre qu’il soit dissout.
-#. Mélanger, dans un bol, la Maïzena et les jaunes d’œufs et verser dans le
- chocolat.
-#. Remuer sans arrêt.
diff --git a/recettes/desserts/hyperglucidique/crepes.md b/recettes/desserts/hyperglucidique/crepes.md
deleted file mode 100644
index 61fb153..0000000
--- a/recettes/desserts/hyperglucidique/crepes.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Crêpes
----
-
-Ingrédients (25 crêpes)
-=======================
-
-- 500 g de farine
-- 1 sachet de levure
-- 1 pincée de sel
-- 4 ou 5 œufs
-- 1 L de lait
-- 1 petit verre d’alcool
-- 1 petit verre d’huile végétale (tournesol)
-
-Recette
-=======
-
-#. Verser la farine, la levure chimique et le sel dans un saladier.
-#. Former un puits.
-#. Ajouter les œufs en mélangeant progressivement.
-#. Ajouter le lait en mélangeant progressivement.
-#. Ajouter 1 petit verre d’alcool.
-#. Ajouter 1 petit verre d’huile végétale.
-#. Mélanger le tout.
diff --git a/recettes/desserts/hyperglucidique/fondant-chocolat.md b/recettes/desserts/hyperglucidique/fondant-chocolat.md
deleted file mode 100644
index 9e51d73..0000000
--- a/recettes/desserts/hyperglucidique/fondant-chocolat.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Fondant au chocolat
----
-
-Ingrédients
-===========
-
-- 125 g de chocolat noir
-- 125 g de beurre
-- 125 g de sucre semoule
-- 3 œufs
-- 1 cc de Maïzena
-- sel
-
-Recette
-=======
-
-#. Mettre à fondre le chocolat avec le beurre.
-#. Mélanger les jaunes d’œufs et le sucre, puis y incorporer la Maïzena lorsque
- le mélange devient mousseux.
-#. Mélanger les deux préparations ensemble.
-#. Battre les blancs en neige avec du sel, puis les incorporer doucement au
- mélange.
-#. Cuire à 180°C.
diff --git a/recettes/desserts/hyperglucidique/galette-des-rois.md b/recettes/desserts/hyperglucidique/galette-des-rois.md
deleted file mode 100644
index 0171e8b..0000000
--- a/recettes/desserts/hyperglucidique/galette-des-rois.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: Galette des rois
----
-
-Ingrédients
-===========
-
-- 2 pâtes feuilletées
-- 300 g de poudre d’amande
-- 150 g de sucre de canne
-- 150 g de beurre mou
-- 4 œufs
-- quelques gouttes d’amande amère
-- 1 fève
-
-Recette
-=======
-
-#. Placer une pâte feuilletée dans un moule à tarte.
-#. Piquer la pâte avec une fourchette.
-#. Dans un saladier, mélanger la poudre d’amandes, le sucre, les œufs, le
-beurre mou, et quelques gouttes d’amande amère.
-#. Verser la pâte obtenue dans le moule à tarte et y cache la fève au bord.
-#. Recouvrir avec la 2ème pâte feuilletée, en collant bien les bords et en
-enlevant la pâte en trop.
-#. Enfourner pendant 20 à 30 minutes à 200°C, vérifier régulièrement la
-cuisson.
diff --git a/recettes/desserts/hyperglucidique/gateau-aux-noisettes.md b/recettes/desserts/hyperglucidique/gateau-aux-noisettes.md
deleted file mode 100644
index 4793b1d..0000000
--- a/recettes/desserts/hyperglucidique/gateau-aux-noisettes.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Gâteau aux noisettes
----
-
-Ingrédients (8 personnes)
-=========================
-
-- 250 g de noisettes en poudre
-- 80 g de sucre en poudre
-- 5 oeufs
-
-Recette
-=======
-
-#. Séparer les blancs des jaunes d’œufs.
-#. Ajouter le sucre aux jaunes d’œufs.
-#. Battre les blancs en neige.
-#. Y incorporer doucement les noisettes et les jaunes.
-#. Verser la préparation dans un moule beurré.
-#. Cuire 20 minutes à 180°C.
diff --git a/recettes/desserts/hyperglucidique/shortbread.md b/recettes/desserts/hyperglucidique/shortbread.md
deleted file mode 100644
index c7e6d8a..0000000
--- a/recettes/desserts/hyperglucidique/shortbread.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Shortbread
----
-
-Ingrédients
-===========
-
-- 175 g de farine
-- 175 g de beurre
-- 60 g de cassonade
-- 40 cl de lait concentré sucré
-- 20 cl de lait concentré non sucré
-- 150 g de chocolat noir
-- 1 CS de Maïzena
-
-Recette
-=======
-
-Biscuit
--------
-
-#. Sortir le beurre pour le ramollir à température ambiante.
-#. Préchauffer le four à 190°C.
-#. Beurrer les parois d’un moule carré ou recouvrer-le de papier sulfurisé.
-#. Mélanger la farine, la cassonade et 125 g de beurre mou en morceaux.
-#. Étaler la pâte obtenue dans le moule.
-#. Piquer la préparation à la fourchette.
-#. Enfourner 10 minutes.
-
-Caramel
--------
-
-#. Mettre 50 g de beurre à fondre dans une casserole.
-#. Toujours en cuisson, y ajouter les laits concentrés. et la Maïzena.
-#. Remuer jusqu’à l’obtention d’une crème épaisse à la couleur dorée.
-#. Verser le caramel crémeux sur le biscuit.
-#. Laisser refroidir.
-
-Chocolat
---------
-
-#. Casser le chocolat en morceaux dans une casserole.
-#. Le faire fondre à feu doux avec une cuillère à soupe d’eau.
-#. Recouvrir le caramel avec le chocolat fondu.
-#. Laisser refroidir.
diff --git a/recettes/desserts/hypoglucidique/choco-cacahuete.md b/recettes/desserts/hypoglucidique/choco-cacahuete.md
deleted file mode 100644
index b24c805..0000000
--- a/recettes/desserts/hypoglucidique/choco-cacahuete.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Chocolat cacahuète
----
-
-Ingrédients
-===========
-
-- peanut butter
-- frozen mix of berries (blueberry, blackberry, strawberry etc)
-- coconut flakes
-- 99% chocolate
-- butter
-- stevia
-
-Recette
-=======
-
-In a glass:
-
-#. Add ~2tbps of peanut butter (100%, organic)
-#. Add a bit of melted butter to it, to make it more creamy
-#. Add a few tablespoons of berries and coconut flakes and stevia (you can experiment with the proportions)
-#. Crush/mix this stuff together
-#. Melt a couple of pieces of chocolate in butter, also add stevia to this and pour it over the mixture
diff --git a/recettes/desserts/hypoglucidique/mousse-chocolat.md b/recettes/desserts/hypoglucidique/mousse-chocolat.md
deleted file mode 100644
index b94c8a4..0000000
--- a/recettes/desserts/hypoglucidique/mousse-chocolat.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: Mousse au chocolat
----
-
-Ingrédients (5 parts)
-=====================
-
-- 200 g de chocolat
-- 5 œufs
-- sel
-
-Recette
-=======
-
-#. Faire fondre le chocolat au bain-marie, sans le remuer afin d’éviter de le
-rendre granuleux, puis le laisser refroidir.
-#. Séparer les jaunes des blancs d’œufs.
-#. Monter les blancs en neige avec une pincée de sel.
-#. Incorporer les jaunes un à un au chocolat.
-#. Incorporer très délicatement les blancs en neige.
-#. Verser dans des pots.
-#. Laisser refroidir au moins 2 heures au réfrigérateur.
diff --git a/recettes/nettoyage/lessive-au-lierre.md b/recettes/nettoyage/lessive-au-lierre.md
deleted file mode 100644
index af504cb..0000000
--- a/recettes/nettoyage/lessive-au-lierre.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: Lessive au lierre
----
-
-Ingrédients (1L de lessive)
-===========================
-
-- 100 g de feuilles de lierre
-- 1 L d’eau
-
-Recette
-=======
-
-#. Laver les feuilles à l’eau claire.
-#. Froisser les feuilles à la main.
-#. Mettre les feuilles à l’eau dans une casserole.
-#. Porter l’eau à ébullition.
-#. Laisser cuire à feux doux 15 minutes avec un couvercle.
-#. Laisser refroidir et macérer 24 heures avec un couvercle.
-#. Presser les feuilles.
-#. Verser dans une bouteille en filtrant les feuilles avec un chiffon fin.
-
-La lessive se conserve 3 semaines à l’abri de la lumière.
diff --git a/recettes/nettoyage/lessive-au-savon-de-marseille.md b/recettes/nettoyage/lessive-au-savon-de-marseille.md
deleted file mode 100644
index 73c9926..0000000
--- a/recettes/nettoyage/lessive-au-savon-de-marseille.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Lessive au savon de Marseille
----
-
-Ingrédients (1L de lessive)
-===========================
-
-- 50 g de savon de Marseille (vert de préférence, avec au min. 72% d’huile végétale)
-- 1 L d’eau
-- 1 CS de bicarbonate de soude
-
-Recette
-=======
-
-#. Râper le savon de Marseille.
-#. Chauffer le savon dans l’eau.
-#. Mélanger jusqu’à la dissolution du savon.
-#. Laisser tiédir.
-#. Ajouter le bicarbonate de soude.
-#. Laisser refroidir.
-#. Mixer pour éviter que la lessive ne devienne compact.
-#. Verser dans un contenant.
-
-La lessive se met directement dans le tambour.
diff --git a/recettes/plats/galettes.md b/recettes/plats/galettes.md
deleted file mode 100644
index 8de44be..0000000
--- a/recettes/plats/galettes.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Galettes
----
-
-Ingrédients
-===========
-
-- 200 g de sarrasin
-- 1 L d’eau
-- 120 g de farine de froment T55
-- 120 g de farine de seigle T130
-- 60 g de farine aux 5 céréales
-- 1 grand verre de lait entier
-- 2 cc rases de sel
-- 70 g de beurre
-- 2 œufs
-- 1 CS rase de miel
-
-Recette
-=======
-
-#. Mélanger les farines.
-#. Former un puit et y casser les œufs.
-#. Mélanger avec une cuillère en bois ou un fouet.
-#. Faire fondre le beurre à la casserole.
-#. Ajouter dans la casserole : le lait, le sel et le miel.
-#. Verser progressivement dans le puits en remuant.
-#. Verser l’eau en remuant.
-#. Laisser reposer 4 ou 5 heures.
-#. Beurrer la poêle pour chaque galette.
diff --git a/recettes/plats/pate-brisee-farine-complete.md b/recettes/plats/pate-brisee-farine-complete.md
deleted file mode 100644
index 9f954c5..0000000
--- a/recettes/plats/pate-brisee-farine-complete.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-title: Pâte brisée à la farine complète
----
-
-Ingrédients (1 pâte)
-====================
-
-- 125 g de farine T80
-- 30 ml d’huile supportant la cuisson (olive)
-- 60 ml d’eau froide
-- 0.5 cc de sel fin
-- des herbes séchées (romarin, thym)
-
-Recette
-=======
-
-Travailler le moins possible la pâte pour éviter qu’elle ne durcisse à la cuisson.
-
-#. Mélanger la farine, le sel et les herbes dans un saladier.
-#. Ajouter l’huile et l’eau et mélanger à la fourchette.
-#. Former une boule.
-#. Étaler la pâte avec quelques gestes rapides.
-#. Tapisser un moule.
-#. Laisser reposer 30 minutes au frais.
-#. Piquer la pâte à la fourchette.
-#. Chauffer 15 minutes à blanc à 175°c jusqu’à ce que la pâte soit dorée.
diff --git a/recettes/plats/pate-brisee.md b/recettes/plats/pate-brisee.md
deleted file mode 100644
index 91901f4..0000000
--- a/recettes/plats/pate-brisee.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: Pâte brisée
----
-
-Ingrédients (1 pâte)
-====================
-
-- 150 g de farine
-- 75 g de beurre
-- 0.5 cc de sel
-- 8 cl d’eau
-
-Recette
-=======
-
-#. Sortir le beurre du réfrigérateur pour qu’il soit mou.
-#. Mélanger la farine et le sel dans un plat.
-#. Ajouter le beurre et mélanger avec les doigts.
-#. Ajouter l’eau.
diff --git a/recettes/plats/riz-vinaigre-casserole.md b/recettes/plats/riz-vinaigre-casserole.md
deleted file mode 100644
index c58fbd5..0000000
--- a/recettes/plats/riz-vinaigre-casserole.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Riz vinaigré à la casserole
----
-
-Ingrédients (8 feuilles)
-========================
-
-- 400 g de riz rond
-- 400 mL d’eau
-- 50 mL de vinaigre de riz
-- 0,5 cc de sel
-- 2 CS de sucre
-
-Recette
-=======
-
-Préparation du riz
-------------------
-
-#. Verser dans un saladier :
- #. un peu de sel ;
- #. le riz ;
- #. de l’eau jusqu’au dessus du niveau du riz.
-#. Remuer le riz en le soulevant.
-#. Tant que l’eau se trouble, changer l’eau et remuer à nouveau.
-#. Égoutter le riz.
-
-Chauffe du riz
---------------
-
-#. Verser dans une casserole :
- #. de l’eau ;
- #. la préparation de riz.
-#. Poser un couvercle sur la casserole et le garder durant tout le temps de
- chauffe.
-#. Porter l’eau à ébullition.
-#. Chauffer :
- #. 2 minutes à feu fort ;
- #. puis 10 minutes à feu doux.
-#. Sortir la casserole du feu et attendre 10 minutes.
-
-Mélange final
--------------
-
-#. Verser le riz dans un saladier.
-#. Désolidariser le riz.
-#. Laisser refroidir le riz.
-#. Verser dans une casserole le vinaigre de riz, le sucre et le sel.
-#. Poser la casserole sur le feu.
-#. Mélanger jusqu’à ce que les grains disparaissent.
-#. Retirer la casserole du feu à la première trace d’ébullition.
-#. Verser le mélange sur le riz.
-#. Mélanger le tout.
diff --git a/recettes/plats/riz-vinaigre-vita-vapeur.md b/recettes/plats/riz-vinaigre-vita-vapeur.md
deleted file mode 100644
index 50bd177..0000000
--- a/recettes/plats/riz-vinaigre-vita-vapeur.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: Riz vinaigré au vita vapeur
----
-
-Ingrédients (2 chirachis)
-=========================
-
-- 300 g de riz rond
-- 40 ml de vinaigre de riz
-- 0,5 cc de sel
-- 1,5 CS de sucre
-
-Recette
-=======
-
-### Préparation du riz
-
-#. Laver le riz.
-#. Mettre le riz dans le bac du vitavapeur avec un peu de sel.
-#. Recouvrir le riz d'eau chaude 1 cm au dessus du niveau du riz.
-#. Chauffer 35 minutes.
-
-### Préparation du vinaigre
-
-#. Verser dans une casserole le vinaigre de riz, le sel et le sucre.
-#. Poser la casserole sur le feu.
-#. Mélanger jusqu’à ce que les grains disparaissent.
-#. Retirer la casserole du feu à la première trace d’ébullition.
-
-### Mélange final
-
-#. Mélanger le tout.
diff --git a/recettes/plats/soupe-potimarron-butternut.md b/recettes/plats/soupe-potimarron-butternut.md
deleted file mode 100644
index 292af49..0000000
--- a/recettes/plats/soupe-potimarron-butternut.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: Soupe de potimarron et de butternut
----
-
-Ingrédients
-===========
-
-- 2 petits potimarrons
-- 1 petit butternut
-- 1,5 cubes de poule bio
-- 2 oignons jaunes
-- 1 gousse d’ail
-- Des épices
-
-Recette
-=======
-
-#. Cuire le butternut au four.
-#. Dorer les oignons dans une poêle avec de l’huile.
-#. Ajouter le bouillon de poule délayé dans un peu d’eau chaude.
-#. Eplucher et couper les deux potimarrons en cubes. Ajouter par-dessus les
-oignons, mélanger, couvrir et cuire quelques minutes.
-#. Ajouter l’ail, une petite CS d’épices.
-#. Couvrir d’eau, et cuire jusqu’à cuisson du potimarron.
-#. Ajouter le butternut, mixer et goûter. Ajouter les épices si nécessaire,
-petit à petit. Servir.
-#. Selon les goûts : ajouter du beurre, de la crème, des allumettes de bacon ou
-du fromage en dés ou râpé.
diff --git a/recettes/plats/tarte-oignons.md b/recettes/plats/tarte-oignons.md
deleted file mode 100644
index 7176c0d..0000000
--- a/recettes/plats/tarte-oignons.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: Tarte aux oignons
----
-
-Ingrédients (6 parts)
-=====================
-
-- 1 pâte brisée
-- 500 g d’oignons
-- 3 œufs
-- 25 cl de crème fraîche
-- sel
-- poivre
-- muscade
-- moutarde
-- fromage
-
-Recette
-=======
-
-#. Étaler la pâte dans un moule à tarte, la piquer et appliquer la moutarde dans le fond.
-#. Dorer les oignons à la poêle, y ajouter du sel, du poivre et de la muscade.
-#. Couper le feu et ajouter la crème fraîche.
-#. Battre les œufs en mélangeant les jaunes et les blancs.
-#. Verser les oignons avec les œufs battus.
-#. Verser le mélange dans le moule.
-#. Gratiner le dessus avec du fromage.
-#. Cuire 35 minutes à 200°C.
diff --git a/recettes/plats/tartiflette.md b/recettes/plats/tartiflette.md
deleted file mode 100644
index 1e9c581..0000000
--- a/recettes/plats/tartiflette.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: Tartiflette
----
-
-# Ingrédients (4 personnes)
-
-- 12 pommes de terre moyennes
-- 400 g de tofu
-- 25 cl de crème fraîche
-- 1 cube de bouillon de légumes
-- 1 oignon
-- 10 cl de vin blanc
-- 1 reblochon
-- sauce soja
-
-# Recette
-
-#. Couper les pommes de terre en cubes et les cuire.
-#. Mettre le cube de bouillon à fondre dans un verre d’eau bouillante.
-#. Émincer très finement les oignons.
-#. Couper le tofu en petits cubes.
-#. Faire revenir les oignons et le tofu avec la sauce soja jusqu’à ce que les oignons soient fondants.
-#. Déglacer avec le vin blanc et laisser réduire.
-#. Ajouter la crème et attendre l’ébulition.
-#. Ajouter le verre de bouillon puis laisser mijoter à feu très doux.
-#. Mettre les pommes de terre dans un plat, ajouter la sauce puis une couche de tranches de reblochon.
-#. Cuire 20 min au four à 200°C.
diff --git a/recettes/plats/tortillas.md b/recettes/plats/tortillas.md
deleted file mode 100644
index 26d6da1..0000000
--- a/recettes/plats/tortillas.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: Tortillas
----
-
-# Ingrédients (2 personnes)
-
-- 250 g de farine de blé
-- 5 cl d’huile de tournesol
-- 13 cl d’eau tiède salée (dépend de la farine)
-- 1 cuillère à café rase de sel
-
-# Recette
-
-#. Mélanger la farine, le sel et l’huile.
-#. Ajouter l’eau tiède salée jusqu’à former une boule lisse mais non collante.
-#. Entourer la pâte dans torchon propre et laisser reposer 1 heure.
-#. Découper la boule en 3 fois le nombre de personnes.
-#. Étaler chaque boule pour obtenir un crêpe épaisse d’1 diamètre de 20 cm environ.
-#. Cuire les tortillas à la poêle sans matières grasses, ne pas les laisser dorer.
diff --git a/res.js b/res.js
new file mode 100644
index 0000000..25c52a9
--- /dev/null
+++ b/res.js
@@ -0,0 +1,4 @@
+var itemEntries=nodeListToArray(document.querySelectorAll(".g-Recipe ul > li")).map(function(a){return{tag:"li",node:a}}),h1=document.querySelector(".g-Recipe h1");null!==h1&&itemEntries.push({tag:"h1",node:h1});var inputs=setInputs(itemEntries);inputs.map(function(a){a.node.oninput=function(c){if(null!==c.target&&(c=parseNumber(c.target.value),void 0!==c&&""===c.before&&""===c.after)){var b=parseFloat(c.number)/a.number;inputs.map(function(a){a.node.value=(a.number*b).toString()})}}});
+function setInputs(a){for(var c=[],b=0;b<a.length;b++){var d=parseNumber(a[b].node.innerText);if(void 0!==d){var e=parsedNumberNode(a[b].tag,d),f=a[b].node.parentNode;f&&(f.replaceChild(e.all,a[b].node),c.push({number:parseFloat(d.number),node:e.number}))}}return c}
+function parsedNumberNode(a,c){a=document.createElement(a);a.appendChild(document.createTextNode(c.before));var b=document.createElement("input");b.className="g-Number";b.value=c.number;a.appendChild(b);a.appendChild(document.createTextNode(c.after));return{all:a,number:b}}
+function parseNumber(a){for(var c=0;c<a.length&&!isDigit(a.charAt(c));c++);if(c!==a.length){for(var b=c+1;b<a.length&&isDigit(a.charAt(b));b++);for(b<a.length&&("."===a.charAt(b)||","===a.charAt(b))&&b++;b<a.length&&isDigit(a.charAt(b));b++);return{before:a.substring(0,c),number:a.substring(c,b),after:a.substring(b,a.length)}}}function isDigit(a){return"0"<=a&&"9">=a}function nodeListToArray(a){var c=[];a.forEach(function(a){c.push(a)});return c};
diff --git a/seeother/index.html b/seeother/index.html
deleted file mode 100644
index 955d2c4..0000000
--- a/seeother/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
- <head>
- <meta charset="utf-8">
- </head>
- <body>
- <p>
- This website has moved to
- <a href="https://cooking.guyonvarch.me">https://cooking.guyonvarch.me</a>
- </p>
- </body>
-</html>
diff --git a/shell.nix b/shell.nix
index 71ec6df..15ea369 100644
--- a/shell.nix
+++ b/shell.nix
@@ -1,20 +1,14 @@
-with (import <nixpkgs> {});
-
-haskell.lib.buildStackProject {
- name = "myenv";
+with import (builtins.fetchTarball {
+ url = https://github.com/NixOS/nixpkgs/archive/19.09.tar.gz;
+ sha256 = "0mhqhq21y5vrr1f30qd2bvydv4bbbslvyzclhw0kdxmkgg3z4c92";
+}) {};
+mkShell {
buildInputs = [
- zlib
- stack
- psc-package
- (callPackage ./nix/purescript.nix {})
- nodePackages.nodemon
+ closurecompiler
+ nodePackages.typescript
tmux
tmuxinator
- nodejs
+ zola
];
-
- shellHook = ''
- export PATH=node_modules/.bin:$PATH;
- '';
}
diff --git a/src/Main.hs b/src/Main.hs
deleted file mode 100644
index 50a562d..0000000
--- a/src/Main.hs
+++ /dev/null
@@ -1,57 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
-import Data.List (sortBy)
-import Data.Monoid (mappend)
-import Data.Ord (comparing)
-import Hakyll
-import Hakyll.Core.Item (Item (itemIdentifier))
-import System.Process (readProcess)
-import qualified System.Process as Process (rawSystem)
-
-main :: IO ()
-main = hakyllWith configuration $ do
- match "images/*" $ do
- route idRoute
- compile copyFileCompiler
-
- match "design/**" $ do
- route $ customRoute $ const "main.css"
- compile $ do
- filePath <- getResourceFilePath
- unsafeCompiler (readProcess "runghc" [ filePath ] "")
- >>= makeItem
-
- match "js/src/**" $ do
- route $ customRoute $ const "main.js"
- compile $
- unsafeCompiler (readProcess "pulp" [ "--psc-package", "build", "--optimise", "--src-path", "js" ] "")
- >>= makeItem
-
- match "recettes/**" $ do
- route $ setExtension "html"
- compile $ pandocCompiler
- >>= loadAndApplyTemplate "templates/recipe.html" defaultContext
- >>= relativizeUrls
-
- match "index.html" $ do
- route idRoute
- let context =
- listField "mainDishes" defaultContext (loadAll "recettes/plats/*") `mappend`
- listField "lowCarbDesserts" defaultContext (loadAll "recettes/desserts/hypoglucidique/*") `mappend`
- listField "highCarbDesserts" defaultContext (loadAll "recettes/desserts/hyperglucidique/*") `mappend`
- listField "cleaningRecipes" defaultContext (loadAll "recettes/nettoyage/*") `mappend`
- defaultContext
- compile $
- getResourceBody
- >>= applyAsTemplate context
- >>= loadAndApplyTemplate "templates/index.html" context
- >>= relativizeUrls
-
- match "templates/*" $ compile templateBodyCompiler
-
-configuration :: Configuration
-configuration = defaultConfiguration
- { destinationDirectory = "public"
- , deploySite = const $
- Process.rawSystem "rsync" [ "-avzh", "public/", "joris@guyonvarch.me:/var/www/cooking.guyonvarch.me" ]
- }
diff --git a/stack.yaml b/stack.yaml
deleted file mode 100644
index edf25f8..0000000
--- a/stack.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-resolver: lts-13.18
-
-extra-deps:
- - hakyll-4.12.5.1@sha256:d1948b265e6628bcb6875571212f9acefe23179c73ca4f87f417b290ff381ca6
- - lrucache-1.2.0.1@sha256:18fc3d7052012c7ab3cd395160f34b53c5e1ec5379cc45185baf35b90ffadc2e
diff --git a/images/icon.png b/static/icon.png
index 2bb22d2..2bb22d2 100644
--- a/images/icon.png
+++ b/static/icon.png
Binary files differ
diff --git a/static/main.css b/static/main.css
new file mode 100644
index 0000000..5aa2008
--- /dev/null
+++ b/static/main.css
@@ -0,0 +1,136 @@
+:root {
+ --color-title: rgb(113, 68, 30);
+ --color-link: rgb(13, 13, 81);
+ --color-number: rgb(230, 230, 230);
+ --base-font-size: 18px;
+}
+
+@media all and (max-width: 800px) {
+ :root {
+ --base-font-size: 14px;
+ }
+}
+
+html {
+ font-size: var(--base-font-size);
+}
+
+body {
+ margin: 0;
+}
+
+.g-Page {
+ max-width: 800px;
+ margin: 0 auto;
+}
+
+.g-Page__Header {
+ font-size: 2.5rem;
+ font-weight: bold;
+ color: var(--color-title);
+ margin: 0 auto 2rem;
+ padding: 1rem 0;
+ max-width: 800px;
+ border-bottom: 0.2rem solid #884433;
+ text-align: center;
+}
+
+.g-Link {
+ text-decoration: none;
+ color: var(--color-link);
+}
+
+.g-Link:hover {
+ text-decoration: underline;
+}
+
+@keyframes appear {
+ from {
+ transform: translateX(20px);
+ opacity: 0;
+ }
+ to {
+ transform: translateX(0px);
+ }
+}
+
+.g-Page__Content {
+ animation: appear 0.2s;
+ margin: 1rem;
+}
+
+.g-Page__Recipes {
+ list-style-type: none;
+}
+
+.g-Page__Recipe {
+ margin-bottom: 1rem;
+}
+
+h1, h2, h3 {
+ color: var(--color-title);
+}
+
+h1 {
+ font-size: 1.5rem;
+ margin-top: 1.5rem;
+}
+
+h2 {
+ font-size: 1.1rem;
+ margin-top: 1rem;
+}
+
+/* Recipe */
+
+.g-Number {
+ font-size: inherit;
+ background-color: var(--color-number);
+ border-radius: 5px;
+ padding: 2px;
+ border-style: none;
+ text-align: center;
+ width: 5rem;
+}
+
+.g-Recipe ul,
+.g-Recipe ol {
+ list-style-type: none;
+ padding-left: 1rem;
+}
+
+.g-Recipe li {
+ margin-bottom: 1rem;
+ line-height: 1.5rem;
+}
+
+.g-Recipe ol,
+.g-Recipe ul {
+ margin-top: 1.5rem;
+}
+
+.g-Recipe ol {
+ counter-reset: ol;
+}
+
+.g-Recipe ol > li {
+ padding-left: 3rem;
+ position: relative;
+ text-align: justify;
+}
+
+.g-Recipe ol > li::before {
+ display: inline;
+ position: absolute;
+ top: 0;
+ left: 0;
+ counter-increment: ol;
+ content: counter(ol);
+ margin-right: (px 10);
+ background-color: var(--color-title);
+ color: white;
+ border-radius: 50%;
+ font-weight: bold;
+ width: 1.5rem;
+ text-align: center;
+}
diff --git a/templates/index.html b/templates/index.html
index e6faafd..74bf36f 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -1,15 +1,80 @@
<!DOCTYPE html>
<html lang="fr">
+
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
- <title>$title$</title>
+ <title>Recettes</title>
<link rel="stylesheet" href="/main.css" />
- <link rel="icon" href="/images/icon.png">
+ <link rel="icon" href="/icon.png">
</head>
- <body>
- <div class="header">$title$</div>
- <div id="content">$body$</div>
- <script src="/main.js"></script>
+
+ <body class="g-Page">
+
+ <header class="g-Page__Header">
+ Recettes
+ </header>
+
+ <main class="g-Page__Content">
+ {% block content %}
+
+ <h1>Plats</h1>
+
+ <ul class="g-Page__Recipes">
+ {% set section = get_section(path = "plats/_index.md") %}
+ {% for page in section.pages | sort(attribute = "title") %}
+ <li class="g-Page__Recipe">
+ <a class="g-Link" href="{{ page.permalink }}">
+ {{ page.title }}
+ </a>
+ </li>
+ {% endfor %}
+ </ul>
+
+ <h1>Desserts</h1>
+
+ <h2>Hypoglucidiques</h2>
+
+ <ul class="g-Page__Recipes">
+ {% set section = get_section(path = "desserts/hypoglucidique/_index.md") %}
+ {% for page in section.pages | sort(attribute = "title") %}
+ <li class="g-Page__Recipe">
+ <a class="g-Link" href="{{ page.permalink }}">
+ {{ page.title }}
+ </a>
+ </li>
+ {% endfor %}
+ </ul>
+
+ <h2>Hyperglucidiques</h2>
+
+ <ul class="g-Page__Recipes">
+ {% set section = get_section(path = "desserts/hyperglucidique/_index.md") %}
+ {% for page in section.pages | sort(attribute = "title") %}
+ <li class="g-Page__Recipe">
+ <a class="g-Link" href="{{ page.permalink }}">
+ {{ page.title }}
+ </a>
+ </li>
+ {% endfor %}
+ </ul>
+
+ <h1>Nettoyage</h1>
+
+ <ul class="g-Page__Recipes">
+ {% set section = get_section(path = "nettoyage/_index.md") %}
+ {% for page in section.pages | sort(attribute = "title") %}
+ <li class="g-Page__Recipe">
+ <a class="g-Link" href="{{ page.permalink }}">
+ {{ page.title }}
+ </a>
+ </li>
+ {% endfor %}
+ </ul>
+
+ {% endblock content %}
+ </main>
+
</body>
+
</html>
diff --git a/templates/page.html b/templates/page.html
new file mode 100644
index 0000000..370eaf0
--- /dev/null
+++ b/templates/page.html
@@ -0,0 +1,15 @@
+{% extends "index.html" %}
+
+{% block content %}
+
+ <a class="g-Link" href="/">
+ ← Retour à l’accueil
+ </a>
+
+ <div class="g-Recipe">
+ {{ page.content | safe }}
+ </div>
+
+ <script src="/main.js"></script>
+
+{% endblock content %}
diff --git a/templates/recipe-list.html b/templates/recipe-list.html
deleted file mode 100644
index 64ae045..0000000
--- a/templates/recipe-list.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<h1>Plats</h1>
-
-<ul>
- $for(mainDishes)$
- <li>
- <a href="$url$">$title$</a>
- </li>
- $endfor$
-</ul>
-
-<h1>Desserts hypoglucidiques</h1>
-
-<ul>
- $for(lowCarbDesserts)$
- <li>
- <a href="$url$">$title$</a>
- </li>
- $endfor$
-</ul>
-
-<h1>Desserts hyperglucidiques</h1>
-
-<ul>
- $for(highCarbDesserts)$
- <li>
- <a href="$url$">$title$</a>
- </li>
- $endfor$
-</ul>
-
-<h1>Nettoyage</h1>
-
-<ul>
- $for(cleaningRecipes)$
- <li>
- <a href="$url$">$title$</a>
- </li>
- $endfor$
-</ul>
diff --git a/templates/recipe.html b/templates/recipe.html
deleted file mode 100644
index 6585f33..0000000
--- a/templates/recipe.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-<html lang="fr">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>$title$</title>
- <link rel="stylesheet" href="/main.css" />
- <link rel="icon" href="/images/icon.png">
- </head>
- <body>
- <div class="header">$title$</div>
- <a href="/">⭠ Retour</a>
- <div id="content">$body$</div>
- <script src="/main.js"></script>
- </body>
-</html>
diff --git a/templates/section.html b/templates/section.html
new file mode 100644
index 0000000..fe1da7f
--- /dev/null
+++ b/templates/section.html
@@ -0,0 +1,4 @@
+{% extends "index.html" %}
+
+{% block content %}
+{% endblock content %}