From 204ff7d06f8bb966a527e19da242f38e97730c87 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Mon, 6 May 2019 15:05:04 -0400 Subject: [PATCH 01/28] Added categoryQueryAr and categoryQueryEn widgets. Must update curl.json with endpoints. --- source/json/widgets.json | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/source/json/widgets.json b/source/json/widgets.json index af3defa..4c1b46c 100644 --- a/source/json/widgets.json +++ b/source/json/widgets.json @@ -1,4 +1,4 @@ -{ +{ "partners": { "title": "Partners", "sourceType": "local", @@ -14,7 +14,7 @@ "name": "New York University Abu Dhabi", "logo": "images/logos/nyuad.png", "url": "http://www.nyu.edu/" - }, + }, { "id": "columbia", "name": "Columbia University in the City of New York", @@ -26,25 +26,25 @@ "name": "Cornell University", "logo": "images/logos/cornell.png", "url": "http://www.cornell.edu/" - }, + }, { "id": "princeton", "name": "Princeton University", "logo": "images/logos/princeton.png", "url": "https://www.princeton.edu/" - }, + }, { "id": "aub", "name": "American University of Beirut", "logo": "images/logos/aub.png", "url": "http://www.aub.edu.lb/" - }, + }, { "id": "auc", "name": "The American University in Cairo", "logo": "images/logos/auc.png", "url": "http://www.aucegypt.edu/" - }, + }, { "id": "uae", "name": "United Arab Emirates National Archives", @@ -53,7 +53,7 @@ } ] }, - "featuredTitlesAll": { + "featuredTitlesAll": { "titleEn": "Featured Titles", "titleAr": "من العناوين المعروضة", "language_code" : "en", @@ -61,12 +61,20 @@ "sourceType": "json", "source": "source/json/datasources/featuredTitlesAll.json" }, - "frontCountId": { + "frontCountId": { "sourceType": "json", "source": "source/json/datasources/frontCountId.json" }, - "subjectCount": { + "subjectCount": { "sourceType": "json", "source": "source/json/datasources/subjectCount.json" + }, + "categoryQueryEn": { + "sourceType": "json", + "source": "source/json/datasources/categoryQueryEn.json" + }, + "categoryQueryAr": { + "sourceType": "json", + "source": "source/json/datasources/categoryQueryAr.json" } } From 599cd6b9a44350816d8511fee2ce075e374a524d Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Mon, 6 May 2019 15:09:29 -0400 Subject: [PATCH 02/28] Change weight from 4 to 5. Browse category tab goes before this entry --- source/json/pages/searchcollections.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/json/pages/searchcollections.json b/source/json/pages/searchcollections.json index 1474d58..e6deaae 100644 --- a/source/json/pages/searchcollections.json +++ b/source/json/pages/searchcollections.json @@ -13,7 +13,7 @@ "menu": [{ "context": "navbar", "label": "Search", - "weight": 4 + "weight": 5 }], "route": "/searchcollections/index.html", "bodyClass": "search" From 79d09a63c5ddfacdf0377a14581d0c4f48344c19 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Mon, 6 May 2019 15:10:55 -0400 Subject: [PATCH 03/28] New page 'Browse by Category' --- source/json/pages/browsebycategory.json | 43 ++++++++++++++++++++ source/views/browsebycategory.mustache | 54 +++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 source/json/pages/browsebycategory.json create mode 100644 source/views/browsebycategory.mustache diff --git a/source/json/pages/browsebycategory.json b/source/json/pages/browsebycategory.json new file mode 100644 index 0000000..f3e96e8 --- /dev/null +++ b/source/json/pages/browsebycategory.json @@ -0,0 +1,43 @@ +{ + "browsebycategory": { + "htmltitle": "Browse by Category", + "title": [{ + "language_code": "en", + "language_dir": "ltr", + "html": "Browse by Category" + }, { + "language_code": "ar", + "language_dir": "rtl", + "html": "Capicola burgdoggen" + }], + "menu": [{ + "context": "navbar", + "label": "Browse by Category", + "weight": 4 + }], + "route": "/browse-by-category/index.html", + "bodyClass": "browse-by-category", + "content": { + "categoryEn": [{ + "text": "Pancetta pork chop hamburger short loin ribeye meatloaf picanha.", + "language": "en", + "dir": "ltr", + "id": "categoryQueryEn", + "widgets": ["categoryQueryEn"] + }], + "categoryAr": [{ + "text": "Venison bacon meatloaf ribeye, alcatra jowl turkey salami pastrami.", + "language": "ar", + "dir": "rtl", + "id": "categoryQueryAr", + "widgets": ["categoryQueryAr"] + }], + "frontCount": [ + { + "id" : "frontCountId", + "widgets": ["frontCountId"] + } + ] + } + } +} diff --git a/source/views/browsebycategory.mustache b/source/views/browsebycategory.mustache new file mode 100644 index 0000000..bf7896a --- /dev/null +++ b/source/views/browsebycategory.mustache @@ -0,0 +1,54 @@ + + +{{>head}} + + {{>header}} +
+
+ {{#title}} +

{{{html}}}

+ {{/title}} +
+ + {{/content}} +
+ {{>footer}} + {{{closure}}} + + \ No newline at end of file From b4050060845645a81b06d89a83526d8cffbcea24 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Mon, 6 May 2019 15:11:41 -0400 Subject: [PATCH 04/28] 2 new metadata fields (Category/Call number) --- source/views/frontFeaturedItems.mustache | 25 +++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/source/views/frontFeaturedItems.mustache b/source/views/frontFeaturedItems.mustache index 55fa04e..04785ad 100644 --- a/source/views/frontFeaturedItems.mustache +++ b/source/views/frontFeaturedItems.mustache @@ -8,9 +8,20 @@ Author: {{ifempty sm_author "n.a."}}{{#each sm_author}}{{this}}{{/each}} +
+ Category: + {{ifempty sm_field_topic "n.a."}} + {{#each sm_field_topic}}{{this}}{{/each}} +
+
+ Call number: + {{ifempty ss_call_number "n.a."}} + {{ss_call_number}} +
+
Publisher: {{#if sm_publisher}} - {{#each sm_publisher}} {{#if this}}{{this}}{{else}}n.p.{{/if}}{{/each}}{{/if}}
+ {{#each sm_publisher}} {{#if this}}{{this}}{{else}}n.p.{{/if}}{{/each}}{{/if}} {{#if ss_publocation}}
@@ -46,6 +57,18 @@
الكاتب: {{ifempty sm_ar_author "n.a."}} {{#each sm_ar_author}}{{this}}{{/each}}
+ +
+ Bresaola: + {{ifempty sm_ar_field_topic "n.a."}} + {{#each sm_ar_field_topic}}{{this}}{{/each}} +
+
+ Alcatra: + {{ifempty ss_ar_call_number "n.a."}} + {{ss_call_number}} +
+
الناشر: {{ifempty sm_ar_publisher "n.p."}} {{#each sm_ar_publisher}}{{this}}{{/each}}
مكان النشر: {{ifempty ss_ar_publication_location "n.p."}} From be9b9f6cc9451bab25fb605ec36fbfa78a5862e8 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Mon, 6 May 2019 15:12:01 -0400 Subject: [PATCH 05/28] 2 new metadata fields (Category/Call number) --- source/views/items.hbs | 68 ++++++++++++++++++++++++++++-------------- 1 file changed, 46 insertions(+), 22 deletions(-) diff --git a/source/views/items.hbs b/source/views/items.hbs index fae3f86..699945e 100644 --- a/source/views/items.hbs +++ b/source/views/items.hbs @@ -39,30 +39,42 @@
- -
Author: + +
Author: {{ifempty sm_author "n.a."}} {{#each sm_author}}{{this}}{{/each}} -
+
+ +
+ Category: + {{ifempty sm_field_topic "n.a."}} + {{#each sm_field_topic}}{{this}}{{/each}} +
+
+ Call number: + {{ifempty ss_call_number "n.a."}} + {{ss_call_number}} +
+
Publisher: {{#if sm_publisher}} - {{#each sm_publisher}} {{#if this}}{{this}}{{else}}n.p.{{/if}}{{/each}}{{/if}}
-
Place of Publication: + {{#each sm_publisher}} {{#if this}}{{this}}{{else}}n.p.{{/if}}{{/each}}{{/if}}
+
Place of Publication: {{ifempty ss_publocation "n.p."}} - {{ss_publocation}}
+ {{ss_publocation}}
Date of Publication: {{ifempty ss_pubdate "n.d."}} - {{ss_pubdate}}
-
Date of Publication, sortable: {{iass_pubyear}}
- - {{#if zm_subject}} + {{ss_pubdate}}
+
Date of Publication, sortable: {{iass_pubyear}}
+ + {{#if zm_subject}}
Subject: {{#each zm_subject}} {{#json this}} {{name}} {{/json}} - {{/each}} + {{/each}}
{{/if}} @@ -73,33 +85,45 @@ {{name}} {{/json}} {{/each}} - +
-
+
- الكاتب: + الكاتب: {{ifempty sm_ar_author "n.a."}} {{#each sm_ar_author}}{{this}}{{/each}}
-
الناشر: + +
+ Bresaola: + {{ifempty sm_ar_field_topic "n.a."}} + {{#each sm_ar_field_topic}}{{this}}{{/each}} +
+
+ Alcatra: + {{ifempty ss_ar_call_number "n.a."}} + {{ss_call_number}} +
+ +
الناشر: {{ifempty sm_ar_publisher "n.p."}} {{#each sm_ar_publisher}}{{this}}{{/each}}
- مكان النشر: + مكان النشر: {{ifempty ss_ar_publication_location "n.p."}} {{ss_ar_publication_location}} -
-
تاريخ النشر: +
+
تاريخ النشر: {{ifempty ss_pubdate "n.d."}} - {{ss_pubdate}}
- - -
+ {{ss_pubdate}}
+ + +
{{/items}} From ea1132f7ec167bb97ad8a7dfaf8d09e2f88b5fa9 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Mon, 6 May 2019 15:15:13 -0400 Subject: [PATCH 06/28] Added 'category' as value to filter in search form --- source/views/search_form_adv.mustache | 1 + 1 file changed, 1 insertion(+) diff --git a/source/views/search_form_adv.mustache b/source/views/search_form_adv.mustache index aec14d9..c77d983 100644 --- a/source/views/search_form_adv.mustache +++ b/source/views/search_form_adv.mustache @@ -7,6 +7,7 @@ + From b48ecb1c9fc5108fc0e1602a2b07ac9aab88f1b5 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Mon, 6 May 2019 15:55:58 -0400 Subject: [PATCH 07/28] Update search.js to display 'results for Category matches' message --- source/js/search.js | 90 +++++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/source/js/search.js b/source/js/search.js index 79aa337..2bf3a8f 100644 --- a/source/js/search.js +++ b/source/js/search.js @@ -35,6 +35,7 @@ YUI().use( query = (req.query.q) ? req.query.q : '', scopeIs = (req.query.scope) ? req.query.scope : defaultScope, provider = (req.query.provider) ? req.query.provider : '', + category = (req.query.category) ? req.query.category : '', author = (req.query.author) ? req.query.author : '', title = (req.query.title) ? req.query.title : '', publisher = (req.query.publisher) ? req.query.publisher : '', @@ -61,6 +62,7 @@ YUI().use( scopeIs: scopeIs, q: removeQueryDiacritics(query), provider: removeQueryDiacritics(provider).toLowerCase(), + category: removeQueryDiacritics(category).toLowerCase(), author: removeQueryDiacritics(author).toLowerCase(), title: removeQueryDiacritics(title).toLowerCase(), publisher: removeQueryDiacritics(publisher).toLowerCase(), @@ -555,7 +557,7 @@ YUI().use( rowsPerPage = rppData.get('value'), numfound = Y.one('.numfound').get('innerHTML'), page = 1; - + QueryString.page = page; QueryString.rpp = rowsPerPage; //Y.log("onSelectChangeRpp: QueryString.rowsPerPage " + QueryString.rpp); @@ -689,7 +691,7 @@ YUI().use( if (totalRecords > rowsPerPage) { paginator.render('#paginator'); - } + } } function removeSOLRcharacters(str) @@ -702,11 +704,11 @@ YUI().use( function onSuccess(response, args) { updateFormElements(); - + try { var node = args.container, - + page = (args.page) ? args.page : 1, numfound = parseInt(response.response.numFound, 10), @@ -716,6 +718,8 @@ YUI().use( docslength = parseInt(response.response.docs.length, 10), q = QueryString.q, pS = QueryString.provider, + // aof1: What does pS means (any meaning behind the selection of this variable name?) ... I'm just doing copy/paste in hopes this will work + pCategory = QueryString.category, tS = QueryString.title, aS = QueryString.author, pubS = QueryString.publisher, @@ -741,6 +745,12 @@ YUI().use( pS = removeSOLRcharacters(pS); ADescribeSearch.push(" Provider " + scopeIs + " " + pS); } + if (pCategory) + { + pCategory = removeSOLRcharacters(pCategory); + ADescribeSearch.push(" Category " + scopeIs + " " + pCategory); + } + if (aS) { aS = removeSOLRcharacters(aS); @@ -799,7 +809,7 @@ YUI().use( numfoundNode.set('innerHTML', numfound); var aboutInfoBox = function onAboutSearchClick(event) { - + event.preventDefault(); /* add the mustache content into the dropdown */ var node = Y.one('.about-info-content'); @@ -917,22 +927,22 @@ YUI().use( } else { - var title_words=options.title.split(" "); + var title_words=options.title.split(" "); var index; var query_str='('; - for (index = 0; index < title_words.length; ++index) { + for (index = 0; index < title_words.length; ++index) { query_str=query_str+'(tus_title_long:"' + title_words[index] +'" OR ' + 'ts_title_long:"' + title_words[index]+ '" OR ' + 'tusar_title_long:"' + title_words[index]+'")'; if(index<(title_words.length-1)) { if (scopeIs === "containsAny") { query_str=query_str+ ' OR '; - } - else + } + else { query_str=query_str+' AND '; } - } + } } query_str=query_str+')'; fq.push(query_str); @@ -946,22 +956,22 @@ YUI().use( } else { - var author_words=options.author.split(" "); + var author_words=options.author.split(" "); var index; var query_str='('; - for (index = 0; index < author_words.length; ++index) { + for (index = 0; index < author_words.length; ++index) { query_str=query_str+'(tum_author:' + '"'+author_words[index]+'"' + ' OR ' + 'tm_author:"' + author_words[index] +'" OR ' + 'tumar_author:"' + author_words[index]+'")'; if(index<(author_words.length-1)) { if (scopeIs === "containsAny") { query_str=query_str+ ' OR '; - } - else + } + else { query_str=query_str+' AND '; } - } + } } query_str=query_str+')'; fq.push(query_str); @@ -976,22 +986,22 @@ YUI().use( } else { - var pubplace_words=options.pubplace.split(" "); + var pubplace_words=options.pubplace.split(" "); var index; var query_str='('; - for (index = 0; index < pubplace_words.length; ++index) { + for (index = 0; index < pubplace_words.length; ++index) { query_str=query_str+'(tus_publocation:' + '"'+pubplace_words[index]+ '" OR ' + 'ts_publocation:"' + pubplace_words[index]+ '" OR ' + 'tusar_publocation:"' + pubplace_words[index]+'")'; if(index<(pubplace_words.length-1)) { if (scopeIs === "containsAny") { query_str=query_str+ ' OR '; - } - else + } + else { query_str=query_str+' AND '; } - } + } } query_str=query_str+')'; fq.push(query_str); @@ -1005,22 +1015,22 @@ YUI().use( } else { - var publisher_words=options.publisher.split(" "); + var publisher_words=options.publisher.split(" "); var index; var query_str='('; - for (index = 0; index < publisher_words.length; ++index) { + for (index = 0; index < publisher_words.length; ++index) { query_str=query_str+'(tum_publisher:"'+publisher_words[index]+'" OR ' + 'tm_publisher:"' + publisher_words[index]+'" OR ' + 'tumar_publisher:"' + publisher_words[index]+'")'; if(index<(publisher_words.length-1)) { if (scopeIs === "containsAny") { query_str=query_str+ ' OR '; - } - else + } + else { query_str=query_str+' AND '; } - } + } } query_str=query_str+')'; fq.push(query_str); @@ -1034,22 +1044,22 @@ YUI().use( } else { - var provider_words=options.provider.split(" "); + var provider_words=options.provider.split(" "); var index; var query_str='('; - for (index = 0; index < provider_words.length; ++index) { + for (index = 0; index < provider_words.length; ++index) { query_str=query_str+'(tum_provider_label:"'+provider_words[index]+'" OR '+'tm_provider_label:"'+provider_words[index]+'")'; if(index<(provider_words.length-1)) { if (scopeIs === "containsAny") { query_str=query_str+ ' OR '; - } - else + } + else { query_str=query_str+' AND '; } - } + } } query_str=query_str+')'; fq.push(query_str); @@ -1063,22 +1073,22 @@ YUI().use( } else { - var subject_words=options.subject.split(" "); + var subject_words=options.subject.split(" "); var index; var query_str='('; - for (index = 0; index < subject_words.length; ++index) { + for (index = 0; index < subject_words.length; ++index) { query_str=query_str+'(tum_subject_label:' + '"'+subject_words[index]+'" OR '+ 'tm_subject_label:"'+subject_words[index]+'")'; if(index<(subject_words.length-1)) { if (scopeIs === "containsAny") { query_str=query_str+ ' OR '; - } - else + } + else { query_str=query_str+ ' AND '; } - } + } } query_str=query_str+')'; fq.push(query_str); @@ -1106,22 +1116,22 @@ YUI().use( } else { - var query_words=options.q.split(" "); + var query_words=options.q.split(" "); var index; var query_str='('; - for (index = 0; index < query_words.length; ++index) { + for (index = 0; index < query_words.length; ++index) { query_str=query_str+'(content_und:' +query_words[index]+' OR '+ 'content_und_ws:'+query_words[index]+' OR ' + 'content_en:' + query_words[index] + ' OR ' + 'content:' + query_words[index]+')'; if(index<(query_words.length-1)) { if (scopeIs === "containsAny") { query_str=query_str+ ' OR '; - } - else + } + else { query_str=query_str+ ' AND '; } - } + } } query_str=query_str+')'; } From 30a9ec59dc1f2870d54be5fa7d230d27961c5b14 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Mon, 6 May 2019 16:00:50 -0400 Subject: [PATCH 08/28] Documented requiere update to curl.json --- README.md | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 677d243..4a43abb 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,9 @@ $ cd aco-site && npm install ``` ### Getting started - + #### Adding a page - + All the pages are represented in the configuration file (**conf.json**). To add a new page include it in the pages object. title and route are require (note that the route is relative to the **appRoot**). In this file you also declare mustache variables. ##### conf.json @@ -30,7 +30,7 @@ All the pages are represented in the configuration file (**conf.json**). To add "title" : "My new page" , "route" : "/mynewpage/index.html" } -``` +``` ##### myNewPagePartial.mustache @@ -38,7 +38,7 @@ All the pages are represented in the configuration file (**conf.json**). To add
  • I'm a list
-``` +``` ##### myNewPage.mustache @@ -54,7 +54,7 @@ All the pages are represented in the configuration file (**conf.json**). To add {{> footer }} -``` +``` #### Make changes @@ -92,7 +92,7 @@ npm install nightwatch -g 2) Add enviorment information file ``` -cp sample.env .env +cp sample.env .env ``` 3) Add your enviorment information. E.g., @@ -109,4 +109,20 @@ NOTE: *At the moment we only have an enviormental variable for the site URL that npm test ``` -NOTE: *You need to run `npm install` if you happend to have this repository around and willl resume work on this project. \ No newline at end of file +NOTE: *You need to run `npm install` if you happend to have this repository around and willl resume work on this project. + + +### DLTSACO652 + +DLTSACO652 introduces 2 new source information and curl.json need to be updated to work. + +```json + "categoryQueryEn" : { + "src" : "http://stagediscovery.dlib.nyu.edu:8983/solr/viewer/select?wt=json&json.nl=arrmap&q=sm_collection_code:aco&facet=true&rows=0&facet.query=%7B!key=%22General%20Works%22%7Dss_call_number:A*&facet.query=%7B!key=%22Philosophy.%20Psychology.%20Religion%22%7Dss_call_number:B*&facet.query=%7B!key=%22Auxiliary%20Sciences%20of%20History%22%7Dss_call_number:C*&facet.query=%7B!key=%22World%20History%20and%20History%20of%20Europe,%20Asia,%20Africa,%20Australia,%20New%20Zealand,%20etc..%22%7Dss_call_number:D*&facet.query=%7B!key=%22History%20of%20the%20Americas%22%7Dss_call_number:(E*%20OR%20F*)&facet.query=%7B!key=%22Geography,%20Anthropology,%20and%20Recreation%22%7Dss_call_number:G*&facet.query=%7B!key=%22Social%20Sciences%22%7Dss_call_number:H*&facet.query=%7B!key=%22Political%20Science%22%7Dss_call_number:J*&facet.query=%7B!key=%22Law%22%7Dss_call_number:K*&facet.query=%7B!key=%22Education%22%7Dss_call_number:L*&facet.query=%7B!key=%22Music%22%7Dss_call_number:M*&facet.query=%7B!key=%22Fine%20Arts%22%7Dss_call_number:N*&facet.query=%7B!key=%22Language%20and%20Literature%22%7Dss_call_number:P*&facet.query=%7B!key=%22Science%22%7Dss_call_number:Q*&facet.query=%7B!key=%22Medicine%22%7Dss_call_number:R*&facet.query=%7B!key=%22Agriculture%22%7Dss_call_number:S*&facet.query=%7B!key=%22Technology%22%7Dss_call_number:T*&facet.query=%7B!key=%22Military%20Science%22%7Dss_call_number:U*&facet.query=%7B!key=%22Naval%20Science%22%7Dss_call_number:V*&facet.query=%7B!key=%22Bibliography,%20Library%20Science,%20and%20General%20Information%20Resources%22%7Dss_call_number:Z*", + "dest" : "source/json/datasources/categoryQueryEn.json" + }, + "categoryQueryAr" : { + "src" : "http://stagediscovery.dlib.nyu.edu:8983/solr/viewer/select?wt=json&json.nl=arrmap&wt=json&json.nl=arrmap&q=sm_collection_code:aco&facet=true&rows=0&facet.query=%7B!key=%22%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D8%B1%D9%81%20%D8%A7%D9%84%D8%B9%D8%A7%D9%85%D8%A9%22%7Dss_call_number:A*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%81%D9%84%D8%B3%D9%81%D8%A9%20%D9%88%D8%B9%D9%84%D9%85%20%D8%A7%D9%84%D9%86%D9%81%D8%B3%20%D9%88%D8%A7%D9%84%D8%AF%D9%8A%D9%86%22%7Dss_call_number:B*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D9%81%D8%B1%D8%B9%D9%8A%D8%A9%20%D9%84%D9%84%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%22%7Dss_call_number:C*&facet.query=%7B!key=%22%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A7%D9%84%D8%B9%D8%A7%D9%84%D9%85%20%D9%88%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A3%D9%88%D8%B1%D9%88%D8%A8%D8%A7%20%D9%88%D8%A2%D8%B3%D9%8A%D8%A7%20%D9%88%D8%A3%D9%81%D8%B1%D9%8A%D9%82%D9%8A%D8%A7%22%7Dss_call_number:D*&facet.query=%7B!key=%22%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A3%D9%85%D8%B1%D9%8A%D9%83%D8%A7%22%7Dss_call_number:(E*%20OR%20F*)&facet.query=%7B!key=%22%D8%A7%D9%84%D8%AC%D8%BA%D8%B1%D8%A7%D9%81%D9%8A%D8%A7%20%D9%88%D8%A7%D9%84%D8%A3%D9%86%D8%AB%D8%B1%D8%A8%D9%88%D9%84%D9%88%D8%AC%D9%8A%D8%A7%20%D9%88%D8%A7%D9%84%D8%AA%D8%B1%D9%81%D9%8A%D9%87%22%7Dss_call_number:G*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%D9%8A%D8%A9%22%7Dss_call_number:H*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%B3%D9%8A%D8%A7%D8%B3%D9%8A%D8%A9%22%7Dss_call_number:J*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%82%D8%A7%D9%86%D9%88%D9%86%22%7Dss_call_number:K*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%8A%D9%85%22%7Dss_call_number:L*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%85%D9%88%D8%B3%D9%8A%D9%82%D9%89%22%7Dss_call_number:M*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%81%D9%86%D9%88%D9%86%20%D8%A7%D9%84%D8%AC%D9%85%D9%8A%D9%84%D8%A9%22%7Dss_call_number:N*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%84%D8%BA%D8%A7%D8%AA%20%D9%88%D8%A7%D9%84%D8%A2%D8%AF%D8%A7%D8%A8%22%7Dss_call_number:P*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%22%7Dss_call_number:Q*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B7%D8%A8%22%7Dss_call_number:R*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B2%D8%B1%D8%A7%D8%B9%D8%A9%22%7Dss_call_number:S*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%AA%D9%83%D9%86%D9%88%D9%84%D9%88%D8%AC%D9%8A%D8%A7%22%7Dss_call_number:T*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%B9%D8%B3%D9%83%D8%B1%D9%8A%D8%A9%22%7Dss_call_number:U*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%A8%D8%AD%D8%B1%D9%8A%D8%A9%22%7Dss_call_number:V*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%A8%D8%A8%D9%84%D9%8A%D9%88%D8%BA%D8%B1%D8%A7%D9%81%D9%8A%D8%A7%20%D8%8C%20%D9%88%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8%D8%A7%D8%AA%20%D8%8C%20%D9%88%D8%A7%D9%84%D9%85%D8%B9%D9%84%D9%88%D9%85%D8%A7%D8%AA%20%D8%A7%D9%84%D8%B9%D8%A7%D9%85%D8%A9%22%7Dss_call_number:Z*", + "dest" : "source/json/datasources/categoryQueryAr.json" + } + ``` \ No newline at end of file From 35b8f6c0384aeef56aa9f4bf49ff388271421006 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Mon, 6 May 2019 16:27:04 -0400 Subject: [PATCH 09/28] Test for this ticket --- test/DLTSACO652/index.js | 49 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 test/DLTSACO652/index.js diff --git a/test/DLTSACO652/index.js b/test/DLTSACO652/index.js new file mode 100644 index 0000000..5727da9 --- /dev/null +++ b/test/DLTSACO652/index.js @@ -0,0 +1,49 @@ +const conf = require('../../nightwatch.conf.js'); +const path = require('path'); + +module.exports = { + + 'Browse by Category exists' : function (browser) { + browser + .url(path.join(process.env.APP_URL, 'browse-by-category')) + .waitForElementVisible('body', 1000) + .assert.title('Arabic Collections Online: Browse by Category') + .saveScreenshot(conf.imgpath(browser) + 'DLTSACO652-01.png') + .end(); + }, + + 'Homepage items include "Category" as part of their metadata' : function (browser) { + browser.url(process.env.APP_URL).waitForElementVisible('body', 1000) + browser.expect.element('.md_category').to.be.present; + browser.end(); + }, + + 'Homepage items include "Call number" as part of their metadata' : function (browser) { + browser.url(process.env.APP_URL).waitForElementVisible('body', 1000) + browser.expect.element('.md_call_number').to.be.present; + browser.end(); + }, + + 'Seach page items include "Category" as part of their metadata' : function (browser) { + browser.url(`${process.env.APP_URL}/search/?category=General%20Works&scope=matches`).waitForElementVisible('body', 1000) + browser.expect.element('.md_call_number').to.be.present; + browser.end(); + }, + + 'Seach page items include "Call number" as part of their metadata' : function (browser) { + browser.url(`${process.env.APP_URL}/search/?category=General%20Works&scope=matches`).waitForElementVisible('body', 1000) + browser.expect.element('.md_call_number').to.be.present; + browser.end(); + }, + + 'Filter by category "General Works" update search form' : function (browser) { + browser.url(`${process.env.APP_URL}/search/?category=General%20Works&scope=matches`).waitForElementVisible('body', 1000) + browser.expect.element('.q1').to.be.present; + browser.expect.element('.q1').to.have.value.that.equals('General Works'); + browser.expect.element('.field-select').to.have.value.that.equals('category'); + browser.end(); + } + + + +}; From 255dc015d036cd1ba49bf57a6aa701289cc2b355 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Mon, 6 May 2019 16:42:14 -0400 Subject: [PATCH 10/28] Fix test using wrong selector --- test/DLTSACO652/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/DLTSACO652/index.js b/test/DLTSACO652/index.js index 5727da9..151b23e 100644 --- a/test/DLTSACO652/index.js +++ b/test/DLTSACO652/index.js @@ -26,7 +26,7 @@ module.exports = { 'Seach page items include "Category" as part of their metadata' : function (browser) { browser.url(`${process.env.APP_URL}/search/?category=General%20Works&scope=matches`).waitForElementVisible('body', 1000) - browser.expect.element('.md_call_number').to.be.present; + browser.expect.element('.md_category').to.be.present; browser.end(); }, @@ -44,6 +44,4 @@ module.exports = { browser.end(); } - - }; From d96439b4d7e026d441f00ca38b5c8fcc35d4e34b Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Tue, 7 May 2019 20:53:18 -0400 Subject: [PATCH 11/28] Move to Docker --- .dockerignore | 2 + Dockerfile | 37 ++ Gruntfile.js | 34 +- build/.htaccess | 71 ---- docker-compose.yml | 9 + httpd.conf | 369 ++++++++++++++++++ .../tasks/writeHTML.js | 0 .../grunt-contrib-writeHTML/package.json | 11 - .../tasks/node_modules/transform/index.js | 277 ------------- node_modules/providers/conf.json | 18 - node_modules/providers/index.js | 43 -- node_modules/providers/package.json | 11 - node_modules/providers/providers.mustache | 17 - node_modules/providers_pages/conf.json | 31 -- node_modules/providers_pages/index.js | 39 -- node_modules/providers_pages/package.json | 11 - .../providers_pages/providers_pages.mustache | 43 -- node_modules/series/conf.json | 31 -- node_modules/series/index.js | 67 ---- node_modules/series/package.json | 11 - node_modules/series/series.mustache | 25 -- node_modules/series_pages/conf.json | 37 -- node_modules/series_pages/index.js | 84 ---- node_modules/series_pages/package.json | 11 - .../series_pages/series_pages.mustache | 30 -- node_modules/subjects/conf.json | 18 - node_modules/subjects/index.js | 40 -- node_modules/subjects/package.json | 11 - node_modules/subjects/subjects.mustache | 19 - node_modules/subjects_pages/conf.json | 31 -- node_modules/subjects_pages/index.js | 38 -- node_modules/subjects_pages/package.json | 11 - .../subjects_pages/subjects_pages.mustache | 43 -- package.json | 15 +- test/ACCESSIBIL-22/index.js | 18 +- test/DLTSACO652/index.js | 6 +- 36 files changed, 448 insertions(+), 1121 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile delete mode 100644 build/.htaccess create mode 100644 docker-compose.yml create mode 100644 httpd.conf rename {node_modules => lib}/grunt-contrib-writeHTML/tasks/writeHTML.js (100%) delete mode 100644 node_modules/grunt-contrib-writeHTML/package.json delete mode 100644 node_modules/grunt-contrib-writeHTML/tasks/node_modules/transform/index.js delete mode 100644 node_modules/providers/conf.json delete mode 100644 node_modules/providers/index.js delete mode 100644 node_modules/providers/package.json delete mode 100644 node_modules/providers/providers.mustache delete mode 100644 node_modules/providers_pages/conf.json delete mode 100644 node_modules/providers_pages/index.js delete mode 100644 node_modules/providers_pages/package.json delete mode 100644 node_modules/providers_pages/providers_pages.mustache delete mode 100644 node_modules/series/conf.json delete mode 100644 node_modules/series/index.js delete mode 100644 node_modules/series/package.json delete mode 100644 node_modules/series/series.mustache delete mode 100644 node_modules/series_pages/conf.json delete mode 100644 node_modules/series_pages/index.js delete mode 100644 node_modules/series_pages/package.json delete mode 100644 node_modules/series_pages/series_pages.mustache delete mode 100644 node_modules/subjects/conf.json delete mode 100644 node_modules/subjects/index.js delete mode 100644 node_modules/subjects/package.json delete mode 100644 node_modules/subjects/subjects.mustache delete mode 100644 node_modules/subjects_pages/conf.json delete mode 100644 node_modules/subjects_pages/index.js delete mode 100644 node_modules/subjects_pages/package.json delete mode 100644 node_modules/subjects_pages/subjects_pages.mustache diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e3fbd98 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +build +node_modules diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9e27cc2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,37 @@ +# Usage example +# 1) Build container image +# $ docker build -t nyudlts/aco:latest . +# 2) Run container +# $ docker run -d --name=aco -p 8000:80 nyudlts/aco:latest + +# Stage 1 +FROM node:8 as node + +RUN apt-get update -qq \ + && apt-get install -y build-essential ruby-full \ + && gem install compass + +WORKDIR /usr/src/app + +COPY . . + +RUN npm install -g grunt-cli \ + && npm install http-server -g \ + && npm install \ + && grunt + +# Stage 2 +FROM httpd:2.4-alpine + +RUN sed -i '/LoadModule rewrite_module/s/^#//g' /usr/local/apache2/conf/httpd.conf + +RUN { \ + echo 'IncludeOptional conf.d/*.conf'; \ +} >> /usr/local/apache2/conf/httpd.conf \ + && mkdir /usr/local/apache2/conf.d + +COPY --from=node /usr/src/app/build /usr/local/apache2/htdocs/aco + +COPY --from=node /usr/src/app/source/robots.txt /usr/local/apache2/htdocs/robots.txt + +COPY ./httpd.conf /usr/local/apache2/conf.d/aco.conf diff --git a/Gruntfile.js b/Gruntfile.js index 57cacb3..69f0009 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,37 +1,37 @@ -module.exports = function(grunt) { +module.exports = function (grunt) { /** task to run */ - var tasks = ['clean', 'copy', 'uglify', 'compass', 'curl', 'writeHTML'] ; + var tasks = ['clean', 'copy', 'uglify', 'compass', 'curl', 'writeHTML']; var configuration = require('./Gruntconfigurations'); - + var taskConfiguration = { pkg: grunt.file.readJSON('package.json'), - clean: configuration.clean(), - copy: configuration.copy(), - uglify: configuration.uglify(), - watch: configuration.watch(), - compass : configuration.compass() + clean: configuration.clean(), + copy: configuration.copy(), + uglify: configuration.uglify(), + watch: configuration.watch(), + compass : configuration.compass() }; - if (grunt.file.isFile( __dirname + '/source/json/curl.json')) { - taskConfiguration.curl = configuration.curl(); + if (grunt.file.isFile(__dirname + '/source/json/curl.json')) { + taskConfiguration.curl = configuration.curl(); } /** project configuration */ grunt.initConfig(taskConfiguration); - - /** load modules and tasks */ - grunt.loadNpmTasks('grunt-curl'); + + /** load modules and tasks */ + grunt.loadNpmTasks('grunt-curl'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-compass'); + grunt.loadNpmTasks('grunt-contrib-compass'); grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.loadNpmTasks('grunt-contrib-writeHTML'); + require('./lib/grunt-contrib-writeHTML/tasks/writeHTML.js')(grunt); /** register the task */ - grunt.registerTask('default', tasks) ; - + grunt.registerTask('default', tasks); + }; diff --git a/build/.htaccess b/build/.htaccess deleted file mode 100644 index 36d4ed8..0000000 --- a/build/.htaccess +++ /dev/null @@ -1,71 +0,0 @@ -# Requires mod_expires to be enabled. - - # Enable expirations. - ExpiresActive On - - # Cache all files for 2 weeks after access (A). - ExpiresDefault A1209600 - - - -# Various rewrite rules. - - RewriteEngine on - - # Set "protossl" to "s" if we were accessed via https://. This is used later - # if you enable "www." stripping or enforcement, in order to ensure that - # you don't bounce between http and https. - RewriteRule ^ - [E=protossl] - RewriteCond %{HTTPS} on - RewriteRule ^ - [E=protossl:s] - - # Make sure Authorization HTTP header is available to PHP - # even when running as CGI or FastCGI. - RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] - - # Block access to "hidden" directories whose names begin with a period. This - # includes directories used by version control systems such as Subversion or - # Git to store control files. Files whose names begin with a period, as well - # as the control files used by CVS, are protected by the FilesMatch directive - # above. - # - # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is - # not possible to block access to entire directories from .htaccess, because - # is not allowed here. - # - # If you do not have mod_rewrite installed, you should remove these - # directories from your webroot or otherwise protect them from being - # downloaded. - RewriteRule "(^|/)\." - [F] - - # If your site can be accessed both with and without the 'www.' prefix, you - # can use one of the following settings to redirect users to your preferred - # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option: - # - # To redirect all users to access the site WITH the 'www.' prefix, - # (http://example.com/... will be redirected to http://www.example.com/...) - # uncomment the following: - # RewriteCond %{HTTP_HOST} . - # RewriteCond %{HTTP_HOST} !^www\. [NC] - # RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] - # - # To redirect all users to access the site WITHOUT the 'www.' prefix, - # (http://www.example.com/... will be redirected to http://example.com/...) - # uncomment the following: - # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] - # RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301] - - # Modify the RewriteBase if you are using Drupal in a subdirectory or in a - # VirtualDocumentRoot and the rewrite rules are not working properly. - # For example if your site is at http://example.com/drupal uncomment and - # modify the following line: - # RewriteBase /site - - # Pass all requests not referring directly to files in the filesystem to - # index.html. - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_URI} !=/favicon.ico - RewriteRule ^ index.html [L] - - diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..19065d9 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +version: '2.3' + +services: + aco: + hostname: localhost + container_name: aco-container + build: . + ports: + - 8000:80 diff --git a/httpd.conf b/httpd.conf new file mode 100644 index 0000000..fa1846b --- /dev/null +++ b/httpd.conf @@ -0,0 +1,369 @@ +Alias /aco /usr/local/apache2/htdocs/aco + +# +# Site directory +# + + + Options Indexes FollowSymLinks + AllowOverride All + DirectoryIndex index.html + Order allow,deny + # http://blocklistpro.com/content-scrapers/5.10.83.-ahrefsbot-seo-spybot-update-softlayer.html + Deny from 5.10.83.0/25 + Deny from 197.160.122.157 + Deny from 105.104.110.254 + Deny from 37.239.66.14 + Deny from 105.104.154.112 + Deny from 41.200.196.232 + Deny from 91.140.204.87 + Deny from 207.46.13.102 + Deny from 157.55.39.8 + Allow from all + + # Requires mod_expires to be enabled. + + # Enable expirations. + ExpiresActive On + + # Cache all files for 2 weeks after access (A). + ExpiresDefault A1209600 + + + + # Various rewrite rules. + + RewriteEngine on + + # Set "protossl" to "s" if we were accessed via https://. This is used later + # if you enable "www." stripping or enforcement, in order to ensure that + # you don't bounce between http and https. + RewriteRule ^ - [E=protossl] + RewriteCond %{HTTPS} on + RewriteRule ^ - [E=protossl:s] + + # Make sure Authorization HTTP header is available to PHP + # even when running as CGI or FastCGI. + RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Block access to "hidden" directories whose names begin with a period. This + # includes directories used by version control systems such as Subversion or + # Git to store control files. Files whose names begin with a period, as well + # as the control files used by CVS, are protected by the FilesMatch directive + # above. + # + # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is + # not possible to block access to entire directories from .htaccess, because + # is not allowed here. + # + # If you do not have mod_rewrite installed, you should remove these + # directories from your webroot or otherwise protect them from being + # downloaded. + RewriteRule "(^|/)\." - [F] + + # If your site can be accessed both with and without the 'www.' prefix, you + # can use one of the following settings to redirect users to your preferred + # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option: + # + # To redirect all users to access the site WITH the 'www.' prefix, + # (http://example.com/... will be redirected to http://www.example.com/...) + # uncomment the following: + # RewriteCond %{HTTP_HOST} . + # RewriteCond %{HTTP_HOST} !^www\. [NC] + # RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] + # + # To redirect all users to access the site WITHOUT the 'www.' prefix, + # (http://www.example.com/... will be redirected to http://example.com/...) + # uncomment the following: + # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] + # RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301] + + # Modify the RewriteBase if you are using Drupal in a subdirectory or in a + # VirtualDocumentRoot and the rewrite rules are not working properly. + # For example if your site is at http://example.com/drupal uncomment and + # modify the following line: + # RewriteBase /site + + # Pass all requests not referring directly to files in the filesystem to + # index.html. + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} !=/favicon.ico + RewriteRule ^ index.html [L] + + + + + +# +# Site directory /aco/search +# + + + # My default + Options Indexes Includes FollowSymLinks ExecCGI MultiViews + + # My default + AllowOverride All + + # + # Controls who can get stuff from this server. + # + Order allow,deny + Allow from all + + # Requires mod_expires to be enabled. + + # Enable expirations. + ExpiresActive On + + # Cache all files for 2 weeks after access (A). + ExpiresDefault A1209600 + + + + # Various rewrite rules. + + RewriteEngine on + + # Set "protossl" to "s" if we were accessed via https://. This is used later + # if you enable "www." stripping or enforcement, in order to ensure that + # you don't bounce between http and https. + RewriteRule ^ - [E=protossl] + RewriteCond %{HTTPS} on + RewriteRule ^ - [E=protossl:s] + + # Make sure Authorization HTTP header is available to PHP + # even when running as CGI or FastCGI. + RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Block access to "hidden" directories whose names begin with a period. This + # includes directories used by version control systems such as Subversion or + # Git to store control files. Files whose names begin with a period, as well + # as the control files used by CVS, are protected by the FilesMatch directive + # above. + # + # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is + # not possible to block access to entire directories from .htaccess, because + # is not allowed here. + # + # If you do not have mod_rewrite installed, you should remove these + # directories from your webroot or otherwise protect them from being + # downloaded. + RewriteRule "(^|/)\." - [F] + + # If your site can be accessed both with and without the 'www.' prefix, you + # can use one of the following settings to redirect users to your preferred + # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option: + # + # To redirect all users to access the site WITH the 'www.' prefix, + # (http://example.com/... will be redirected to http://www.example.com/...) + # uncomment the following: + # RewriteCond %{HTTP_HOST} . + # RewriteCond %{HTTP_HOST} !^www\. [NC] + # RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] + # + # To redirect all users to access the site WITHOUT the 'www.' prefix, + # (http://www.example.com/... will be redirected to http://example.com/...) + # uncomment the following: + # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] + # RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301] + + # Modify the RewriteBase if you are using Drupal in a subdirectory or in a + # VirtualDocumentRoot and the rewrite rules are not working properly. + # For example if your site is at http://example.com/drupal uncomment and + # modify the following line: + RewriteBase /aco/search + + # Pass all requests not referring directly to files in the filesystem to + # index.html. + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} !=/favicon.ico + RewriteRule ^ index.html [L] + + + + + +# +# Site directory /aco/subject +# + + + # My default + Options Indexes Includes FollowSymLinks ExecCGI MultiViews + + # My default + AllowOverride All + + # + # Controls who can get stuff from this server. + # + Order allow,deny + Allow from all + + # Requires mod_expires to be enabled. + + # Enable expirations. + ExpiresActive On + + # Cache all files for 2 weeks after access (A). + ExpiresDefault A1209600 + + + + # Various rewrite rules. + + RewriteEngine on + + # Set "protossl" to "s" if we were accessed via https://. This is used later + # if you enable "www." stripping or enforcement, in order to ensure that + # you don't bounce between http and https. + RewriteRule ^ - [E=protossl] + RewriteCond %{HTTPS} on + RewriteRule ^ - [E=protossl:s] + + # Make sure Authorization HTTP header is available to PHP + # even when running as CGI or FastCGI. + RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Block access to "hidden" directories whose names begin with a period. This + # includes directories used by version control systems such as Subversion or + # Git to store control files. Files whose names begin with a period, as well + # as the control files used by CVS, are protected by the FilesMatch directive + # above. + # + # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is + # not possible to block access to entire directories from .htaccess, because + # is not allowed here. + # + # If you do not have mod_rewrite installed, you should remove these + # directories from your webroot or otherwise protect them from being + # downloaded. + RewriteRule "(^|/)\." - [F] + + # If your site can be accessed both with and without the 'www.' prefix, you + # can use one of the following settings to redirect users to your preferred + # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option: + # + # To redirect all users to access the site WITH the 'www.' prefix, + # (http://example.com/... will be redirected to http://www.example.com/...) + # uncomment the following: + # RewriteCond %{HTTP_HOST} . + # RewriteCond %{HTTP_HOST} !^www\. [NC] + # RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] + # + # To redirect all users to access the site WITHOUT the 'www.' prefix, + # (http://www.example.com/... will be redirected to http://example.com/...) + # uncomment the following: + # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] + # RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301] + + # Modify the RewriteBase if you are using Drupal in a subdirectory or in a + # VirtualDocumentRoot and the rewrite rules are not working properly. + # For example if your site is at http://example.com/drupal uncomment and + # modify the following line: + RewriteBase /aco/subject + + # Pass all requests not referring directly to files in the filesystem to + # index.html. + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} !=/favicon.ico + RewriteRule ^ index.html [L] + + + + + +# +# Site directory /aco/book +# + + + # My default + Options Indexes Includes FollowSymLinks ExecCGI MultiViews + + # My default + AllowOverride All + + # + # Controls who can get stuff from this server. + # + Order allow,deny + Allow from all + + # Requires mod_expires to be enabled. + + # Enable expirations. + ExpiresActive On + + # Cache all files for 2 weeks after access (A). + ExpiresDefault A1209600 + + + + # Various rewrite rules. + + RewriteEngine on + + # Set "protossl" to "s" if we were accessed via https://. This is used later + # if you enable "www." stripping or enforcement, in order to ensure that + # you don't bounce between http and https. + RewriteRule ^ - [E=protossl] + RewriteCond %{HTTPS} on + RewriteRule ^ - [E=protossl:s] + + # Make sure Authorization HTTP header is available to PHP + # even when running as CGI or FastCGI. + RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Block access to "hidden" directories whose names begin with a period. This + # includes directories used by version control systems such as Subversion or + # Git to store control files. Files whose names begin with a period, as well + # as the control files used by CVS, are protected by the FilesMatch directive + # above. + # + # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is + # not possible to block access to entire directories from .htaccess, because + # is not allowed here. + # + # If you do not have mod_rewrite installed, you should remove these + # directories from your webroot or otherwise protect them from being + # downloaded. + RewriteRule "(^|/)\." - [F] + + # If your site can be accessed both with and without the 'www.' prefix, you + # can use one of the following settings to redirect users to your preferred + # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option: + # + # To redirect all users to access the site WITH the 'www.' prefix, + # (http://example.com/... will be redirected to http://www.example.com/...) + # uncomment the following: + # RewriteCond %{HTTP_HOST} . + # RewriteCond %{HTTP_HOST} !^www\. [NC] + # RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] + # + # To redirect all users to access the site WITHOUT the 'www.' prefix, + # (http://www.example.com/... will be redirected to http://example.com/...) + # uncomment the following: + # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] + # RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301] + + # Modify the RewriteBase if you are using Drupal in a subdirectory or in a + # VirtualDocumentRoot and the rewrite rules are not working properly. + # For example if your site is at http://example.com/drupal uncomment and + # modify the following line: + RewriteBase /aco/book + + # Pass all requests not referring directly to files in the filesystem to + # index.html. + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} !=/favicon.ico + RewriteRule ^ index.html [L] + + + + diff --git a/node_modules/grunt-contrib-writeHTML/tasks/writeHTML.js b/lib/grunt-contrib-writeHTML/tasks/writeHTML.js similarity index 100% rename from node_modules/grunt-contrib-writeHTML/tasks/writeHTML.js rename to lib/grunt-contrib-writeHTML/tasks/writeHTML.js diff --git a/node_modules/grunt-contrib-writeHTML/package.json b/node_modules/grunt-contrib-writeHTML/package.json deleted file mode 100644 index caca8ae..0000000 --- a/node_modules/grunt-contrib-writeHTML/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "grunt-contrib-writeHTML", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC" -} diff --git a/node_modules/grunt-contrib-writeHTML/tasks/node_modules/transform/index.js b/node_modules/grunt-contrib-writeHTML/tasks/node_modules/transform/index.js deleted file mode 100644 index a8906b9..0000000 --- a/node_modules/grunt-contrib-writeHTML/tasks/node_modules/transform/index.js +++ /dev/null @@ -1,277 +0,0 @@ -/** make it its own module */ -function HandlebarsHelpers ( ) { - function json ( context, options ) { - return options.fn ( JSON.parse ( context ) ); - } - function speakingurl ( context, options ) { - var getSlug = require('speakingurl'); - return getSlug ( this.label ) ; - } - function addcommas(string, options) { - x = string.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); - return x; - } - function ifempty(fieldtocheck, defaultvalue) { - if (fieldtocheck) { - return; - } else { - return defaultvalue; - } - } - return { - ifempty: ifempty, - addcommas: addcommas, - json : json, - speakingurl : speakingurl - }; -} - -function html ( configuration ) { - - var path = require ('path'); - - var Handlebars = require('handlebars') ; - - var _ = require('underscore') ; - - var fs = require('fs') ; - - var grunt = require('grunt') ; - - var htmlminify = require('html-minifier').minify; - - try { - - /** project root directory */ - var root = path.normalize ( path.dirname ( module.parent.filename ) + '/../../..') ; - - /** grunt task configurations */ - var Gruntconfigurations = require( root + '/Gruntconfigurations' ) ; - - /** - * information about how to render the CSS in this project - * see: https://github.com/gruntjs/grunt-contrib-sass - */ - var sassConfiguration = Gruntconfigurations.sass() ; - - /** - * information about how to render the JS files in this project - */ - var jsConfiguration = Gruntconfigurations.js() ; - - var htmlminifyConfiguration = Gruntconfigurations.htmlminify() ; - - var source = grunt.file.readJSON ( root + '/source/json/conf.json'); - - var widgets = grunt.file.readJSON ( root + '/source/json/widgets.json') ; - - var uncompileTemplate = grunt.file.read ( configuration.template ) ; - - var matchWidgetsRegEx = "data-script='(.*)'" ; - - var matchWidgets = uncompileTemplate.match ( matchWidgetsRegEx ) ; - - var handlebars_template = Handlebars.compile ( uncompileTemplate ) ; - - var partials = {}; - - var toJSON = ''; - - var javascriptString = ''; - - var handlebarsTemplate = ''; - - var pages = {}; - - /** copy all of the page properties in the source */ - _.extend ( source, configuration.data ) ; - - /** register Handlebars helpers */ - _.each ( HandlebarsHelpers() , function ( helper , key ) { Handlebars.registerHelper ( key , helper ) } ) ; - - /** string that holds JavaScript and handlebars templates */ - source.closure = ''; - - if ( grunt.file.isDir ( root + '/source/json/pages' ) ) { - var sources = fs.readdirSync ( root + '/source/json/pages' ) ; - for ( var i = 0; i < sources.length ; i++ ) { - if ( sources[i].match('.json') ) { - _.extend ( pages, grunt.file.readJSON ( root + '/source/json/pages/' + sources[i] ) ) ; - } - } - } - - if ( matchWidgets && matchWidgets[0] ) { - toJSON = matchWidgets[0] ; - toJSON = toJSON.replace(/'/g, '').replace(/data-script=/g, '') ; - toJSON = JSON.parse( toJSON ) ; - /** append all the templates to the body */ - _.each ( toJSON.hbs, function ( hbs ) { - if ( grunt.file.isFile(root + '/source/views/' + hbs.template) ) { - source.closure += '' ; - } - }); - /** JS files */ - _.each ( toJSON.js, function ( js ) { - /** - * the main app Uglify the JavaScript files and copy them from: /source/js to - * /build/js folder along with the source files. We allow to configure the - * app to use: compressed or expanded (default to expanded for development - * purposes). The app can also be configure to host the JavaScript files - * "inline" or "external" (default to expanded for development - * purposes). - * - * In production enviorments we want to set the app to use the compressed - * Javascript file and host it inline (in the HTML body of the page) - * - * in order to use Javascripts files, the file must be specify using data script at - * the source element. See example: - * - * data-script='{ "js" : [ "crossframe.js", "book.js" ] }' - * - */ - if ( jsConfiguration.js.style == 'compressed' ) { - var js_filename = path.basename ( js , path.extname( js ) ) + '.min' + path.extname ( js ) ; - if ( grunt.file.isFile ( root + '/build/js/' + js_filename ) ) { - source.closure += '' ; - } - } - else { - if ( grunt.file.isFile ( root + '/build/js/' + js ) ) { - source.closure += ''; - } - } - } ) ; - - } - - /** CSS / SASS */ - if ( sassConfiguration.dist.build === 'external' ) { - source.css = ""; - } - else { - source.css = ""; - } - - /** array to hold the menu object */ - source.menus = [] ; - - /** build the menu object */ - _.each ( pages , function ( page, index ) { - if (_.isArray(pages[index].menu)) { - _.each( pages[index].menu, function ( menu ) { - source.menus[menu.weight] = { - label: menu.label, - status: 'active', - route: pages[index].route.replace('/index.html', ''), - page: index, - weight: menu.weight - }; - }); - } - } ) ; - - /** clean the menu object of empty values that can "exist" becuase of weight */ - source.menus = _.reject ( source.menus, function ( menu ) { return _.isUndefined ( menu ) ; } ) ; - - source.widgets = {} ; - - _.each ( widgets, function ( widget, name ) { - source.widgets[name] = {}; - _.extend(source.widgets[name], widget) ; - if ( widget.sourceType === 'json' ) { - source.widgets[name].data = grunt.file.readJSON(root + '/' + widget.source); - } - else if ( widget.sourceType === 'iframe' ) { - source.widgets[name].data = { source : source.widgets[name].source } - } - } ) ; - - /** this spaghetti maps the widgets to the task and load data Object if type is not local. */ - if ( source.content ) { - _.each ( source.content, function ( content, a ) { - _.each ( source.content[a], function ( pane, b ) { - if ( _.isArray( source.content[a][b].widgets ) ) { - source.content[a][b].raw = []; - _.each ( source.content[a][b].widgets, function ( widget, c ) { - var spaghetti = {}; - var sourceType = widgets[source.content[a][b].widgets[c]].sourceType; - if ( sourceType === 'json' ) { - var json_data = grunt.file.readJSON( root + '/' + widgets[source.content[a][b].widgets[c]].source ) ; - spaghetti = { - label : widget, - widget : widgets[source.content[a][b].widgets[c]] , - data : json_data - } ; - } - /** if you care about placement in specific scenario */ - source.content[a][b][widget] = spaghetti; - /** as array to loop by weight */ - source.content[a][b].raw.push ( spaghetti ); - }); - } - }); - }); - } - - grunt.file.recurse ( root + '/source/views/', function callback (abspath, rootdir, subdir, filename ) { - if ( filename.match(".mustache") && configuration.template !== filename ) { - var name = filename.replace(".mustache", ""); - var partial = grunt.file.read ( abspath ) ; - var matchWidgetsRegEx = "data-script='(.*)'"; - var matchWidgets = partial.match( matchWidgetsRegEx ); - var toJSON = ''; - var javascriptString = ''; - var closure = ''; - if ( !_.find( _.keys ( pages ), name ) ) { - if ( matchWidgets && matchWidgets[0] ) { - toJSON = matchWidgets[0]; - toJSON = toJSON.replace(/'/g, '').replace(/data-script=/g, ''); - toJSON = JSON.parse(toJSON); - _.each ( toJSON.js, function ( js ) { - if ( jsConfiguration.js.style == 'compressed' ) { - var js_filename = path.basename ( js , path.extname( js ) ) + '.min' + path.extname ( js ) ; - if ( grunt.file.isFile ( root + '/build/js/' + js_filename ) ) { - javascriptString += '' ; - } - } - else { - if ( grunt.file.isFile( root + '/build/js/' + js ) ) { - javascriptString += ''; - } - } - } ) ; - } - partials[name] = partial + javascriptString; - } - } - } ) ; - - grunt.file.recurse ( root + '/source/views/', function callback(abspath, rootdir, subdir, filename ) { - if ( filename.match('.hbs') ) { - grunt.file.write ( root + '/build/js/' + filename, grunt.file.read( abspath ) ) ; - } - }); - - _.each ( partials, function ( partial, key, list ) { Handlebars.registerPartial( key, partial ) ; } ) ; - - var traceName = configuration.route.replace('/index.html', '').replace(/\//g, '-').replace(/-/, '') ; - - grunt.file.write( root + '/source/json/datasources/' + traceName + '.json', JSON.stringify( source ) ); - - /** write HTML file */ - grunt.file.write( root + '/build' + configuration.route, htmlminify ( handlebars_template ( source ), htmlminifyConfiguration ) ) ; - - grunt.log.write('Transforming ' + configuration.route).ok(); - - } - - catch ( err ) { - grunt.log.write('Transforming ' + configuration.task + ' into HTML fail. See ' + err.description).error() ; - console.log ( err ) ; - } - -} - -exports.html = html; - diff --git a/node_modules/providers/conf.json b/node_modules/providers/conf.json deleted file mode 100644 index 4fb89d9..0000000 --- a/node_modules/providers/conf.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "page": { - "bodyClass": "providers", - "title" : "Browse by provider" - }, - "*" : { - "request" : { - "drupal_providers" : { - "src" : "http://alpha-user:dlts2010@stage-dl-pa.home.nyu.edu/viewer/sources/field/field_partner", - "dest" : "drupal_providers.json" - }, - "providers" : { - "src" : "http://dev-discovery.dlib.nyu.edu:8080/solr3_discovery/stage/select?wt=json&fq=sm_collection_code:aco&rows=0&facet=true&facet.field=sm_collection_partner_label", - "dest" : "providers.json" - } - } - } -} \ No newline at end of file diff --git a/node_modules/providers/index.js b/node_modules/providers/index.js deleted file mode 100644 index 243d1b9..0000000 --- a/node_modules/providers/index.js +++ /dev/null @@ -1,43 +0,0 @@ -function providers(callback , options) { - var _ = require('underscore'); - var request = require('request'); - var fs = require('fs') ; - var data = {}; - var conf = JSON.parse(fs.readFileSync(__dirname + '/conf.json', 'utf8')); - var environment = options.parent_conf.environment; - if (environment !== 'production') environment = '*'; - var template = __dirname + '/providers.mustache'; - if (conf.page) data = conf.page; - data.terms = []; - request(conf[environment].request.drupal_providers.src, function(error, response, body) { - if ( !error && response.statusCode == 200 ) { - var drupal_providers = JSON.parse(body); - var length = drupal_providers.length; - var drupal_terms = []; - for (var i = 0; i < length; i++) { - drupal_terms.push({'label' : drupal_providers[i].value, 'nid' : drupal_providers[i].raw_value}); - } - request(conf[environment].request.providers.src, function(error, response, body) { - if (!error && response.statusCode == 200) { - var providers = JSON.parse(body); - _.each(providers.facet_counts.facet_fields.sm_collection_partner_label, function(label, index) { - /** Apache Solr response includes the values and the count of the values in pairs */ - if ((index + 1) % 2) { - var count = providers.facet_counts.facet_fields.sm_collection_partner_label[index + 1]; - if (count > 0) { - data.terms.push(_.findWhere(drupal_terms, {label: label})); - } - } - }) - callback ({ - route: '/providers/index.html', - template: template, - data: data - }); - } - }); - } - }); -} - -exports.providers = providers; diff --git a/node_modules/providers/package.json b/node_modules/providers/package.json deleted file mode 100644 index 83f66b3..0000000 --- a/node_modules/providers/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "providers", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC" -} diff --git a/node_modules/providers/providers.mustache b/node_modules/providers/providers.mustache deleted file mode 100644 index d31f2ad..0000000 --- a/node_modules/providers/providers.mustache +++ /dev/null @@ -1,17 +0,0 @@ - - - {{> head }} - - {{> header }} -
-
-

{{title}}

-
-
- -
-
- {{> footer }} - {{{ closure }}} - - diff --git a/node_modules/providers_pages/conf.json b/node_modules/providers_pages/conf.json deleted file mode 100644 index b314a9a..0000000 --- a/node_modules/providers_pages/conf.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "page": { - "bodyClass": "providers", - "content": { - "items": { - "sources" : ["discovery"], - "rows": 12, - "fl": [ - "*" - ], - "fq": [ - { - "filter": "sm_collection_code", - "value": "aco" - } - ] - } - } - }, - "*" : { - "sources" : { - "discovery" : "http://dev-discovery.dlib.nyu.edu:8080/solr3_discovery/stage/select/" - }, - "request" : { - "drupal_providers" : { - "src" : "http://alpha-user:dlts2010@stage-dl-pa.home.nyu.edu/viewer/sources/field/field_partner", - "dest" : "drupal_providers" - } - } - } -} diff --git a/node_modules/providers_pages/index.js b/node_modules/providers_pages/index.js deleted file mode 100644 index cb4c918..0000000 --- a/node_modules/providers_pages/index.js +++ /dev/null @@ -1,39 +0,0 @@ -function providers_pages(callback , options) { - var _ = require('underscore'); - var request = require('request'); - var fs = require('fs') ; - var conf = JSON.parse(fs.readFileSync(__dirname + '/conf.json', 'utf8')); - var environment = options.parent_conf.environment; - if (environment !== 'production') environment = '*'; - var template = __dirname + '/providers_pages.mustache' ; - if (conf.page) data = conf.page ; - if (data.content) { - data.sources = []; - var sources = data.content.items.sources; - var sources_length = data.content.items.sources.length; - for ( var i = 0; i < sources_length; i++ ) { - data.sources.push({ 'src' : conf[environment].sources[sources[i]], 'source' : sources[i]}); - } - } - request(conf[environment].request.drupal_providers.src, function (error, response, body) { - if (!error && response.statusCode == 200) { - var drupal_providers = JSON.parse(body); - var length = drupal_providers.length; - var drupal_terms = []; - var i = 0; - for (i; i < length; i++) { - drupal_terms[drupal_providers[i].raw_value] = drupal_providers[i]; - data.tid = drupal_providers[i].raw_value; - data.label = drupal_providers[i].value; - callback ({ - route: '/providers/' + drupal_providers[i].raw_value + '/index.html', - template: template, - data: data - }); - } - } - } - ); -} - -exports.providers_pages = providers_pages; diff --git a/node_modules/providers_pages/package.json b/node_modules/providers_pages/package.json deleted file mode 100644 index 7c23e20..0000000 --- a/node_modules/providers_pages/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "providers_pages", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC" -} diff --git a/node_modules/providers_pages/providers_pages.mustache b/node_modules/providers_pages/providers_pages.mustache deleted file mode 100644 index 3a11eae..0000000 --- a/node_modules/providers_pages/providers_pages.mustache +++ /dev/null @@ -1,43 +0,0 @@ - - - {{> head }} - - {{> header }} -
-
-

Provider: {{label}}

-
Showing - of results
- -
-
- {{#content}} - {{#items}} -
-
- -
- {{/items}} - {{/content}} -
-
- {{> footer }} - {{{ closure }}} - - diff --git a/node_modules/series/conf.json b/node_modules/series/conf.json deleted file mode 100644 index 6a31f24..0000000 --- a/node_modules/series/conf.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "page": { - "title" : "Series", - "bodyClass": "series", - "content": { - "items": { - "sources" : ["discovery"], - "fl": [ "*" ], - "fq" : [], - "sort" : [ { "field" : "ss_series_label", "dir" : "asc" } ] - } - } - }, - "production" : { - "request" : { - "src" : "http://discovery.dlib.nyu.edu:8080/solr3_discovery/stage/select", - "dest" : "series_pages.json" - } - }, - "*" : { - "request" : { - "series" : { - "src" : "http://dev-discovery.dlib.nyu.edu:8080/solr3_discovery/stage/select", - "dest" : "series_pages.json" - } - }, - "sources" : { - "discovery" : "http://dev-discovery.dlib.nyu.edu:8080/solr3_discovery/stage/select" - } - } -} diff --git a/node_modules/series/index.js b/node_modules/series/index.js deleted file mode 100644 index efe3c73..0000000 --- a/node_modules/series/index.js +++ /dev/null @@ -1,67 +0,0 @@ -function series ( callback , options ) { - var _ = require('underscore'); - var request = require('request'); - var fs = require('fs'); - var getSlug = require('speakingurl'); - var conf = JSON.parse( fs.readFileSync ( __dirname + '/conf.json', 'utf8' ) ) ; - var environment = options.parent_conf.environment ; - var Entities = require('html-entities').AllHtmlEntities; - var entities = new Entities(); - if ( environment !== 'production' ) environment = '*' ; - /** Source URL template */ - var compiled = _.template("<%= discovery %>?fl=*&fq=bundle:dlts_series&fq=sm_series_code:<%= collectionCode %>&sort=ss_series_label%20asc&rows=1000&wt=json"); - - /** Build URL */ - var src = compiled ( { - collectionCode : options.parent_conf.collectionCode , - discovery : conf[environment].request.series.src - } ) ; - - var template = __dirname + '/series.mustache' ; - - var data = {} ; - - request ( src , function ( error, response, body ) { - - if ( ! error && response.statusCode == 200 ) { - - if ( conf.page ) data = conf.page ; - - var series = JSON.parse( body ) - , sources = data.content.items.sources - , sources_length = sources.length ; - - data.sources = [] ; - - data.series = [] ; - - for ( var i = 0; i < sources_length; i++ ) { - data.sources.push ( { 'src' : conf[environment].sources[sources[i]], 'source' : sources[i] } ) ; - } - - _.each ( series.response.docs , function ( doc ) { - - var identifier = doc.ss_identifier ; - - if ( doc.bs_status ) { - - data.series.push( { - identifier : doc.ss_identifier , - entity_id : doc.entity_id, - label : doc.label , - route : getSlug ( entities.decode ( doc.label ) ) , - series_code : doc.sm_series_code , - data : JSON.parse( doc.zs_data ) , - } ) ; - - } - - } ) ; - - callback ( { route: '/series/index.html', template: template, data: data } ) ; - - } - } ) ; -} - -exports.series = series; diff --git a/node_modules/series/package.json b/node_modules/series/package.json deleted file mode 100644 index 1f80633..0000000 --- a/node_modules/series/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "series", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC" -} diff --git a/node_modules/series/series.mustache b/node_modules/series/series.mustache deleted file mode 100644 index 95234d6..0000000 --- a/node_modules/series/series.mustache +++ /dev/null @@ -1,25 +0,0 @@ - - - {{> head }} - - {{> header }} -
-
-

{{{title}}}

-
-
- {{#series}} - - {{/series}} -
-
-
-
- {{> footer }} - {{{ closure }}} - - diff --git a/node_modules/series_pages/conf.json b/node_modules/series_pages/conf.json deleted file mode 100644 index 10aba40..0000000 --- a/node_modules/series_pages/conf.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - - "page": { - "bodyClass": "series_page", - "content": { - "items": { - "sources" : [ "discovery" ] , - "rows": 12, - "fl": [ - "*" - ], - "fq": [ - { "filter": "sm_collection_code", "value": "aco" } - ] - } - } - }, - - "production" : { - "request" : { - "src" : "http://discovery.dlib.nyu.edu:8080/solr3_discovery/core0/select", - "dest" : "series_pages.json" - } - }, - - "*" : { - "request" : { - "series" : { - "src" : "http://dev-discovery.dlib.nyu.edu:8080/solr3_discovery/core0/select", - "dest" : "series_pages.json" - } - }, - "sources" : { - "discovery" : "http://dev-discovery.dlib.nyu.edu:8080/solr3_discovery/core0/select/" - } - } -} diff --git a/node_modules/series_pages/index.js b/node_modules/series_pages/index.js deleted file mode 100644 index b9728c6..0000000 --- a/node_modules/series_pages/index.js +++ /dev/null @@ -1,84 +0,0 @@ -function series_pages ( callback , options ) { - - var _ = require('underscore') ; - - var request = require('request') ; - - var getSlug = require('speakingurl'); - - var fs = require('fs') ; - - var Entities = require('html-entities').AllHtmlEntities; - - var entities = new Entities(); - - var conf = JSON.parse( fs.readFileSync ( __dirname + '/conf.json', 'utf8' ) ) ; - - var environment = options.parent_conf.environment ; - - var x = '?wt=json&fl=*&fq=bundle:dlts_series&sm_collection_code:awdl&rows=1000' ; - - if ( environment !== 'production' ) environment = '*' ; - - var template = __dirname + '/series_pages.mustache' ; - - var src = conf[environment].request.series.src + x; - - var data = {} ; - - request ( src , function ( error, response, body ) { - if ( ! error && response.statusCode == 200 ) { - - var series = JSON.parse( body ) ; - - _.each ( series.response.docs , function ( doc ) { - - var sources , sources_length ; - - var identifier = doc.ss_identifier ; - - /** hardcoded AWDL here for now */ - if ( ! _.has ( data, identifier ) && doc.bs_status && _.contains( doc.sm_series_code, 'awdl' ) ) { - - if ( conf.page ) data[identifier] = conf.page ; - - data[identifier].data = JSON.parse( doc.zs_data ) ; - - data[identifier].label = doc.label ; - - data[identifier].identifier = doc.ss_identifier ; - - data[identifier].hash = doc.hash ; - - data[identifier].series_code = doc.sm_series_code ; - - data[identifier].sources = [] ; - - if ( data[identifier].content ) { - - sources = data[identifier].content.items.sources ; - - sources_length = data[identifier].content.items.sources.length ; - - for ( var i = 0; i < sources_length; i++ ) { - data[identifier].sources.push( { 'src' : conf[environment].sources[sources[i]], 'source' : sources[i] } ) ; - } - - data[identifier].content.items.identifier = doc.ss_identifier ; - - _.extend( data[identifier].content.items.fq , [ - { 'filter' : 'sm_series_identifier', 'value' : doc.ss_identifier } , - { 'filter' : 'is_ispartof_series', 'value' : 1 } - ] ) ; - - callback ( { route: '/series/' + getSlug ( entities.decode ( data[identifier].label ) ) + '/index.html', template: template, data: data[identifier] } ) ; - - } - } - }); - } - }); - -} - -exports.series_pages = series_pages; diff --git a/node_modules/series_pages/package.json b/node_modules/series_pages/package.json deleted file mode 100644 index 4095c07..0000000 --- a/node_modules/series_pages/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "series_pages", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC" -} diff --git a/node_modules/series_pages/series_pages.mustache b/node_modules/series_pages/series_pages.mustache deleted file mode 100644 index 8ce6f56..0000000 --- a/node_modules/series_pages/series_pages.mustache +++ /dev/null @@ -1,30 +0,0 @@ - - - {{> head }} - - {{> header }} -
-
-

Series: {{{label}}}

-
Showing - of results
- -
-
- {{#content}} - {{#items}} -
-
- -
- {{/items}} - {{/content}} -
-
- {{> footer }} - {{{ closure }}} - - diff --git a/node_modules/subjects/conf.json b/node_modules/subjects/conf.json deleted file mode 100644 index 5290e5e..0000000 --- a/node_modules/subjects/conf.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "page": { - "bodyClass": "subjects", - "title" : "Browse by subjects" - }, - "*" : { - "request" : { - "drupal_subjects" : { - "src" : "http://alpha-user:dlts2010@stage-dl-pa.home.nyu.edu/viewer/sources/field/field_subject", - "dest" : "drupal_subjects" - }, - "subjects" : { - "src" : "http://dev-discovery.dlib.nyu.edu:8080/solr3_discovery/stage/select?wt=json&fq=sm_collection_code:aco&rows=0&facet=true&facet.field=im_field_subject", - "dest" : "subjects.json" - } - } - } -} diff --git a/node_modules/subjects/index.js b/node_modules/subjects/index.js deleted file mode 100644 index fc01cfa..0000000 --- a/node_modules/subjects/index.js +++ /dev/null @@ -1,40 +0,0 @@ -function subjects (callback , options) { - var _ = require('underscore'); - var request = require('request'); - var fs = require('fs') ; - var data = {}; - var conf = JSON.parse( fs.readFileSync ( __dirname + '/conf.json', 'utf8' ) ); - var environment = options.parent_conf.environment; - if ( environment !== 'production' ) environment = '*'; - var template = __dirname + '/subjects.mustache' ; - if ( conf.page ) { - data = conf.page ; - } - data.terms = []; - request(conf[environment].request.drupal_subjects.src, function (error, response, body) { - if ( !error && response.statusCode == 200 ) { - var drupal_subjects = JSON.parse(body); - var length = drupal_subjects.length; - var drupal_terms = []; - for ( var i = 0; i < length; i++ ) { - drupal_terms[drupal_subjects[i].raw_value] = drupal_subjects[i]; - } - request(conf[environment].request.subjects.src, function (error, response, body) { - if ( !error && response.statusCode == 200 ) { - var subjects = JSON.parse(body); - _.each ( subjects.facet_counts.facet_fields.im_field_subject , function (doc, index) { - /** Apache Solr response includes the values and the count of the values in pairs */ - if ( ( index + 1 ) % 2 && drupal_terms[doc] ) data.terms.push({tid:doc, label : drupal_terms[doc].value}); - }); - callback ( { - route: '/subjects/index.html', - template: template, - data: data - } ) ; - } - }); - } - }); -} - -exports.subjects = subjects; diff --git a/node_modules/subjects/package.json b/node_modules/subjects/package.json deleted file mode 100644 index 56f5f17..0000000 --- a/node_modules/subjects/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "subjects", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC" -} diff --git a/node_modules/subjects/subjects.mustache b/node_modules/subjects/subjects.mustache deleted file mode 100644 index 82e8609..0000000 --- a/node_modules/subjects/subjects.mustache +++ /dev/null @@ -1,19 +0,0 @@ - - - {{> head }} - - {{> header }} -
-
-

{{title}}

-
-
- -
-
- {{> footer }} - {{{ closure }}} - - diff --git a/node_modules/subjects_pages/conf.json b/node_modules/subjects_pages/conf.json deleted file mode 100644 index 0e3256a..0000000 --- a/node_modules/subjects_pages/conf.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "page": { - "bodyClass": "subjects", - "content": { - "items": { - "sources" : ["discovery"], - "rows": 12, - "fl": [ - "*" - ], - "fq": [ - { - "filter": "sm_collection_code", - "value": "aco" - } - ] - } - } - }, - "*" : { - "sources" : { - "discovery" : "http://dev-discovery.dlib.nyu.edu:8080/solr3_discovery/stage/select/" - }, - "request" : { - "drupal_subjects" : { - "src" : "http://alpha-user:dlts2010@stage-dl-pa.home.nyu.edu/viewer/sources/field/field_subject", - "dest" : "drupal_subjects" - } - } - } -} diff --git a/node_modules/subjects_pages/index.js b/node_modules/subjects_pages/index.js deleted file mode 100644 index 3b9ad36..0000000 --- a/node_modules/subjects_pages/index.js +++ /dev/null @@ -1,38 +0,0 @@ -function subjects_pages (callback , options) { - var _ = require('underscore'); - var request = require('request'); - var fs = require('fs') ; - var conf = JSON.parse(fs.readFileSync(__dirname + '/conf.json', 'utf8')); - var environment = options.parent_conf.environment; - if ( environment !== 'production' ) environment = '*'; - var template = __dirname + '/subjects_pages.mustache' ; - if ( conf.page ) data = conf.page ; - if ( data.content ) { - data.sources = []; - var sources = data.content.items.sources ; - var sources_length = data.content.items.sources.length ; - for ( var i = 0; i < sources_length; i++ ) { - data.sources.push( { 'src' : conf[environment].sources[sources[i]], 'source' : sources[i] }); - } - } - request( conf[environment].request.drupal_subjects.src, function (error, response, body) { - if ( !error && response.statusCode == 200 ) { - var drupal_subjects = JSON.parse( body ) ; - var length = drupal_subjects.length ; - var drupal_terms = []; - for ( var i = 0; i < length; i++ ) { - drupal_terms[drupal_subjects[i].raw_value] = drupal_subjects[i]; - data.tid = drupal_subjects[i].raw_value ; - - data.label = drupal_subjects[i].value ; - - callback ( { - route: '/subjects/' + drupal_subjects[i].raw_value + '/index.html', - template: template, - data: data - } ) ; - } - } - }); -} -exports.subjects_pages = subjects_pages; diff --git a/node_modules/subjects_pages/package.json b/node_modules/subjects_pages/package.json deleted file mode 100644 index e0a87f4..0000000 --- a/node_modules/subjects_pages/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "subjects_pages", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC" -} diff --git a/node_modules/subjects_pages/subjects_pages.mustache b/node_modules/subjects_pages/subjects_pages.mustache deleted file mode 100644 index 7501aee..0000000 --- a/node_modules/subjects_pages/subjects_pages.mustache +++ /dev/null @@ -1,43 +0,0 @@ - - - {{> head }} - - {{> header }} -
-
-

Subject: {{label}}

-
Showing - of results
- -
-
- {{#content}} - {{#items}} -
-
- -
- {{/items}} - {{/content}} -
-
- {{> footer }} - {{{ closure }}} - - diff --git a/package.json b/package.json index 0245532..42e4645 100644 --- a/package.json +++ b/package.json @@ -30,20 +30,19 @@ "env2": "^2.1.1", "mime-types": "^2.1.13", "nodemon": "^1.11.0", - "selenium-server": "^3.8.1" + "selenium-server": "^3.8.1", + "html-entities": "^1.1.2", + "html-minifier": "^0.7.2", + "nightwatch": "^1.0.6", + "selenium-download": "^2.0.7" }, "scripts": { - "test": "nightwatch --env default" + "test": "./nightwatch/node_modules/nightwatch/bin/nightwatch --env default" }, "author": "NYU Digital Library Technology Services", "license": "ISC", "homepage": "https://github.com/NYULibraries/aco-site", - "dependencies": { - "html-entities": "^1.1.2", - "html-minifier": "^0.7.2", - "nightwatch": "^1.0.6", - "selenium-download": "^2.0.7" - }, + "dependencies": {}, "repository": { "type" : "git", "url" : "https://github.com/NYULibraries/aco-site.git" diff --git a/test/ACCESSIBIL-22/index.js b/test/ACCESSIBIL-22/index.js index 292822c..91e8e0e 100644 --- a/test/ACCESSIBIL-22/index.js +++ b/test/ACCESSIBIL-22/index.js @@ -1,15 +1,9 @@ -const conf = require('../../nightwatch.conf.js'); -const path = require('path'); - module.exports = { - - 'Meaningful titles for book pages' : function (browser) { - browser - .url(path.join(process.env.APP_URL, 'book/princeton_aco000380/3')) - .waitForElementVisible('body', 2000) - .assert.title('ʻUṣārat qalb: Arabic Collections Online') - .saveScreenshot(conf.imgpath(browser) + 'ACCESSIBIL-22.png') - .end(); + 'Meaningful titles for book pages': function (browser) { + browser + .url(`${process.env.APP_URL}/book/princeton_aco000380/3`) + .waitForElementVisible('body', 2000) + .assert.title('ʻUṣārat qalb: Arabic Collections Online') + .end(); } - }; diff --git a/test/DLTSACO652/index.js b/test/DLTSACO652/index.js index 151b23e..1fee7e7 100644 --- a/test/DLTSACO652/index.js +++ b/test/DLTSACO652/index.js @@ -1,14 +1,10 @@ -const conf = require('../../nightwatch.conf.js'); -const path = require('path'); - module.exports = { 'Browse by Category exists' : function (browser) { browser - .url(path.join(process.env.APP_URL, 'browse-by-category')) + .url(`${process.env.APP_URL}/browse-by-category`) .waitForElementVisible('body', 1000) .assert.title('Arabic Collections Online: Browse by Category') - .saveScreenshot(conf.imgpath(browser) + 'DLTSACO652-01.png') .end(); }, From 2836d1e79b3a7d642d55ca1452f9d67311f09f31 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Thu, 9 May 2019 10:37:37 -0400 Subject: [PATCH 12/28] Docker --- Dockerfile | 3 +- Gruntconfigurations.js | 84 ++++--- Gruntfile.js | 2 +- .../tasks/writeHTML.js | 44 ++-- sample.env | 4 +- source/json/conf.js | 19 ++ source/json/curl.js | 26 +++ source/json/pages/{about.json => about.js} | 4 +- source/json/pages/{book.json => book.js} | 4 +- source/json/pages/{browse.json => browse.js} | 50 ++-- ...wsebycategory.json => browsebycategory.js} | 4 +- source/json/pages/{front.json => front.js} | 4 +- .../json/pages/{notfound.json => notfound.js} | 4 +- .../pages/{resources.json => resources.js} | 4 +- source/json/pages/{search.json => search.js} | 46 ++-- ...hcollections.json => searchcollections.js} | 4 +- .../pages/{styleguide.json => styleguide.js} | 4 +- .../json/pages/{takedown.json => takedown.js} | 5 +- source/json/pages/{team.json => team.js} | 4 +- source/views/about.mustache | 60 +++-- source/views/book.mustache | 14 +- source/views/featured.mustache | 33 +-- source/views/front.mustache | 60 +++-- source/views/frontCount.mustache | 12 +- source/views/frontFeaturedItems.mustache | 217 +++++++++++------- source/views/navButton.mustache | 12 +- source/views/notfound.mustache | 30 +-- source/views/openGraphMetaData.mustache | 5 +- source/views/resources.mustache | 13 +- source/views/search.mustache | 34 +-- source/views/search_form_adv.mustache | 2 +- source/views/searchcollections.mustache | 28 +-- source/views/searchtips.mustache | 83 ++++--- source/views/series.mustache | 4 +- source/views/subjectCount.mustache | 16 +- source/views/subjects.mustache | 4 +- source/views/takedown.mustache | 14 +- source/views/team.mustache | 25 +- 38 files changed, 584 insertions(+), 401 deletions(-) create mode 100644 source/json/conf.js create mode 100644 source/json/curl.js rename source/json/pages/{about.json => about.js} (99%) rename source/json/pages/{book.json => book.js} (87%) rename source/json/pages/{browse.json => browse.js} (58%) rename source/json/pages/{browsebycategory.json => browsebycategory.js} (97%) rename source/json/pages/{front.json => front.js} (94%) rename source/json/pages/{notfound.json => notfound.js} (96%) rename source/json/pages/{resources.json => resources.js} (99%) rename source/json/pages/{search.json => search.js} (59%) rename source/json/pages/{searchcollections.json => searchcollections.js} (93%) rename source/json/pages/{styleguide.json => styleguide.js} (84%) rename source/json/pages/{takedown.json => takedown.js} (98%) rename source/json/pages/{team.json => team.js} (99%) diff --git a/Dockerfile b/Dockerfile index 9e27cc2..3bbd502 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,9 +16,8 @@ WORKDIR /usr/src/app COPY . . RUN npm install -g grunt-cli \ - && npm install http-server -g \ && npm install \ - && grunt + && npm run-script build-docker # Stage 2 FROM httpd:2.4-alpine diff --git a/Gruntconfigurations.js b/Gruntconfigurations.js index 496ed58..566be0f 100644 --- a/Gruntconfigurations.js +++ b/Gruntconfigurations.js @@ -1,13 +1,10 @@ - -var grunt = require('grunt') ; +var grunt = require('grunt'); function project () { - var projectConfiguration ; - var projectConfigurationFile = __dirname + '/source/json/conf.json' ; - if ( grunt.file.isFile ( projectConfigurationFile ) ) { - projectConfiguration = grunt.file.readJSON ( projectConfigurationFile ) ; + const projectConfigurationFile = `${__dirname}/source/json/conf.js`; + if (grunt.file.isFile(projectConfigurationFile)) { + return require(projectConfigurationFile); } - return projectConfiguration ; } function htmlminify () { @@ -21,9 +18,9 @@ function htmlminify () { } function curl () { - if ( grunt.file.isFile( __dirname + '/source/json/curl.json' ) ) { - var curlConfiguration = grunt.file.readJSON( __dirname + '/source/json/curl.json' ) ; - return curlConfiguration.curl ; + const curlConfigurationPath = `${__dirname}/source/json/curl.js`; + if (grunt.file.isFile(curlConfigurationPath)) { + return require(curlConfigurationPath).curl; } } @@ -34,7 +31,7 @@ function js () { if ( grunt.file.isFile( __dirname + '/source/json/js.json' ) ) { js_conf = grunt.file.readJSON( __dirname + '/source/json/js.json' ) ; } - + else { // default JS configuration js_conf = { @@ -42,43 +39,44 @@ function js () { build : "external", // options: inline, external style : "expanded" // options: compressed, expanded } - }; + }; } - + return js_conf ; } /** merge with compass */ function sass () { - + var sass_conf; - + if ( grunt.file.isFile( __dirname + '/source/json/sass.json' ) ) { - sass_conf = grunt.file.readJSON( __dirname + '/source/json/sass.json' ) ; + sass_conf = grunt.file.readJSON( __dirname + '/source/json/sass.json' ) ; } - + else { // default SASS configuration sass_conf = { - sass : { - build : "external", // options: inline, external - // build : "external", // options: inline, external + sass: { + build: 'external', // options: inline, external // for options; see: https://github.com/gruntjs/grunt-contrib-sass - options : { - style : "expanded", // options: nested, compact, compressed, expanded - debugInfo : false, - lineNumbers : true, + options: { + style: 'expanded', // options: nested, compact, compressed, expanded + debugInfo: false, + lineNumbers: true, trace: false } } - }; + }; } - + return { dist: { options: sass_conf.sass.options, - files: { 'build/css/style.css': __dirname + '/source/sass/style.scss' }, + files: { + 'build/css/style.css': __dirname + '/source/sass/style.scss' + }, build : sass_conf.sass.build } } ; @@ -86,19 +84,19 @@ function sass () { } function compass () { - + var projectConfiguration = project () ; - + // outputStyle: nested, expanded, compact, compressed // noLineComments: true, false // httpPath: String , default to "/" var compass_conf; - + if ( grunt.file.isFile ( __dirname + '/source/json/compass.json' ) ) { - compass_conf = grunt.file.readJSON ( __dirname + '/source/json/compass.json' ) ; + compass_conf = grunt.file.readJSON ( __dirname + '/source/json/compass.json' ) ; } - + return { dist: { options: { @@ -115,21 +113,31 @@ function compass () { } -function copy () { +function copy() { return { main: { files: [ - { expand: true, cwd: 'source/images', src: '**/*', dest: 'build/images'}, - { expand: true, cwd: 'source', src: 'robots.txt', dest: 'build'}, - ] + { + expand: true, + cwd: 'source/images', + src: '**/*', + dest: 'build/images' + }, + { + expand: true, + cwd: 'source', + src: 'robots.txt', + dest: 'build' + }, + ] } }; } function clean () { - return [ + return [ __dirname + '/build/*', - __dirname + '/source/json/datasources/*.json' + __dirname + '/source/json/datasources/*.json' ]; } diff --git a/Gruntfile.js b/Gruntfile.js index 69f0009..3ab5593 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -14,7 +14,7 @@ module.exports = function (grunt) { compass : configuration.compass() }; - if (grunt.file.isFile(__dirname + '/source/json/curl.json')) { + if (grunt.file.isFile(`${__dirname}/source/json/curl.js`)) { taskConfiguration.curl = configuration.curl(); } diff --git a/lib/grunt-contrib-writeHTML/tasks/writeHTML.js b/lib/grunt-contrib-writeHTML/tasks/writeHTML.js index 952b47f..97a23db 100644 --- a/lib/grunt-contrib-writeHTML/tasks/writeHTML.js +++ b/lib/grunt-contrib-writeHTML/tasks/writeHTML.js @@ -8,42 +8,43 @@ 'use strict'; -module.exports = function ( grunt ) { - function writeHTML ( ) { +module.exports = function (grunt) { + function writeHTML () { try { - console.log ( 'We are doing something here' ); + console.log('We are doing something here'); } catch (e) { - console.log ( e ) ; + console.log (e); grunt.log.error(); grunt.fail.warn('Unable to Yay!', e); } } - grunt.registerTask('writeHTML', 'Write HTML files from pages.json file.', function () { + grunt.registerTask('writeHTML', 'Write HTML files from pages.js file.', function () { var path = require('path'); var _ = require('underscore'); - var fs = require('fs') ; + var fs = require('fs') ; /** @TODO: find if there is a more elegant solution to this */ var root = path.normalize(__dirname + '/../../..'); var transform = require('transform'); /** force task into asynchronous mode and grab a handle to the "done" function. */ var done = this.async(); try { - var pages = {}; + var pages = {}; /** load configuration */ - var conf = grunt.file.readJSON( root + '/source/json/conf.json') ; - if ( grunt.file.isDir( root + '/source/json/pages' ) ) { - var sources = fs.readdirSync( root + '/source/json/pages' ) ; - for ( var i = 0; i < sources.length ; i++ ) { - if ( sources[i].match('.json') ) { - _.extend ( pages, grunt.file.readJSON ( root + '/source/json/pages/' + sources[i] ) ) ; + const projectConfigurationFile = `${root}/source/json/conf.js`; + let conf = require(projectConfigurationFile); + if (grunt.file.isDir(`${root}/source/json/pages`)) { + var sources = fs.readdirSync(`${root}/source/json/pages`); + for (var i = 0; i < sources.length ; i++) { + if (sources[i].match('.js')) { + _.extend(pages, require(`${root}/source/json/pages/${sources[i]}`)); } } } /** copy source JavaScript files to build */ - grunt.file.recurse(root + '/source/js/', function callback (abspath, rootdir, subdir, filename) { - if ( filename.match('.js') ) { - grunt.file.copy( abspath, 'build/js/' + filename ); + grunt.file.recurse(`${root}/source/js/`, function callback (abspath, rootdir, subdir, filename) { + if (filename.match('.js')) { + grunt.file.copy(abspath, `build/js/${filename}`); } }); /** iterate pages and transform in HTML*/ @@ -53,17 +54,20 @@ module.exports = function ( grunt ) { if ( ! _.isUndefined(pages[index].callback)) { /** load JS module */ var module = require(element.callback); - /** - * call module with parent configuration so that its possible + /** + * call module with parent configuration so that its possible * to overwrite defaults. Our modules accept a Function callback * we pass "transform.html" as the default. - * */ module[element.callback](transform.html, { parent_conf : conf }); } else { /** all we need to construct this HTML page it's in the page Object */ - transform.html( { route : element.route , template : root + '/source/views/' + index + '.mustache' , data : element }); + transform.html({ + route: element.route, + template: `${root}/source/views/${index}.mustache`, + data: element + }); } }); } diff --git a/sample.env b/sample.env index de342f9..8c7df52 100644 --- a/sample.env +++ b/sample.env @@ -1 +1,3 @@ -export APP_URL=http://aco.local/aco \ No newline at end of file +export APP_URL=http://127.0.0.1:8080/aco +export APP_ROOT=/aco +export DISCOVERY_CORE=http://stagediscovery.dlib.nyu.edu:8983/solr/viewer diff --git a/source/json/conf.js b/source/json/conf.js new file mode 100644 index 0000000..8b52aca --- /dev/null +++ b/source/json/conf.js @@ -0,0 +1,19 @@ +const appUrl = process.env.APP_URL; +const appRoot = process.env.APP_ROOT; +const discoveryCore = process.env.DISCOVERY_CORE; + +module.exports = exports = { + "appName": "Arabic Collections Online", + "appOGDescription": "Arabic Collections Online is a publicly available digital library of public domain Arabic language content. Funded by New York University Abu Dhabi, this project aims to expose 23,000 volumes from NYU and partner institutions over a period of five years.", + "appOGImage": [ + { + "path": `${appUrl}/images/booklarge.png` + } + ], + "appOGUrl": appUrl, + "collectionCode": "aco", + "appUrl": appUrl, + "appUrlx": appUrl, + "appRoot": appRoot, + "discovery": `${discoveryCore}/select/` +}; diff --git a/source/json/curl.js b/source/json/curl.js new file mode 100644 index 0000000..ca4c7db --- /dev/null +++ b/source/json/curl.js @@ -0,0 +1,26 @@ +const discoveryCore = process.env.DISCOVERY_CORE; + +module.exports = exports = { + "curl" : { + "featuredTitlesAll" : { + "src" : `${discoveryCore}/select?wt=json&fq=sm_collection_code:aco&fq=ss_language:en&fq=(ss_book_identifier:aub_aco000078+OR+ss_book_identifier:aub_aco000141+OR+ss_book_identifier:aub_aco000157+OR+ss_book_identifier:aub_aco000045+OR+ss_book_identifier:aub_aco000083+OR+ss_book_identifier:princeton_aco000380+OR+ss_book_identifier:princeton_aco000328+OR+ss_book_identifier:princeton_aco000319+OR+ss_book_identifier:princeton_aco000060+OR+ss_book_identifier:princeton_aco000062+OR+ss_book_identifier:columbia_aco000059+OR+ss_book_identifier:columbia_aco000247+OR+ss_book_identifier:columbia_aco000103+OR+ss_book_identifier:columbia_aco000078+OR+ss_book_identifier:cornell_aco000139+OR+ss_book_identifier:cornell_aco000327+OR+ss_book_identifier:cornell_aco000041+OR+ss_book_identifier:cornell_aco000042+OR+ss_book_identifier:cornell_aco000043+OR+ss_book_identifier:nyu_aco001050+OR+ss_book_identifier:nyu_aco001718+OR+ss_book_identifier:nyu_aco001719+OR+ss_book_identifier:nyu_aco001720)&sort=ss_book_identifier%20desc&rows=30&fl=*&hl=falsei&q=*`, + "dest" : "source/json/datasources/featuredTitlesAll.json" + }, + "frontCount" : { + "src" : `${discoveryCore}/select?wt=json&fq=sm_collection_code:aco&fq=ss_language:en&fl=id&hl=false&q=*`, + "dest" : "source/json/datasources/frontCountId.json" + }, + "subjectCount" : { + "src" : `${discoveryCore}/select?wt=json&json.nl=arrmap&fq=sm_collection_code:aco&rows=0&facet=true&facet.limit=-1&facet.mincount=1&facet.field=im_field_subject&hl=falsei&q=*`, + "dest" : "source/json/datasources/subjectCount.json" + }, + "categoryQueryEn" : { + "src" : `${discoveryCore}/select?wt=json&json.nl=arrmap&q=sm_collection_code:aco&facet=true&rows=0&facet.query=%7B!key=%22General%20Works%22%7Dss_call_number:A*&facet.query=%7B!key=%22Philosophy.%20Psychology.%20Religion%22%7Dss_call_number:B*&facet.query=%7B!key=%22Auxiliary%20Sciences%20of%20History%22%7Dss_call_number:C*&facet.query=%7B!key=%22World%20History%20and%20History%20of%20Europe,%20Asia,%20Africa,%20Australia,%20New%20Zealand,%20etc..%22%7Dss_call_number:D*&facet.query=%7B!key=%22History%20of%20the%20Americas%22%7Dss_call_number:(E*%20OR%20F*)&facet.query=%7B!key=%22Geography,%20Anthropology,%20and%20Recreation%22%7Dss_call_number:G*&facet.query=%7B!key=%22Social%20Sciences%22%7Dss_call_number:H*&facet.query=%7B!key=%22Political%20Science%22%7Dss_call_number:J*&facet.query=%7B!key=%22Law%22%7Dss_call_number:K*&facet.query=%7B!key=%22Education%22%7Dss_call_number:L*&facet.query=%7B!key=%22Music%22%7Dss_call_number:M*&facet.query=%7B!key=%22Fine%20Arts%22%7Dss_call_number:N*&facet.query=%7B!key=%22Language%20and%20Literature%22%7Dss_call_number:P*&facet.query=%7B!key=%22Science%22%7Dss_call_number:Q*&facet.query=%7B!key=%22Medicine%22%7Dss_call_number:R*&facet.query=%7B!key=%22Agriculture%22%7Dss_call_number:S*&facet.query=%7B!key=%22Technology%22%7Dss_call_number:T*&facet.query=%7B!key=%22Military%20Science%22%7Dss_call_number:U*&facet.query=%7B!key=%22Naval%20Science%22%7Dss_call_number:V*&facet.query=%7B!key=%22Bibliography,%20Library%20Science,%20and%20General%20Information%20Resources%22%7Dss_call_number:Z*`, + "dest" : "source/json/datasources/categoryQueryEn.json" + }, + "categoryQueryAr" : { + "src" : `${discoveryCore}/select?wt=json&json.nl=arrmap&wt=json&json.nl=arrmap&q=sm_collection_code:aco&facet=true&rows=0&facet.query=%7B!key=%22%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D8%B1%D9%81%20%D8%A7%D9%84%D8%B9%D8%A7%D9%85%D8%A9%22%7Dss_call_number:A*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%81%D9%84%D8%B3%D9%81%D8%A9%20%D9%88%D8%B9%D9%84%D9%85%20%D8%A7%D9%84%D9%86%D9%81%D8%B3%20%D9%88%D8%A7%D9%84%D8%AF%D9%8A%D9%86%22%7Dss_call_number:B*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D9%81%D8%B1%D8%B9%D9%8A%D8%A9%20%D9%84%D9%84%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%22%7Dss_call_number:C*&facet.query=%7B!key=%22%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A7%D9%84%D8%B9%D8%A7%D9%84%D9%85%20%D9%88%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A3%D9%88%D8%B1%D9%88%D8%A8%D8%A7%20%D9%88%D8%A2%D8%B3%D9%8A%D8%A7%20%D9%88%D8%A3%D9%81%D8%B1%D9%8A%D9%82%D9%8A%D8%A7%22%7Dss_call_number:D*&facet.query=%7B!key=%22%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A3%D9%85%D8%B1%D9%8A%D9%83%D8%A7%22%7Dss_call_number:(E*%20OR%20F*)&facet.query=%7B!key=%22%D8%A7%D9%84%D8%AC%D8%BA%D8%B1%D8%A7%D9%81%D9%8A%D8%A7%20%D9%88%D8%A7%D9%84%D8%A3%D9%86%D8%AB%D8%B1%D8%A8%D9%88%D9%84%D9%88%D8%AC%D9%8A%D8%A7%20%D9%88%D8%A7%D9%84%D8%AA%D8%B1%D9%81%D9%8A%D9%87%22%7Dss_call_number:G*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%D9%8A%D8%A9%22%7Dss_call_number:H*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%B3%D9%8A%D8%A7%D8%B3%D9%8A%D8%A9%22%7Dss_call_number:J*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%82%D8%A7%D9%86%D9%88%D9%86%22%7Dss_call_number:K*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%8A%D9%85%22%7Dss_call_number:L*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%85%D9%88%D8%B3%D9%8A%D9%82%D9%89%22%7Dss_call_number:M*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%81%D9%86%D9%88%D9%86%20%D8%A7%D9%84%D8%AC%D9%85%D9%8A%D9%84%D8%A9%22%7Dss_call_number:N*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%84%D8%BA%D8%A7%D8%AA%20%D9%88%D8%A7%D9%84%D8%A2%D8%AF%D8%A7%D8%A8%22%7Dss_call_number:P*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%22%7Dss_call_number:Q*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B7%D8%A8%22%7Dss_call_number:R*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B2%D8%B1%D8%A7%D8%B9%D8%A9%22%7Dss_call_number:S*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%AA%D9%83%D9%86%D9%88%D9%84%D9%88%D8%AC%D9%8A%D8%A7%22%7Dss_call_number:T*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%B9%D8%B3%D9%83%D8%B1%D9%8A%D8%A9%22%7Dss_call_number:U*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%A8%D8%AD%D8%B1%D9%8A%D8%A9%22%7Dss_call_number:V*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%A8%D8%A8%D9%84%D9%8A%D9%88%D8%BA%D8%B1%D8%A7%D9%81%D9%8A%D8%A7%20%D8%8C%20%D9%88%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8%D8%A7%D8%AA%20%D8%8C%20%D9%88%D8%A7%D9%84%D9%85%D8%B9%D9%84%D9%88%D9%85%D8%A7%D8%AA%20%D8%A7%D9%84%D8%B9%D8%A7%D9%85%D8%A9%22%7Dss_call_number:Z*`, + "dest" : "source/json/datasources/categoryQueryAr.json" + } + } +} diff --git a/source/json/pages/about.json b/source/json/pages/about.js similarity index 99% rename from source/json/pages/about.json rename to source/json/pages/about.js index 66a5363..ccf8ea9 100644 --- a/source/json/pages/about.json +++ b/source/json/pages/about.js @@ -1,4 +1,4 @@ -{ +module.exports = exports = { "about": { "htmltitle": "About", "title": [{ @@ -161,4 +161,4 @@ }] } } -} \ No newline at end of file +}; diff --git a/source/json/pages/book.json b/source/json/pages/book.js similarity index 87% rename from source/json/pages/book.json rename to source/json/pages/book.js index 5af00c1..a7be798 100644 --- a/source/json/pages/book.json +++ b/source/json/pages/book.js @@ -1,4 +1,4 @@ -{ +module.exports = exports = { "book": { "htmltitle": "Book", "title": "Book", @@ -7,4 +7,4 @@ "sourceUrl": "http://sites.dlib.nyu.edu/viewer", "route": "/book/index.html" } -} +}; diff --git a/source/json/pages/browse.json b/source/json/pages/browse.js similarity index 58% rename from source/json/pages/browse.json rename to source/json/pages/browse.js index 81c5752..f1027c2 100644 --- a/source/json/pages/browse.json +++ b/source/json/pages/browse.js @@ -1,4 +1,6 @@ -{ +const discoveryCore = process.env.DISCOVERY_CORE; + +module.exports = exports = { "browse": { "htmltitle": "Browse", "title": [{ @@ -19,36 +21,36 @@ "bodyClass": "browse", "content": { "items": { - "source": "http://discovery1.dlib.nyu.edu:8983/solr/viewer/select", + "source": `${discoveryCore}/select`, "rows": 10, "fl": [ - "ss_representative_image", - "ss_title_long", - "ss_ar_title_long", + "ss_representative_image", + "ss_title_long", + "ss_ar_title_long", "ss_book_identifier", "sm_author", - "ss_uri", - "sm_publisher", - "ss_pubdate", - "iass_pubyear", - "sm_collection_partner_label", - "zm_subject", + "ss_uri", + "sm_publisher", + "ss_pubdate", + "iass_pubyear", + "sm_collection_partner_label", + "zm_subject", "zm_partner", - "ss_publocation", - "ss_ar_title", - "sm_ar_author", - "sm_ar_publisher", - "sm_ar_publication_date", - "sm_ar_partner", + "ss_publocation", + "ss_ar_title", + "sm_ar_author", + "sm_ar_publisher", + "sm_ar_publication_date", + "sm_ar_partner", "sm_ar_subject", - "ss_ar_sauthor", - "ss_longlabel", - "ss_sauthor", - "sm_ar_sauthor", - "ss_ar_publocation", + "ss_ar_sauthor", + "ss_longlabel", + "ss_sauthor", + "sm_ar_sauthor", + "ss_ar_publocation", "ss_ar_publication_location", "ds_created", - "score" + "score" ], "fq": [ { @@ -67,4 +69,4 @@ } } } -} +}; diff --git a/source/json/pages/browsebycategory.json b/source/json/pages/browsebycategory.js similarity index 97% rename from source/json/pages/browsebycategory.json rename to source/json/pages/browsebycategory.js index f3e96e8..856330b 100644 --- a/source/json/pages/browsebycategory.json +++ b/source/json/pages/browsebycategory.js @@ -1,4 +1,4 @@ -{ +module.exports = exports = { "browsebycategory": { "htmltitle": "Browse by Category", "title": [{ @@ -40,4 +40,4 @@ ] } } -} +}; diff --git a/source/json/pages/front.json b/source/json/pages/front.js similarity index 94% rename from source/json/pages/front.json rename to source/json/pages/front.js index 69899bd..b09ddc6 100644 --- a/source/json/pages/front.json +++ b/source/json/pages/front.js @@ -1,4 +1,4 @@ -{ +module.exports = exports = { "front": { "title": [ { "html": "Browse Home" } ], "menu": [{ @@ -29,4 +29,4 @@ ] } } -} \ No newline at end of file +}; diff --git a/source/json/pages/notfound.json b/source/json/pages/notfound.js similarity index 96% rename from source/json/pages/notfound.json rename to source/json/pages/notfound.js index 2f16ab0..1a4267f 100644 --- a/source/json/pages/notfound.json +++ b/source/json/pages/notfound.js @@ -1,4 +1,4 @@ -{ +module.exports = exports = { "notfound": { "htmltitle": "Page Not Found", "title": [{ @@ -26,4 +26,4 @@ }] } } -} \ No newline at end of file +}; diff --git a/source/json/pages/resources.json b/source/json/pages/resources.js similarity index 99% rename from source/json/pages/resources.json rename to source/json/pages/resources.js index 43feeaa..f0ea191 100644 --- a/source/json/pages/resources.json +++ b/source/json/pages/resources.js @@ -1,4 +1,4 @@ -{ +module.exports = exports = { "resources": { "htmltitle": "Other Resources", "title": [{ @@ -31,4 +31,4 @@ }] } } -} \ No newline at end of file +}; diff --git a/source/json/pages/search.json b/source/json/pages/search.js similarity index 59% rename from source/json/pages/search.json rename to source/json/pages/search.js index 28f45f8..4cbb2ab 100644 --- a/source/json/pages/search.json +++ b/source/json/pages/search.js @@ -1,4 +1,6 @@ -{ +const discoveryCore = process.env.DISCOVERY_CORE; + +module.exports = exports = { "search": { "htmltitle": "Search", "title": [{ @@ -14,33 +16,33 @@ "bodyClass": "search io-loading", "content": { "items": { - "source": "http://discovery1.dlib.nyu.edu:8983/solr/viewer/select", + "source": `${discoveryCore}/select`, "rows": 10, "fl": [ - "ss_representative_image", - "ss_title_long", - "ss_ar_title_long", + "ss_representative_image", + "ss_title_long", + "ss_ar_title_long", "ss_book_identifier", "sm_author", - "ss_uri", - "sm_publisher", - "ss_pubdate", - "iass_pubyear", - "sm_collection_partner_label", + "ss_uri", + "sm_publisher", + "ss_pubdate", + "iass_pubyear", + "sm_collection_partner_label", "zm_subject", "zm_partner", - "ss_publocation", - "ss_ar_title", - "sm_ar_author", - "sm_ar_publisher", - "sm_ar_publication_date", - "sm_ar_partner", + "ss_publocation", + "ss_ar_title", + "sm_ar_author", + "sm_ar_publisher", + "sm_ar_publication_date", + "sm_ar_partner", "sm_ar_subject", "sm_ar_sauthor", - "ss_longlabel", - "ss_sauthor", - "ss_ar_sauthor", - "ss_ar_publocation", + "ss_longlabel", + "ss_sauthor", + "ss_ar_sauthor", + "ss_ar_publocation", "ss_ar_publication_location", "ds_created", "score" @@ -53,7 +55,7 @@ { "filter": "sm_collection_code", "value": "aco" - }, + }, { "filter": "ss_language", "value": "en" @@ -62,4 +64,4 @@ } } } -} +}; diff --git a/source/json/pages/searchcollections.json b/source/json/pages/searchcollections.js similarity index 93% rename from source/json/pages/searchcollections.json rename to source/json/pages/searchcollections.js index e6deaae..32890e8 100644 --- a/source/json/pages/searchcollections.json +++ b/source/json/pages/searchcollections.js @@ -1,4 +1,4 @@ -{ +module.exports = exports = { "searchcollections": { "htmltitle": "Search Collections", "title": [{ @@ -18,4 +18,4 @@ "route": "/searchcollections/index.html", "bodyClass": "search" } -} \ No newline at end of file +}; diff --git a/source/json/pages/styleguide.json b/source/json/pages/styleguide.js similarity index 84% rename from source/json/pages/styleguide.json rename to source/json/pages/styleguide.js index c90ae5f..85ef6bd 100644 --- a/source/json/pages/styleguide.json +++ b/source/json/pages/styleguide.js @@ -1,4 +1,4 @@ -{ +module.exports = exports = { "styleguide": { "htmltitle": "styleguide", "title": "styleguide", @@ -6,4 +6,4 @@ "bodyClass": "styleguide", "content": {} } -} \ No newline at end of file +}; diff --git a/source/json/pages/takedown.json b/source/json/pages/takedown.js similarity index 98% rename from source/json/pages/takedown.json rename to source/json/pages/takedown.js index 8d125d2..c502862 100644 --- a/source/json/pages/takedown.json +++ b/source/json/pages/takedown.js @@ -1,4 +1,4 @@ -{ +module.exports = exports = { "takedown": { "htmltitle": "Takedown Policy", "title": "Takedown Policy", @@ -6,9 +6,8 @@ "bodyClass": "takedownpolicy", "content": { "main": [{ - "html": "

If you are a rights holder and are concerned that you have found material on this website for which you have not granted permission (or is not covered by a copyright exception under applicable copyright laws), you may request the removal of the material from our site by submitting a notice, with the elements described below, to ACO-contact-group@nyu.edu. Please include the following in your notice:

  1. Identification of the material that you believe to be infringing and information sufficient to permit us to locate the material;
  2. Your contact information, such as an address, telephone number, and email address;
  3. A statement that you are the owner, or authorized to act on behalf of the owner, of an exclusive right that is allegedly infringed and that you have a good-faith belief that use of the material in the manner complained of is not authorized by the copyright owner, its agent, or the law;
  4. A statement that the information in the notification is accurate and made under penalty of perjury, and;
  5. Your physical or electronic signature.

Upon receiving a notice that includes the details listed above, we will remove the allegedly infringing material from public view while we assess the issues identified in your notice.

" }] } } -} \ No newline at end of file +}; diff --git a/source/json/pages/team.json b/source/json/pages/team.js similarity index 99% rename from source/json/pages/team.json rename to source/json/pages/team.js index a4b2e27..0e4216f 100644 --- a/source/json/pages/team.json +++ b/source/json/pages/team.js @@ -1,4 +1,4 @@ -{ +module.exports = exports = { "team": { "htmltitle": "About the project team", "title": [{ @@ -58,4 +58,4 @@ }] } } -} \ No newline at end of file +}; diff --git a/source/views/about.mustache b/source/views/about.mustache index 5db70ab..9e8c6a8 100644 --- a/source/views/about.mustache +++ b/source/views/about.mustache @@ -1,28 +1,44 @@ - {{> head }} - - - {{> header }} -
- {{#title}} -

{{{html}}}

{{/title}} {{#content}} -
-

What is Arabic Collections Online?

-

Arabic Collections Online (ACO) is a publicly available digital library of public domain Arabic language content. ACO currently provides digital access to {{> frontCount ..}} volumes across {{> subjectCount ..}} subjects drawn from rich Arabic collections of distinguished research libraries. Established with support from NYU Abu Dhabi, and currently supported by major grants from Arcadia, a charitable fund of Lisbet Rausing and Peter Baldwin, and Carnegie Corporation of New York, this mass digitization project aims to feature up to 23,000 volumes from the library collections of NYU and partner institutions. These institutions are contributing published books in all fields—literature, business, science, and more—from their Arabic language collections. -

+ + {{> header }} +
+ {{#title}} +

{{{html}}}

+ {{/title}} + {{#content}} +
+

What is Arabic Collections Online?

+

Arabic Collections Online (ACO) is a publicly available digital library of public domain Arabic + language content. ACO currently provides digital access to {{> frontCount ..}} volumes across + {{> subjectCount ..}} subjects drawn from rich Arabic collections of distinguished research + libraries. Established with support from NYU Abu Dhabi, and currently supported by major grants from + Arcadia, a charitable fund of Lisbet Rausing and Peter Baldwin, and Carnegie Corporation of New York, + this mass digitization project aims to feature up to 23,000 volumes from the library collections of NYU + and partner institutions. These institutions are contributing published books in all fields—literature, + business, science, and more—from their Arabic language collections. +

+
+
+

ما هي المجموعات العربية على الانترنت؟

+

المجموعات العربية على الانترنِت هي عبارة عن مكتبة عامة رقميَّة للكتب المؤلَّفة باللغة العربية + والتي أصبحت في المجال العام. حالياً، هذا المشروع يوفّر إمكانيّة الولوج الإلكتروني إلى + {{> frontCount ..}} كتاباً في اكثر من {{> subjectCount ..}} موضوعاً مُستَمداً من مجموعات + قيّمة في مكتبات مميَّزة. تأسست بدعم من جامعة نيويورك أبوظبي وتدعمها حاليًا المنح الكبرى من أركاديا ، وهي + صندوق خيري لشركة ليسبت راوزينج وبيتر بالدوين ، وشركة كارنيجي في نيويورك. يهدف مشروع الرقمنة هذا إلى عرض + ما يصل إلى 23,000 مجلد من مجموعات مكتبة جامعة نيويورك والمؤسسات الشريكة. إن هذه المؤسسات تساهم في تقديم + كتب منشورة في مختلف مجالات الأدب، والأعمال، والعلوم، وغيرها من مقتنياتها من المجموعات العربية. +

+
+ {{#main}} +
+ {{{html}}}
-
-

ما هي المجموعات العربية على الانترنت؟

-

المجموعات العربية على الانترنِت هي عبارة عن مكتبة عامة رقميَّة للكتب المؤلَّفة باللغة العربية والتي أصبحت في المجال العام. حالياً، هذا المشروع يوفّر إمكانيّة الولوج الإلكتروني إلى {{> frontCount ..}} كتاباً في اكثر من {{> subjectCount ..}} موضوعاً مُستَمداً من مجموعات قيّمة في مكتبات مميَّزة. تأسست بدعم من جامعة نيويورك أبوظبي وتدعمها حاليًا المنح الكبرى من أركاديا ، وهي صندوق خيري لشركة ليسبت راوزينج وبيتر بالدوين ، وشركة كارنيجي في نيويورك. يهدف مشروع الرقمنة هذا إلى عرض ما يصل إلى 23,000 مجلد من مجموعات مكتبة جامعة نيويورك والمؤسسات الشريكة. إن هذه المؤسسات تساهم في تقديم كتب منشورة في مختلف مجالات الأدب، والأعمال، والعلوم، وغيرها من مقتنياتها من المجموعات العربية. -

-
- {{#main}} -
{{{html}}}
- {{/main}} {{/content}} -
- {{> footer }} {{{ closure }}} + {{/main}} + {{/content}} +
+ {{> footer }} + {{{closure}}} - \ No newline at end of file diff --git a/source/views/book.mustache b/source/views/book.mustache index 88d2576..89a64c4 100644 --- a/source/views/book.mustache +++ b/source/views/book.mustache @@ -3,15 +3,15 @@ {{> head }} {{> header }} - - + + {{> loading }} - {{{ closure }}} + {{{closure}}} diff --git a/source/views/browse.mustache b/source/views/browse.mustache index e0de1c6..1acc0f2 100644 --- a/source/views/browse.mustache +++ b/source/views/browse.mustache @@ -1,24 +1,24 @@ - {{> head }} - - {{> header }} -
-
- {{#title}} -

{{{html}}}

{{/title}} - -
- {{#content}} {{#items}} -
+ {{> header }} +
+
+ {{#title}} +

{{{html}}}

+ {{/title}} +
+ {{#content}} + {{#items}} +
- +
- {{/items}} {{/content}} -
- {{> footer }} {{{ closure }}} + {{/items}} + {{/content}} +
+ {{> footer }} + {{{closure}}} - \ No newline at end of file diff --git a/source/views/browsebycategory.mustache b/source/views/browsebycategory.mustache index bf7896a..884f67c 100644 --- a/source/views/browsebycategory.mustache +++ b/source/views/browsebycategory.mustache @@ -6,45 +6,21 @@
{{#title}} -

{{{html}}}

+

{{{html}}}

{{/title}}
{{#content}} - {{#categoryEn}} -
+ {{#categories}} + - {{/categoryEn}} - {{#categoryAr}} - - {{/categoryAr}} + {{/categories}}
{{/content}}
diff --git a/source/views/credits.mustache b/source/views/credits.mustache index be1190f..f8648d5 100644 --- a/source/views/credits.mustache +++ b/source/views/credits.mustache @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/source/views/footer-feedbacklinks.mustache b/source/views/footer-feedbacklinks.mustache index ecfea11..4d8075a 100644 --- a/source/views/footer-feedbacklinks.mustache +++ b/source/views/footer-feedbacklinks.mustache @@ -1,4 +1,4 @@ \ No newline at end of file diff --git a/source/views/front.mustache b/source/views/front.mustache index f9b9128..9fbd230 100644 --- a/source/views/front.mustache +++ b/source/views/front.mustache @@ -1,38 +1,22 @@ - {{> head }} + {{>head}} - {{> header }} + {{>header}}
- {{> search_form_adv }} + {{>search_form_adv}} {{#content}} -
-

- Arabic Collections Online (ACO) is a publicly available digital library of public domain Arabic language - content. ACO currently provides digital access to {{> frontCount ..}} volumes across - {{> subjectCount ..}} subjects drawn from rich Arabic collections of distinguished research libraries. - Established with support from NYU Abu Dhabi, and currently supported by major grants from Arcadia, a charitable - fund of Lisbet Rausing and Peter Baldwin, and Carnegie Corporation of New York, this mass digitization project - aims to feature up to 23,000 volumes from the library collections of NYU and partner institutions.  - READ MORE… -

-
-
-

المجموعات العربية على الانترنِت هي عبارة عن مكتبة عامة رقميَّة للكتب المؤلَّفة باللغة العربية والتي - أصبحت في المجال العام. حالياً، هذا المشروع يوفّر إمكانيّة الولوج الإلكتروني إلى {{> frontCount ..}} - كتاباً في اكثر من {{> subjectCount ..}} موضوعاً مُستَمداً من مجموعات قيّمة في مكتبات مميَّزة. تأسست بدعم - من جامعة نيويورك أبوظبي وتدعمها حاليًا المنح الكبرى من أركاديا ، وهي صندوق خيري لشركة ليسبت راوزينج وبيتر - بالدوين ، وشركة كارنيجي في نيويورك. يهدف مشروع الرقمنة هذا إلى عرض ما يصل إلى 23,000 مجلد من مجموعات مكتبة جامعة - نيويورك والمؤسسات الشريكة.  - المزيد... -

-
- {{> featured ..}} + {{#main}} +
+

{{{text}}}

+
+ {{/main}} + {{>featured ..}} {{/content}}
- {{> footer }} + {{>footer}} {{{closure}}} \ No newline at end of file diff --git a/source/views/head.mustache b/source/views/head.mustache index 3d0cb1d..ee81f0a 100644 --- a/source/views/head.mustache +++ b/source/views/head.mustache @@ -13,7 +13,6 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= window.location.replace("{{appUrl}}/upgrade.html"); - {{> openGraphMetaData }} @@ -38,4 +37,4 @@ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) ga('create', 'UA-55585548-1', 'auto'); ga("set", "anonymizeIp", true); ga('send', 'pageview'); - + \ No newline at end of file diff --git a/source/views/header.mustache b/source/views/header.mustache index 1b9c7e4..c7471c1 100644 --- a/source/views/header.mustache +++ b/source/views/header.mustache @@ -1,6 +1,7 @@ - +
{{> footer }} {{> subjectsList }} diff --git a/source/views/warning.mustache b/source/views/warning.mustache index cfcb986..af55b46 100644 --- a/source/views/warning.mustache +++ b/source/views/warning.mustache @@ -1,8 +1,8 @@ \ No newline at end of file From bd5eda9fd1e3a8795f73ec41912a22f8eac20251 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Fri, 10 May 2019 16:41:25 -0400 Subject: [PATCH 14/28] update --- .gitignore | 2 +- Dockerfile | 2 +- .../tasks/node_modules/transform/index.js | 253 ++++++++++++++++++ 3 files changed, 255 insertions(+), 2 deletions(-) create mode 100644 lib/grunt-contrib-writeHTML/tasks/node_modules/transform/index.js diff --git a/.gitignore b/.gitignore index b8e3197..3d39200 100644 --- a/.gitignore +++ b/.gitignore @@ -37,7 +37,7 @@ source/json/datasources/*.json # Dependency directory # Deployed apps should consider commenting this line out: # see https://npmjs.org/doc/faq.html#Should-I-check-my-node_modules-folder-into-git -node_modules +./node_modules design/* diff --git a/Dockerfile b/Dockerfile index 3bbd502..756701e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ # $ docker run -d --name=aco -p 8000:80 nyudlts/aco:latest # Stage 1 -FROM node:8 as node +FROM node:10.15.1 as node RUN apt-get update -qq \ && apt-get install -y build-essential ruby-full \ diff --git a/lib/grunt-contrib-writeHTML/tasks/node_modules/transform/index.js b/lib/grunt-contrib-writeHTML/tasks/node_modules/transform/index.js new file mode 100644 index 0000000..e8e4a14 --- /dev/null +++ b/lib/grunt-contrib-writeHTML/tasks/node_modules/transform/index.js @@ -0,0 +1,253 @@ +module.exports = async function (configuration) { + + /** make it its own module */ + function HandlebarsHelpers ( ) { + function json ( context, options ) { + return options.fn ( JSON.parse ( context ) ); + } + function speakingurl ( context, options ) { + var getSlug = require('speakingurl'); + return getSlug ( this.label ) ; + } + function addcommas(string, options) { + x = string.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + return x; + } + function ifempty(fieldtocheck, defaultvalue) { + if (fieldtocheck) { + return; + } else { + return defaultvalue; + } + } + return { + ifempty: ifempty, + addcommas: addcommas, + json : json, + speakingurl : speakingurl + }; + } + + var path = require ('path'); + var Handlebars = require('handlebars'); + var _ = require('underscore'); + var fs = require('fs'); + var grunt = require('grunt'); + var htmlminify = require('html-minifier').minify; + + try { + /** project root directory */ + var root = path.normalize(path.dirname(module.parent.filename) + '/../../..'); + /** grunt task configurations */ + var Gruntconfigurations = require(`${root}/Gruntconfigurations`); + /** + * information about how to render the CSS in this project + * see: https://github.com/gruntjs/grunt-contrib-sass + */ + var sassConfiguration = Gruntconfigurations.sass(); + /** + * information about how to render the JS files in this project + */ + var jsConfiguration = Gruntconfigurations.js(); + var htmlminifyConfiguration = Gruntconfigurations.htmlminify(); + /** load configuration */ + const projectConfigurationFile = `${root}/source/json/conf.js`; + let source = require(projectConfigurationFile); + var widgets = grunt.file.readJSON(`${root}/source/json/widgets.json`); + var uncompileTemplate = grunt.file.read(configuration.template); + var matchWidgetsRegEx = "data-script='(.*)'"; + var matchWidgets = uncompileTemplate.match(matchWidgetsRegEx); + var handlebars_template = Handlebars.compile(uncompileTemplate); + var partials = {}; + var toJSON = ''; + var javascriptString = ''; + var handlebarsTemplate = ''; + var pages = configuration.data.pages; + // remove pages from configuration.data object + delete(configuration.data.pages); + + /** copy all of the page properties in the source */ + // _.extend(source, configuration.data); Looks like this was a HUUUGEEE bug the likes no one has seen before + source = _.extend(configuration.data, source); + + source.widgets = {}; + + /** array to hold the menu object */ + source.menus = []; + + /** register Handlebars helpers */ + _.each (HandlebarsHelpers(), (helper, key) => { Handlebars.registerHelper(key, helper) }); + + /** string that holds JavaScript and handlebars templates */ + source.closure = ''; + + if (matchWidgets && matchWidgets[0]) { + toJSON = matchWidgets[0]; + toJSON = toJSON.replace(/'/g, '').replace(/data-script=/g, ''); + toJSON = JSON.parse(toJSON); + /** append all the templates to the body */ + _.each(toJSON.hbs, (hbs) => { + if (grunt.file.isFile(`${root}/source/views/${hbs.template}`)) { + source.closure += ``; + } + }); + /** JS files */ + _.each(toJSON.js, (js) => { + /** + * the main app Uglify the JavaScript files and copy them from: /source/js to + * /build/js folder along with the source files. We allow to configure the + * app to use: compressed or expanded (default to expanded for development + * purposes). The app can also be configure to host the JavaScript files + * "inline" or "external" (default to expanded for development + * purposes). + * + * In production enviorments we want to set the app to use the compressed + * Javascript file and host it inline (in the HTML body of the page) + * + * in order to use Javascripts files, the file must be specify using data script at + * the source element. See example: + * + * data-script='{ "js" : [ "crossframe.js", "book.js" ] }' + * + */ + if (jsConfiguration.js.style == 'compressed') { + var js_filename = path.basename (js, path.extname(js)) + '.min' + path.extname(js); + if (grunt.file.isFile(`${root}/build/js/${js_filename}`)) { + source.closure += ``; + } + } + else { + // aof1: this looks wrong + if (grunt.file.isFile(`${root}/build/js/${js}`)) { + source.closure += ``; + } + } + }); + } + + /** CSS / SASS */ + if (sassConfiguration.dist.build === 'external') { + source.css = ``; + } + else { + source.css = ``; + } + + /** build the menu object */ + _.each(pages, (page, index) => { + if (_.isArray(pages[index].menu)) { + _.each(pages[index].menu, menu => { + source.menus[menu.weight] = { + label: menu.label, + status: 'active', + route: pages[index].route.replace('/index.html', ''), + page: index, + weight: menu.weight + }; + }); + } + }); + + /** clean the menu object of empty values that can "exist" becuase of weight */ + source.menus = _.reject(source.menus, menu => { + return _.isUndefined(menu); + }); + + _.each(widgets, (widget, name) => { + source.widgets[name] = {}; + _.extend(source.widgets[name], widget); // this looks wrong + if ( widget.sourceType === 'json') { + source.widgets[name].data = grunt.file.readJSON(`${root}/${widget.source}`); + } + else if (widget.sourceType === 'iframe') { + source.widgets[name].data = { source : source.widgets[name].source } + } + }); + + /** this spaghetti maps the widgets to the task and load data Object if type is not local. */ + if (source.content) { + _.each(source.content, function (content, a) { + _.each(source.content[a], function (pane, b) { + if (_.isArray( source.content[a][b].widgets)) { + source.content[a][b].raw = []; + _.each ( source.content[a][b].widgets, function ( widget, c ) { + var spaghetti = {}; + var sourceType = widgets[source.content[a][b].widgets[c]].sourceType; + if ( sourceType === 'json' ) { + var json_data = grunt.file.readJSON( root + '/' + widgets[source.content[a][b].widgets[c]].source ) ; + spaghetti = { + label : widget, + widget : widgets[source.content[a][b].widgets[c]] , + data : json_data + } ; + } + /** if you care about placement in specific scenario */ + source.content[a][b][widget] = spaghetti; + /** as array to loop by weight */ + source.content[a][b].raw.push(spaghetti); + }); + } + }); + }); + } + + grunt.file.recurse(`${root}/source/views/`, function callback (abspath, rootdir, subdir, filename ) { + if (filename.match('.mustache') && configuration.template !== filename) { + var name = filename.replace('.mustache', ''); + var partial = grunt.file.read ( abspath ) ; + var matchWidgetsRegEx = "data-script='(.*)'"; + var matchWidgets = partial.match(matchWidgetsRegEx); + var toJSON = ''; + var javascriptString = ''; + var closure = ''; + if (!_.find(_.keys(pages), name)) { + if (matchWidgets && matchWidgets[0]) { + toJSON = matchWidgets[0]; + toJSON = toJSON.replace(/'/g, '').replace(/data-script=/g, ''); + toJSON = JSON.parse(toJSON); + _.each(toJSON.js, function (js) { + if (jsConfiguration.js.style == 'compressed') { + var js_filename = path.basename(js, path.extname(js)) + '.min' + path.extname(js); + if ( grunt.file.isFile(root + '/build/js/' + js_filename)) { + javascriptString += '' ; + } + } + else { + if (grunt.file.isFile(root + '/build/js/' + js) ) { + javascriptString += ''; + } + } + } ) ; + } + partials[name] = partial + javascriptString; + } + } + }); + + grunt.file.recurse(`${root}/source/views/`, function callback(abspath, rootdir, subdir, filename ) { + if (filename.match('.hbs')) { + grunt.file.write(`${root}/build/js/filename`, grunt.file.read(abspath)); + } + }); + + _.each(partials, (partial, key) => { + Handlebars.registerPartial(key, partial); + }); + + var traceName = configuration.route.replace('/index.html', '').replace(/\//g, '-').replace(/-/, ''); + + grunt.file.write(`${root}/source/json/datasources/${traceName}.json`, JSON.stringify(source)); + + /** write HTML file */ + grunt.file.write(`${root}/build/${configuration.route}`, htmlminify(handlebars_template(source), htmlminifyConfiguration)); + + grunt.log.write(`Transforming ${configuration.route}`).ok(); + + } + + catch (err) { + grunt.log.write(`Transforming ${configuration.task} into HTML fail. See ${err.description}`).error() ; + console.log(err); + } + +} From 4429f225b06d5e20f049ba1173ca6c686a8e4918 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Fri, 10 May 2019 16:49:44 -0400 Subject: [PATCH 15/28] , --- source/json/pages/about.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/source/json/pages/about.js b/source/json/pages/about.js index d4d750d..c490be3 100644 --- a/source/json/pages/about.js +++ b/source/json/pages/about.js @@ -1,6 +1,17 @@ async function about () { const grunt = require('grunt'); const { resolve } = require('path'); + + // number with commas. e.g., 1000 will become 1,000 + function toNumberWithCommas (numberWithoutCommas) { + try { + return numberWithoutCommas.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); + } + catch (error) { + grunt.fail.warn(error); + } + } + // frontCount // This information is cache and save as {ROOT}/json/source/datasources/frontCountId.json // on build using grunt-curl. @@ -9,7 +20,8 @@ async function about () { const datasourcesFilepath = resolve(__dirname, '../datasources/frontCountId.json'); if (grunt.file.isFile(datasourcesFilepath)) { const frontCountData = await grunt.file.readJSON(datasourcesFilepath); - return frontCountData.response.numFound; + return toNumberWithCommas(frontCountData.response.numFound); + } } // subjectCount @@ -20,7 +32,7 @@ async function about () { const datasourcesFilepath = resolve(__dirname, '../datasources/subjectCount.json'); if (grunt.file.isFile(datasourcesFilepath)) { const subjectCountData = await grunt.file.readJSON(datasourcesFilepath); - return subjectCountData.facet_counts.facet_fields.im_field_subject.length + 1; + return toNumberWithCommas(subjectCountData.facet_counts.facet_fields.im_field_subject.length + 1); } } From a4bc45b8b638cb4d15522b9400343d8b549fab70 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Fri, 10 May 2019 16:56:07 -0400 Subject: [PATCH 16/28] broken view --- source/views/about.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/views/about.mustache b/source/views/about.mustache index fec9a68..bb8b42c 100644 --- a/source/views/about.mustache +++ b/source/views/about.mustache @@ -15,7 +15,7 @@ {{/about}} {{#main}} -
+
{{{html}}}
{{/main}} From 26403e41b81968577eeb8bb53fce0296e4c463a5 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Fri, 10 May 2019 17:10:00 -0400 Subject: [PATCH 17/28] remove ar call number --- source/views/frontFeaturedItems.mustache | 5 ----- 1 file changed, 5 deletions(-) diff --git a/source/views/frontFeaturedItems.mustache b/source/views/frontFeaturedItems.mustache index e301482..d34a17d 100644 --- a/source/views/frontFeaturedItems.mustache +++ b/source/views/frontFeaturedItems.mustache @@ -105,11 +105,6 @@ {{this}} {{/each}}
-
- Alcatra: - {{ifempty ss_call_number "n.a."}} - {{ss_call_number}} -
الناشر: {{ifempty sm_ar_publisher "n.p."}} From b157dffc83258ba97e662526134fbf7129f4003d Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Fri, 10 May 2019 17:10:27 -0400 Subject: [PATCH 18/28] try more recent modules --- package-lock.json | 5238 ++++++++++++++++++++------------------------- package.json | 45 +- 2 files changed, 2376 insertions(+), 2907 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88663d3..737ee25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,130 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", + "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz", + "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==", + "dev": true + }, + "@babel/template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/traverse": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz", + "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", + "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -11,14 +135,16 @@ "dev": true }, "adm-zip": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.11.tgz", - "integrity": "sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA==" + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "dev": true }, "agent-base": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, "requires": { "es6-promisify": "^5.0.0" } @@ -27,6 +153,7 @@ "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, "requires": { "co": "^4.6.0", "fast-deep-equal": "^1.0.0", @@ -34,22 +161,6 @@ "json-schema-traverse": "^0.3.0" } }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -60,16 +171,19 @@ } }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } }, "anymatch": { "version": "2.0.0", @@ -81,26 +195,40 @@ "normalize-path": "^2.1.1" } }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "dev": true + }, "argparse": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "underscore": "~1.7.0", - "underscore.string": "~2.4.0" + "sprintf-js": "~1.0.2" }, "dependencies": { - "underscore": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", - "dev": true - }, - "underscore.string": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", - "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=", + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true } } @@ -153,17 +281,20 @@ "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true }, "assign-symbols": { "version": "1.0.0", @@ -174,12 +305,14 @@ "ast-types": { "version": "0.11.5", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.5.tgz", - "integrity": "sha512-oJjo+5e7/vEc2FBK8gUalV0pba4L3VdBIs2EKhOLHLcOd2FgQIVQN9xb0eZ9IjEWyAL7vq6fGJxOvVvdCHNyMw==" + "integrity": "sha512-oJjo+5e7/vEc2FBK8gUalV0pba4L3VdBIs2EKhOLHLcOd2FgQIVQN9xb0eZ9IjEWyAL7vq6fGJxOvVvdCHNyMw==", + "dev": true }, "async": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true }, "async-each": { "version": "1.0.1", @@ -190,7 +323,8 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "atob": { "version": "2.1.1", @@ -251,17 +385,20 @@ "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "dev": true }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "base": { "version": "0.11.2", @@ -334,6 +471,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "optional": true, "requires": { "tweetnacl": "^0.14.3" @@ -380,19 +518,40 @@ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "bind-obj-methods": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-2.0.0.tgz", + "integrity": "sha512-3/qRXczDi2Cdbz6jE+W3IflJOutRVica8frpBn14de1mBOkzDo+6tY33kNhvkw54Kn3PzRRD2VnGbGPcTAk4sw==", "dev": true }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", "dev": true, "requires": { - "hoek": "2.x.x" + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + }, + "dependencies": { + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, + "raw-body": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "dev": true, + "requires": { + "bytes": "1", + "string_decoder": "0.10" + } + } } }, "boxen": { @@ -442,6 +601,7 @@ "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" @@ -476,20 +636,18 @@ } } }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "optional": true - }, - "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" - } + "optional": true }, "buffer": { "version": "4.9.1", @@ -525,7 +683,8 @@ "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true }, "cache-base": { "version": "1.0.1", @@ -544,19 +703,68 @@ "unset-value": "^1.0.0" } }, + "caching-transform": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", + "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", + "dev": true, + "requires": { + "hasha": "^3.0.0", + "make-dir": "^2.0.0", + "package-hash": "^3.0.0", + "write-file-atomic": "^2.4.2" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, + "write-file-atomic": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", + "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } + } + }, "camel-case": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-1.2.2.tgz", - "integrity": "sha1-Gsp8TRlTWaLOmVV5NDPG5VQlEfI=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, "requires": { - "sentence-case": "^1.1.1", + "no-case": "^2.2.0", "upper-case": "^1.1.1" } }, "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, "camelcase-keys": { "version": "2.1.0", @@ -585,23 +793,14 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chai-nightwatch": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/chai-nightwatch/-/chai-nightwatch-0.1.1.tgz", "integrity": "sha1-HKVt52jTwIaP5/wvTTLC/olOa+k=", + "dev": true, "requires": { "assertion-error": "1.0.0", "deep-eql": "0.1.3" @@ -610,52 +809,20 @@ "assertion-error": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "integrity": "sha1-x/hUOP3UZrx8oWq5DIFRN5el0js=" + "integrity": "sha1-x/hUOP3UZrx8oWq5DIFRN5el0js=", + "dev": true } } }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "change-case": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-2.3.1.tgz", - "integrity": "sha1-LE/ePwY7tB0AzWjg1aCdthy+iU8=", - "requires": { - "camel-case": "^1.1.1", - "constant-case": "^1.1.0", - "dot-case": "^1.1.0", - "is-lower-case": "^1.1.0", - "is-upper-case": "^1.1.0", - "lower-case": "^1.1.1", - "lower-case-first": "^1.0.0", - "param-case": "^1.1.0", - "pascal-case": "^1.1.0", - "path-case": "^1.1.0", - "sentence-case": "^1.1.1", - "snake-case": "^1.1.0", - "swap-case": "^1.1.0", - "title-case": "^1.1.0", - "upper-case": "^1.1.1", - "upper-case-first": "^1.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "chokidar": { @@ -722,12 +889,20 @@ } }, "clean-css": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.1.9.tgz", - "integrity": "sha1-29BaFIvklDuzfOBnnmdsvJ9YAmY=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, "requires": { - "commander": "2.6.x", - "source-map": ">=0.1.43 <0.2" + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "clean-yaml-object": { @@ -737,12 +912,29 @@ "dev": true }, "cli": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz", - "integrity": "sha1-Aq1Eo4Cr8nraxebwzdewQ9dMU+M=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", + "dev": true, "requires": { "exit": "0.1.2", - "glob": "~ 3.2.1" + "glob": "^7.1.1" + }, + "dependencies": { + "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" + } + } } }, "cli-boxes": { @@ -752,26 +944,32 @@ "dev": true }, "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, - "optional": true, "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, - "coffee-script": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", - "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=", + "coffeescript": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", + "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=", "dev": true }, "collection-visit": { @@ -806,23 +1004,31 @@ "dev": true }, "colors": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true }, "combined-stream": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, "commander": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", - "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=" + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true }, "component-emitter": { "version": "1.2.1", @@ -833,17 +1039,8 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.11.tgz", - "integrity": "sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==", - "requires": { - "inherits": "~2.0.1", - "readable-stream": "~1.1.9", - "typedarray": "~0.0.5" - } + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "configstore": { "version": "3.1.2", @@ -868,13 +1065,19 @@ "date-now": "^0.1.4" } }, - "constant-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-1.1.2.tgz", - "integrity": "sha1-jsLKW6ND4Aqjjb9OIA/VrJB+/WM=", + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, "requires": { - "snake-case": "^1.1.0", - "upper-case": "^1.1.1" + "safe-buffer": "~5.1.1" } }, "copy-descriptor": { @@ -886,148 +1089,64 @@ "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=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "coveralls": { - "version": "2.13.3", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.13.3.tgz", - "integrity": "sha512-iiAmn+l1XqRwNLXhW8Rs5qHZRFMYp9ZIPjEOVRpC/c4so6Y/f4/lFi0FfR5B9cCqgyhkJ5cZmbvcVRfP8MHchw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.3.tgz", + "integrity": "sha512-viNfeGlda2zJr8Gj1zqXpDMRjw9uM54p7wzZdvLRyOgnAfCe974Dq4veZkjJdxQXbmdppu6flEajFYseHYaUhg==", + "dev": true, + "requires": { + "growl": "~> 1.10.0", + "js-yaml": "^3.11.0", + "lcov-parse": "^0.0.10", + "log-driver": "^1.2.7", + "minimist": "^1.2.0", + "request": "^2.86.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "cp-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", + "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", "dev": true, "requires": { - "js-yaml": "3.6.1", - "lcov-parse": "0.0.10", - "log-driver": "1.2.5", - "minimist": "1.2.0", - "request": "2.79.0" + "graceful-fs": "^4.1.2", + "make-dir": "^2.0.0", + "nested-error-stacks": "^2.0.0", + "pify": "^4.0.1", + "safe-buffer": "^5.0.1" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "pify": "^4.0.1", + "semver": "^5.6.0" } }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - }, - "commander": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz", - "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==", + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" - } - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true, - "requires": { - "chalk": "^1.1.1", - "commander": "^2.9.0", - "is-my-json-valid": "^2.12.4", - "pinkie-promise": "^2.0.0" - } - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "js-yaml": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", - "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "qs": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", - "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", - "dev": true - }, - "request": { - "version": "2.79.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", - "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", - "dev": true, - "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.11.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~2.0.6", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "qs": "~6.3.0", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "~0.4.1", - "uuid": "^3.0.0" - } - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "dev": true } } @@ -1051,22 +1170,6 @@ "which": "^1.2.9" }, "dependencies": { - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -1078,15 +1181,6 @@ } } }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.x.x" - } - }, "crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", @@ -1112,6 +1206,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -1119,7 +1214,8 @@ "data-uri-to-buffer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", - "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==", + "dev": true }, "date-now": { "version": "0.1.4", @@ -1141,6 +1237,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -1148,7 +1245,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decode-uri-component": { "version": "0.2.0", @@ -1160,6 +1258,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, "requires": { "type-detect": "0.1.1" } @@ -1173,14 +1272,26 @@ "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "deeper": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/deeper/-/deeper-2.1.0.tgz", - "integrity": "sha1-vFZOX3MXT98gHgiwADDooU2nQ2g=", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -1232,6 +1343,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "dev": true, "requires": { "ast-types": "0.x.x", "escodegen": "1.x.x", @@ -1255,12 +1367,14 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true }, "diacritics": { "version": "1.3.0", @@ -1272,36 +1386,36 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "optional": true + "dev": true }, "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "dev": true, "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" + "domelementtype": "^1.3.0", + "entities": "^1.1.1" }, "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true - }, "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true } } }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", "dev": true }, "domhandler": { @@ -1323,14 +1437,6 @@ "domelementtype": "1" } }, - "dot-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-1.1.2.tgz", - "integrity": "sha1-HnOCaQDeKNbeVIC8HeMdCEKwa+w=", - "requires": { - "sentence-case": "^1.1.2" - } - }, "dot-prop": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", @@ -1356,6 +1462,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, "optional": true, "requires": { "jsbn": "~0.1.0" @@ -1364,7 +1471,23 @@ "ejs": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", - "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==" + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } }, "entities": { "version": "1.0.0", @@ -1378,6 +1501,16 @@ "integrity": "sha512-KHS47Smwr5AtT9RCxjsoCc+83sUI2uJIeK+VTI5MS8F0k312xzqFvbC4AyRNefPCNou7bvL7QSxmkT/h8x9rTg==", "dev": true }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "dev": true, + "requires": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" + } + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -1387,15 +1520,23 @@ "is-arrayish": "^0.2.1" } }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, "es6-promise": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", + "dev": true }, "es6-promisify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, "requires": { "es6-promise": "^4.0.3" } @@ -1403,12 +1544,14 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "escodegen": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz", "integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==", + "dev": true, "requires": { "esprima": "^3.1.3", "estraverse": "^4.2.0", @@ -1421,24 +1564,34 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "optional": true } } }, + "esm": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.22.tgz", + "integrity": "sha512-z8YG7U44L82j1XrdEJcqZOLUnjxco8pO453gKOlaMD1/md1n/5QrscAmYG+oKUspsmDLuBFZrpbxI6aQ67yRxA==", + "dev": true + }, "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true }, "estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "event-stream": { "version": "3.3.4", @@ -1529,7 +1682,8 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true }, "expand-brackets": { "version": "2.1.4", @@ -1578,7 +1732,8 @@ "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true }, "extend-shallow": { "version": "3.0.2", @@ -1740,28 +1895,35 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true }, "faye-websocket": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz", - "integrity": "sha1-wUxbO/FNdBf/v9mQwKdJXNnzN7w=", - "dev": true + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } }, "fd-slicer": { "version": "1.0.1", @@ -1785,7 +1947,8 @@ "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true }, "fill-range": { "version": "4.0.0", @@ -1810,6 +1973,41 @@ } } }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -1833,20 +2031,26 @@ } }, "findup-sync": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", "dev": true, "requires": { - "glob": "~3.2.9", - "lodash": "~2.4.1" + "glob": "~5.0.0" }, "dependencies": { - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", - "dev": true + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } } } }, @@ -1859,7 +2063,8 @@ "foreachasync": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" + "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=", + "dev": true }, "foreground-child": { "version": "1.5.6", @@ -1874,12 +2079,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "1.0.6", @@ -1901,10 +2108,17 @@ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "dev": true }, + "fs-exists-cached": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", + "integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=", + "dev": true + }, "fs-extra": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz", "integrity": "sha1-9G8MdbeEH40gCzNIzU1pHVoJnRU=", + "dev": true, "requires": { "jsonfile": "~1.0.1", "mkdirp": "0.3.x", @@ -1915,7 +2129,8 @@ "mkdirp": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=" + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", + "dev": true } } }, @@ -1923,6 +2138,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/fs.extra/-/fs.extra-1.3.2.tgz", "integrity": "sha1-3QI/kwE77iRTHxszUUw3sg/ZM0k=", + "dev": true, "requires": { "fs-extra": "~0.6.1", "mkdirp": "~0.3.5", @@ -1932,24 +2148,26 @@ "mkdirp": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=" + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=", + "dev": true } } }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", "dev": true, "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { "abbrev": { @@ -1961,7 +2179,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1970,7 +2189,7 @@ "optional": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "dev": true, "optional": true, @@ -1982,19 +2201,21 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": 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.0.1", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true @@ -2002,17 +2223,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2021,16 +2245,16 @@ "optional": true }, "debug": { - "version": "2.6.9", + "version": "4.1.1", "bundled": true, "dev": true, "optional": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true, "dev": true, "optional": true @@ -2079,7 +2303,7 @@ } }, "glob": { - "version": "7.1.2", + "version": "7.1.3", "bundled": true, "dev": true, "optional": true, @@ -2099,12 +2323,12 @@ "optional": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.24", "bundled": true, "dev": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { @@ -2129,7 +2353,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2141,6 +2366,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2155,6 +2381,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2162,19 +2389,21 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { - "version": "2.2.4", + "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.1.0", + "version": "1.2.1", "bundled": true, "dev": true, "optional": true, @@ -2186,40 +2415,48 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } }, "ms": { - "version": "2.0.0", + "version": "2.1.1", "bundled": true, "dev": true, "optional": 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 + }, "needle": { - "version": "2.2.0", + "version": "2.3.0", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^2.1.2", + "debug": "^4.1.0", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.12.0", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" @@ -2236,13 +2473,13 @@ } }, "npm-bundled": { - "version": "1.0.3", + "version": "1.0.6", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.4.1", "bundled": true, "dev": true, "optional": true, @@ -2266,7 +2503,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2278,6 +2516,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2317,12 +2556,12 @@ "optional": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -2352,18 +2591,19 @@ } }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "dev": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2378,7 +2618,7 @@ "optional": true }, "semver": { - "version": "5.5.0", + "version": "5.7.0", "bundled": true, "dev": true, "optional": true @@ -2399,6 +2639,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2418,6 +2659,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2429,17 +2671,17 @@ "optional": true }, "tar": { - "version": "4.4.1", + "version": "4.4.8", "bundled": true, "dev": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, @@ -2450,23 +2692,25 @@ "optional": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { - "version": "3.0.2", + "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -2474,35 +2718,33 @@ "version": "0.3.10", "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "dev": true, "requires": { "readable-stream": "1.1.x", "xregexp": "2.0.0" } }, + "function-loop": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-1.0.2.tgz", + "integrity": "sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA==", + "dev": true + }, "gaze": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", "dev": true, "requires": { - "globule": "~0.1.0" + "globule": "^1.0.0" } }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "^1.0.0" - } - }, "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", @@ -2519,6 +2761,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.2.tgz", "integrity": "sha512-ZD325dMZOgerGqF/rF6vZXyFGTAay62svjQIT+X/oU2PtxYpFxvSkbsdi+oxIrsNxlZVd4y8wUDqkaExWTI/Cw==", + "dev": true, "requires": { "data-uri-to-buffer": "1", "debug": "2", @@ -2532,6 +2775,7 @@ "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" } @@ -2539,12 +2783,14 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "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", @@ -2559,6 +2805,7 @@ "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" } @@ -2581,17 +2828,23 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } }, "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", "inherits": "2", - "minimatch": "0.3" + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-parent": { @@ -2624,6 +2877,12 @@ "ini": "^1.3.4" } }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", @@ -2669,53 +2928,28 @@ } }, "globule": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", "dev": true, "requires": { - "glob": "~3.1.21", - "lodash": "~1.0.1", - "minimatch": "~0.2.11" + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" }, "dependencies": { "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", - "dev": true, - "requires": { - "graceful-fs": "~1.2.0", - "inherits": "1", - "minimatch": "~0.2.11" - } - }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true - }, - "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "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" } } } @@ -2749,91 +2983,77 @@ "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "optional": true + "dev": true }, "grunt": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", - "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.4.tgz", + "integrity": "sha512-PYsMOrOC+MsdGEkFVwMaMyc6Ob7pKmq+deg1Sjr+vvMWp35sztfwKE7qoN51V+UEtHsyNuMcGdgMLFkBHvMxHQ==", "dev": true, "requires": { - "async": "~0.1.22", - "coffee-script": "~1.3.3", - "colors": "~0.6.2", - "dateformat": "1.0.2-1.2.3", + "coffeescript": "~1.10.0", + "dateformat": "~1.0.12", "eventemitter2": "~0.4.13", "exit": "~0.1.1", - "findup-sync": "~0.1.2", - "getobject": "~0.1.0", - "glob": "~3.1.21", - "grunt-legacy-log": "~0.1.0", - "grunt-legacy-util": "~0.2.0", - "hooker": "~0.2.3", - "iconv-lite": "~0.2.11", - "js-yaml": "~2.0.5", - "lodash": "~0.9.2", - "minimatch": "~0.2.12", - "nopt": "~1.0.10", - "rimraf": "~2.2.8", - "underscore.string": "~2.2.1", - "which": "~1.0.5" + "findup-sync": "~0.3.0", + "glob": "~7.0.0", + "grunt-cli": "~1.2.0", + "grunt-known-options": "~1.1.0", + "grunt-legacy-log": "~2.0.0", + "grunt-legacy-util": "~1.1.1", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.13.0", + "minimatch": "~3.0.2", + "mkdirp": "~0.5.1", + "nopt": "~3.0.6", + "path-is-absolute": "~1.0.0", + "rimraf": "~2.6.2" }, "dependencies": { - "async": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", - "dev": true - }, - "dateformat": { - "version": "1.0.2-1.2.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", - "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=", - "dev": true - }, - "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "grunt-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", "dev": true, "requires": { - "graceful-fs": "~1.2.0", - "inherits": "1", - "minimatch": "~0.2.11" + "findup-sync": "~0.3.0", + "grunt-known-options": "~1.1.0", + "nopt": "~3.0.6", + "resolve": "~1.1.0" } }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, - "iconv-lite": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=", - "dev": true - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true - }, - "lodash": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", - "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=", - "dev": true + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "glob": "^7.1.3" + }, + "dependencies": { + "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" + } + } } } } @@ -2876,23 +3096,23 @@ "dev": true }, "grunt-contrib-jshint": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.10.0.tgz", - "integrity": "sha1-V+vMyofo8yevZkXYo8WG1IReTYE=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-2.1.0.tgz", + "integrity": "sha512-65S2/C/6RfjY/umTxfwXXn+wVvaYmykHkHSsW6Q6rhkbv3oudTEgqnFFZvWzWCoHUb+3GMZLbP3oSrNyvshmIQ==", "dev": true, "requires": { - "hooker": "~0.2.3", - "jshint": "~2.5.0" + "chalk": "^2.4.2", + "hooker": "^0.2.3", + "jshint": "~2.10.2" } }, "grunt-contrib-nodeunit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/grunt-contrib-nodeunit/-/grunt-contrib-nodeunit-0.4.1.tgz", - "integrity": "sha1-lDOT7l1msc2ttJqbI6ruREVQlbI=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-nodeunit/-/grunt-contrib-nodeunit-2.0.0.tgz", + "integrity": "sha512-pt9N2Aj/6tlIgrepjUvPP4RfN58G7Zo/caL9O/9OskfRaY4qQCAF2n3H+AEUN/tq7nxrIFrAm6U3U+8gnpWDiw==", "dev": true, "requires": { - "hooker": "~0.2.3", - "nodeunit": "~0.9.0" + "nodeunit-x": "^0.12.1" } }, "grunt-contrib-sass": { @@ -2966,103 +3186,49 @@ } }, "grunt-contrib-uglify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.5.1.tgz", - "integrity": "sha1-FfCqXo6LpCGuqYCHnuUFvHErbN4=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-4.0.1.tgz", + "integrity": "sha512-dwf8/+4uW1+7pH72WButOEnzErPGmtUvc8p08B0eQS/6ON0WdeQu0+WFeafaPTbbY1GqtS25lsHWaDeiTQNWPg==", "dev": true, "requires": { - "chalk": "^0.5.1", - "lodash": "^2.4.1", - "maxmin": "^0.2.0", - "uglify-js": "^2.4.0" - }, - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", - "dev": true - }, - "ansi-styles": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", - "dev": true - }, - "chalk": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", - "dev": true, - "requires": { - "ansi-styles": "^1.1.0", - "escape-string-regexp": "^1.0.0", - "has-ansi": "^0.1.0", - "strip-ansi": "^0.3.0", - "supports-color": "^0.2.0" - } - }, - "has-ansi": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", - "dev": true, - "requires": { - "ansi-regex": "^0.2.0" - } - }, - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", - "dev": true - }, - "strip-ansi": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", - "dev": true, - "requires": { - "ansi-regex": "^0.2.1" - } - }, - "supports-color": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", - "dev": true - } + "chalk": "^2.4.1", + "maxmin": "^2.1.0", + "uglify-js": "^3.5.0", + "uri-path": "^1.0.0" } }, "grunt-contrib-watch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz", - "integrity": "sha1-ZP3LolpjX1tNobbOb5DaCutuPxU=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", + "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", "dev": true, "requires": { - "async": "~0.2.9", - "gaze": "~0.5.1", - "lodash": "~2.4.1", - "tiny-lr-fork": "0.0.5" + "async": "^2.6.0", + "gaze": "^1.1.0", + "lodash": "^4.17.10", + "tiny-lr": "^1.1.1" }, "dependencies": { - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", - "dev": true + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } } } }, "grunt-curl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/grunt-curl/-/grunt-curl-2.4.1.tgz", - "integrity": "sha1-hK2t6Jll8o2Igo1Hgak4314DNTs=", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/grunt-curl/-/grunt-curl-2.5.1.tgz", + "integrity": "sha512-Rx0UE+E3j5cj+r2WBxOsfoVQsNpYDAPM8ndm1l8rrEPoDaukMIXkb/Ef6hnn+ASqQ3YIc4bVa4EjKO2CdTA9JA==", "dev": true, "requires": { "async": "~0.2.10", "grunt-retro": "~0.7.0", - "lodash": "~2.4.1", + "lodash": "~4.17.11", "request": "~2.83.0" }, "dependencies": { @@ -3076,9 +3242,9 @@ } }, "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.4.tgz", + "integrity": "sha512-8I1sgZHfVwcSOY6mSGpVU3lw/GSIZvusg8dD2+OGehCJpOhQRLNcH0qb9upQnOH4XhgxxFJSg6E2kx95deb1Tw==", "dev": true, "requires": { "boom": "5.x.x" @@ -3113,12 +3279,6 @@ "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", "dev": true }, - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", - "dev": true - }, "request": { "version": "2.83.0", "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", @@ -3160,84 +3320,63 @@ } } }, + "grunt-known-options": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", + "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", + "dev": true + }, "grunt-legacy-log": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", - "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", + "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", "dev": true, "requires": { - "colors": "~0.6.2", - "grunt-legacy-log-utils": "~0.1.1", + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.0.0", "hooker": "~0.2.3", - "lodash": "~2.4.1", - "underscore.string": "~2.3.3" - }, - "dependencies": { - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", - "dev": true - }, - "underscore.string": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", - "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=", - "dev": true - } + "lodash": "~4.17.5" } }, "grunt-legacy-log-utils": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", - "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", + "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", "dev": true, "requires": { - "colors": "~0.6.2", - "lodash": "~2.4.1", - "underscore.string": "~2.3.3" - }, - "dependencies": { - "lodash": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", - "dev": true - }, - "underscore.string": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", - "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=", - "dev": true - } + "chalk": "~2.4.1", + "lodash": "~4.17.10" } }, "grunt-legacy-util": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", - "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", + "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", "dev": true, "requires": { - "async": "~0.1.22", + "async": "~1.5.2", "exit": "~0.1.1", "getobject": "~0.1.0", "hooker": "~0.2.3", - "lodash": "~0.9.2", - "underscore.string": "~2.2.1", - "which": "~1.0.5" + "lodash": "~4.17.10", + "underscore.string": "~3.3.4", + "which": "~1.3.0" }, "dependencies": { "async": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, - "lodash": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", - "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=", - "dev": true + "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" + } } } }, @@ -3248,74 +3387,48 @@ "dev": true }, "gzip-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-0.2.0.tgz", - "integrity": "sha1-46KhkSBf5W7jJvXCcUNd+uz7Phw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", "dev": true, "requires": { - "browserify-zlib": "^0.1.4", - "concat-stream": "^1.4.1" + "duplexer": "^0.1.1" } }, "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", "dev": true, "requires": { - "async": "^1.4.0", + "neo-async": "^2.6.0", "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" }, "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true, + "optional": true }, "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "optional": true - } - } - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.11.tgz", + "integrity": "sha512-izPJg8RsSyqxbdnqX36ExpbH3K7tDBsAU/VfNv89VkMFy3z39zFjunQGsSHOlGlyIfGLGprGeosgQno3bo2/Kg==", "dev": true, "optional": true, "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" + "commander": "~2.20.0", + "source-map": "~0.6.1" } } } @@ -3323,12 +3436,14 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, "requires": { "ajv": "^5.1.0", "har-schema": "^2.0.0" @@ -3341,12 +3456,21 @@ "dev": true, "requires": { "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "has-value": { "version": "1.0.0", @@ -3380,30 +3504,22 @@ } } }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "hasha": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", + "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", "dev": true, "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "is-stream": "^1.0.1" } }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true, "optional": true }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, "hogan": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/hogan/-/hogan-1.0.2.tgz", @@ -3446,19 +3562,30 @@ "html-entities": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true }, "html-minifier": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-0.7.2.tgz", - "integrity": "sha1-K3lZsQUaSB5xzXxuWaZCcq+JXP0=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", + "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", + "dev": true, "requires": { - "change-case": "2.3.x", - "clean-css": "3.1.x", - "cli": "0.6.x", - "concat-stream": "1.4.x", - "relateurl": "0.2.x", - "uglify-js": "2.4.x" + "camel-case": "^3.0.0", + "clean-css": "^4.2.1", + "commander": "^2.19.0", + "he": "^1.2.0", + "param-case": "^2.1.1", + "relateurl": "^0.2.7", + "uglify-js": "^3.5.1" + }, + "dependencies": { + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + } } }, "htmlparser2": { @@ -3478,6 +3605,7 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -3485,10 +3613,17 @@ "statuses": ">= 1.4.0 < 2" } }, + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "dev": true + }, "http-proxy-agent": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, "requires": { "agent-base": "4", "debug": "3.1.0" @@ -3498,6 +3633,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -3508,6 +3644,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "dev": true, "requires": { "agent-base": "^4.1.0", "debug": "^3.1.0" @@ -3517,6 +3654,7 @@ "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -3558,6 +3696,7 @@ "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" @@ -3566,7 +3705,8 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "ini": { "version": "1.3.5", @@ -3574,10 +3714,17 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true }, "is-accessor-descriptor": { "version": "0.1.6", @@ -3701,33 +3848,6 @@ "is-path-inside": "^1.0.0" } }, - "is-lower-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", - "integrity": "sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=", - "requires": { - "lower-case": "^1.1.0" - } - }, - "is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", - "dev": true - }, - "is-my-json-valid": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", - "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", - "dev": true, - "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" - } - }, "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", @@ -3782,12 +3902,6 @@ "isobject": "^3.0.1" } }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", @@ -3809,15 +3923,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-upper-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", - "integrity": "sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=", - "requires": { - "upper-case": "^1.1.0" - } + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-utf8": { "version": "0.2.1", @@ -3834,12 +3941,13 @@ "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true }, "isexe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", - "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { @@ -3851,7 +3959,180 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", + "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "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" + } + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.4.tgz", + "integrity": "sha512-QCHGyZEK0bfi9GR215QSm+NJwFKEShbtc7tfbUdLAEzn3kKhLDDZqvljn8rPZM9v8CEOhzL1nlYoO4r1ryl67w==", + "dev": true, + "requires": { + "handlebars": "^4.1.2" + } }, "jmespath": { "version": "0.15.0", @@ -3859,20 +4140,26 @@ "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=", "dev": true }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, "js-yaml": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", - "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { - "argparse": "~ 0.1.11", - "esprima": "~ 1.0.2" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "dependencies": { "esprima": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true } } @@ -3881,72 +4168,66 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, "optional": true }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, "jshint": { - "version": "2.5.11", - "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.5.11.tgz", - "integrity": "sha1-4tlYWLuxqngwAQii6BCZ+wlWIuA=", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.10.2.tgz", + "integrity": "sha512-e7KZgCSXMJxznE/4WULzybCMNXNAd/bf5TSrvVEq78Q/K8ZwFpmBqQeDtNiHc3l49nV4E/+YeHU/JZjSUIrLAA==", "dev": true, "requires": { - "cli": "0.6.x", + "cli": "~1.0.0", "console-browserify": "1.1.x", "exit": "0.1.x", "htmlparser2": "3.8.x", - "minimatch": "1.0.x", + "lodash": "~4.17.11", + "minimatch": "~3.0.2", "shelljs": "0.3.x", - "strip-json-comments": "1.0.x", - "underscore": "1.6.x" - }, - "dependencies": { - "minimatch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", - "integrity": "sha1-4N0hILSeG3JM6NcUxSCCKpQ4V20=", - "dev": true, - "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" - } - }, - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - } + "strip-json-comments": "1.0.x" } }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-1.0.1.tgz", - "integrity": "sha1-6l7+QLg2kLmGZ2FKc5L8YOhCwN0=" - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "integrity": "sha1-6l7+QLg2kLmGZ2FKc5L8YOhCwN0=", "dev": true }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -3978,12 +4259,14 @@ "package-json": "^4.0.0" } }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, - "optional": true + "requires": { + "invert-kv": "^2.0.0" + } }, "lcov-parse": { "version": "0.0.10", @@ -3995,11 +4278,18 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" } }, + "livereload-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", + "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", + "dev": true + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -4021,25 +4311,47 @@ } } }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true }, "lodash._arraycopy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", - "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=" + "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=", + "dev": true }, "lodash._arrayeach": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", - "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=" + "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=", + "dev": true }, "lodash._baseassign": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, "requires": { "lodash._basecopy": "^3.0.0", "lodash.keys": "^3.0.0" @@ -4049,6 +4361,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=", + "dev": true, "requires": { "lodash._arraycopy": "^3.0.0", "lodash._arrayeach": "^3.0.0", @@ -4061,32 +4374,38 @@ "lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true }, "lodash._basefor": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", - "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=" + "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=", + "dev": true }, "lodash._bindcallback": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true }, "lodash._getnative": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true }, "lodash._isiterateecall": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true }, "lodash.clone": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-3.0.3.tgz", "integrity": "sha1-hGiMc9MrWpDKJWFpY/GJJSqZcEM=", + "dev": true, "requires": { "lodash._baseclone": "^3.0.0", "lodash._bindcallback": "^3.0.0", @@ -4102,22 +4421,32 @@ "lodash.defaultsdeep": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.0.tgz", - "integrity": "sha1-vsECT4WxvZbL6kBbI8FK1kQ6b4E=" + "integrity": "sha1-vsECT4WxvZbL6kBbI8FK1kQ6b4E=", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true }, "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true }, "lodash.isarray": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true }, "lodash.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, "requires": { "lodash._getnative": "^3.0.0", "lodash.isarguments": "^3.0.0", @@ -4127,18 +4456,13 @@ "lodash.merge": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "log-driver": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz", - "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", "dev": true }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", "dev": true }, "loud-rejection": { @@ -4154,15 +4478,8 @@ "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" - }, - "lower-case-first": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", - "integrity": "sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=", - "requires": { - "lower-case": "^1.1.2" - } + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true }, "lowercase-keys": { "version": "1.0.1", @@ -4171,9 +4488,14 @@ "dev": true }, "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } }, "make-dir": { "version": "1.3.0", @@ -4184,6 +4506,21 @@ "pify": "^3.0.0" } }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -4212,68 +4549,70 @@ } }, "maxmin": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-0.2.2.tgz", - "integrity": "sha1-o2ztjMIuOrzRCM+3l6OktAJ1WT8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", + "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=", "dev": true, "requires": { - "chalk": "^0.5.0", + "chalk": "^1.0.0", "figures": "^1.0.1", - "gzip-size": "^0.2.0", - "pretty-bytes": "^0.1.0" + "gzip-size": "^3.0.0", + "pretty-bytes": "^3.0.0" }, "dependencies": { "ansi-regex": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "chalk": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", - "dev": true, - "requires": { - "ansi-styles": "^1.1.0", - "escape-string-regexp": "^1.0.0", - "has-ansi": "^0.1.0", - "strip-ansi": "^0.3.0", - "supports-color": "^0.2.0" - } - }, - "has-ansi": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-regex": "^0.2.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^0.2.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true } } }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", @@ -4300,6 +4639,23 @@ } } }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -4332,29 +4688,56 @@ "mime-db": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true }, "mime-types": { "version": "2.1.18", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, "requires": { "mime-db": "~1.33.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "minipass": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } }, "mixin-deep": { "version": "1.3.1", @@ -4381,6 +4764,7 @@ "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" } @@ -4388,12 +4772,14 @@ "mkpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-1.0.0.tgz", - "integrity": "sha1-67Opd+evHGg65v2hK1Raa6bFhT0=" + "integrity": "sha1-67Opd+evHGg65v2hK1Raa6bFhT0=", + "dev": true }, "mocha": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, "optional": true, "requires": { "browser-stdout": "1.3.1", @@ -4413,12 +4799,14 @@ "version": "2.15.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true, "optional": true }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, "optional": true, "requires": { "fs.realpath": "^1.0.0", @@ -4433,6 +4821,8 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4442,14 +4832,8 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "dev": true, - "optional": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "nanomatch": { "version": "1.2.13", @@ -4481,17 +4865,38 @@ "ncp": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", - "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=" + "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=", + "dev": true + }, + "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 + }, + "nested-error-stacks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", + "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", + "dev": true }, "netmask": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "nightwatch": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-1.0.6.tgz", "integrity": "sha1-F7Ghm0VfEi+SPkftfth7bJimopY=", + "dev": true, "requires": { "assertion-error": "^1.1.0", "chai-nightwatch": "~0.1.x", @@ -4510,12 +4915,22 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "dev": true, "requires": { "brace-expansion": "^1.0.0" } } } }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, "nodemon": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.1.tgz", @@ -4545,13 +4960,14 @@ } } }, - "nodeunit": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/nodeunit/-/nodeunit-0.9.5.tgz", - "integrity": "sha1-C2MjaAB9lGUczwoYmZgHmC8HOGY=", + "nodeunit-x": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/nodeunit-x/-/nodeunit-x-0.12.2.tgz", + "integrity": "sha512-RByTtOEqACCW6w8TQIgQq74xkO8LuOuyWn+wMwg1GY0HBxBnuh/t4OgWT9jZsx/0GMIXQIzvarrH6uvAVbRf9Q==", "dev": true, "requires": { - "tap": "^7.0.0" + "ejs": "^2.5.2", + "tap": "^12.6.2" } }, "nopt": { @@ -4563,26 +4979,6 @@ "abbrev": "1" } }, - "noptify": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz", - "integrity": "sha1-WPZUpz2XU98MUdlobckhBKZ/S7s=", - "dev": true, - "requires": { - "nopt": "~2.0.0" - }, - "dependencies": { - "nopt": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz", - "integrity": "sha1-ynQW8gpeP5w7hhgPlilfo9C1Lg0=", - "dev": true, - "requires": { - "abbrev": "1" - } - } - } - }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -4620,1554 +5016,338 @@ "dev": true }, "nyc": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-7.1.0.tgz", - "integrity": "sha1-jhSXHzoV0au+x6xhDvVMuInp/7Q=", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.3.0", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^1.1.2", - "foreground-child": "^1.5.3", - "glob": "^7.0.3", - "istanbul-lib-coverage": "^1.0.0-alpha.4", - "istanbul-lib-hook": "^1.0.0-alpha.4", - "istanbul-lib-instrument": "^1.1.0-alpha.3", - "istanbul-lib-report": "^1.0.0-alpha.3", - "istanbul-lib-source-maps": "^1.0.0-alpha.10", - "istanbul-reports": "^1.0.0-alpha.8", - "md5-hex": "^1.2.0", - "micromatch": "^2.3.11", - "mkdirp": "^0.5.0", - "pkg-up": "^1.0.0", - "resolve-from": "^2.0.0", - "rimraf": "^2.5.4", - "signal-exit": "^3.0.0", - "spawn-wrap": "^1.2.4", - "test-exclude": "^1.1.0", - "yargs": "^4.8.1", - "yargs-parser": "^2.4.1" + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.0.tgz", + "integrity": "sha512-iy9fEV8Emevz3z/AanIZsoGa8F4U2p0JKevZ/F0sk+/B2r9E6Qn+EPs0bpxEhnAt6UPlTL8mQZIaSJy8sK0ZFw==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "caching-transform": "^3.0.2", + "convert-source-map": "^1.6.0", + "cp-file": "^6.2.0", + "find-cache-dir": "^2.1.0", + "find-up": "^3.0.0", + "foreground-child": "^1.5.6", + "glob": "^7.1.3", + "istanbul-lib-coverage": "^2.0.5", + "istanbul-lib-hook": "^2.0.7", + "istanbul-lib-instrument": "^3.3.0", + "istanbul-lib-report": "^2.0.8", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^2.2.4", + "js-yaml": "^3.13.1", + "make-dir": "^2.1.0", + "merge-source-map": "^1.1.0", + "resolve-from": "^4.0.0", + "rimraf": "^2.6.3", + "signal-exit": "^3.0.2", + "spawn-wrap": "^1.4.2", + "test-exclude": "^5.2.3", + "uuid": "^3.3.2", + "yargs": "^13.2.2", + "yargs-parser": "^13.0.0" }, "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "locate-path": "^3.0.0" } }, - "amdefine": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "ansi-regex": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "append-transform": { - "version": "0.3.0", - "bundled": true, - "dev": true - }, - "arr-diff": { - "version": "2.0.0", - "bundled": true, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "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" } }, - "arr-flatten": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "async": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "babel-code-frame": { - "version": "6.11.0", - "bundled": true, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "babel-runtime": "^6.0.0", - "chalk": "^1.1.0", - "esutils": "^2.0.2", - "js-tokens": "^2.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" } }, - "babel-generator": { - "version": "6.11.4", - "bundled": true, - "dev": true, - "requires": { - "babel-messages": "^6.8.0", - "babel-runtime": "^6.9.0", - "babel-types": "^6.10.2", - "detect-indent": "^3.0.1", - "lodash": "^4.2.0", - "source-map": "^0.5.0" - } + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true }, - "babel-messages": { - "version": "6.8.0", - "bundled": 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": { - "babel-runtime": "^6.0.0" + "glob": "^7.1.3" } }, - "babel-runtime": { - "version": "6.9.2", - "bundled": true, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "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": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.9.5" + "is-descriptor": "^0.1.0" } - }, - "babel-template": { - "version": "6.9.0", - "bundled": true, + } + } + }, + "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" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "dev": true + }, + "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" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "babel-runtime": "^6.9.0", - "babel-traverse": "^6.9.0", - "babel-types": "^6.9.0", - "babylon": "^6.7.0", - "lodash": "^4.2.0" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "babel-traverse": { - "version": "6.11.4", - "bundled": true, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "babel-code-frame": "^6.8.0", - "babel-messages": "^6.8.0", - "babel-runtime": "^6.9.0", - "babel-types": "^6.9.0", - "babylon": "^6.7.0", - "debug": "^2.2.0", - "globals": "^8.3.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, - "babel-types": { - "version": "6.11.1", - "bundled": true, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "babel-runtime": "^6.9.1", - "babel-traverse": "^6.9.0", - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^1.0.1" + "pump": "^3.0.0" } }, - "babylon": { - "version": "6.8.4", - "bundled": true, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { - "babel-runtime": "^6.0.0" - } - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.6", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^0.4.1", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "commondir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "convert-source-map": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "core-js": { - "version": "2.4.1", - "bundled": true, - "dev": true - }, - "cross-spawn": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "debug": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "detect-indent": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "minimist": "^1.1.0", - "repeating": "^1.1.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true - } - } - }, - "error-ex": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true, - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "bundled": true, - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "filename-regex": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "for-in": { - "version": "0.1.5", - "bundled": true, - "dev": true - }, - "for-own": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "for-in": "^0.1.5" - } - }, - "foreground-child": { - "version": "1.5.3", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "get-caller-file": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "bundled": true, - "dev": true - }, - "glob": { - "version": "7.0.5", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "globals": { - "version": "8.18.0", - "bundled": true, - "dev": true - }, - "graceful-fs": { - "version": "4.1.4", - "bundled": true, - "dev": true - }, - "handlebars": { - "version": "4.0.5", - "bundled": true, - "dev": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "bundled": true, - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "hosted-git-info": { - "version": "2.1.5", - "bundled": true, - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "invariant": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-buffer": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-dotfile": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-finite": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "isobject": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "istanbul-lib-coverage": { - "version": "1.0.0-alpha.4", - "bundled": true, - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.0.0-alpha.4", - "bundled": true, - "dev": true, - "requires": { - "append-transform": "^0.3.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.1.0-alpha.4", - "bundled": true, - "dev": true, - "requires": { - "babel-generator": "^6.11.3", - "babel-template": "^6.9.0", - "babel-traverse": "^6.9.0", - "babel-types": "^6.10.2", - "babylon": "^6.8.1", - "istanbul-lib-coverage": "^1.0.0-alpha.4" - } - }, - "istanbul-lib-report": { - "version": "1.0.0-alpha.3", - "bundled": true, - "dev": true, - "requires": { - "async": "^1.4.2", - "istanbul-lib-coverage": "^1.0.0-alpha", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "rimraf": "^2.4.3", - "supports-color": "^3.1.2" - }, - "dependencies": { - "supports-color": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.0.0-alpha.10", - "bundled": true, - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.0.0-alpha.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.4.4", - "source-map": "^0.5.3" - } - }, - "istanbul-reports": { - "version": "1.0.0-alpha.8", - "bundled": true, - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "js-tokens": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.0.2" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "lodash": { - "version": "4.13.1", - "bundled": true, - "dev": true - }, - "lodash.assign": { - "version": "4.0.9", - "bundled": true, - "dev": true, - "requires": { - "lodash.keys": "^4.0.0", - "lodash.rest": "^4.0.0" - } - }, - "lodash.keys": { - "version": "4.0.7", - "bundled": true, - "dev": true - }, - "lodash.rest": { - "version": "4.0.3", - "bundled": true, - "dev": true - }, - "longest": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "loose-envify": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "js-tokens": "^1.0.1" - }, - "dependencies": { - "js-tokens": { - "version": "1.0.3", - "bundled": true, - "dev": true - } - } - }, - "lru-cache": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "pseudomap": "^1.0.1", - "yallist": "^2.0.0" - } - }, - "md5-hex": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "micromatch": { - "version": "2.3.11", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "minimatch": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.0.0" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "0.7.1", - "bundled": true, - "dev": true - }, - "normalize-package-data": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "number-is-nan": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "object.omit": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "for-own": "^0.1.3", - "is-extendable": "^0.1.1" - } - }, - "once": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "os-homedir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "parse-glob": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - }, - "pkg-up": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - }, - "preserve": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "randomatic": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^2.0.2", - "kind-of": "^3.0.2" - } - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "regenerator-runtime": { - "version": "0.9.5", - "bundled": true, - "dev": true - }, - "regex-cache": { - "version": "0.4.3", - "bundled": true, - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3", - "is-primitive": "^2.0.0" - } - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "repeat-string": { - "version": "1.5.4", - "bundled": true, - "dev": true - }, - "repeating": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.5.4", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "source-map": { - "version": "0.5.6", - "bundled": true, - "dev": true - }, - "spawn-wrap": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "requires": { - "foreground-child": "^1.3.3", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.3.3", - "signal-exit": "^2.0.0", - "which": "^1.2.4" - }, - "dependencies": { - "signal-exit": { - "version": "2.1.2", - "bundled": true, - "dev": true - } - } - }, - "spdx-correct": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "spdx-license-ids": "^1.0.2" - } - }, - "spdx-exceptions": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^1.0.4", - "spdx-license-ids": "^1.0.0" - } - }, - "spdx-license-ids": { - "version": "1.2.1", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "test-exclude": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "arrify": "^1.0.1", - "lodash.assign": "^4.0.9", - "micromatch": "^2.3.8", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "to-fast-properties": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "uglify-js": { - "version": "2.7.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "async": "~0.2.6", - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "bundled": true, - "dev": true, - "optional": true - }, - "yargs": { - "version": "3.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" - } - }, - "which": { - "version": "1.2.10", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^1.1.1" - } - }, - "which-module": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true, - "dev": true - }, - "wrap-ansi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "y18n": { - "version": "3.2.1", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "yargs": { - "version": "4.8.1", - "bundled": true, - "dev": true, - "requires": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.1", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^2.4.1" - }, - "dependencies": { - "cliui": { - "version": "3.2.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "window-size": { - "version": "0.2.0", - "bundled": true, - "dev": true - } - } - }, - "yargs-parser": { - "version": "2.4.1", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "bundled": true, - "dev": true - } + "isexe": "^2.0.0" } } } }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "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 }, - "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" - } - } - } + "own-or": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", + "integrity": "sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw=", + "dev": true }, - "object-visit": { + "own-or-env": { "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=", + "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.1.tgz", + "integrity": "sha512-y8qULRbRAlL6x2+M0vIe7jJbJx/kmUTzYonRAa2ayesR2qWLswninkVyeJe4x3IEXhdgoNodzjQRKAoEs6Fmrw==", "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=", - "requires": { - "wrappy": "1" + "own-or": "^1.0.0" } }, - "onetime": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", "dev": true }, - "only-shallow": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/only-shallow/-/only-shallow-1.2.0.tgz", - "integrity": "sha1-cc7O26kyS8BRiu8Q7AgNMkncJGU=", + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "opener": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", - "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "p-try": "^2.0.0" } }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - } + "p-limit": "^2.0.0" } }, - "os-homedir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", - "integrity": "sha1-DWK99EuRb9O73PLKsZGUj7CU8Ac=", - "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 - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, "p-map": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", "dev": true }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, "pac-proxy-agent": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz", "integrity": "sha512-cDNAN1Ehjbf5EHkNY5qnRhGPUCp6SnpyVof5fRzN800QV1Y2OkzbH9rmjZkbBRa8igof903yOnjIl6z0SlAhxA==", + "dev": true, "requires": { "agent-base": "^4.2.0", "debug": "^3.1.0", @@ -6183,6 +5363,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", + "dev": true, "requires": { "co": "^4.6.0", "degenerator": "^1.0.4", @@ -6191,6 +5372,26 @@ "thunkify": "^2.1.2" } }, + "package-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", + "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^3.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "dependencies": { + "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 + } + } + }, "package-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", @@ -6203,18 +5404,13 @@ "semver": "^5.1.0" } }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, "param-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-1.1.2.tgz", - "integrity": "sha1-3LCRpDwlm5Io8cNB57akTqC/l0M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, "requires": { - "sentence-case": "^1.1.2" + "no-case": "^2.2.0" } }, "parse-json": { @@ -6223,16 +5419,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "^1.2.0" - } - }, - "pascal-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-1.1.2.tgz", - "integrity": "sha1-Pl1kogBDgwp8STRMLXS0G+DJyZs=", - "requires": { - "camel-case": "^1.1.1", - "upper-case-first": "^1.1.0" + "error-ex": "^1.2.0" } }, "pascalcase": { @@ -6241,14 +5428,6 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, - "path-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-1.1.2.tgz", - "integrity": "sha1-UM5roNO+090LXCqcRVNpdDRAlRQ=", - "requires": { - "sentence-case": "^1.1.2" - } - }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -6267,7 +5446,8 @@ "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=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-is-inside": { "version": "1.0.2", @@ -6318,7 +5498,8 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "pify": { "version": "3.0.0", @@ -6341,6 +5522,26 @@ "pinkie": "^2.0.0" } }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + } + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -6350,7 +5551,8 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true }, "prepend-http": { "version": "1.0.4", @@ -6359,20 +5561,25 @@ "dev": true }, "pretty-bytes": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-0.1.2.tgz", - "integrity": "sha1-zZApTVihyk6KXQ+5yCJZmIgazwA=", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", + "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } }, "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==" + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true }, "proxy-agent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.0.0.tgz", "integrity": "sha512-g6n6vnk8fRf705ShN+FEXFG/SDJaW++lSs0d9KaJh4uBWW/wi7en4Cpo5VYQW3SZzAE121lhB/KLQrbURoubZw==", + "dev": true, "requires": { "agent-base": "^4.2.0", "debug": "^3.1.0", @@ -6388,6 +5595,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, "requires": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -6398,7 +5606,8 @@ "proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", + "dev": true }, "ps-tree": { "version": "1.1.0", @@ -6412,7 +5621,8 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true }, "pstree.remy": { "version": "1.1.0", @@ -6423,15 +5633,27 @@ "ps-tree": "^1.1.0" } }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "querystring": { "version": "0.2.0", @@ -6443,6 +5665,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "dev": true, "requires": { "bytes": "3.0.0", "http-errors": "1.6.3", @@ -6501,6 +5724,7 @@ "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -6603,7 +5827,17 @@ "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } }, "remove-trailing-separator": { "version": "1.1.0", @@ -6636,6 +5870,7 @@ "version": "2.87.0", "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.6.0", @@ -6659,6 +5894,30 @@ "uuid": "^3.1.0" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -6671,25 +5930,23 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, "rimraf": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true }, "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==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "dev": true }, "safe-regex": { "version": "1.1.0", @@ -6703,17 +5960,20 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true }, "selenium-download": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/selenium-download/-/selenium-download-2.0.12.tgz", - "integrity": "sha512-0vpziunCccimmZjVaUJovdaCa/X0wdxJiS8YG8akBdcNCUp5+J/QIVVhKtDdFOQmuGkOv2mCtVLH8uC79uDvTg==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/selenium-download/-/selenium-download-2.0.14.tgz", + "integrity": "sha512-ygWSA+SZbBiI+ArejK0HZ7Q8HvtSKWFibSjePra0/4okm5lgFFKn8ene36H5P6CKffILqwFRhfNoM19Jp3x9uQ==", + "dev": true, "requires": { "adm-zip": "~0.4.4", "async": "^2.1.4", @@ -6727,17 +5987,19 @@ }, "dependencies": { "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.11" } }, "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" } @@ -6753,7 +6015,8 @@ "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true }, "semver-diff": { "version": "2.1.0", @@ -6779,13 +6042,11 @@ "semver": "^5.3.0" } }, - "sentence-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-1.1.3.tgz", - "integrity": "sha1-gDSq/CFFdy06vhUJqkLJ4QQtwTk=", - "requires": { - "lower-case": "^1.1.1" - } + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "set-immediate-shim": { "version": "1.0.1", @@ -6819,7 +6080,8 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true }, "shebang-command": { "version": "1.2.0", @@ -6842,11 +6104,6 @@ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", "dev": true }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" - }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -6856,15 +6113,8 @@ "smart-buffer": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", - "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=" - }, - "snake-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-1.1.2.tgz", - "integrity": "sha1-DC8l4wUVjZoY09l3BmGH/vilpmo=", - "requires": { - "sentence-case": "^1.1.2" - } + "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", + "dev": true }, "snapdragon": { "version": "0.8.2", @@ -6983,19 +6233,11 @@ "kind-of": "^3.2.0" } }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, "socks": { "version": "1.1.10", "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", + "dev": true, "requires": { "ip": "^1.1.4", "smart-buffer": "^1.0.13" @@ -7005,18 +6247,17 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz", "integrity": "sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==", + "dev": true, "requires": { "agent-base": "^4.1.0", "socks": "^1.1.10" } }, "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "requires": { - "amdefine": ">=0.0.4" - } + "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", @@ -7031,12 +6272,78 @@ "urix": "^0.1.0" } }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "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 }, + "spawn-wrap": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "dev": true, + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, "spdx-correct": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", @@ -7094,15 +6401,16 @@ } }, "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", "dev": true }, "sshpk": { "version": "1.14.2", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -7116,9 +6424,9 @@ } }, "stack-utils": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-0.4.0.tgz", - "integrity": "sha1-lAy4L8z6hOj/Lz/fKT/ngBa+zNE=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", "dev": true }, "static-extend": { @@ -7145,7 +6453,8 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true }, "stream-combiner": { "version": "0.0.4", @@ -7156,6 +6465,12 @@ "duplexer": "~0.1.1" } }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -7186,7 +6501,8 @@ "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true }, "stringstream": { "version": "0.0.6", @@ -7195,12 +6511,12 @@ "dev": true }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^3.0.0" } }, "strip-bom": { @@ -7237,65 +6553,57 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, "requires": { "has-flag": "^3.0.0" } }, - "swap-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", - "integrity": "sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=", - "requires": { - "lower-case": "^1.1.1", - "upper-case": "^1.1.1" - } - }, "tap": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/tap/-/tap-7.1.2.tgz", - "integrity": "sha1-36w+zxSshUe7rSW70Wzyw3Q/Zc8=", + "version": "12.7.0", + "resolved": "https://registry.npmjs.org/tap/-/tap-12.7.0.tgz", + "integrity": "sha512-SjglJmRv0pqrQQ7d5ZBEY8ZOqv3nYDBXEX51oyycOH7piuhn82JKT/yDNewwmOsodTD/RZL9MccA96EjDgK+Eg==", "dev": true, "requires": { - "bluebird": "^3.3.1", + "bind-obj-methods": "^2.0.0", + "browser-process-hrtime": "^1.0.0", + "capture-stack-trace": "^1.0.0", "clean-yaml-object": "^0.1.0", "color-support": "^1.1.0", - "coveralls": "^2.11.2", - "deeper": "^2.1.0", + "coveralls": "^3.0.2", + "domain-browser": "^1.2.0", + "esm": "^3.2.5", "foreground-child": "^1.3.3", - "glob": "^7.0.0", - "isexe": "^1.0.0", - "js-yaml": "^3.3.1", - "nyc": "^7.1.0", - "only-shallow": "^1.0.2", - "opener": "^1.4.1", - "os-homedir": "1.0.1", - "readable-stream": "^2.0.2", + "fs-exists-cached": "^1.0.0", + "function-loop": "^1.0.1", + "glob": "^7.1.3", + "isexe": "^2.0.0", + "js-yaml": "^3.13.1", + "minipass": "^2.3.5", + "mkdirp": "^0.5.1", + "nyc": "^14.0.0", + "opener": "^1.5.1", + "os-homedir": "^1.0.2", + "own-or": "^1.0.0", + "own-or-env": "^1.0.1", + "rimraf": "^2.6.3", "signal-exit": "^3.0.0", - "stack-utils": "^0.4.0", - "tap-mocha-reporter": "^2.0.0", - "tap-parser": "^2.2.0", - "tmatch": "^2.0.1" + "source-map-support": "^0.5.10", + "stack-utils": "^1.0.2", + "tap-mocha-reporter": "^3.0.9", + "tap-parser": "^7.0.0", + "tmatch": "^4.0.0", + "trivial-deferred": "^1.0.1", + "ts-node": "^8.0.2", + "tsame": "^2.0.1", + "typescript": "^3.3.3", + "write-file-atomic": "^2.4.2", + "yapool": "^1.0.0" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "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", @@ -7306,61 +6614,32 @@ "path-is-absolute": "^1.0.0" } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "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" - } - }, - "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==", + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "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" + "glob": "^7.1.3" } }, - "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==", + "write-file-atomic": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", + "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } } } }, "tap-mocha-reporter": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-2.0.1.tgz", - "integrity": "sha1-xwMWFz1uOhbFjhupLV1s2N5YoS4=", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz", + "integrity": "sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ==", "dev": true, "requires": { "color-support": "^1.1.0", @@ -7370,19 +6649,10 @@ "glob": "^7.0.5", "js-yaml": "^3.3.1", "readable-stream": "^2.1.5", - "tap-parser": "^2.0.0", + "tap-parser": "^5.1.0", "unicode-length": "^1.0.0" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -7398,51 +6668,12 @@ "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", "dev": true }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "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" - } - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, - "optional": true - }, - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "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" - } + "optional": true }, "readable-stream": { "version": "2.3.6", @@ -7469,89 +6700,135 @@ "requires": { "safe-buffer": "~5.1.0" } + }, + "tap-parser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.4.0.tgz", + "integrity": "sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==", + "dev": true, + "requires": { + "events-to-array": "^1.0.1", + "js-yaml": "^3.2.7", + "readable-stream": "^2" + } } } }, "tap-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-2.2.3.tgz", - "integrity": "sha1-rebpbje/04zg8WLaBn80A08GiwE=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-7.0.0.tgz", + "integrity": "sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==", "dev": true, "requires": { "events-to-array": "^1.0.1", "js-yaml": "^3.2.7", - "readable-stream": "^2" + "minipass": "^2.2.0" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "^0.7.0" + } + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "locate-path": "^3.0.0" } }, - "esprima": { + "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" + } + }, + "load-json-file": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, - "optional": true + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } }, - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "pify": "^3.0.0" } }, - "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==", + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "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" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" } }, - "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==", + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", "dev": true, - "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true } } }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - } - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -7561,7 +6838,8 @@ "thunkify": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", - "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", + "dev": true }, "timed-out": { "version": "4.0.1", @@ -7569,45 +6847,24 @@ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "dev": true }, - "tiny-lr-fork": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz", - "integrity": "sha1-Hpnh4qhGm3NquX2X7vqYxx927Qo=", + "tiny-lr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", + "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", "dev": true, "requires": { - "debug": "~0.7.0", - "faye-websocket": "~0.4.3", - "noptify": "~0.0.3", - "qs": "~0.5.2" - }, - "dependencies": { - "debug": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", - "dev": true - }, - "qs": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz", - "integrity": "sha1-MbGtBYVnZRxSaSFQa5qHk5EaA4Q=", - "dev": true - } - } - }, - "title-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-1.1.2.tgz", - "integrity": "sha1-+uSmrlRr+iLQg6DuqRCkDRLtT1o=", - "requires": { - "sentence-case": "^1.1.1", - "upper-case": "^1.0.3" + "body": "^5.1.0", + "debug": "^3.1.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" } }, "tmatch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-2.0.1.tgz", - "integrity": "sha1-DFYkbzPzDaG409colauvFmYPOM8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-4.0.0.tgz", + "integrity": "sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg==", "dev": true }, "tmp": { @@ -7619,6 +6876,12 @@ "os-tmpdir": "~1.0.1" } }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -7663,6 +6926,7 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, "requires": { "punycode": "^1.4.1" } @@ -7673,10 +6937,42 @@ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", "dev": true }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "trivial-deferred": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz", + "integrity": "sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=", + "dev": true + }, + "ts-node": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.0.tgz", + "integrity": "sha512-34jpuOrxDuf+O6iW1JpgTRDFynUZ1iEqtYruBqh35gICNjN8x+LpVcPAcwzLPi9VU6mdA3ym+x233nZmZp445A==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "source-map-support": "^0.5.6", + "yn": "^3.0.0" + } + }, + "tsame": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tsame/-/tsame-2.0.1.tgz", + "integrity": "sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw==", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -7685,12 +6981,14 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, "optional": true }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, "requires": { "prelude-ls": "~1.1.2" } @@ -7698,39 +6996,39 @@ "type-detect": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=" + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", + "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==", + "dev": true }, "uglify-js": { - "version": "2.4.24", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", - "requires": { - "async": "~0.2.6", - "source-map": "0.1.34", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.5.4" + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.11.tgz", + "integrity": "sha512-izPJg8RsSyqxbdnqX36ExpbH3K7tDBsAU/VfNv89VkMFy3z39zFjunQGsSHOlGlyIfGLGprGeosgQno3bo2/Kg==", + "dev": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" }, "dependencies": { "source-map": { - "version": "0.1.34", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=", - "requires": { - "amdefine": ">=0.0.4" - } + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" - }, "undefsafe": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", @@ -7758,10 +7056,14 @@ "dev": true }, "underscore.string": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", - "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=", - "dev": true + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "dev": true, + "requires": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + } }, "unicode-length": { "version": "1.0.3", @@ -7771,6 +7073,23 @@ "requires": { "punycode": "^1.3.2", "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "union-value": { @@ -7820,7 +7139,8 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true }, "unset-value": { "version": "1.0.0", @@ -7923,15 +7243,14 @@ "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true }, - "upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", - "integrity": "sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=", - "requires": { - "upper-case": "^1.1.1" - } + "uri-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz", + "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", + "dev": true }, "urix": { "version": "0.1.0", @@ -7986,12 +7305,14 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "validate-npm-package-license": { "version": "3.0.3", @@ -8007,6 +7328,7 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -8017,16 +7339,39 @@ "version": "2.3.14", "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz", "integrity": "sha512-5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg==", + "dev": true, "requires": { "foreachasync": "^3.0.0" } }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, "which": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=", "dev": true }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, "widest-line": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", @@ -8042,20 +7387,64 @@ "integrity": "sha1-OXopEw7JjQqgvIa6pGITk+/9Cwc=", "dev": true }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" - }, "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "write-file-atomic": { "version": "2.3.0", @@ -8078,6 +7467,7 @@ "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, "requires": { "sax": ">=0.6.0", "xmlbuilder": "~9.0.1" @@ -8086,12 +7476,14 @@ "xmlbuilder": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true }, "xregexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", + "dev": true }, "xtend": { "version": "4.0.1", @@ -8099,20 +7491,88 @@ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yapool": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yapool/-/yapool-1.0.0.tgz", + "integrity": "sha1-9pPymjFbUNmp2iZGp6ZkXJaYW2o=", + "dev": true }, "yargs": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", + "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz", + "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==", + "dev": true, "requires": { - "camelcase": "^1.0.2", - "decamelize": "^1.0.0", - "window-size": "0.1.0", - "wordwrap": "0.0.2" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } }, "yauzl": { @@ -8123,6 +7583,12 @@ "requires": { "fd-slicer": "~1.0.1" } + }, + "yn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz", + "integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==", + "dev": true } } } diff --git a/package.json b/package.json index 42e4645..e7018f7 100644 --- a/package.json +++ b/package.json @@ -7,44 +7,47 @@ "node": ">=4.4.6" }, "devDependencies": { + "aws-sdk": "^2.7.13", + "chromedriver": "^2.33.2", "dateformat": "^1.0.11", "diacritics": "^1.2.1", - "grunt": "^0.4.5", + "env2": "^2.1.1", + "grunt": "^1.0.4", "grunt-contrib-clean": "^0.6.0", "grunt-contrib-compass": "^1.0.3", "grunt-contrib-copy": "^0.5.0", - "grunt-contrib-jshint": "^0.10.0", - "grunt-contrib-nodeunit": "^0.4.1", + "grunt-contrib-jshint": "^2.1.0", + "grunt-contrib-nodeunit": "^2.0.0", "grunt-contrib-sass": "^0.8.1", - "grunt-contrib-uglify": "^0.5.1", - "grunt-contrib-watch": "^0.6.1", - "grunt-curl": "^2.0.3", - "handlebars": "^4.0.1", + "grunt-contrib-uglify": "^4.0.1", + "grunt-contrib-watch": "^1.1.0", + "grunt-curl": "^2.5.1", + "handlebars": "^4.1.2", "hogan": "^1.0.2", - "request": "^2.87.0", - "speakingurl": "^1.1.1", - "underscore": "^1.7.0", - "xml2js": "^0.4.6", - "aws-sdk": "^2.7.13", - "chromedriver": "^2.33.2", - "env2": "^2.1.1", + "html-entities": "^1.1.2", + "html-minifier": "^4.0.0", "mime-types": "^2.1.13", + "nightwatch": "^1.0.6", "nodemon": "^1.11.0", + "request": "^2.87.0", + "selenium-download": "^2.0.14", "selenium-server": "^3.8.1", - "html-entities": "^1.1.2", - "html-minifier": "^0.7.2", - "nightwatch": "^1.0.6", - "selenium-download": "^2.0.7" + "speakingurl": "^1.1.1", + "underscore": "^1.7.0", + "xml2js": "^0.4.6" }, "scripts": { - "test": "./nightwatch/node_modules/nightwatch/bin/nightwatch --env default" + "test": "VIEWER_SOURCE_URL=http://sites.dlib.nyu.edu/viewer APP_URL=http://127.0.0.1:8080/aco APP_ROOT=/ DISCOVERY_CORE=http://stagediscovery.dlib.nyu.edu:8983/solr/viewer ./node_modules/nightwatch/bin/nightwatch --env default", + "build-local": "AG=0 VIEWER_SOURCE_URL=http://sites.dlib.nyu.edu/viewer APP_URL=http://127.0.0.1:8080 APP_ROOT=/ DISCOVERY_CORE=http://devdiscovery.dlib.nyu.edu/solr/viewer grunt", + "build-docker": "AG=0 VIEWER_SOURCE_URL=http://sites.dlib.nyu.edu/viewer APP_URL=http://127.0.0.1:8000/aco APP_ROOT=/aco DISCOVERY_CORE=http://stagediscovery.dlib.nyu.edu:8983/solr/viewer grunt", + "build-dev": "AG=1 VIEWER_SOURCE_URL=http://dev-sites.dlib.nyu.edu/viewer APP_URL=http://devweb1.dlib.nyu.edu/aco APP_ROOT=/aco DISCOVERY_CORE=http://devdiscovery.dlib.nyu.edu/solr/viewer grunt" }, "author": "NYU Digital Library Technology Services", "license": "ISC", "homepage": "https://github.com/NYULibraries/aco-site", "dependencies": {}, "repository": { - "type" : "git", - "url" : "https://github.com/NYULibraries/aco-site.git" + "type": "git", + "url": "https://github.com/NYULibraries/aco-site.git" } } From c6f6c2cc56f7f88ec9609d551f811a97aa72b8fc Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Mon, 13 May 2019 12:09:37 -0400 Subject: [PATCH 19/28] fix broken link --- source/json/pages/browsebycategory.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/json/pages/browsebycategory.js b/source/json/pages/browsebycategory.js index b5da905..c00050e 100644 --- a/source/json/pages/browsebycategory.js +++ b/source/json/pages/browsebycategory.js @@ -62,9 +62,9 @@ async function browsebycategory () { try { const frontCount = await frontCountFromCache(); let categoriesEn = await categoriesFromCache('En'); - categoriesEn.unshift({ category: 'All', count: frontCount }) + categoriesEn.unshift({ category: 'All', count: frontCount, uri: `${appUrl}/browse`}) let categoriesAr = await categoriesFromCache('Ar'); - categoriesAr.unshift({ category: 'Frankfurter', count: frontCount }); + categoriesAr.unshift({ category: 'Frankfurter', count: frontCount, uri: `${appUrl}/browse`}); return { htmltitle: 'Browse by Category', title: [ From 7ff0eb973996f0d72fe5c3c255a6fcf8e114fda7 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Wed, 12 Jun 2019 10:17:03 -0400 Subject: [PATCH 20/28] update --- .eslintrc.js | 28 ++ .jshintrc | 7 + Gruntconfigurations.js | 2 +- Gruntfile.js | 2 +- .../tasks/node_modules/transform/index.js | 253 ------------------ .../tasks/writeHTML.js | 82 ------ lib/handlebars-helpers/index.js | 28 ++ lib/task/index.js | 59 ++++ lib/transform/index.js | 209 +++++++++++++++ source/json/pages/browsebycategory.js | 20 +- source/views/items.hbs | 2 +- 11 files changed, 344 insertions(+), 348 deletions(-) create mode 100644 .eslintrc.js create mode 100644 .jshintrc delete mode 100644 lib/grunt-contrib-writeHTML/tasks/node_modules/transform/index.js delete mode 100644 lib/grunt-contrib-writeHTML/tasks/writeHTML.js create mode 100644 lib/handlebars-helpers/index.js create mode 100644 lib/task/index.js create mode 100644 lib/transform/index.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..6dc8c26 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,28 @@ +module.exports = { + "env": { + "browser": true, + "node": true, + }, + "extends": "eslint:recommended", + "parserOptions": { + "ecmaVersion": 2017 + }, + "rules": { + "indent": [ + "error", + 2 + ], + "linebreak-style": [ + "error", + "unix" + ], + "quotes": [ + "error", + "single" + ], + "semi": [ + "error", + "always" + ] + } +}; \ No newline at end of file diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..4d17b39 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,7 @@ +{ + "esversion": 8, + "node": true, + "globalstrict": true, + "unused": true, + "undef": true +} diff --git a/Gruntconfigurations.js b/Gruntconfigurations.js index fe71c43..8a94202 100644 --- a/Gruntconfigurations.js +++ b/Gruntconfigurations.js @@ -112,7 +112,7 @@ function copy() { cwd: 'source', src: 'robots.txt', dest: 'build' - }, + } ] } }; diff --git a/Gruntfile.js b/Gruntfile.js index 4121ef6..ba7fa22 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -29,7 +29,7 @@ module.exports = function (grunt) { grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-compass'); grunt.loadNpmTasks('grunt-contrib-watch'); - require('./lib/grunt-contrib-writeHTML/tasks/writeHTML.js')(grunt); + require('./lib/task')(grunt); /** register the task */ grunt.registerTask('default', tasks); diff --git a/lib/grunt-contrib-writeHTML/tasks/node_modules/transform/index.js b/lib/grunt-contrib-writeHTML/tasks/node_modules/transform/index.js deleted file mode 100644 index e8e4a14..0000000 --- a/lib/grunt-contrib-writeHTML/tasks/node_modules/transform/index.js +++ /dev/null @@ -1,253 +0,0 @@ -module.exports = async function (configuration) { - - /** make it its own module */ - function HandlebarsHelpers ( ) { - function json ( context, options ) { - return options.fn ( JSON.parse ( context ) ); - } - function speakingurl ( context, options ) { - var getSlug = require('speakingurl'); - return getSlug ( this.label ) ; - } - function addcommas(string, options) { - x = string.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); - return x; - } - function ifempty(fieldtocheck, defaultvalue) { - if (fieldtocheck) { - return; - } else { - return defaultvalue; - } - } - return { - ifempty: ifempty, - addcommas: addcommas, - json : json, - speakingurl : speakingurl - }; - } - - var path = require ('path'); - var Handlebars = require('handlebars'); - var _ = require('underscore'); - var fs = require('fs'); - var grunt = require('grunt'); - var htmlminify = require('html-minifier').minify; - - try { - /** project root directory */ - var root = path.normalize(path.dirname(module.parent.filename) + '/../../..'); - /** grunt task configurations */ - var Gruntconfigurations = require(`${root}/Gruntconfigurations`); - /** - * information about how to render the CSS in this project - * see: https://github.com/gruntjs/grunt-contrib-sass - */ - var sassConfiguration = Gruntconfigurations.sass(); - /** - * information about how to render the JS files in this project - */ - var jsConfiguration = Gruntconfigurations.js(); - var htmlminifyConfiguration = Gruntconfigurations.htmlminify(); - /** load configuration */ - const projectConfigurationFile = `${root}/source/json/conf.js`; - let source = require(projectConfigurationFile); - var widgets = grunt.file.readJSON(`${root}/source/json/widgets.json`); - var uncompileTemplate = grunt.file.read(configuration.template); - var matchWidgetsRegEx = "data-script='(.*)'"; - var matchWidgets = uncompileTemplate.match(matchWidgetsRegEx); - var handlebars_template = Handlebars.compile(uncompileTemplate); - var partials = {}; - var toJSON = ''; - var javascriptString = ''; - var handlebarsTemplate = ''; - var pages = configuration.data.pages; - // remove pages from configuration.data object - delete(configuration.data.pages); - - /** copy all of the page properties in the source */ - // _.extend(source, configuration.data); Looks like this was a HUUUGEEE bug the likes no one has seen before - source = _.extend(configuration.data, source); - - source.widgets = {}; - - /** array to hold the menu object */ - source.menus = []; - - /** register Handlebars helpers */ - _.each (HandlebarsHelpers(), (helper, key) => { Handlebars.registerHelper(key, helper) }); - - /** string that holds JavaScript and handlebars templates */ - source.closure = ''; - - if (matchWidgets && matchWidgets[0]) { - toJSON = matchWidgets[0]; - toJSON = toJSON.replace(/'/g, '').replace(/data-script=/g, ''); - toJSON = JSON.parse(toJSON); - /** append all the templates to the body */ - _.each(toJSON.hbs, (hbs) => { - if (grunt.file.isFile(`${root}/source/views/${hbs.template}`)) { - source.closure += ``; - } - }); - /** JS files */ - _.each(toJSON.js, (js) => { - /** - * the main app Uglify the JavaScript files and copy them from: /source/js to - * /build/js folder along with the source files. We allow to configure the - * app to use: compressed or expanded (default to expanded for development - * purposes). The app can also be configure to host the JavaScript files - * "inline" or "external" (default to expanded for development - * purposes). - * - * In production enviorments we want to set the app to use the compressed - * Javascript file and host it inline (in the HTML body of the page) - * - * in order to use Javascripts files, the file must be specify using data script at - * the source element. See example: - * - * data-script='{ "js" : [ "crossframe.js", "book.js" ] }' - * - */ - if (jsConfiguration.js.style == 'compressed') { - var js_filename = path.basename (js, path.extname(js)) + '.min' + path.extname(js); - if (grunt.file.isFile(`${root}/build/js/${js_filename}`)) { - source.closure += ``; - } - } - else { - // aof1: this looks wrong - if (grunt.file.isFile(`${root}/build/js/${js}`)) { - source.closure += ``; - } - } - }); - } - - /** CSS / SASS */ - if (sassConfiguration.dist.build === 'external') { - source.css = ``; - } - else { - source.css = ``; - } - - /** build the menu object */ - _.each(pages, (page, index) => { - if (_.isArray(pages[index].menu)) { - _.each(pages[index].menu, menu => { - source.menus[menu.weight] = { - label: menu.label, - status: 'active', - route: pages[index].route.replace('/index.html', ''), - page: index, - weight: menu.weight - }; - }); - } - }); - - /** clean the menu object of empty values that can "exist" becuase of weight */ - source.menus = _.reject(source.menus, menu => { - return _.isUndefined(menu); - }); - - _.each(widgets, (widget, name) => { - source.widgets[name] = {}; - _.extend(source.widgets[name], widget); // this looks wrong - if ( widget.sourceType === 'json') { - source.widgets[name].data = grunt.file.readJSON(`${root}/${widget.source}`); - } - else if (widget.sourceType === 'iframe') { - source.widgets[name].data = { source : source.widgets[name].source } - } - }); - - /** this spaghetti maps the widgets to the task and load data Object if type is not local. */ - if (source.content) { - _.each(source.content, function (content, a) { - _.each(source.content[a], function (pane, b) { - if (_.isArray( source.content[a][b].widgets)) { - source.content[a][b].raw = []; - _.each ( source.content[a][b].widgets, function ( widget, c ) { - var spaghetti = {}; - var sourceType = widgets[source.content[a][b].widgets[c]].sourceType; - if ( sourceType === 'json' ) { - var json_data = grunt.file.readJSON( root + '/' + widgets[source.content[a][b].widgets[c]].source ) ; - spaghetti = { - label : widget, - widget : widgets[source.content[a][b].widgets[c]] , - data : json_data - } ; - } - /** if you care about placement in specific scenario */ - source.content[a][b][widget] = spaghetti; - /** as array to loop by weight */ - source.content[a][b].raw.push(spaghetti); - }); - } - }); - }); - } - - grunt.file.recurse(`${root}/source/views/`, function callback (abspath, rootdir, subdir, filename ) { - if (filename.match('.mustache') && configuration.template !== filename) { - var name = filename.replace('.mustache', ''); - var partial = grunt.file.read ( abspath ) ; - var matchWidgetsRegEx = "data-script='(.*)'"; - var matchWidgets = partial.match(matchWidgetsRegEx); - var toJSON = ''; - var javascriptString = ''; - var closure = ''; - if (!_.find(_.keys(pages), name)) { - if (matchWidgets && matchWidgets[0]) { - toJSON = matchWidgets[0]; - toJSON = toJSON.replace(/'/g, '').replace(/data-script=/g, ''); - toJSON = JSON.parse(toJSON); - _.each(toJSON.js, function (js) { - if (jsConfiguration.js.style == 'compressed') { - var js_filename = path.basename(js, path.extname(js)) + '.min' + path.extname(js); - if ( grunt.file.isFile(root + '/build/js/' + js_filename)) { - javascriptString += '' ; - } - } - else { - if (grunt.file.isFile(root + '/build/js/' + js) ) { - javascriptString += ''; - } - } - } ) ; - } - partials[name] = partial + javascriptString; - } - } - }); - - grunt.file.recurse(`${root}/source/views/`, function callback(abspath, rootdir, subdir, filename ) { - if (filename.match('.hbs')) { - grunt.file.write(`${root}/build/js/filename`, grunt.file.read(abspath)); - } - }); - - _.each(partials, (partial, key) => { - Handlebars.registerPartial(key, partial); - }); - - var traceName = configuration.route.replace('/index.html', '').replace(/\//g, '-').replace(/-/, ''); - - grunt.file.write(`${root}/source/json/datasources/${traceName}.json`, JSON.stringify(source)); - - /** write HTML file */ - grunt.file.write(`${root}/build/${configuration.route}`, htmlminify(handlebars_template(source), htmlminifyConfiguration)); - - grunt.log.write(`Transforming ${configuration.route}`).ok(); - - } - - catch (err) { - grunt.log.write(`Transforming ${configuration.task} into HTML fail. See ${err.description}`).error() ; - console.log(err); - } - -} diff --git a/lib/grunt-contrib-writeHTML/tasks/writeHTML.js b/lib/grunt-contrib-writeHTML/tasks/writeHTML.js deleted file mode 100644 index e1361e2..0000000 --- a/lib/grunt-contrib-writeHTML/tasks/writeHTML.js +++ /dev/null @@ -1,82 +0,0 @@ -/* - * grunt-contrib-writeHTML - * https://github.com/NYULibraries/awdl_site - * - * Copyright (c) 2014 New York University, contributors - * Licensed under the MIT license. - */ - -'use strict'; - -module.exports = async function (grunt) { - async function writeHTML () { - try { - console.log('We are doing something here'); - } - catch (e) { - console.log (e); - grunt.log.error(); - grunt.fail.warn('Unable to Yay!', e); - } - } - grunt.registerTask('writeHTML', 'Write HTML files from pages.js file.', async function () { - var path = require('path'); - var _ = require('underscore'); - var fs = require('fs') ; - /** @TODO: find if there is a more elegant solution to this */ - var root = path.normalize(__dirname + '/../../..'); - var transform = require('transform'); - - async function source (sourcePath) { - try { - const pageFn = require(sourcePath); - let response = await pageFn(); - return response; - } catch(e) { - console.log(e); - } - } - - /** force task into asynchronous mode and grab a handle to the "done" function. */ - var done = this.async(); - - try { - var pages = {}; - /** load configuration */ - const projectConfigurationFile = `${root}/source/json/conf.js`; - let conf = require(projectConfigurationFile); - - if (grunt.file.isDir(`${root}/source/json/pages`)) { - var sources = fs.readdirSync(`${root}/source/json/pages`); - for (var i = 0; i < sources.length; i++) { - if (sources[i].match('.js')) { - pages[path.basename(sources[i], '.js')] = await source(`${root}/source/json/pages/${sources[i]}`); - } - } - } - - /** copy source JavaScript files to build */ - grunt.file.recurse(`${root}/source/js/`, function callback (abspath, rootdir, subdir, filename) { - if (filename.match('.js')) { - grunt.file.copy(abspath, `build/js/${filename}`); - } - }); - - /** iterate pages and transform in HTML */ - _.each (pages, (element, index) => { - element.task = index; - element.pages = pages; - /** all we need to construct this HTML page it's in the page Object */ - transform({ - route: element.route, - template: `${root}/source/views/${index}.mustache`, - data: element - }); - }); - } - catch (err) { - console.log(err); - grunt.log.write('Unknown error').error(); - } - }); -}; \ No newline at end of file diff --git a/lib/handlebars-helpers/index.js b/lib/handlebars-helpers/index.js new file mode 100644 index 0000000..dcdf2be --- /dev/null +++ b/lib/handlebars-helpers/index.js @@ -0,0 +1,28 @@ +function json (context, options) { + return options.fn(JSON.parse(context)); +} + +function speakingurl (context, options) { + const getSlug = require('speakingurl'); + return getSlug(this.label); +} + +function addcommas (string, options) { + x = string.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); + return x; +} + +function ifempty (fieldtocheck, defaultvalue) { + if (fieldtocheck) { + return; + } else { + return defaultvalue; + } +} + +module.exports = { + ifempty: ifempty, + addcommas: addcommas, + json: json, + speakingurl: speakingurl +}; \ No newline at end of file diff --git a/lib/task/index.js b/lib/task/index.js new file mode 100644 index 0000000..3995d0b --- /dev/null +++ b/lib/task/index.js @@ -0,0 +1,59 @@ +/** + * task + * + * Copyright (c) 2014 New York University, contributors + * Licensed under the MIT license. + */ + +'use strict'; + +module.exports = async function (grunt) { + grunt.registerTask('writeHTML', 'Write HTML files', async function () { + const { basename, extname, normalize } = require('path'); + const { readdirSync } = require('fs'); + const root = normalize(__dirname + '/../..'); + const transform = require('../transform'); + /** force task into asynchronous mode */ + this.async(); + try { + let pages = {}; + if (grunt.file.isDir(`${root}/source/json/pages`)) { + let sources = readdirSync(`${root}/source/json/pages`); + while (sources.length) { + let item = sources.pop(); + if (extname(item) === '.js') { + pages[item] = await require(`${root}/source/json/pages/${item}`)(); + } + } + } + /** copy source JavaScript files to build */ + grunt.file.recurse(`${root}/source/js/`, (abspath, rootdir, subdir, filename) => { + if (extname(filename) === '.js') { + grunt.file.copy(abspath, `build/js/${filename}`); + } + }); + + /** iterate pages and transform in HTML */ + for (const page in pages) { + try { + const task = basename(page, '.js'); + await transform({ + route: pages[page].route, + template: `${root}/source/views/${task}.mustache`, + data: pages[page], + pages: pages, + task: task + }); + } + catch (err) { + throw err; + } + } + } + catch (err) { + console.log(err); + grunt.log.write('Unknown error').error(); + } + }); + +}; \ No newline at end of file diff --git a/lib/transform/index.js b/lib/transform/index.js new file mode 100644 index 0000000..ae7df38 --- /dev/null +++ b/lib/transform/index.js @@ -0,0 +1,209 @@ +module.exports = async function (configuration) { + const { basename, extname, normalize } = require('path'); + const Handlebars = require('handlebars'); + const _ = require('underscore'); + const grunt = require('grunt'); + const htmlminify = require('html-minifier').minify; + /** project root directory */ + const root = normalize(__dirname + '/../..'); + /** grunt task configurations */ + const Gruntconfigurations = require(`${root}/Gruntconfigurations`); + /** register Handlebars helpers */ + _.each(require('../handlebars-helpers'), (helper, key) => { + Handlebars.registerHelper(key, helper); + }); + try { + /** + * information about how to render the CSS in this project + * see: https://github.com/gruntjs/grunt-contrib-sass + */ + const sassConfiguration = Gruntconfigurations.sass(); + /** + * information about how to render the JS files in this project + */ + const jsConfiguration = Gruntconfigurations.js(); + const widgets = grunt.file.readJSON(`${root}/source/json/widgets.json`); + const uncompileTemplate = grunt.file.read(configuration.template); + const matchWidgetsRegEx = "data-script='(.*)'"; + const matchWidgets = uncompileTemplate.match(matchWidgetsRegEx); + const handlebarsTemplate = Handlebars.compile(uncompileTemplate); + var partials = {}; + var toJSON = ''; + + /** merge project and page properties */ + let source = _.extend(configuration.data, require(`${root}/source/json/conf.js`)); + + source.widgets = {}; + + /** array to hold the menu object */ + source.menus = []; + + /** string that holds JavaScript and handlebars templates */ + source.closure = ''; + + if (matchWidgets && matchWidgets[0]) { + toJSON = matchWidgets[0]; + toJSON = toJSON.replace(/'/g, '').replace(/data-script=/g, ''); + toJSON = JSON.parse(toJSON); + /** append all the templates to the body */ + _.each(toJSON.hbs, (hbs) => { + if (grunt.file.isFile(`${root}/source/views/${hbs.template}`)) { + source.closure += ``; + } + }); + /** JS files */ + _.each(toJSON.js, js => { + /** + * the main app Uglify the JavaScript files and copy them from: /source/js to + * /build/js folder along with the source files. We allow to configure the + * app to use: compressed or expanded (default to expanded for development + * purposes). The app can also be configure to host the JavaScript files + * "inline" or "external" (default to expanded for development + * purposes). + * + * In production enviorments we want to set the app to use the compressed + * Javascript file and host it inline (in the HTML body of the page) + * + * in order to use Javascripts files, the file must be specify using data script at + * the source element. See example: + * + * data-script='{ "js" : [ "crossframe.js", "book.js" ] }' + * + */ + if (jsConfiguration.js.style === 'compressed') { + var js_filename = `${basename(js, extname(js))}.min${extname(js)}`; + if (grunt.file.isFile(`${root}/build/js/${js_filename}`)) { + source.closure += ``; + } + } + else { + // aof1: this looks wrong + if (grunt.file.isFile(`${root}/build/js/${js}`)) { + source.closure += ``; + } + } + }); + } + + /** CSS / SASS */ + if (sassConfiguration.dist.build === 'external') { + source.css = ``; + } + else { + source.css = ``; + } + + /** build the menu object */ + _.each(configuration.pages, (page, index) => { + if (_.isArray(configuration.pages[index].menu)) { + _.each(configuration.pages[index].menu, menu => { + source.menus[menu.weight] = { + label: menu.label, + status: 'active', + route: configuration.pages[index].route.replace('/index.html', ''), + page: index, + weight: menu.weight + }; + }); + } + }); + + /** clean the menu object of empty values that can "exist" becuase of weight */ + source.menus = _.reject(source.menus, menu => { + return _.isUndefined(menu); + }); + + _.each(widgets, (widget, name) => { + source.widgets[name] = {}; + _.extend(source.widgets[name], widget); // this looks wrong + if (widget.sourceType === 'json') { + source.widgets[name].data = grunt.file.readJSON(`${root}/${widget.source}`); + } + else if (widget.sourceType === 'iframe') { + source.widgets[name].data = { source: source.widgets[name].source }; + } + }); + + /** this spaghetti maps the widgets to the task and load data Object if type is not local. */ + if (source.content) { + _.each(source.content, (content, a) => { + _.each(source.content[a], (pane, b) => { + if (_.isArray(source.content[a][b].widgets)) { + source.content[a][b].raw = []; + _.each ( source.content[a][b].widgets, (widget, c) => { + let spaghetti = {}; + if (widgets[source.content[a][b].widgets[c]].sourceType === 'json') { + spaghetti = { + label: widget, + widget: widgets[source.content[a][b].widgets[c]], + data: grunt.file.readJSON(`${root}/${widgets[source.content[a][b].widgets[c]].source}`) + }; + } + /** if you care about placement in specific scenario */ + source.content[a][b][widget] = spaghetti; + /** as array to loop by weight */ + source.content[a][b].raw.push(spaghetti); + }); + } + }); + }); + } + + grunt.file.recurse(`${root}/source/views/`, async (abspath, rootdir, subdir, filename) => { + if (filename.match('.mustache') && configuration.template !== filename) { + var name = filename.replace('.mustache', ''); + var partial = grunt.file.read(abspath); + var matchWidgetsRegEx = "data-script='(.*)'"; + var matchWidgets = partial.match(matchWidgetsRegEx); + var toJSON = ''; + var javascriptString = ''; + var closure = ''; + if (!_.find(_.keys(configuration.pages), name)) { + if (matchWidgets && matchWidgets[0]) { + toJSON = matchWidgets[0]; + toJSON = toJSON.replace(/'/g, '').replace(/data-script=/g, ''); + toJSON = JSON.parse(toJSON); + _.each(toJSON.js, js => { + if (jsConfiguration.js.style == 'compressed') { + const js_filename = `${basename(js, extname(js))}.min${extname(js)}`; + if (grunt.file.isFile(`${root}/build/js/${js_filename}`)) { + javascriptString += ``; + } + } + else { + if (grunt.file.isFile(`${root}/build/js/${js}`) ) { + javascriptString += ``; + } + } + }); + } + partials[name] = `${partial}${javascriptString}`; + } + } + }); + + grunt.file.recurse(`${root}/source/views/`, async (abspath, rootdir, subdir, filename ) => { + if (extname(filename) === '.hbs') { + await grunt.file.write(`${root}/build/js/filename`, await grunt.file.read(abspath)); + } + }); + + _.each(partials, (partial, key) => { + Handlebars.registerPartial(key, partial); + }); + + await grunt.file.write(`${root}/source/json/datasources/${configuration.task}.json`, JSON.stringify(source)); + + /** write HTML file */ + await grunt.file.write(`${root}/build/${configuration.route}`, htmlminify(handlebarsTemplate(source), Gruntconfigurations.htmlminify())); + + grunt.log.write(`Transforming ${configuration.route}`).ok(); + + } + + catch (err) { + grunt.log.write(`Transforming ${configuration.task} into HTML fail. See ${err.description}`).error(); + console.log(err); + } + +} diff --git a/source/json/pages/browsebycategory.js b/source/json/pages/browsebycategory.js index c00050e..c628ca8 100644 --- a/source/json/pages/browsebycategory.js +++ b/source/json/pages/browsebycategory.js @@ -1,4 +1,5 @@ -async function browsebycategory () { +'use strict'; +module.exports = async function browsebycategory () { const appUrl = process.env.APP_URL; const grunt = require('grunt'); @@ -50,7 +51,7 @@ async function browsebycategory () { uri: encodeURI(`${appUrl}/search?category=${category}&scope=matches`), // format count number e.g., 1,000 instead of 1000. count: toNumberWithCommas(data.facet_counts.facet_queries[category]) - } + }; }); } } @@ -62,9 +63,10 @@ async function browsebycategory () { try { const frontCount = await frontCountFromCache(); let categoriesEn = await categoriesFromCache('En'); - categoriesEn.unshift({ category: 'All', count: frontCount, uri: `${appUrl}/browse`}) + categoriesEn.unshift({ category: 'All', count: frontCount, uri: `${appUrl}/browse`}); let categoriesAr = await categoriesFromCache('Ar'); - categoriesAr.unshift({ category: 'Frankfurter', count: frontCount, uri: `${appUrl}/browse`}); + categoriesAr.unshift({ category: 'الجميع', count: frontCount, uri: `${appUrl}/browse`}); + return { htmltitle: 'Browse by Category', title: [ @@ -76,7 +78,7 @@ async function browsebycategory () { { languageCode: 'ar', languageDir: 'rtl', - html: 'Capicola burgdoggen' + html: 'تصفح حسب فئة الموضوع' } ], menu: [ @@ -91,14 +93,14 @@ async function browsebycategory () { content: { categories: [ { - text: 'Pancetta pork chop hamburger short loin ribeye meatloaf picanha.', + text: 'ACO categories follow the Library of Congress Classification system', languageCode: 'en', languageDir: 'ltr', cssClass: 'col-l', data: categoriesEn }, { - text: 'Venison bacon meatloaf ribeye, alcatra jowl turkey salami pastrami.', + text: 'المجموعات العربية على الانترت تتبع نظام تصنيف مكتبة الكونغرس', languageCode: 'ar', languageDir: 'rtl', data: categoriesAr @@ -110,6 +112,4 @@ async function browsebycategory () { catch (error) { grunt.fail.warn(error); } -} - -module.exports = browsebycategory; +}; diff --git a/source/views/items.hbs b/source/views/items.hbs index b44768a..50c60ab 100644 --- a/source/views/items.hbs +++ b/source/views/items.hbs @@ -123,7 +123,7 @@ {{/each}}
- Bresaola: + فئة الموضوع: {{ifempty sm_ar_field_topic "n.a."}} {{#each sm_ar_field_topic}} {{this}} From 126d0426c7cebe15105be60e9551e6870c9482db Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Wed, 12 Jun 2019 10:18:09 -0400 Subject: [PATCH 21/28] update --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e7018f7..5c7a067 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ }, "scripts": { "test": "VIEWER_SOURCE_URL=http://sites.dlib.nyu.edu/viewer APP_URL=http://127.0.0.1:8080/aco APP_ROOT=/ DISCOVERY_CORE=http://stagediscovery.dlib.nyu.edu:8983/solr/viewer ./node_modules/nightwatch/bin/nightwatch --env default", - "build-local": "AG=0 VIEWER_SOURCE_URL=http://sites.dlib.nyu.edu/viewer APP_URL=http://127.0.0.1:8080 APP_ROOT=/ DISCOVERY_CORE=http://devdiscovery.dlib.nyu.edu/solr/viewer grunt", + "build-local": "AG=0 VIEWER_SOURCE_URL=http://sites.dlib.nyu.edu/viewer APP_URL=http://127.0.0.1:8080 APP_ROOT=/ DISCOVERY_CORE=http://stagediscovery.dlib.nyu.edu:8983/solr/viewer grunt", "build-docker": "AG=0 VIEWER_SOURCE_URL=http://sites.dlib.nyu.edu/viewer APP_URL=http://127.0.0.1:8000/aco APP_ROOT=/aco DISCOVERY_CORE=http://stagediscovery.dlib.nyu.edu:8983/solr/viewer grunt", "build-dev": "AG=1 VIEWER_SOURCE_URL=http://dev-sites.dlib.nyu.edu/viewer APP_URL=http://devweb1.dlib.nyu.edu/aco APP_ROOT=/aco DISCOVERY_CORE=http://devdiscovery.dlib.nyu.edu/solr/viewer grunt" }, From 4eb9bcbc831cd7cac2ebc5929753881ea90fe85c Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Mon, 17 Jun 2019 09:43:32 -0400 Subject: [PATCH 22/28] books count now with correct label --- source/json/pages/browsebycategory.js | 8 +++++++- source/views/browsebycategory.mustache | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/source/json/pages/browsebycategory.js b/source/json/pages/browsebycategory.js index c628ca8..e24d134 100644 --- a/source/json/pages/browsebycategory.js +++ b/source/json/pages/browsebycategory.js @@ -37,6 +37,10 @@ module.exports = async function browsebycategory () { // This information is cached as `{ROOT}/json/source/datasources/categoryQuery${language}.json` // on build using grunt-curl. async function categoriesFromCache(language) { + const prefixLabel = { + En: 'books', + Ar: 'كتب' + }; try { // Data and cache directory {ROOT}/json/source/datasources/*.json const datasourcesFilepath = resolve(__dirname, `../datasources/categoryQuery${language}.json`); @@ -50,7 +54,9 @@ module.exports = async function browsebycategory () { // build link uri: encodeURI(`${appUrl}/search?category=${category}&scope=matches`), // format count number e.g., 1,000 instead of 1000. - count: toNumberWithCommas(data.facet_counts.facet_queries[category]) + count: toNumberWithCommas(data.facet_counts.facet_queries[category]), + // label (en/ar) used to prefix the books count + prefixLabel: prefixLabel[language], }; }); } diff --git a/source/views/browsebycategory.mustache b/source/views/browsebycategory.mustache index 884f67c..b033ed1 100644 --- a/source/views/browsebycategory.mustache +++ b/source/views/browsebycategory.mustache @@ -16,7 +16,7 @@

{{text}}

From 22a98ab677112c56a8523fdbc6f345aee5b67202 Mon Sep 17 00:00:00 2001 From: Ekaterina Pechekhonova Date: Tue, 20 Aug 2019 17:06:45 -0400 Subject: [PATCH 23/28] Modified solr calls in curl.js and search.js and fixed path in items.hbs --- source/js/search.js | 43 ++++++++++++++++++++++++++++++++---------- source/json/curl.js | 4 ++-- source/views/items.hbs | 2 +- 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/source/js/search.js b/source/js/search.js index f1a16dc..ef81ab0 100644 --- a/source/js/search.js +++ b/source/js/search.js @@ -62,8 +62,7 @@ YUI().use( scopeIs: scopeIs, q: removeQueryDiacritics(query), provider: removeQueryDiacritics(provider).toLowerCase(), - //category: removeQueryDiacritics(category).toLowerCase(), - category: removeQueryDiacritics(category), + category: removeQueryDiacritics(category).toLowerCase(), author: removeQueryDiacritics(author).toLowerCase(), title: removeQueryDiacritics(title).toLowerCase(), publisher: removeQueryDiacritics(publisher).toLowerCase(), @@ -717,8 +716,7 @@ YUI().use( docslength = parseInt(response.response.docs.length, 10), q = QueryString.q, pS = QueryString.provider, - // aof1: What does pS means (any meaning behind the selection of this variable name?) ... I'm just doing copy/paste in hopes this will work - pCategory = QueryString.category, + cS = QueryString.category, tS = QueryString.title, aS = QueryString.author, pubS = QueryString.publisher, @@ -744,10 +742,10 @@ YUI().use( pS = removeSOLRcharacters(pS); ADescribeSearch.push(" Provider " + scopeIs + " " + pS); } - if (pCategory) + if (cS) { - pCategory = removeSOLRcharacters(pCategory); - ADescribeSearch.push(" Category " + scopeIs + " " + pCategory); + cS = removeSOLRcharacters(cS); + ADescribeSearch.push(" Category " + scopeIs + " " + cS); } if (aS) @@ -1032,10 +1030,35 @@ YUI().use( } if (options.category) - { - fq.push('(sm_topic:"' + options.category + '" OR ' + 'sm_ar_topic:"' + options.category + '")'); - } +{ + if (scopeIs === "matches") + { + fq.push('(tkm_topic:"' + options.category + '" OR ' + 'tkm_ar_topic:"' + options.category + '")'); + } + else + { + var category_words=options.category.split(" "); + var index; + var query_str='('; + for (index = 0; index < category_words.length; ++index) { + query_str=query_str+'(tum_topic:"'+category_words[index]+'" OR '+'tm_topic:"'+category_words[index]+'" OR ' + 'tumar_topic:"' + category_words[index]+'")'; + if(index<(category_words.length-1)) + { + if (scopeIs === "containsAny") + { + query_str=query_str+ ' OR '; + } + else + { + query_str=query_str+' AND '; + } + } + } + query_str=query_str+')'; + fq.push(query_str); + } + } if (options.provider) { if (scopeIs === "matches") diff --git a/source/json/curl.js b/source/json/curl.js index ca4c7db..5092eed 100644 --- a/source/json/curl.js +++ b/source/json/curl.js @@ -15,11 +15,11 @@ module.exports = exports = { "dest" : "source/json/datasources/subjectCount.json" }, "categoryQueryEn" : { - "src" : `${discoveryCore}/select?wt=json&json.nl=arrmap&q=sm_collection_code:aco&facet=true&rows=0&facet.query=%7B!key=%22General%20Works%22%7Dss_call_number:A*&facet.query=%7B!key=%22Philosophy.%20Psychology.%20Religion%22%7Dss_call_number:B*&facet.query=%7B!key=%22Auxiliary%20Sciences%20of%20History%22%7Dss_call_number:C*&facet.query=%7B!key=%22World%20History%20and%20History%20of%20Europe,%20Asia,%20Africa,%20Australia,%20New%20Zealand,%20etc..%22%7Dss_call_number:D*&facet.query=%7B!key=%22History%20of%20the%20Americas%22%7Dss_call_number:(E*%20OR%20F*)&facet.query=%7B!key=%22Geography,%20Anthropology,%20and%20Recreation%22%7Dss_call_number:G*&facet.query=%7B!key=%22Social%20Sciences%22%7Dss_call_number:H*&facet.query=%7B!key=%22Political%20Science%22%7Dss_call_number:J*&facet.query=%7B!key=%22Law%22%7Dss_call_number:K*&facet.query=%7B!key=%22Education%22%7Dss_call_number:L*&facet.query=%7B!key=%22Music%22%7Dss_call_number:M*&facet.query=%7B!key=%22Fine%20Arts%22%7Dss_call_number:N*&facet.query=%7B!key=%22Language%20and%20Literature%22%7Dss_call_number:P*&facet.query=%7B!key=%22Science%22%7Dss_call_number:Q*&facet.query=%7B!key=%22Medicine%22%7Dss_call_number:R*&facet.query=%7B!key=%22Agriculture%22%7Dss_call_number:S*&facet.query=%7B!key=%22Technology%22%7Dss_call_number:T*&facet.query=%7B!key=%22Military%20Science%22%7Dss_call_number:U*&facet.query=%7B!key=%22Naval%20Science%22%7Dss_call_number:V*&facet.query=%7B!key=%22Bibliography,%20Library%20Science,%20and%20General%20Information%20Resources%22%7Dss_call_number:Z*`, + "src" : `${discoveryCore}/select?wt=json&json.nl=arrmap&q=sm_collection_code:aco&fq=sm_topic:*&facet=true&rows=0&facet.query=%7B!key=%22General%20Works%22%7Dss_call_number:A*&facet.query=%7B!key=%22Philosophy.%20Psychology.%20Religion%22%7Dss_call_number:B*&facet.query=%7B!key=%22Auxiliary%20Sciences%20of%20History%22%7Dss_call_number:C*&facet.query=%7B!key=%22World%20History%20and%20History%20of%20Europe,%20Asia,%20Africa,%20Australia,%20New%20Zealand,%20etc..%22%7Dss_call_number:D*&facet.query=%7B!key=%22History%20of%20the%20Americas%22%7Dss_call_number:(E*%20OR%20F*)&facet.query=%7B!key=%22Geography.%20Anthropology.%20Recreation%22%7Dss_call_number:G*&facet.query=%7B!key=%22Social%20Sciences%22%7Dss_call_number:H*&facet.query=%7B!key=%22Political%20Science%22%7Dss_call_number:J*&facet.query=%7B!key=%22Law%22%7Dss_call_number:K*&facet.query=%7B!key=%22Education%22%7Dss_call_number:L*&facet.query=%7B!key=%22Music%20and%20Books%20on%20Music%22%7Dss_call_number:M*&facet.query=%7B!key=%22Fine%20Arts%22%7Dss_call_number:N*&facet.query=%7B!key=%22Language%20and%20Literature%22%7Dss_call_number:P*&facet.query=%7B!key=%22Science%22%7Dss_call_number:Q*&facet.query=%7B!key=%22Medicine%22%7Dss_call_number:R*&facet.query=%7B!key=%22Agriculture%22%7Dss_call_number:S*&facet.query=%7B!key=%22Technology%22%7Dss_call_number:T*&facet.query=%7B!key=%22Military%20Science%22%7Dss_call_number:U*&facet.query=%7B!key=%22Naval%20Science%22%7Dss_call_number:V*&facet.query=%7B!key=%22Bibliography.%20Library%20Science,%20Information%20Resources%20(General)%22%7Dss_call_number:Z*`, "dest" : "source/json/datasources/categoryQueryEn.json" }, "categoryQueryAr" : { - "src" : `${discoveryCore}/select?wt=json&json.nl=arrmap&wt=json&json.nl=arrmap&q=sm_collection_code:aco&facet=true&rows=0&facet.query=%7B!key=%22%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D8%B1%D9%81%20%D8%A7%D9%84%D8%B9%D8%A7%D9%85%D8%A9%22%7Dss_call_number:A*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%81%D9%84%D8%B3%D9%81%D8%A9%20%D9%88%D8%B9%D9%84%D9%85%20%D8%A7%D9%84%D9%86%D9%81%D8%B3%20%D9%88%D8%A7%D9%84%D8%AF%D9%8A%D9%86%22%7Dss_call_number:B*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D9%81%D8%B1%D8%B9%D9%8A%D8%A9%20%D9%84%D9%84%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%22%7Dss_call_number:C*&facet.query=%7B!key=%22%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A7%D9%84%D8%B9%D8%A7%D9%84%D9%85%20%D9%88%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A3%D9%88%D8%B1%D9%88%D8%A8%D8%A7%20%D9%88%D8%A2%D8%B3%D9%8A%D8%A7%20%D9%88%D8%A3%D9%81%D8%B1%D9%8A%D9%82%D9%8A%D8%A7%22%7Dss_call_number:D*&facet.query=%7B!key=%22%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A3%D9%85%D8%B1%D9%8A%D9%83%D8%A7%22%7Dss_call_number:(E*%20OR%20F*)&facet.query=%7B!key=%22%D8%A7%D9%84%D8%AC%D8%BA%D8%B1%D8%A7%D9%81%D9%8A%D8%A7%20%D9%88%D8%A7%D9%84%D8%A3%D9%86%D8%AB%D8%B1%D8%A8%D9%88%D9%84%D9%88%D8%AC%D9%8A%D8%A7%20%D9%88%D8%A7%D9%84%D8%AA%D8%B1%D9%81%D9%8A%D9%87%22%7Dss_call_number:G*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%D9%8A%D8%A9%22%7Dss_call_number:H*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%B3%D9%8A%D8%A7%D8%B3%D9%8A%D8%A9%22%7Dss_call_number:J*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%82%D8%A7%D9%86%D9%88%D9%86%22%7Dss_call_number:K*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%8A%D9%85%22%7Dss_call_number:L*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%85%D9%88%D8%B3%D9%8A%D9%82%D9%89%22%7Dss_call_number:M*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%81%D9%86%D9%88%D9%86%20%D8%A7%D9%84%D8%AC%D9%85%D9%8A%D9%84%D8%A9%22%7Dss_call_number:N*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%84%D8%BA%D8%A7%D8%AA%20%D9%88%D8%A7%D9%84%D8%A2%D8%AF%D8%A7%D8%A8%22%7Dss_call_number:P*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%22%7Dss_call_number:Q*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B7%D8%A8%22%7Dss_call_number:R*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B2%D8%B1%D8%A7%D8%B9%D8%A9%22%7Dss_call_number:S*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%AA%D9%83%D9%86%D9%88%D9%84%D9%88%D8%AC%D9%8A%D8%A7%22%7Dss_call_number:T*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%B9%D8%B3%D9%83%D8%B1%D9%8A%D8%A9%22%7Dss_call_number:U*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%A8%D8%AD%D8%B1%D9%8A%D8%A9%22%7Dss_call_number:V*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%A8%D8%A8%D9%84%D9%8A%D9%88%D8%BA%D8%B1%D8%A7%D9%81%D9%8A%D8%A7%20%D8%8C%20%D9%88%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8%D8%A7%D8%AA%20%D8%8C%20%D9%88%D8%A7%D9%84%D9%85%D8%B9%D9%84%D9%88%D9%85%D8%A7%D8%AA%20%D8%A7%D9%84%D8%B9%D8%A7%D9%85%D8%A9%22%7Dss_call_number:Z*`, + "src" : `${discoveryCore}/select?wt=json&json.nl=arrmap&wt=json&json.nl=arrmap&q=sm_ar_topic:*&facet=true&rows=0&facet.query=%7B!key=%22%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D8%B1%D9%81%20%D8%A7%D9%84%D8%B9%D8%A7%D9%85%D8%A9%22%7Dss_call_number:A*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%81%D9%84%D8%B3%D9%81%D8%A9%20%D9%88%D8%B9%D9%84%D9%85%20%D8%A7%D9%84%D9%86%D9%81%D8%B3%20%D9%88%D8%A7%D9%84%D8%AF%D9%8A%D9%86%22%7Dss_call_number:B*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D9%81%D8%B1%D8%B9%D9%8A%D8%A9%20%D9%84%D9%84%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%22%7Dss_call_number:C*&facet.query=%7B!key=%22%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A7%D9%84%D8%B9%D8%A7%D9%84%D9%85%20%D9%88%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A3%D9%88%D8%B1%D9%88%D8%A8%D8%A7%20%D9%88%D8%A2%D8%B3%D9%8A%D8%A7%20%D9%88%D8%A3%D9%81%D8%B1%D9%8A%D9%82%D9%8A%D8%A7%22%7Dss_call_number:D*&facet.query=%7B!key=%22%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE%20%D8%A3%D9%85%D8%B1%D9%8A%D9%83%D8%A7%22%7Dss_call_number:(E*%20OR%20F*)&facet.query=%7B!key=%22%D8%A7%D9%84%D8%AC%D8%BA%D8%B1%D8%A7%D9%81%D9%8A%D8%A7%20%D9%88%D8%A7%D9%84%D8%A3%D9%86%D8%AB%D8%B1%D8%A8%D9%88%D9%84%D9%88%D8%AC%D9%8A%D8%A7%20%D9%88%D8%A7%D9%84%D8%AA%D8%B1%D9%81%D9%8A%D9%87%22%7Dss_call_number:G*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%D9%8A%D8%A9%22%7Dss_call_number:H*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%B3%D9%8A%D8%A7%D8%B3%D9%8A%D8%A9%22%7Dss_call_number:J*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%82%D8%A7%D9%86%D9%88%D9%86%22%7Dss_call_number:K*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%8A%D9%85%22%7Dss_call_number:L*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%85%D9%88%D8%B3%D9%8A%D9%82%D9%89%22%7Dss_call_number:M*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%81%D9%86%D9%88%D9%86%20%D8%A7%D9%84%D8%AC%D9%85%D9%8A%D9%84%D8%A9%22%7Dss_call_number:N*&facet.query=%7B!key=%22%D8%A7%D9%84%D9%84%D8%BA%D8%A7%D8%AA%20%D9%88%D8%A7%D9%84%D8%A2%D8%AF%D8%A7%D8%A8%22%7Dss_call_number:P*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%22%7Dss_call_number:Q*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B7%D8%A8%22%7Dss_call_number:R*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B2%D8%B1%D8%A7%D8%B9%D8%A9%22%7Dss_call_number:S*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%AA%D9%83%D9%86%D9%88%D9%84%D9%88%D8%AC%D9%8A%D8%A7%22%7Dss_call_number:T*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%B9%D8%B3%D9%83%D8%B1%D9%8A%D8%A9%22%7Dss_call_number:U*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D8%A8%D8%AD%D8%B1%D9%8A%D8%A9%22%7Dss_call_number:V*&facet.query=%7B!key=%22%D8%A7%D9%84%D8%A8%D8%A8%D9%84%D9%8A%D9%88%D8%BA%D8%B1%D8%A7%D9%81%D9%8A%D8%A7%20%D8%8C%20%D9%88%D8%B9%D9%84%D9%88%D9%85%20%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8%D8%A7%D8%AA%20%D8%8C%20%D9%88%D8%A7%D9%84%D9%85%D8%B9%D9%84%D9%88%D9%85%D8%A7%D8%AA%20%D8%A7%D9%84%D8%B9%D8%A7%D9%85%D8%A9%22%7Dss_call_number:Z*`, "dest" : "source/json/datasources/categoryQueryAr.json" } } diff --git a/source/views/items.hbs b/source/views/items.hbs index 50c60ab..4e43d2b 100644 --- a/source/views/items.hbs +++ b/source/views/items.hbs @@ -55,7 +55,7 @@ {{ifempty sm_field_topic "n.a."}} {{#each sm_field_topic}} - {{this}} + {{this}} {{/each}} From 169764584c6939ebcee4614c9b6a6e29a09c8823 Mon Sep 17 00:00:00 2001 From: Alberto Ortiz Flores Date: Thu, 22 Aug 2019 12:11:01 -0400 Subject: [PATCH 24/28] Added 'Category' arabic equivalent --- source/views/search_form_adv.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/views/search_form_adv.mustache b/source/views/search_form_adv.mustache index ef6545b..a95f7da 100644 --- a/source/views/search_form_adv.mustache +++ b/source/views/search_form_adv.mustache @@ -7,7 +7,7 @@ - + From f2655c96f92d5a14971db47f94225607ce479337 Mon Sep 17 00:00:00 2001 From: lhenze Date: Tue, 3 Sep 2019 13:24:08 -0400 Subject: [PATCH 25/28] Mobile view - margins to separate English and Arabic columns --- source/sass/partials/_structure.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/source/sass/partials/_structure.scss b/source/sass/partials/_structure.scss index d18923b..3fa75e7 100644 --- a/source/sass/partials/_structure.scss +++ b/source/sass/partials/_structure.scss @@ -137,6 +137,7 @@ main { } .col-l { clear: both; + margin-bottom: 4rem; @media (min-width: $grid-float-breakpoint) { width: 46%; &[lang="en"] { From 76704f34b3aa6fe7c61b48859d6c29ec6c86212e Mon Sep 17 00:00:00 2001 From: lhenze Date: Tue, 3 Sep 2019 13:24:28 -0400 Subject: [PATCH 26/28] Adding col-r class, to be consistent with rest of site --- source/json/pages/browsebycategory.js | 1 + source/views/browsebycategory.mustache | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/source/json/pages/browsebycategory.js b/source/json/pages/browsebycategory.js index e24d134..31e2aa8 100644 --- a/source/json/pages/browsebycategory.js +++ b/source/json/pages/browsebycategory.js @@ -109,6 +109,7 @@ module.exports = async function browsebycategory () { text: 'المجموعات العربية على الانترت تتبع نظام تصنيف مكتبة الكونغرس', languageCode: 'ar', languageDir: 'rtl', + cssClass: 'col-r', data: categoriesAr } ] diff --git a/source/views/browsebycategory.mustache b/source/views/browsebycategory.mustache index b033ed1..472d95e 100644 --- a/source/views/browsebycategory.mustache +++ b/source/views/browsebycategory.mustache @@ -12,7 +12,7 @@
{{#content}} {{#categories}} -
+

{{text}}

    {{#data}} From 5d597cf1dee91d92999a2de46db06ea825a62b13 Mon Sep 17 00:00:00 2001 From: lhenze Date: Tue, 3 Sep 2019 13:31:23 -0400 Subject: [PATCH 27/28] Accommodate new class names for navbar ilnks --- source/sass/partials/_aconavbar.scss | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/source/sass/partials/_aconavbar.scss b/source/sass/partials/_aconavbar.scss index a5a4a84..ff3aa49 100644 --- a/source/sass/partials/_aconavbar.scss +++ b/source/sass/partials/_aconavbar.scss @@ -333,7 +333,7 @@ nav.navbar.navbar-default { text-align: right; border-bottom: 1px solid darken($navbar-default-link-hover-bg, 12%); } - a.about { + a.about\.js { box-shadow: none; } } @@ -346,13 +346,12 @@ nav.navbar.navbar-default { /* active links */ @media (min-width: $grid-float-breakpoint) { - body.search a.searchcollections, - body.browse a.browse, - body.resources a.resources, - body.about a.about { - // color: $input-border-focus; + body.search a.searchcollections\.js, + body.browse a.browse\.js, + body.resources a.resources\.js, + body.about a.about\.js, + body.browse-by-category a.browsebycategory\.js { &:link { - // color: #acabb1; background-color: darken($brand-primary, 5%); box-shadow: inset 0px 0px 2px 0px rgba(0, 0, 0, 0.7); } From b4bbcb83a83ae3bab0f3a120776a1263ef9ca315 Mon Sep 17 00:00:00 2001 From: Ekaterina Pechekhonova Date: Sun, 27 Oct 2019 22:24:28 -0400 Subject: [PATCH 28/28] Added correct filed names for browse and search --- source/json/pages/browse.js | 3 +++ source/json/pages/search.js | 3 +++ source/views/items.hbs | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/source/json/pages/browse.js b/source/json/pages/browse.js index da394a6..ea87af0 100644 --- a/source/json/pages/browse.js +++ b/source/json/pages/browse.js @@ -33,6 +33,8 @@ async function browse () { "ss_pubdate", "iass_pubyear", "sm_collection_partner_label", + "sm_field_topic", + "ss_call_number", "zm_subject", "zm_partner", "ss_publocation", @@ -48,6 +50,7 @@ async function browse () { "sm_ar_sauthor", "ss_ar_publocation", "ss_ar_publication_location", + "sm_ar_topic", "ds_created", "score" ], diff --git a/source/json/pages/search.js b/source/json/pages/search.js index e0ff56c..a3e8c6e 100644 --- a/source/json/pages/search.js +++ b/source/json/pages/search.js @@ -28,6 +28,8 @@ async function search () { "ss_pubdate", "iass_pubyear", "sm_collection_partner_label", + "sm_field_topic", + "ss_call_number", "zm_subject", "zm_partner", "ss_publocation", @@ -43,6 +45,7 @@ async function search () { "ss_ar_sauthor", "ss_ar_publocation", "ss_ar_publication_location", + "ss_ar_topic", "ds_created", "score" ], diff --git a/source/views/items.hbs b/source/views/items.hbs index 4e43d2b..5b8515e 100644 --- a/source/views/items.hbs +++ b/source/views/items.hbs @@ -124,8 +124,8 @@
فئة الموضوع: - {{ifempty sm_ar_field_topic "n.a."}} - {{#each sm_ar_field_topic}} + {{ifempty sm_ar_topic "n.a."}} + {{#each sm_ar_topic}} {{this}} {{/each}}