From 0ce8744897b9aa13ea568a6985da9570e4aca90b Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 2 Feb 2020 13:53:54 +0100 Subject: Use zola generator - Use CSS instead of Haskell with Clay - Use TypeScript instead of PureScript --- .envrc | 1 - .gitignore | 9 +- .gitlab-ci.yml | 8 - .tmuxinator.yml | 8 +- Makefile | 38 - README.md | 22 +- build | 2 - config.toml | 15 + content/desserts/_index.md | 2 + content/desserts/hyperglucidique/_index.md | 2 + .../desserts/hyperglucidique/brownie-aux-noix.md | 24 + content/desserts/hyperglucidique/che-chuoi.md | 27 + content/desserts/hyperglucidique/cheesecake.md | 30 + content/desserts/hyperglucidique/cookies.md | 32 + .../desserts/hyperglucidique/creme-aux-oeufs.md | 26 + content/desserts/hyperglucidique/creme-chocolat.md | 21 + content/desserts/hyperglucidique/crepes.md | 25 + .../hyperglucidique/financiers-sortosville.md | 27 + content/desserts/hyperglucidique/financiers.md | 20 + .../desserts/hyperglucidique/fondant-chocolat.md | 24 + .../desserts/hyperglucidique/galette-des-rois.md | 27 + .../hyperglucidique/gateau-aux-noisettes.md | 20 + content/desserts/hyperglucidique/shortbread.md | 45 + content/desserts/hypoglucidique/_index.md | 2 + content/desserts/hypoglucidique/choco-cacahuete.md | 24 + content/desserts/hypoglucidique/fudge.md | 28 + content/desserts/hypoglucidique/mousse-chocolat.md | 22 + content/nettoyage/_index.md | 2 + content/nettoyage/lessive-au-lierre.md | 23 + content/nettoyage/lessive-au-savon-de-marseille.md | 24 + content/plats/_index.md | 2 + content/plats/galettes-2.md | 42 + content/plats/galettes.md | 30 + content/plats/pate-brisee-farine-complete.md | 26 + content/plats/pate-brisee.md | 19 + content/plats/riz-vinaigre-casserole.md | 53 + content/plats/riz-vinaigre-vita-vapeur.md | 32 + content/plats/soupe-potimarron-butternut.md | 28 + content/plats/tarte-oignons.md | 28 + content/plats/tarte-viande.md | 54 + content/plats/tartiflette.md | 27 + content/plats/tortillas.md | 19 + cooking.cabal | 14 - deploy | 18 + design/Main.hs | 126 - dev | 33 + images/icon.png | Bin 3110 -> 0 bytes index.html | 5 - js/src/Dom.js | 12 - js/src/Dom.purs | 88 - js/src/EditableNumber.purs | 55 - js/src/Main.purs | 50 - js/src/Number.purs | 22 - js/src/Parser.purs | 76 - js/test/Main.purs | 61 - main.ts | 158 + nix/purescript.nix | 49 - package-lock.json | 3339 -------------------- package.json | 6 - psc-package.json | 18 - .../desserts/hyperglucidique/brownie-aux-noix.md | 24 - recettes/desserts/hyperglucidique/che-chuoi.md | 27 - recettes/desserts/hyperglucidique/cheesecake.md | 30 - recettes/desserts/hyperglucidique/cookies.md | 32 - .../desserts/hyperglucidique/creme-aux-oeufs.md | 26 - .../desserts/hyperglucidique/creme-chocolat.md | 21 - recettes/desserts/hyperglucidique/crepes.md | 25 - .../hyperglucidique/financiers-sortosville.md | 27 - recettes/desserts/hyperglucidique/financiers.md | 20 - .../desserts/hyperglucidique/fondant-chocolat.md | 24 - .../desserts/hyperglucidique/galette-des-rois.md | 27 - recettes/desserts/hyperglucidique/galettes.md | 42 - .../hyperglucidique/gateau-aux-noisettes.md | 20 - recettes/desserts/hyperglucidique/shortbread.md | 45 - .../desserts/hypoglucidique/choco-cacahuete.md | 24 - recettes/desserts/hypoglucidique/fudge.md | 28 - .../desserts/hypoglucidique/mousse-chocolat.md | 22 - recettes/nettoyage/lessive-au-lierre.md | 23 - .../nettoyage/lessive-au-savon-de-marseille.md | 24 - recettes/plats/galettes.md | 30 - recettes/plats/pate-brisee-farine-complete.md | 26 - recettes/plats/pate-brisee.md | 19 - recettes/plats/riz-vinaigre-casserole.md | 53 - recettes/plats/riz-vinaigre-vita-vapeur.md | 32 - recettes/plats/soupe-potimarron-butternut.md | 28 - recettes/plats/tarte-oignons.md | 28 - recettes/plats/tarte-viande.md | 54 - recettes/plats/tartiflette.md | 27 - recettes/plats/tortillas.md | 19 - res.js | 4 + seeother/index.html | 11 - shell.nix | 22 +- src/Main.hs | 57 - stack.yaml | 5 - static/icon.png | Bin 0 -> 3110 bytes static/main.css | 136 + templates/index.html | 77 +- templates/page.html | 15 + templates/recipe-list.html | 39 - templates/recipe.html | 16 - templates/section.html | 4 + 101 files changed, 1314 insertions(+), 4969 deletions(-) delete mode 100644 .envrc delete mode 100644 .gitlab-ci.yml delete mode 100644 Makefile delete mode 100755 build create mode 100644 config.toml create mode 100644 content/desserts/_index.md create mode 100644 content/desserts/hyperglucidique/_index.md create mode 100644 content/desserts/hyperglucidique/brownie-aux-noix.md create mode 100644 content/desserts/hyperglucidique/che-chuoi.md create mode 100644 content/desserts/hyperglucidique/cheesecake.md create mode 100644 content/desserts/hyperglucidique/cookies.md create mode 100644 content/desserts/hyperglucidique/creme-aux-oeufs.md create mode 100644 content/desserts/hyperglucidique/creme-chocolat.md create mode 100644 content/desserts/hyperglucidique/crepes.md create mode 100644 content/desserts/hyperglucidique/financiers-sortosville.md create mode 100644 content/desserts/hyperglucidique/financiers.md create mode 100644 content/desserts/hyperglucidique/fondant-chocolat.md create mode 100644 content/desserts/hyperglucidique/galette-des-rois.md create mode 100644 content/desserts/hyperglucidique/gateau-aux-noisettes.md create mode 100644 content/desserts/hyperglucidique/shortbread.md create mode 100644 content/desserts/hypoglucidique/_index.md create mode 100644 content/desserts/hypoglucidique/choco-cacahuete.md create mode 100644 content/desserts/hypoglucidique/fudge.md create mode 100644 content/desserts/hypoglucidique/mousse-chocolat.md create mode 100644 content/nettoyage/_index.md create mode 100644 content/nettoyage/lessive-au-lierre.md create mode 100644 content/nettoyage/lessive-au-savon-de-marseille.md create mode 100644 content/plats/_index.md create mode 100644 content/plats/galettes-2.md create mode 100644 content/plats/galettes.md create mode 100644 content/plats/pate-brisee-farine-complete.md create mode 100644 content/plats/pate-brisee.md create mode 100644 content/plats/riz-vinaigre-casserole.md create mode 100644 content/plats/riz-vinaigre-vita-vapeur.md create mode 100644 content/plats/soupe-potimarron-butternut.md create mode 100644 content/plats/tarte-oignons.md create mode 100644 content/plats/tarte-viande.md create mode 100644 content/plats/tartiflette.md create mode 100644 content/plats/tortillas.md delete mode 100644 cooking.cabal create mode 100755 deploy delete mode 100644 design/Main.hs create mode 100755 dev delete mode 100644 images/icon.png delete mode 100644 index.html delete mode 100644 js/src/Dom.js delete mode 100644 js/src/Dom.purs delete mode 100644 js/src/EditableNumber.purs delete mode 100644 js/src/Main.purs delete mode 100644 js/src/Number.purs delete mode 100644 js/src/Parser.purs delete mode 100644 js/test/Main.purs create mode 100644 main.ts delete mode 100644 nix/purescript.nix delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 psc-package.json delete mode 100644 recettes/desserts/hyperglucidique/brownie-aux-noix.md delete mode 100644 recettes/desserts/hyperglucidique/che-chuoi.md delete mode 100644 recettes/desserts/hyperglucidique/cheesecake.md delete mode 100644 recettes/desserts/hyperglucidique/cookies.md delete mode 100644 recettes/desserts/hyperglucidique/creme-aux-oeufs.md delete mode 100644 recettes/desserts/hyperglucidique/creme-chocolat.md delete mode 100644 recettes/desserts/hyperglucidique/crepes.md delete mode 100644 recettes/desserts/hyperglucidique/financiers-sortosville.md delete mode 100644 recettes/desserts/hyperglucidique/financiers.md delete mode 100644 recettes/desserts/hyperglucidique/fondant-chocolat.md delete mode 100644 recettes/desserts/hyperglucidique/galette-des-rois.md delete mode 100644 recettes/desserts/hyperglucidique/galettes.md delete mode 100644 recettes/desserts/hyperglucidique/gateau-aux-noisettes.md delete mode 100644 recettes/desserts/hyperglucidique/shortbread.md delete mode 100644 recettes/desserts/hypoglucidique/choco-cacahuete.md delete mode 100644 recettes/desserts/hypoglucidique/fudge.md delete mode 100644 recettes/desserts/hypoglucidique/mousse-chocolat.md delete mode 100644 recettes/nettoyage/lessive-au-lierre.md delete mode 100644 recettes/nettoyage/lessive-au-savon-de-marseille.md delete mode 100644 recettes/plats/galettes.md delete mode 100644 recettes/plats/pate-brisee-farine-complete.md delete mode 100644 recettes/plats/pate-brisee.md delete mode 100644 recettes/plats/riz-vinaigre-casserole.md delete mode 100644 recettes/plats/riz-vinaigre-vita-vapeur.md delete mode 100644 recettes/plats/soupe-potimarron-butternut.md delete mode 100644 recettes/plats/tarte-oignons.md delete mode 100644 recettes/plats/tarte-viande.md delete mode 100644 recettes/plats/tartiflette.md delete mode 100644 recettes/plats/tortillas.md create mode 100644 res.js delete mode 100644 seeother/index.html delete mode 100644 src/Main.hs delete mode 100644 stack.yaml create mode 100644 static/icon.png create mode 100644 static/main.css create mode 100644 templates/page.html delete mode 100644 templates/recipe-list.html delete mode 100644 templates/recipe.html create mode 100644 templates/section.html 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/content/desserts/hyperglucidique/che-chuoi.md b/content/desserts/hyperglucidique/che-chuoi.md new file mode 100644 index 0000000..054f275 --- /dev/null +++ b/content/desserts/hyperglucidique/che-chuoi.md @@ -0,0 +1,27 @@ ++++ +title = "Che chuôi" ++++ + +Ingrédients (6 personnes) +========================= + +- 4 bananes mûres Cavendish ou plantains noires +- 400 mL de lait de coco +- 135 mL d’eau +- 2 CS bombées de perles de tapioca (gros grains) +- 3 CS de sucre cassonnade +- 0.5 cc de sel +- 1 cuillère à café d’extrait de vanille (ou 1 gousse de vanille fendue) +- cacahuètes grillées non salées +- sésame blanc grillé + +Recette +======= + +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/content/desserts/hyperglucidique/financiers-sortosville.md b/content/desserts/hyperglucidique/financiers-sortosville.md new file mode 100644 index 0000000..35f94c0 --- /dev/null +++ b/content/desserts/hyperglucidique/financiers-sortosville.md @@ -0,0 +1,27 @@ ++++ +title = "Financiers de Sortosville" ++++ + +Ingrédients (20 mini financiers) +================================ + +- 70 g d’amande en poudre +- 70 g de beurre +- 50 g de farine +- 50 g de sucre +- 40 g de miel +- 30 g de compote de pomme +- 4 blancs d’œufs +- 1 cc de vanille liquide +- arôme d’amande amer + +Recette +======= + +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. +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/content/desserts/hyperglucidique/financiers.md b/content/desserts/hyperglucidique/financiers.md new file mode 100644 index 0000000..060b16c --- /dev/null +++ b/content/desserts/hyperglucidique/financiers.md @@ -0,0 +1,20 @@ ++++ +title = "Financiers" ++++ + +Ingrédients +=========== + +- 90 g d’amande +- 100 g de sucre +- 50 g de farine +- 75 g de beurre noisette +- 10,5 cc de vanille +- 1 pincée de sel +- 4 blancs d’œufs + +Recette +======= + +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/content/desserts/hypoglucidique/fudge.md b/content/desserts/hypoglucidique/fudge.md new file mode 100644 index 0000000..1b88b28 --- /dev/null +++ b/content/desserts/hypoglucidique/fudge.md @@ -0,0 +1,28 @@ ++++ +title = "Fudge" ++++ + +Ingrédients (24 parts) +====================== + +- 480 mL de crème fleurette 30% +- 1 cc d’extrait de vanille +- 90 g de beurre +- 90 g de chocolat noir à 70% de cacao ou plus +- Arôme en option (noix de coco, cannelle, café, menthe…) + +Recette +======= + +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). +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. +4. Verser dans un plat rectangulaire et laisser refroidir au réfrigérateur +pendant une nuit. +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/content/plats/galettes-2.md b/content/plats/galettes-2.md new file mode 100644 index 0000000..0e07941 --- /dev/null +++ b/content/plats/galettes-2.md @@ -0,0 +1,42 @@ ++++ +title = "Galettes (2)" ++++ + +Ingrédients +=========== + +1ère partie +----------- + +- 300 g de farine de sarrasin +- 2 CS de farine de froment +- 1 cc de sel +- 300 ml d’eau + +2ème partie +----------- + +- 1 CS rase de miel (si possible du miel de fleurs de sarrasin) +- 1 œuf +- 200 ml de lait +- 100 ml d’eau + +Recette +======= + +1ère partie +----------- + +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 +----------- + +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/content/plats/tarte-viande.md b/content/plats/tarte-viande.md new file mode 100644 index 0000000..413053b --- /dev/null +++ b/content/plats/tarte-viande.md @@ -0,0 +1,54 @@ ++++ +title = "Tarte à la viande" ++++ + +Ingrédients (6 parts) +===================== + +Garniture +--------- + +- 1 oignon jaune +- 1 gousse d’aïl +- 2 CS de beurre ou d’huile d’olive +- 600 g de bœuf ou d’agneau haché +- 1 CS d’origan ou de basilique séché +- 4 CS de concentré de tomate ou de pesto +- 120 mL d’eau +- sel et poivre + +Pâte +---- + +- 180 g de farine d’amande +- 60 mL de graines de sésame +- 60 mL de farine de coco +- 1 CS d’enveloppe de psyllium en poudre +- 1 cc de levure +- 1 pincée de sel +- 3 CS d’huile d’olive ou d’huile de coco +- 1 œuf +- 60 mL d’eau + +Gratin +------ + +- 225 g de fromage blanc +- 200 g de fromage rapé + +Recette +======= + +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. +2. Ajouter le concentré de tomate ou le pesto, puis ajouter l’eau. Laisser +mijoter pendant au moins 20 minutes à feu doux. +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. +4. Précuire la pâte pendant 10 à 15 minutes. Ajouter ensuite la garniture et +le gratin par dessus. +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/images/icon.png b/images/icon.png deleted file mode 100644 index 2bb22d2..0000000 Binary files a/images/icon.png and /dev/null differ 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('.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) { + 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): Array { + const xs: Array = []; + 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/che-chuoi.md b/recettes/desserts/hyperglucidique/che-chuoi.md deleted file mode 100644 index 5e739e1..0000000 --- a/recettes/desserts/hyperglucidique/che-chuoi.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Che chuôi ---- - -Ingrédients (6 personnes) -========================= - -- 4 bananes mûres Cavendish ou plantains noires -- 400 mL de lait de coco -- 135 mL d’eau -- 2 CS bombées de perles de tapioca (gros grains) -- 3 CS de sucre cassonnade -- 0.5 cc de sel -- 1 cuillère à café d’extrait de vanille (ou 1 gousse de vanille fendue) -- cacahuètes grillées non salées -- sésame blanc grillé - -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. 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/financiers-sortosville.md b/recettes/desserts/hyperglucidique/financiers-sortosville.md deleted file mode 100644 index dd8b869..0000000 --- a/recettes/desserts/hyperglucidique/financiers-sortosville.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Financiers de Sortosville ---- - -Ingrédients (20 mini financiers) -================================ - -- 70 g d’amande en poudre -- 70 g de beurre -- 50 g de farine -- 50 g de sucre -- 40 g de miel -- 30 g de compote de pomme -- 4 blancs d’œufs -- 1 cc de vanille liquide -- arôme d’amande amer - -Recette -======= - -#. Faire fondre le beurre et le laisser refroidir. -#. 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. diff --git a/recettes/desserts/hyperglucidique/financiers.md b/recettes/desserts/hyperglucidique/financiers.md deleted file mode 100644 index aa2b731..0000000 --- a/recettes/desserts/hyperglucidique/financiers.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Financiers ---- - -Ingrédients -=========== - -- 90 g d’amande -- 100 g de sucre -- 50 g de farine -- 75 g de beurre noisette -- 10,5 cc de vanille -- 1 pincée de sel -- 4 blancs d’œufs - -Recette -======= - -#. Mélanger le tout. -#. Cuire 10 minutes au four à 200°C. 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/galettes.md b/recettes/desserts/hyperglucidique/galettes.md deleted file mode 100644 index f7bd235..0000000 --- a/recettes/desserts/hyperglucidique/galettes.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Galettes ---- - -Ingrédients -=========== - -1ère partie ------------ - -- 300 g de farine de sarrasin -- 2 CS de farine de froment -- 1 cc de sel -- 300 ml d’eau - -2ème partie ------------ - -- 1 CS rase de miel (si possible du miel de fleurs de sarrasin) -- 1 œuf -- 200 ml de lait -- 100 ml d’eau - -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. - -2ème partie ------------ - -#. Ajouter le miel et l’œuf. -#. Battre. -#. Ajouter le lait et l’eau. -#. Mélanger. 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/fudge.md b/recettes/desserts/hypoglucidique/fudge.md deleted file mode 100644 index 2c0bfd6..0000000 --- a/recettes/desserts/hypoglucidique/fudge.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Fudge ---- - -Ingrédients (24 parts) -====================== - -- 480 mL de crème fleurette 30% -- 1 cc d’extrait de vanille -- 90 g de beurre -- 90 g de chocolat noir à 70% de cacao ou plus -- Arôme en option (noix de coco, cannelle, café, menthe…) - -Recette -======= - -#. 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. -Ajouter éventuellement un arôme. -#. 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. 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/tarte-viande.md b/recettes/plats/tarte-viande.md deleted file mode 100644 index 46542de..0000000 --- a/recettes/plats/tarte-viande.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Tarte à la viande ---- - -Ingrédients (6 parts) -===================== - -Garniture ---------- - -- 1 oignon jaune -- 1 gousse d’aïl -- 2 CS de beurre ou d’huile d’olive -- 600 g de bœuf ou d’agneau haché -- 1 CS d’origan ou de basilique séché -- 4 CS de concentré de tomate ou de pesto -- 120 mL d’eau -- sel et poivre - -Pâte ----- - -- 180 g de farine d’amande -- 60 mL de graines de sésame -- 60 mL de farine de coco -- 1 CS d’enveloppe de psyllium en poudre -- 1 cc de levure -- 1 pincée de sel -- 3 CS d’huile d’olive ou d’huile de coco -- 1 œuf -- 60 mL d’eau - -Gratin ------- - -- 225 g de fromage blanc -- 200 g de fromage rapé - -Recette -======= - -#. Préchauffer le four à 175°C. -#. 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 -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 -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 -le gratin par dessus. -#. Cuire 30 à 40 minutes sur la grille du dessous jusqu’à ce que la tarte soit -dorée. 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}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 @@ - - - - - -

- This website has moved to - https://cooking.guyonvarch.me -

- - diff --git a/shell.nix b/shell.nix index 71ec6df..15ea369 100644 --- a/shell.nix +++ b/shell.nix @@ -1,20 +1,14 @@ -with (import {}); - -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/static/icon.png b/static/icon.png new file mode 100644 index 0000000..2bb22d2 Binary files /dev/null and b/static/icon.png 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 @@ + - $title$ + Recettes - + - -
$title$
-
$body$
- + + + +
+ Recettes +
+ +
+ {% block content %} + +

Plats

+ +
    + {% set section = get_section(path = "plats/_index.md") %} + {% for page in section.pages | sort(attribute = "title") %} +
  • + + {{ page.title }} + +
  • + {% endfor %} +
+ +

Desserts

+ +

Hypoglucidiques

+ +
    + {% set section = get_section(path = "desserts/hypoglucidique/_index.md") %} + {% for page in section.pages | sort(attribute = "title") %} +
  • + + {{ page.title }} + +
  • + {% endfor %} +
+ +

Hyperglucidiques

+ +
    + {% set section = get_section(path = "desserts/hyperglucidique/_index.md") %} + {% for page in section.pages | sort(attribute = "title") %} +
  • + + {{ page.title }} + +
  • + {% endfor %} +
+ +

Nettoyage

+ +
    + {% set section = get_section(path = "nettoyage/_index.md") %} + {% for page in section.pages | sort(attribute = "title") %} +
  • + + {{ page.title }} + +
  • + {% endfor %} +
+ + {% endblock content %} +
+ + 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 %} + + + ← Retour à l’accueil + + +
+ {{ page.content | safe }} +
+ + + +{% 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 @@ -

Plats

- -
    - $for(mainDishes)$ -
  • - $title$ -
  • - $endfor$ -
- -

Desserts hypoglucidiques

- -
    - $for(lowCarbDesserts)$ -
  • - $title$ -
  • - $endfor$ -
- -

Desserts hyperglucidiques

- -
    - $for(highCarbDesserts)$ -
  • - $title$ -
  • - $endfor$ -
- -

Nettoyage

- -
    - $for(cleaningRecipes)$ -
  • - $title$ -
  • - $endfor$ -
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 @@ - - - - - - $title$ - - - - -
$title$
- ⭠ Retour -
$body$
- - - 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 %} -- cgit v1.2.3