From c44fdd024d71371b064b6f8bccb60746e9cd5827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Fri, 27 Jul 2012 15:49:23 +0200 Subject: [PATCH 001/241] Update to latest grunt for node 0.8.x compability, cleanup syntax-highlight helper, release 0.3.4 --- package.json | 4 ++-- tasks/build-xml.js | 3 +-- tasks/build.js | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 5c8921d..d6984dc 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection for tasks for building the jQuery websites", - "version": "0.3.3", + "version": "0.3.4", "homepage": "https://github.com/jzaefferer/grunt-jquery-content", "author": { "name": "Jörn Zaefferer", @@ -25,7 +25,7 @@ "node": "*" }, "dependencies": { - "grunt": "0.3.9", + "grunt": "0.3.12", "grunt-wordpress": "1.0.2", "node-syntaxhighlighter": "0.7.x", "cheerio": "0.8.3", diff --git a/tasks/build-xml.js b/tasks/build-xml.js index a52b66b..0befec9 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -10,7 +10,6 @@ module.exports = function(grunt) { var // modules fs = require( "fs" ), - nsh = require( "node-syntaxhighlighter" ), path = require( "path" ), rimraf = require( "rimraf" ), spawn = require( "child_process" ).spawn; @@ -126,7 +125,7 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an targetHTMLFileName = targetHTMLFileName.substr( 0, targetHTMLFileName.length - "xml".length ) + "html"; grunt.verbose.write( "Syntax highlighting " + targetHTMLFileName + "..." ); - grunt.helper("syntax-highlight", {cmd: pass2result, target: targetHTMLFileName}, function( error, data ) { + grunt.helper("syntax-highlight", { content: pass2result }, function( error, data ) { if ( error ) { grunt.verbose.error(); diff --git a/tasks/build.js b/tasks/build.js index 47e88a1..f564ede 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -53,7 +53,7 @@ grunt.registerMultiTask( "build-pages", "Process html files as pages, include @p } grunt.verbose.write( "Syntax highlighting " + targetFileName + "..." ); - grunt.helper("syntax-highlight", {file: targetFileName, target: targetFileName}, function( error, data ) { + grunt.helper("syntax-highlight", {file: targetFileName}, function( error, data ) { if ( error ) { grunt.verbose.error(); grunt.log.error( error ); @@ -121,7 +121,7 @@ grunt.registerHelper("syntax-highlight", function( options, callback ) { return ""; } - var html = options.file ? grunt.file.read( options.file ) : options.cmd.stdout, + var html = options.file ? grunt.file.read( options.file ) : options.content, $ = cheerio.load( html ), highlight = $("pre > code"); try { From 57b10a105ccd8c9e97375d5814211c618e69915e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 29 Aug 2012 13:40:51 -0400 Subject: [PATCH 002/241] Clean up syntax-highlighter helper and make it return a value since it's synchronous. --- tasks/build.js | 61 ++++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/tasks/build.js b/tasks/build.js index f564ede..f15ea8f 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -28,7 +28,8 @@ var // modules path = require( "path" ); grunt.registerMultiTask( "build-pages", "Process html files as pages, include @partials and syntax higlight code snippets", function() { - var task = this, + var content, + task = this, taskDone = task.async(), files = this.data, targetDir = grunt.config( "wordpress.dir" ) + "/posts/page/"; @@ -53,19 +54,18 @@ grunt.registerMultiTask( "build-pages", "Process html files as pages, include @p } grunt.verbose.write( "Syntax highlighting " + targetFileName + "..." ); - grunt.helper("syntax-highlight", {file: targetFileName}, function( error, data ) { - if ( error ) { - grunt.verbose.error(); - grunt.log.error( error ); - fileDone(); - return; - } - grunt.verbose.ok(); - - grunt.file.write( targetFileName, data ); - + try { + content = grunt.helper( "syntax-highlight", { file: targetFileName } ); + } catch( error ) { + grunt.verbose.error(); + grunt.log.error( error ); fileDone(); - }); + return; + } + grunt.verbose.ok(); + + grunt.file.write( targetFileName, content ); + fileDone(); }, function() { if ( task.errorCount ) { grunt.warn( "Task \"" + task.name + "\" failed." ); @@ -99,12 +99,12 @@ grunt.registerMultiTask( "build-resources", "Copy resources", function() { }); }); -grunt.registerHelper("syntax-highlight", function( options, callback ) { +grunt.registerHelper( "syntax-highlight", function( options ) { // receives the innerHTML of a element and if the first character - // is an encoded left angle bracket, we'll "conclude" the "language" is html - function crudeHTMLcheck ( input ) { - return input.trim().indexOf("<") === 0 ? "html" : ""; + // is an encoded left angle bracket, we'll assume the language is html + function crudeHtmlCheck ( input ) { + return input.trim().indexOf( "<" ) === 0 ? "html" : ""; } // when parsing the class attribute, make sure a class matches an actually @@ -113,7 +113,7 @@ grunt.registerHelper("syntax-highlight", function( options, callback ) { str = str || ""; var classes = str.split(" "), c = classes.length; - while (--c) { + while ( --c ) { if ( nsh.getLanguage( classes[c] ) ) { return classes[c]; } @@ -122,14 +122,15 @@ grunt.registerHelper("syntax-highlight", function( options, callback ) { } var html = options.file ? grunt.file.read( options.file ) : options.content, - $ = cheerio.load( html ), - highlight = $("pre > code"); - try { - highlight.each( function( index, el ) { - var $t = $(this), + $ = cheerio.load( html ); + + $( "pre > code" ).each( function( index, el ) { + var $t = $( this ), code = $t.html(), - lang = $t.attr("data-lang") || getLanguageFromClass( $t.attr("class") ) || crudeHTMLcheck( code ), - linenumAttr = $t.attr("data-linenum"), + lang = $t.attr( "data-lang" ) || + getLanguageFromClass( $t.attr( "class" ) ) || + crudeHtmlCheck( code ), + linenumAttr = $t.attr( "data-linenum" ), linenum = (linenumAttr === "true" ? 1 : linenumAttr) || 1, gutter = linenumAttr === undefined ? false : true, brush = nsh.getLanguage( lang ) || nsh.getLanguage( "js" ), @@ -137,14 +138,10 @@ grunt.registerHelper("syntax-highlight", function( options, callback ) { "first-line": linenum, gutter: gutter }); - $t.parent().replaceWith( $(highlighted).removeAttr("id") ); - }); - } catch ( excp ) { - callback( excp ); - return; - } + $t.parent().replaceWith( $( highlighted ).removeAttr( "id" ) ); + }); - callback( null, $.html() ); + return $.html(); }); }; From 2581bca73dc60c76477b1363b4d1b2613ff7f53a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 29 Aug 2012 13:44:10 -0400 Subject: [PATCH 003/241] Update package.json to point to correct repo. --- package.json | 11 +++++------ tasks/build-xml.js | 8 -------- tasks/build.js | 8 -------- 3 files changed, 5 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index d6984dc..c102a43 100644 --- a/package.json +++ b/package.json @@ -2,22 +2,21 @@ "name": "grunt-jquery-content", "description": "A collection for tasks for building the jQuery websites", "version": "0.3.4", - "homepage": "https://github.com/jzaefferer/grunt-jquery-content", + "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { - "name": "Jörn Zaefferer", - "email": "joern.zaefferer@gmail.com" + "name": "jQuery Foundation" }, "repository": { "type": "git", - "url": "git://github.com/jzaefferer/grunt-jquery-content.git" + "url": "git://github.com/jquery/grunt-jquery-content.git" }, "bugs": { - "url": "https://github.com/jzaefferer/grunt-jquery-content/issues" + "url": "https://github.com/jquery/grunt-jquery-content/issues" }, "licenses": [ { "type": "MIT", - "url": "https://github.com/jzaefferer/grunt-jquery-content/blob/master/LICENSE-MIT" + "url": "https://github.com/jquery/grunt-jquery-content/blob/master/LICENSE-MIT.txt" } ], "main": "grunt.js", diff --git a/tasks/build-xml.js b/tasks/build-xml.js index 0befec9..ac83133 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -1,11 +1,3 @@ -/* - * grunt-jquery-content - * https://github.com/jzaefferer/grunt-jquery-content - * - * Copyright (c) 2012 Jörn Zaefferer - * Licensed under the MIT license. - */ - module.exports = function(grunt) { var // modules diff --git a/tasks/build.js b/tasks/build.js index f15ea8f..5be9b90 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -1,11 +1,3 @@ -/* - * grunt-jquery-content - * https://github.com/jzaefferer/grunt-jquery-content - * - * Copyright (c) 2012 Jörn Zaefferer - * Licensed under the MIT license. - */ - module.exports = function(grunt) { function htmlEscape(text) { From a5eb54a6afa06495c36d6288113b8c472e20ec71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 29 Aug 2012 13:44:58 -0400 Subject: [PATCH 004/241] Change copyright to jQuery Foundation. --- LICENSE-MIT | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE-MIT b/LICENSE-MIT index bc340d6..28a4c2c 100644 --- a/LICENSE-MIT +++ b/LICENSE-MIT @@ -1,4 +1,4 @@ -Copyright (c) 2012 Jörn Zaefferer +Copyright (c) 2012 jQuery Foundation, http://jquery.org/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation From 26b5100fd4c76fe6ab26a3fb0e4c0530fab78aef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 29 Aug 2012 14:57:24 -0400 Subject: [PATCH 005/241] Added support for building pages from markdown. --- tasks/build.js | 71 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 50 insertions(+), 21 deletions(-) diff --git a/tasks/build.js b/tasks/build.js index 5be9b90..554b24a 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -29,34 +29,34 @@ grunt.registerMultiTask( "build-pages", "Process html files as pages, include @p grunt.file.mkdir( targetDir ); grunt.utils.async.forEachSeries( files, function( fileName, fileDone ) { - var targetFileName = targetDir + fileName.replace( /^.+?\//, "" ); + var post = grunt.helper( "wordpress-parse-post", fileName ), + content = post.content, + fileType = /\.(\w+)$/.exec( fileName )[ 1 ], + targetFileName = targetDir + fileName.replace( /^.+?\/(.+)\.\w+$/, "$1" ) + ".html"; grunt.verbose.write( "Processing " + fileName + "..." ); - grunt.file.copy( fileName, targetFileName, { - process: function( content ) { - return content.replace(/@partial\((.+)\)/g, function(match, input) { - return htmlEscape( grunt.file.read( input ) ); - }); - } - }); + delete post.content; - if ( grunt.option( "nohighlight" ) ) { - fileDone(); - return; + // Convert markdown to HTML + if ( fileType === "md" ) { + content = grunt.helper( "parse-markdown", content, post.toc ); + delete post.toc; } - grunt.verbose.write( "Syntax highlighting " + targetFileName + "..." ); - try { - content = grunt.helper( "syntax-highlight", { file: targetFileName } ); - } catch( error ) { - grunt.verbose.error(); - grunt.log.error( error ); - fileDone(); - return; + // Replace partials + content = content.replace( /@partial\((.+)\)/g, function( match, input ) { + return htmlEscape( grunt.file.read( input ) ); + }); + + // Syntax highlight code blocks + if ( !grunt.option( "nohighlight" ) ) { + content = grunt.helper( "syntax-highlight", { content: content } ); } - grunt.verbose.ok(); - grunt.file.write( targetFileName, content ); + // Write file + grunt.file.write( targetFileName, + "\n" + content ); + fileDone(); }, function() { if ( task.errorCount ) { @@ -136,4 +136,33 @@ grunt.registerHelper( "syntax-highlight", function( options ) { return $.html(); }); +grunt.registerHelper( "parse-markdown", function( src, generateToc ) { + var toc = "", + marked = require( "marked" ), + tokens = marked.lexer( src ); + + if ( generateToc ) { + tokens.filter(function( item ) { + if ( item.type !== "heading" ) { + return false; + } + + item.tocText = item.text; + item.tocId = item.text + .replace( /\W+/g, "-" ) + .replace( /^-+|-+$/, "" ) + .toLowerCase(); + item.text += " link"; + return true; + }).forEach(function( item ) { + toc += Array( (item.depth - 1) * 2 + 1 ).join( " " ) + "* " + + "[" + item.tocText + "](#" + item.tocId + ")\n"; + }); + + tokens = marked.lexer( toc ).concat( tokens ); + } + + return marked.parser( tokens ); +}); + }; From 80281649978bc4685810f7c21b6d61acf6724f8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 29 Aug 2012 15:05:22 -0400 Subject: [PATCH 006/241] Minor docs updates. --- README.md | 4 ++-- tasks/build.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c620f08..ff59881 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A collection of tasks for building the jQuery websites ## build-pages -This multi-task takes a list of html files, copies them to `[wordpress.dir]/posts/page`, processes @partial entries and highlights the syntax in each. +This multi-task takes a list of html or markdown files, copies them to `[wordpress.dir]/posts/page`, processes @partial entries and highlights the syntax in each. ### @partial @@ -40,5 +40,5 @@ other content ``` ## License -Copyright (c) 2012 Jörn Zaefferer +Copyright (c) 2012 jQuery Foundation Licensed under the MIT license. diff --git a/tasks/build.js b/tasks/build.js index 554b24a..ac682c5 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -19,7 +19,7 @@ var // modules nsh = require( "node-syntaxhighlighter" ), path = require( "path" ); -grunt.registerMultiTask( "build-pages", "Process html files as pages, include @partials and syntax higlight code snippets", function() { +grunt.registerMultiTask( "build-pages", "Process html and markdown files as pages, include @partials and syntax higlight code snippets", function() { var content, task = this, taskDone = task.async(), From 4eaa1e4ddb174c6b310e6bf29a45ec187f45c0ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 29 Aug 2012 15:06:37 -0400 Subject: [PATCH 007/241] Added marked as a dependency. --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index c102a43..c9deda7 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,8 @@ "grunt-wordpress": "1.0.2", "node-syntaxhighlighter": "0.7.x", "cheerio": "0.8.3", - "rimraf": "2.0.2" + "rimraf": "2.0.2", + "marked": "0.2.5" }, "keywords": [ "gruntplugin" From 35470eee959aaa1116d281bb489c1d1e1e0f4eca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Wed, 29 Aug 2012 21:09:07 +0200 Subject: [PATCH 008/241] Release 0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c9deda7..706a100 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection for tasks for building the jQuery websites", - "version": "0.3.4", + "version": "0.4.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 9e514097bd694ff40f894780ce541911b667e120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Wed, 29 Aug 2012 21:10:55 +0200 Subject: [PATCH 009/241] Fix description typo --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 706a100..a777b19 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "grunt-jquery-content", - "description": "A collection for tasks for building the jQuery websites", + "description": "A collection of tasks for building the jQuery websites", "version": "0.4.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { From d840f09ac29d89f9097e207560e2f5ae578d1f6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Fri, 31 Aug 2012 19:32:12 +0200 Subject: [PATCH 010/241] Update build-xml-entries task to also use sync syntax highligher helper --- tasks/build-xml.js | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/tasks/build-xml.js b/tasks/build-xml.js index ac83133..3e05851 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -104,7 +104,7 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an grunt.utils.spawn({ cmd: "xsltproc", args: [ "--xinclude", "entries2html.xsl", targetXMLFileName ] - }, function( err, pass2result ) { + }, function( err, content ) { if ( err ) { grunt.verbose.error(); grunt.log.error( err ); @@ -116,21 +116,15 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an var targetHTMLFileName = targetDir + path.basename( fileName ); targetHTMLFileName = targetHTMLFileName.substr( 0, targetHTMLFileName.length - "xml".length ) + "html"; - grunt.verbose.write( "Syntax highlighting " + targetHTMLFileName + "..." ); - grunt.helper("syntax-highlight", { content: pass2result }, function( error, data ) { - if ( error ) { - grunt.verbose.error(); - grunt.log.error( error ); - fileDone(); - return; - } - grunt.verbose.ok(); + // Syntax highlight code blocks + if ( !grunt.option( "nohighlight" ) ) { + content = grunt.helper( "syntax-highlight", { content: content } ); + } - grunt.file.write( targetHTMLFileName, data ); + grunt.file.write( targetHTMLFileName, content ); - fileDone(); - }); + fileDone(); }); }); }, function() { From f22f69bc47b8ade155abe17157292fec5dab1bbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Fri, 31 Aug 2012 19:32:26 +0200 Subject: [PATCH 011/241] Release 0.4.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a777b19..5e47300 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.4.0", + "version": "0.4.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From ab2237f8e6f43b1daf6a909cfaaaeacc0e2f39e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 13 Sep 2012 11:36:56 -0400 Subject: [PATCH 012/241] Moved API XML processing fully into grunt-jquery-content. --- tasks/build-xml.js | 114 ++-- tasks/jquery-xml/all-entries.xml | 6 + tasks/jquery-xml/all-entries.xsl | 48 ++ tasks/jquery-xml/cat2tax.xsl | 25 + tasks/jquery-xml/entries2html-base.xsl | 761 +++++++++++++++++++++++++ tasks/jquery-xml/xml2json.xsl | 183 ++++++ 6 files changed, 1086 insertions(+), 51 deletions(-) create mode 100644 tasks/jquery-xml/all-entries.xml create mode 100644 tasks/jquery-xml/all-entries.xsl create mode 100644 tasks/jquery-xml/cat2tax.xsl create mode 100644 tasks/jquery-xml/entries2html-base.xsl create mode 100644 tasks/jquery-xml/xml2json.xsl diff --git a/tasks/build-xml.js b/tasks/build-xml.js index 3e05851..c210a64 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -1,7 +1,6 @@ -module.exports = function(grunt) { +module.exports = function( grunt ) { -var // modules - fs = require( "fs" ), +var fs = require( "fs" ), path = require( "path" ), rimraf = require( "rimraf" ), spawn = require( "child_process" ).spawn; @@ -77,17 +76,16 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an var task = this, taskDone = task.async(), files = this.data, - // TODO make `entry` a custom post type instead of (ab)using `post`? targetDir = grunt.config( "wordpress.dir" ) + "/posts/post/"; grunt.file.mkdir( targetDir ); grunt.utils.async.forEachSeries( files, function( fileName, fileDone ) { - grunt.verbose.write( "Transforming (pass 1: preproc-xinclude.xsl) " + fileName + "..." ); + grunt.verbose.write( "Transforming " + fileName + "..." ); grunt.utils.spawn({ cmd: "xsltproc", - args: [ "preproc-xinclude.xsl", fileName ] - }, function( err, pass1result ) { + args: [ "--xinclude", "entries2html.xsl", fileName ] + }, function( err, content ) { if ( err ) { grunt.verbose.error(); grunt.log.error( err ); @@ -96,36 +94,15 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an } grunt.verbose.ok(); - var targetXMLFileName = "entries_tmp/" + path.basename( fileName ); + var targetFileName = targetDir + path.basename( fileName, ".xml" ) + ".html"; - grunt.file.write( targetXMLFileName, pass1result ); - - grunt.verbose.write( "Transforming (pass 2: entries2html.xsl) " + fileName + "..." ); - grunt.utils.spawn({ - cmd: "xsltproc", - args: [ "--xinclude", "entries2html.xsl", targetXMLFileName ] - }, function( err, content ) { - if ( err ) { - grunt.verbose.error(); - grunt.log.error( err ); - fileDone(); - return; - } - grunt.verbose.ok(); - - var targetHTMLFileName = targetDir + path.basename( fileName ); - targetHTMLFileName = targetHTMLFileName.substr( 0, targetHTMLFileName.length - "xml".length ) + "html"; - - - // Syntax highlight code blocks - if ( !grunt.option( "nohighlight" ) ) { - content = grunt.helper( "syntax-highlight", { content: content } ); - } - - grunt.file.write( targetHTMLFileName, content ); + // Syntax highlight code blocks + if ( !grunt.option( "nohighlight" ) ) { + content = grunt.helper( "syntax-highlight", { content: content } ); + } - fileDone(); - }); + grunt.file.write( targetFileName, content ); + fileDone(); }); }, function() { if ( task.errorCount ) { @@ -133,21 +110,31 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an taskDone(); return; } - rimraf.sync( "entries_tmp" ); + grunt.log.writeln( "Built " + files.length + " entries." ); taskDone(); }); }); grunt.registerTask( "build-xml-categories", function() { - var task = this, - taskDone = task.async(), - categories = {}, - outFilename = grunt.config( "wordpress.dir" ) + "/taxonomies.json"; + var taskDone = this.async(); + + grunt.utils.spawn({ + cmd: "xsltproc", + args: [ "--output", "taxonomies.xml", + grunt.task.getFile( "jquery-xml/cat2tax.xsl" ), "categories.xml" ] + }, function( err, result ) { + if ( err ) { + grunt.verbose.error(); + grunt.log.error( err ); + taskDone(); + return; + } grunt.utils.spawn({ cmd: "xsltproc", - args: [ "--output", "taxonomies.xml", "cat2tax.xsl", "categories.xml" ] + args: [ "--output", grunt.config( "wordpress.dir" ) + "/taxonomies.json", + grunt.task.getFile( "jquery-xml/xml2json.xsl" ), "taxonomies.xml" ] }, function( err, result ) { if ( err ) { grunt.verbose.error(); @@ -155,16 +142,7 @@ grunt.registerTask( "build-xml-categories", function() { taskDone(); return; } - grunt.utils.spawn({ - cmd: "xsltproc", - args: [ "--output", outFilename, "xml2json.xsl", "taxonomies.xml" ] - }, function( err, result ) { - if ( err ) { - grunt.verbose.error(); - grunt.log.error( err ); - taskDone(); - return; - } + fs.unlinkSync( "taxonomies.xml" ); grunt.verbose.ok(); taskDone(); @@ -172,4 +150,38 @@ grunt.registerTask( "build-xml-categories", function() { }); }); +grunt.registerTask( "build-xml-full", function() { + var taskDone = this.async(); + + grunt.file.copy( grunt.task.getFile( "jquery-xml/all-entries.xml" ), "all-entries.xml", { + process: function( content ) { + return content.replace( "", + grunt.file.expandFiles( "entries/*.xml" ).map(function( entry ) { + return ""; + }).join( "\n" ) ); + } + }); + + grunt.utils.spawn({ + cmd: "xsltproc", + args: [ "--xinclude", "--path", process.cwd(), + // "--output", grunt.config( "wordpress.dir" ) + "/resources/api.xml", + grunt.task.getFile( "jquery-xml/all-entries.xsl" ), "all-entries.xml" ] + }, function( err, result ) { + // For some reason using --output with xsltproc kills the --xinclude option, + // so we let it write to stdout, then save it to a file + grunt.file.write( grunt.config( "wordpress.dir" ) + "/resources/api.xml", result ); + fs.unlinkSync( "all-entries.xml" ); + + if ( err ) { + grunt.verbose.error(); + grunt.log.error( err ); + taskDone( false ); + return; + } + + taskDone(); + }); +}); + }; diff --git a/tasks/jquery-xml/all-entries.xml b/tasks/jquery-xml/all-entries.xml new file mode 100644 index 0000000..e66d302 --- /dev/null +++ b/tasks/jquery-xml/all-entries.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/tasks/jquery-xml/all-entries.xsl b/tasks/jquery-xml/all-entries.xsl new file mode 100644 index 0000000..55f98d7 --- /dev/null +++ b/tasks/jquery-xml/all-entries.xsl @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tasks/jquery-xml/cat2tax.xsl b/tasks/jquery-xml/cat2tax.xsl new file mode 100644 index 0000000..ce0f91c --- /dev/null +++ b/tasks/jquery-xml/cat2tax.xsl @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl new file mode 100644 index 0000000..0bc23c4 --- /dev/null +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -0,0 +1,761 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + +
+ +
+
+ + +

Additional Notes:

+
+
    + +
  • +
    +
+
+
+ + +
+ + entry-examples + + - + + + +
+

Examples:

+
+ + + + + +
+
+
+
+
+
+ + +
+

Contents:

+
    + + + + + + + + + + + + + + + + +
+
+
+ + + +
  • +
    + + + + + +
  • + + + + + + + + + +
      + +
    • + + + + +
    • +
      +
    +
  • +
    + + + + + +

    + + + + + + + + + + + + + + + + selector + + + + + + + + + + + + + + version added: + +

    +
    + + +

    Description:

    + + + + + + + + + + + + + + + + + +
    + + +
      +
    • +

      + + + version added: + + + + + + jQuery( "" ) +

      + + +

      + : + +

      +
      +
    • +
    +
    + + +
      +
    • +

      + + + version added: + + + + + + +

      + + +
        + +
      +
      +
    • +
    +
    + + + + + +
      + +
    • + + + + + - + + + +

      + + + version added: + + + + + + + + + +

      + + +
    • +
      +
    +
    + + + + + +
    +
    +

    Options

    +
    + + +
    + + api-item + + first-item + + + +

    + + + Type: + + +

    +
    + Default: + +
    +
    + + + + +
    + + Multiple types supported: +
      + +
    • + + : + +
    • +
      +
    +
    + + + +
    +
    +
    +
    + +
    +
    +

    Methods

    +
    + + + + +
    + + +
    + + api-item + + first-item + + + + + + + +
    +
    +
    +
    +
    +
    + +
    +
    +

    Events

    +
    + + +
    + + api-item + + first-item + + + + + + + +
    +
    +
    +
    +
    + + +
      +
    • +

      + + + version added: + + + + + + +

      + + +
        + +
      +
      +
    • +
    +
    + + +
    +
    +

    QuickNav

    +
    + +
    +

    Options

    + + +
    +
    +
    + +
    +

    Methods

    + + +
    +
    +
    + +
    +

    Events

    + + +
    +
    +
    +
    +
    + + + + + + +
    + + example- + + + - + + + + +

    + Example: + +

    +
    
    +			
    +				
    +					
    +				
    +				
    +					
    +				
    +			
    +		
    + + +

    Demo:

    +
    + + + + + +
    +
    + + +

    Result:

    +
    
    +				
    +			
    +
    +
    +
    + + + + + + ERROR: Use either @type or type elements + + + + + + + + + + + + + + or + + + + + + + + + + + + + + + Function + + + + + => + + + + + + + + + + + + ( + + + + , + + + + + + + + + + + + ) + + + + + ERROR: Use either @return or return element + + + + + + + + + + + + + + ERROR: A single return element is expected + + + + + + + + + + + Returns: + + + + + + + + + + + + . + + ( + + + + [ + , + + ] + + + + ) + + + + +
      + +
    +
    +
    + + +
  • +
    + + (default: ) +
    +
    Type:
    +
    + + +
    + +
      + +
    +
    +
  • +
    + + + + + + + (added + + ) + + + (added ) + + + + + + + + (deprecated + + ) + + + (deprecated ) + + + + + + + + (removed + + ) + + + (removed ) + + + + + + + + + +

    + + + + +

    +
    + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + +"" + +
    diff --git a/tasks/jquery-xml/xml2json.xsl b/tasks/jquery-xml/xml2json.xsl new file mode 100644 index 0000000..14b1519 --- /dev/null +++ b/tasks/jquery-xml/xml2json.xsl @@ -0,0 +1,183 @@ + + + + + + + + 0123456789 + + + + + + + + + + + + + + + " + + + + " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "" + + + + true + false + + + + + + + :null + , + + + + + { + + + + : + + , + } + + + + + [ + + + null + + + + + + , + ] + + + + + + + + From 9c82aab86b6f1997319a65a10545571d00f769d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 13 Sep 2012 11:39:54 -0400 Subject: [PATCH 013/241] Removed unused modules. --- tasks/build-xml.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tasks/build-xml.js b/tasks/build-xml.js index c210a64..024dd58 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -1,9 +1,7 @@ module.exports = function( grunt ) { var fs = require( "fs" ), - path = require( "path" ), - rimraf = require( "rimraf" ), - spawn = require( "child_process" ).spawn; + path = require( "path" ); grunt.registerMultiTask( "xmllint", "Lint xml files", function() { var task = this, From aa421039cc032b3974ed74fb7e7496d5342da639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Thu, 13 Sep 2012 18:43:13 +0200 Subject: [PATCH 014/241] Release 0.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5e47300..31952e3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.4.1", + "version": "0.5.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 5a8e373bfff4e98f7fcf7d06e2eca8221c2dd4d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 18 Sep 2012 11:11:29 -0400 Subject: [PATCH 015/241] Updated version details support for API XML. --- tasks/jquery-xml/entries2html-base.xsl | 144 +++++++++++++------------ 1 file changed, 74 insertions(+), 70 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 0bc23c4..db43571 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -186,9 +186,7 @@ - - version added: - + @@ -218,12 +216,7 @@
  • - - version added: - - - - + jQuery( "" )

    @@ -243,12 +236,7 @@
  • - - version added: - - - - +

    @@ -278,14 +266,7 @@

    - - - version added: - - - - - + @@ -331,7 +312,9 @@ - + + + Multiple types supported: @@ -412,12 +395,7 @@
  • - - version added: - - - - +

    @@ -662,7 +640,9 @@
    Type:
    - + + +
      @@ -673,44 +653,66 @@ - - - - - (added - - ) - - - (added ) - - - - - - - - (deprecated - - ) - - - (deprecated ) - - - - - - - - (removed - - ) - - - (removed ) - - + + + + + + + + + ( + + version + + added: + + + + + + + + + + + + + + , + + deprecated: + + + + + + + + + + + + + + , + + removed: + + + + + + + + + + + + + ) + + @@ -728,7 +730,9 @@ - + + + From ff2705c48df16d858ec6ad4dd400520240e44993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Wed, 19 Sep 2012 11:41:01 +0200 Subject: [PATCH 016/241] Release 0.5.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 31952e3..797d622 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.5.0", + "version": "0.5.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 491942e71ad2913dcb9d20f7ca6f780d2592563c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 20 Sep 2012 18:35:02 -0400 Subject: [PATCH 017/241] Move TOC links to the left. --- tasks/build.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tasks/build.js b/tasks/build.js index ac682c5..cb2fa76 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -147,12 +147,23 @@ grunt.registerHelper( "parse-markdown", function( src, generateToc ) { return false; } + // Store original text and create an id for linking item.tocText = item.text; item.tocId = item.text .replace( /\W+/g, "-" ) .replace( /^-+|-+$/, "" ) .toLowerCase(); - item.text += " link"; + + // Convert to HTML + item.type = "html"; + item.pre = false; + + // Insert the link + item.text = "" + + "" + + "link" + + " " + item.text + ""; + return true; }).forEach(function( item ) { toc += Array( (item.depth - 1) * 2 + 1 ).join( " " ) + "* " + From 37edf81b85797062581e2c2b86c1caa8918c1eec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Sat, 29 Sep 2012 16:22:09 +0200 Subject: [PATCH 018/241] Format property defaults as code --- tasks/jquery-xml/entries2html-base.xsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index db43571..2766ec9 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -635,7 +635,7 @@
    • - (default: ) + (default: )
      Type:
      From a614da87415181adf6676ac429f15734f1cbe467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Sat, 29 Sep 2012 16:23:02 +0200 Subject: [PATCH 019/241] Release 0.5.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 797d622..a830be7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.5.1", + "version": "0.5.2", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From c6b074ed3bb95281d899ef2908fda5fe6aea3c06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 12 Oct 2012 00:47:46 -0400 Subject: [PATCH 020/241] Added support for YAML metadata. --- package.json | 3 ++- tasks/build.js | 30 ++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index a830be7..fbaa193 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,8 @@ "node-syntaxhighlighter": "0.7.x", "cheerio": "0.8.3", "rimraf": "2.0.2", - "marked": "0.2.5" + "marked": "0.2.5", + "js-yaml": "1.0.2" }, "keywords": [ "gruntplugin" diff --git a/tasks/build.js b/tasks/build.js index cb2fa76..46a38bc 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -17,7 +17,33 @@ var // modules fs = require( "fs" ), cheerio = require( "cheerio" ), nsh = require( "node-syntaxhighlighter" ), - path = require( "path" ); + path = require( "path" ), + yaml = require( "js-yaml" ); + +// Add a wrapper around wordpress-parse-post that supports YAML +grunt.registerHelper( "wordpress-parse-post-flex", function( path ) { + var index, + post = {}, + content = grunt.file.read( path ); + + // Check for YAML metadata + if ( content.substring( 0, 4 ) === "---\n" ) { + try { + index = content.indexOf( "\n---\n" ); + post = yaml.load( content.substr( 4, index - 4 ) ); + content = content.substr( index + 5 ); + } catch( error ) { + grunt.log.error( "Invalid YAML metadata for " + path ); + return null; + } + + post.content = content; + return post; + } + + // Fall back to standard JSON parsing + return grunt.helper( "wordpress-parse-post", path ); +}); grunt.registerMultiTask( "build-pages", "Process html and markdown files as pages, include @partials and syntax higlight code snippets", function() { var content, @@ -29,7 +55,7 @@ grunt.registerMultiTask( "build-pages", "Process html and markdown files as page grunt.file.mkdir( targetDir ); grunt.utils.async.forEachSeries( files, function( fileName, fileDone ) { - var post = grunt.helper( "wordpress-parse-post", fileName ), + var post = grunt.helper( "wordpress-parse-post-flex", fileName ), content = post.content, fileType = /\.(\w+)$/.exec( fileName )[ 1 ], targetFileName = targetDir + fileName.replace( /^.+?\/(.+)\.\w+$/, "$1" ) + ".html"; From 6d619ec32eda5560f13a9c80ac86abb68af7daac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 12 Oct 2012 00:48:44 -0400 Subject: [PATCH 021/241] Tagging 0.5.3. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fbaa193..f0483cf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.5.2", + "version": "0.5.3", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From bb9d9f99617fae0e5a83b60511bb415ce1c69892 Mon Sep 17 00:00:00 2001 From: "adam j. sontag" Date: Fri, 12 Oct 2012 03:44:47 -0400 Subject: [PATCH 022/241] bump node-syntaxhighlighter version to 0.8.x --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f0483cf..3fac3ea 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dependencies": { "grunt": "0.3.12", "grunt-wordpress": "1.0.2", - "node-syntaxhighlighter": "0.7.x", + "node-syntaxhighlighter": "0.8.x", "cheerio": "0.8.3", "rimraf": "2.0.2", "marked": "0.2.5", From 4e19713980b4d410d3f29168a303eaf144520009 Mon Sep 17 00:00:00 2001 From: "adam j. sontag" Date: Fri, 12 Oct 2012 12:57:13 -0400 Subject: [PATCH 023/241] Add support for assigning WordPress menu_order field based on a YAML file of slugs to optionally control article display order. --- tasks/build.js | 61 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 4 deletions(-) diff --git a/tasks/build.js b/tasks/build.js index 46a38bc..67357fb 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -45,20 +45,73 @@ grunt.registerHelper( "wordpress-parse-post-flex", function( path ) { return grunt.helper( "wordpress-parse-post", path ); }); +// Process a YAML order file and return an object of page slugs and their ordinal indices +grunt.registerHelper( "read-order", function( orderFile ) { + var order, + map = {}, + index = 0; + + try { + order = yaml.load( grunt.file.read( orderFile ) ); + } catch( error ) { + grunt.warn( "Invalid order file: " + orderFile ); + return null; + } + + order.forEach(function(chapter) { + var article, title; + + if ( grunt.utils._.isObject( chapter ) ) { + title = Object.keys( chapter )[ 0 ]; + map[ title ] = ++index; + + chapter[ title ].forEach(function( article ) { + map[ title + "/" + article ] = ++index; + }); + } else { + map[ title ] = ++index; + } + }); + return map; +}); + grunt.registerMultiTask( "build-pages", "Process html and markdown files as pages, include @partials and syntax higlight code snippets", function() { - var content, + var content, orderMap, task = this, taskDone = task.async(), files = this.data, - targetDir = grunt.config( "wordpress.dir" ) + "/posts/page/"; + targetDir = grunt.config( "wordpress.dir" ) + "/posts/page/", + orderFile = grunt.config( "wordpress.order" ); + + if ( orderFile ) { + orderMap = grunt.helper( "read-order", orderFile ); + if ( !orderMap ) { + taskDone( false ); + return; + } + } grunt.file.mkdir( targetDir ); grunt.utils.async.forEachSeries( files, function( fileName, fileDone ) { - var post = grunt.helper( "wordpress-parse-post-flex", fileName ), + var menuOrder, + post = grunt.helper( "wordpress-parse-post-flex", fileName ), content = post.content, fileType = /\.(\w+)$/.exec( fileName )[ 1 ], - targetFileName = targetDir + fileName.replace( /^.+?\/(.+)\.\w+$/, "$1" ) + ".html"; + targetSlug = fileName.replace( /^.+?\/(.+)\.\w+$/, "$1" ), + targetFileName = targetDir + targetSlug + ".html"; + + // If an order file was specified, set the menuOrder, + // unless the page being processed isn't in the order file, + // in which case it shouldn't be published + if ( orderMap ) { + menuOrder = orderMap[ targetSlug ]; + if ( menuOrder ) { + post.menuOrder = menuOrder; + } else { + post.status = "draft"; + } + } grunt.verbose.write( "Processing " + fileName + "..." ); delete post.content; From b9e8281914841e30e1c6a7ea882fa7592c59eea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 12 Oct 2012 12:58:34 -0400 Subject: [PATCH 024/241] Tagging 0.5.4. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3fac3ea..a527453 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.5.3", + "version": "0.5.4", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From f20182f838a3839ebf934a8c29e0e26b4073ce97 Mon Sep 17 00:00:00 2001 From: John Paul Date: Tue, 16 Oct 2012 13:19:32 -0400 Subject: [PATCH 025/241] add source path to custom meta data --- tasks/build.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tasks/build.js b/tasks/build.js index 67357fb..754a66f 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -132,6 +132,12 @@ grunt.registerMultiTask( "build-pages", "Process html and markdown files as page content = grunt.helper( "syntax-highlight", { content: content } ); } + post.customFields = post.customFields || []; + post.customFields.push({ + key: "source_path", + value: fileName + }); + // Write file grunt.file.write( targetFileName, "\n" + content ); From 70319af61063a9bcc287a3aec19bcd30660679cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Tue, 16 Oct 2012 17:36:17 -0400 Subject: [PATCH 026/241] Tagging 0.5.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a527453..5a6f2c3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.5.4", + "version": "0.5.5", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From d60634f93f27825b44fa4a4e591e8bf81046050e Mon Sep 17 00:00:00 2001 From: Dave Mayo Date: Tue, 16 Oct 2012 15:31:48 -0400 Subject: [PATCH 027/241] fixes #11 - adds "This method does not accept any arguments" placeholder where appropriate --- tasks/jquery-xml/entries2html-base.xsl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 2766ec9..4c8e118 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -629,6 +629,11 @@
    + +
      +
    • This method does not accept any arguments.
    • +
    +
    From 6554534c5d6d3afbb531d48d85a10f43aa6086ca Mon Sep 17 00:00:00 2001 From: Raship Shah Date: Tue, 16 Oct 2012 11:50:31 -0400 Subject: [PATCH 028/241] Added option examples logic Modified the xsl to display examples based on example-value tag. --- tasks/jquery-xml/entries2html-base.xsl | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 4c8e118..26cac25 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -328,6 +328,23 @@ + + Code examples: + +

    Initialize the with the option specified:

    +
    
    +							$( ".selector" ).({ :  });
    +						
    + +

    Get or set the option, after initialization:

    +
    
    +							// getter
    +							var  = $( ".selector" ).( "option", "" );
    +
    +							// setter
    +							$( ".selector" ).( "option", "",  );
    +						
    +
    From f1e7a3db30dabc3faf65a8310fd4c8f9c573b800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Sun, 21 Oct 2012 15:31:30 -0400 Subject: [PATCH 029/241] Move grunt to devDependencies, as it should be for all grunt plugins --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 5a6f2c3..2b4ce20 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,6 @@ "node": "*" }, "dependencies": { - "grunt": "0.3.12", "grunt-wordpress": "1.0.2", "node-syntaxhighlighter": "0.8.x", "cheerio": "0.8.3", @@ -32,6 +31,9 @@ "marked": "0.2.5", "js-yaml": "1.0.2" }, + "devDependencies": { + "grunt": "0.3.17" + }, "keywords": [ "gruntplugin" ] From da0d1a5bf826bc2fc1bb56661d4da813c94635bb Mon Sep 17 00:00:00 2001 From: "adam j. sontag" Date: Wed, 17 Oct 2012 03:52:46 -0400 Subject: [PATCH 030/241] Use .text() instead of .html() so that entities aren't escaped by cheerio. Fixes #18 --- tasks/build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/build.js b/tasks/build.js index 754a66f..dc69f81 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -203,7 +203,7 @@ grunt.registerHelper( "syntax-highlight", function( options ) { $( "pre > code" ).each( function( index, el ) { var $t = $( this ), - code = $t.html(), + code = $t.text(), lang = $t.attr( "data-lang" ) || getLanguageFromClass( $t.attr( "class" ) ) || crudeHtmlCheck( code ), From 47b8ec79efe38523ad43a181c3a75a5017a0057d Mon Sep 17 00:00:00 2001 From: Karl Swedberg Date: Sun, 21 Oct 2012 13:35:42 -0400 Subject: [PATCH 031/241] Allow for multiple selector signatures. * This is needed if signature changes, e.g. eq(-index) in 1.8. --- tasks/jquery-xml/entries2html-base.xsl | 30 ++++++++++++++------------ 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 26cac25..4b99ce9 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -213,21 +213,23 @@
      -
    • -

      - - - - jQuery( "" ) -

      + +
    • +

      + + + + jQuery( "" ) +

      - -

      - : - -

      -
      -
    • + +

      + : + +

      +
      + +
    From aec436b90b137c9b0989f9b8204a2492d40b1d61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Sun, 21 Oct 2012 20:43:47 -0400 Subject: [PATCH 032/241] Tagging 0.5.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2b4ce20..fc56328 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.5.5", + "version": "0.5.6", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 8a3cc1ae27841b7d23fdca999806606652d7a28e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 24 Oct 2012 14:56:12 -0400 Subject: [PATCH 033/241] Revert "Use .text() instead of .html() so that entities aren't escaped by cheerio. Fixes #18" This reverts commit da0d1a5bf826bc2fc1bb56661d4da813c94635bb. --- tasks/build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/build.js b/tasks/build.js index dc69f81..754a66f 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -203,7 +203,7 @@ grunt.registerHelper( "syntax-highlight", function( options ) { $( "pre > code" ).each( function( index, el ) { var $t = $( this ), - code = $t.text(), + code = $t.html(), lang = $t.attr( "data-lang" ) || getLanguageFromClass( $t.attr( "class" ) ) || crudeHtmlCheck( code ), From 1bfbfcb5b158967190bff12a0acb10481f3ca11e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 24 Oct 2012 14:56:52 -0400 Subject: [PATCH 034/241] 0.5.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fc56328..45c166c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.5.6", + "version": "0.5.7", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 4104660feccad316459a5385471a14da294d8bc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Sat, 13 Oct 2012 09:33:59 -0400 Subject: [PATCH 035/241] API docs: Add quick links for longdesc and examples --- tasks/jquery-xml/entries2html-base.xsl | 37 ++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 4b99ce9..4377a3e 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -41,7 +41,9 @@ - + + +
    @@ -58,6 +60,12 @@
    + + entry-longdesc + + - + +
    @@ -429,9 +437,34 @@ +
    -

    QuickNav

    +

    + QuickNav + + + + #entry-longdesc + + - + + + Overview + + + + + + #entry-examples + + - + + + Examples + + +

    From e0950f03f9c94ed020a648e672c50dcb4ef46d84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Zaefferer?= Date: Wed, 24 Oct 2012 15:18:51 -0400 Subject: [PATCH 036/241] 0.5.8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 45c166c..4d837c3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.5.7", + "version": "0.5.8", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 4871ca859d35c0cb58bf25fd4f6a10145ef791e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 25 Oct 2012 09:35:04 -0400 Subject: [PATCH 037/241] Added support for widget method examples. --- tasks/jquery-xml/entries2html-base.xsl | 28 +++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 4377a3e..c5f0354 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -5,6 +5,8 @@ + + \n" + content ); + // Write file + grunt.file.write( targetFileName, + "\n" + content ); - fileDone(); + fileDone(); + } + + // Invoke the pre-processor for custom functionality + grunt.helper( "build-pages-preprocess", post, fileName, processPost ); }, function() { if ( task.errorCount ) { grunt.warn( "Task \"" + task.name + "\" failed." ); @@ -108,7 +111,9 @@ grunt.registerMultiTask( "build-pages", "Process html and markdown files as page }); // Default pre-processor is a no-op -grunt.registerHelper( "build-pages-preprocess", function() {} ); +grunt.registerHelper( "build-pages-preprocess", function( post, fileName, done ) { + done(); +}); grunt.registerMultiTask( "build-resources", "Copy resources", function() { var task = this, From eb880bfae015a138ceda674b67866d2fa2e65785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 28 Nov 2012 22:01:11 -0500 Subject: [PATCH 066/241] 0.6.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5da9103..defc5bc 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.6.1", + "version": "0.6.2", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 88c5493b555cdda3e6212f32e49e6c4eeb358c18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 30 Nov 2012 05:30:54 -0500 Subject: [PATCH 067/241] API sites: Include widget method examples inside the main method div. Fixes jquery/api.jqueryui.com#75. --- tasks/jquery-xml/entries2html-base.xsl | 64 +++++++++++++------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index a7f80be..625d053 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -426,39 +426,39 @@ -
    - -
    - Code examples: - -

    Invoke the method:

    -
    
    -									
    -										
    -											
    -										
    -										
    -											
    -												var 
    -												
    -												 = 
    -											
    -											$( ".selector" ).
    -											
    -											( "
    -											
    -											"
    -											
    -												, 
    -												
    -											
    -											 );
    -										
    -									
    -								
    -
    -
    + +
    + Code examples: + +

    Invoke the method:

    +
    
    +										
    +											
    +												
    +											
    +											
    +												
    +													var 
    +													
    +													 = 
    +												
    +												$( ".selector" ).
    +												
    +												( "
    +												
    +												"
    +												
    +													, 
    +													
    +												
    +												 );
    +											
    +										
    +									
    +
    +
    + From b47728e5e39f8c23e6b359741bdbb0b67be57aa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 30 Nov 2012 05:31:09 -0500 Subject: [PATCH 068/241] 0.6.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index defc5bc..a61a80d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.6.2", + "version": "0.6.3", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 3a3e53a0134654e0966eab3d1015a062ea60055e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 30 Nov 2012 06:12:32 -0500 Subject: [PATCH 069/241] Upgrade to grunt-wordpress 1.0.5. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a61a80d..0711127 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "node": "*" }, "dependencies": { - "grunt-wordpress": "1.0.2", + "grunt-wordpress": "1.0.5", "node-syntaxhighlighter": "0.8.x", "cheerio": "0.8.3", "rimraf": "2.0.2", From 6b7b0c379a7457c8348804575bc91603f405840d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 30 Nov 2012 06:12:51 -0500 Subject: [PATCH 070/241] 0.7.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0711127..f37e034 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.6.3", + "version": "0.7.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 90b9417ea0293cc9dd4282aefbf54d0b82e61471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 4 Dec 2012 16:21:05 -0500 Subject: [PATCH 071/241] API Sites: Moved widget QuickNav between short description and long description. --- tasks/jquery-xml/entries2html-base.xsl | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 625d053..713c7a7 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -64,7 +64,9 @@
    - + + +
    @@ -211,6 +213,8 @@ + +

    Description:

    @@ -225,6 +229,11 @@ + + + + +
    @@ -329,10 +338,6 @@ - - - -
    From 75cfc6ec0e113fab1195fa488e7513e595f13007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 4 Dec 2012 16:21:19 -0500 Subject: [PATCH 072/241] 0.7.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f37e034..604f610 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.7.0", + "version": "0.7.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 2f3f8c4cd8ba7d77378964810fc6599cbf19c166 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 12 Dec 2012 10:00:53 -0500 Subject: [PATCH 073/241] API Sites: Support multiple return types. --- tasks/jquery-xml/entries2html-base.xsl | 28 ++++++++++++++++---------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 713c7a7..7774da2 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -591,23 +591,18 @@ - + ERROR: Use either @type or type elements - - @@ -691,13 +686,24 @@ - - + Returns: - - - + + + + + + + + + or + + + + + + From dbd15a9ed56c3973dfb76a70001a4558c8e665e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 12 Dec 2012 10:01:13 -0500 Subject: [PATCH 074/241] 0.7.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 604f610..536be19 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.7.1", + "version": "0.7.2", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From b43dd8e762d18881fb978f539353823654a469da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 17 Dec 2012 10:18:05 -0500 Subject: [PATCH 075/241] API Sites: Don't use @select inside . Fixes #30. --- tasks/jquery-xml/entries2html-base.xsl | 33 ++++++++++---------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 7774da2..5341086 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -242,9 +242,7 @@
  • - - - + jQuery( "" )

    @@ -261,20 +259,16 @@
      -
    • -

      - - - - -

      - - -
        - -
      -
      -
    • + + +
    • +

      + + +

      +
    • +
    @@ -309,11 +303,10 @@
      +
    • - - - +

      From 2fd8d029cddf0936c09ddfc8036dc3d63387c197 Mon Sep 17 00:00:00 2001 From: "adam j. sontag" Date: Fri, 4 Jan 2013 00:38:35 -0500 Subject: [PATCH 076/241] Integrating highlight.js (for nested block highlighting), with custom line numbering as a helper in grunt-jquery-content. --- package.json | 3 +- tasks/build.js | 89 ++++++++++++++++++++--- tasks/jquery-build/lineNumberTemplate.jst | 16 ++++ tasks/jquery-xml/entries2html-base.xsl | 32 ++++---- 4 files changed, 112 insertions(+), 28 deletions(-) create mode 100644 tasks/jquery-build/lineNumberTemplate.jst diff --git a/package.json b/package.json index 536be19..583774f 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ }, "dependencies": { "grunt-wordpress": "1.0.5", - "node-syntaxhighlighter": "0.8.x", + "highlight.js": "7.3.0", + "ent": "0.0.5", "cheerio": "0.8.3", "rimraf": "2.0.2", "marked": "0.2.5", diff --git a/tasks/build.js b/tasks/build.js index b7b880c..df70847 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -17,8 +17,9 @@ function htmlEscape(text) { var // modules fs = require( "fs" ), cheerio = require( "cheerio" ), - nsh = require( "node-syntaxhighlighter" ), + hljs = require( "highlight.js" ), path = require( "path" ), + ent = require( "ent" ), yaml = require( "js-yaml" ); // Add a wrapper around wordpress-parse-post that supports YAML @@ -142,7 +143,7 @@ grunt.registerHelper( "syntax-highlight", function( options ) { // receives the innerHTML of a element and if the first character // is an encoded left angle bracket, we'll assume the language is html function crudeHtmlCheck ( input ) { - return input.trim().indexOf( "<" ) === 0 ? "html" : ""; + return input.trim().indexOf( "<" ) === 0 ? "xml" : ""; } // when parsing the class attribute, make sure a class matches an actually @@ -153,7 +154,7 @@ grunt.registerHelper( "syntax-highlight", function( options ) { i = 0, length = classes.length; for ( ; i < length; i++ ) { - if ( nsh.getLanguage( classes[i].replace( /^lang-/, "" ) ) ) { + if ( hljs.LANGUAGES[ classes[i].replace( /^lang-/, "" ) ] ) { return classes[i].replace( /^lang-/, "" ); } } @@ -165,24 +166,90 @@ grunt.registerHelper( "syntax-highlight", function( options ) { $( "pre > code" ).each( function( index, el ) { var $t = $( this ), - code = $t.html(), + code = ent.decode( $t.html() ), lang = $t.attr( "data-lang" ) || getLanguageFromClass( $t.attr( "class" ) ) || - crudeHtmlCheck( code ), + crudeHtmlCheck( code ) || + undefined, linenumAttr = $t.attr( "data-linenum" ), linenum = (linenumAttr === "true" ? 1 : linenumAttr) || 1, gutter = linenumAttr === undefined ? false : true, - brush = nsh.getLanguage( lang ) || nsh.getLanguage( "js" ), - highlighted = nsh.highlight( code, brush, { - "first-line": linenum, - gutter: gutter - }); - $t.parent().replaceWith( $( highlighted ).removeAttr( "id" ) ); + // If we've got a language, use it, otherwise let highlight.js detect + highlighted = lang ? hljs.highlight( lang, code ) : hljs.highlightAuto( code ), + fixed = hljs.fixMarkup( highlighted.value ), + output = grunt.helper( "add-line-numbers", fixed, linenum, gutter, highlighted.language ); + + $t.parent().replaceWith( output ); }); return $.html(); }); +var lineNumberTemplate = grunt.file.read( grunt.task.getFile("jquery-build/lineNumberTemplate.jst") ); + +grunt.registerHelper("add-line-numbers", function( block, startAt, gutter, lang ) { + + var lines = (function cleanLines() { + var allLines = block.split("\n"), + r = [], + rLeadingTabs = /^\t+/g, + minTabs = 0, + indents = [], + outdent; + + grunt.utils._.each( allLines, function(s,i) { + // Don't include first or last line if it's nothing but whitespace/tabs + if ( (i === 0 || i === allLines.length - 1) && !s.replace(/^\s+/,"").length ) { + return; + } + + // Find the difference in line length once leading tabs are stripped + // and store the indent level in the indents collection for this code block + var match = s.match( rLeadingTabs ); + if ( match ) { + indents.push( -(match[0].replace( rLeadingTabs, "" ).length - match[0].length) ); + } + + // For empty lines inside the snippet, push in a
      so the line renders properly + if ( !s.trim().length ) { + r.push("
      "); + return; + } + + // Otherwise, just push the line in as-is + r.push(s) + + }); + + + // Find the lowest shared indent level across all lines + // If it's greater than 0, we have to outdent the entire codeblock + minTabs = indents.length ? grunt.utils._.min( indents ) : 0; + + if ( !minTabs ) { + return r; + } + + // Outdent the lines so indentation is only within the block, using the lowest shared indent level + outdent = new RegExp("^"+ new Array(minTabs).join("\t"), "g" ); + return r.map(function(s) { + return s.replace(outdent, ""); + }); + })(), + + data = { + startAt: startAt, + lines: lines, + gutter: gutter, + lang: lang + }, + + lined = grunt.template.process( lineNumberTemplate, data ); + + return lined; + +}); + grunt.registerHelper( "parse-markdown", function( src, generateToc ) { var toc = "", marked = require( "marked" ), diff --git a/tasks/jquery-build/lineNumberTemplate.jst b/tasks/jquery-build/lineNumberTemplate.jst new file mode 100644 index 0000000..3a8bb39 --- /dev/null +++ b/tasks/jquery-build/lineNumberTemplate.jst @@ -0,0 +1,16 @@ +
      + + + + + + + +
      + <% _.forEach(lines, function(line, i) { %> +
      <%= i + startAt %>
      + <% }); %> +
      +
      <% _.forEach(lines, function(line, i) { %>
      <%= line %>
      <% }); %>
      +
      +
      diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 5341086..8e55a14 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -381,17 +381,17 @@ Code examples:

      Initialize the with the option specified:

      -
      
      -							$( ".selector" ).({ :  });
      +						
      
      +						$( ".selector" ).({ :  });
       						

      Get or set the option, after initialization:

      -
      
      -							// getter
      -							var  = $( ".selector" ).( "option", "" );
      +						
      
      +// getter
      +var  = $( ".selector" ).( "option", "" );
       
      -							// setter
      -							$( ".selector" ).( "option", "",  );
      +// setter
      +$( ".selector" ).( "option", "",  );
       						
      @@ -430,7 +430,7 @@ Code examples:

      Invoke the method:

      -
      
      +									
      
       										
       											
       												
      @@ -885,17 +885,17 @@
       		Code examples:
       
       		

      Initialize the with the callback specified:

      -
      
      -			$( ".selector" ).
      -			
      -			({
      	
      -			
      -			: function( event, ui ) {}
      });
      +		
      
      +$( ".selector" ).
      +
      +({
      	
      +
      +: function( event, ui ) {}
      });
       		

      Bind an event listener to the event:

      -
      
      -			$( ".selector" ).on( "", function( event, ui ) {} );
      +		
      
      +$( ".selector" ).on( "", function( event, ui ) {} );
       		
  • From b5fd33dd947e5a6987ceb1da4c05ce2ce7c27042 Mon Sep 17 00:00:00 2001 From: "adam j. sontag" Date: Fri, 4 Jan 2013 17:47:55 -0500 Subject: [PATCH 077/241] Don't use highlight.js's automatic language detection, instead do what we can and default to JavaScript. Prevents need for custom highlight.js build in dependencies. --- tasks/build.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tasks/build.js b/tasks/build.js index df70847..4a4ff45 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -143,7 +143,8 @@ grunt.registerHelper( "syntax-highlight", function( options ) { // receives the innerHTML of a element and if the first character // is an encoded left angle bracket, we'll assume the language is html function crudeHtmlCheck ( input ) { - return input.trim().indexOf( "<" ) === 0 ? "xml" : ""; + var first = input.trim().charAt( 0 ); + return ( first === "<" || first === "<" ) ? "xml" : ""; } // when parsing the class attribute, make sure a class matches an actually @@ -170,13 +171,12 @@ grunt.registerHelper( "syntax-highlight", function( options ) { lang = $t.attr( "data-lang" ) || getLanguageFromClass( $t.attr( "class" ) ) || crudeHtmlCheck( code ) || - undefined, + "javascript", linenumAttr = $t.attr( "data-linenum" ), linenum = (linenumAttr === "true" ? 1 : linenumAttr) || 1, gutter = linenumAttr === undefined ? false : true, - // If we've got a language, use it, otherwise let highlight.js detect - highlighted = lang ? hljs.highlight( lang, code ) : hljs.highlightAuto( code ), - fixed = hljs.fixMarkup( highlighted.value ), + highlighted = hljs.highlight( lang, code ), + fixed = hljs.fixMarkup( highlighted.value, " " ), output = grunt.helper( "add-line-numbers", fixed, linenum, gutter, highlighted.language ); $t.parent().replaceWith( output ); From 5bedfae8488c89cbfac8b5bfa31f63c225437a33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 7 Jan 2013 16:16:00 -0500 Subject: [PATCH 078/241] Syntax highlighting: Fix outdenting logic. --- tasks/build.js | 117 ++++++++++--------------- tasks/jquery-xml/entries2html-base.xsl | 22 ++--- 2 files changed, 58 insertions(+), 81 deletions(-) diff --git a/tasks/build.js b/tasks/build.js index 4a4ff45..456e4b7 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -138,6 +138,7 @@ grunt.registerMultiTask( "build-resources", "Copy resources", function() { }); }); +var lineNumberTemplate = grunt.file.read( grunt.task.getFile("jquery-build/lineNumberTemplate.jst") ); grunt.registerHelper( "syntax-highlight", function( options ) { // receives the innerHTML of a element and if the first character @@ -162,12 +163,49 @@ grunt.registerHelper( "syntax-highlight", function( options ) { return ""; } + function outdent( string ) { + var rOutdent, + adjustedLines = [], + minTabs = Infinity, + rLeadingTabs = /^\t+/; + + string.split( "\n" ).forEach(function( line, i, arr ) { + // Don't include first or last line if it's nothing but whitespace + if ( (i === 0 || i === arr.length - 1) && !line.trim().length ) { + return; + } + + // For empty lines inside the snippet, push a space so the line renders properly + if ( !line.trim().length ) { + adjustedLines.push(" "); + return; + } + + // Count how many leading tabs there are and update the global minimum + var match = line.match( rLeadingTabs ), + tabs = match ? match[0].length : 0; + minTabs = Math.min( minTabs, tabs ); + + adjustedLines.push( line ); + }); + + if ( minTabs !== Infinity ) { + // Outdent the lines as much as possible + rOutdent = new RegExp( "^\t{" + minTabs + "}" ); + adjustedLines = adjustedLines.map(function( line ) { + return line.replace( rOutdent, "" ); + }); + } + + return adjustedLines.join( "\n" ); + } + var html = options.file ? grunt.file.read( options.file ) : options.content, $ = cheerio.load( html ); $( "pre > code" ).each( function( index, el ) { var $t = $( this ), - code = ent.decode( $t.html() ), + code = ent.decode( outdent( $t.html() ) ), lang = $t.attr( "data-lang" ) || getLanguageFromClass( $t.attr( "class" ) ) || crudeHtmlCheck( code ) || @@ -176,80 +214,19 @@ grunt.registerHelper( "syntax-highlight", function( options ) { linenum = (linenumAttr === "true" ? 1 : linenumAttr) || 1, gutter = linenumAttr === undefined ? false : true, highlighted = hljs.highlight( lang, code ), - fixed = hljs.fixMarkup( highlighted.value, " " ), - output = grunt.helper( "add-line-numbers", fixed, linenum, gutter, highlighted.language ); - - $t.parent().replaceWith( output ); + fixed = hljs.fixMarkup( highlighted.value, " " ); + + $t.parent().replaceWith( grunt.template.process( lineNumberTemplate, { + lines: fixed.split("\n"), + startAt: linenum, + gutter: gutter, + lang: lang + })); }); return $.html(); }); -var lineNumberTemplate = grunt.file.read( grunt.task.getFile("jquery-build/lineNumberTemplate.jst") ); - -grunt.registerHelper("add-line-numbers", function( block, startAt, gutter, lang ) { - - var lines = (function cleanLines() { - var allLines = block.split("\n"), - r = [], - rLeadingTabs = /^\t+/g, - minTabs = 0, - indents = [], - outdent; - - grunt.utils._.each( allLines, function(s,i) { - // Don't include first or last line if it's nothing but whitespace/tabs - if ( (i === 0 || i === allLines.length - 1) && !s.replace(/^\s+/,"").length ) { - return; - } - - // Find the difference in line length once leading tabs are stripped - // and store the indent level in the indents collection for this code block - var match = s.match( rLeadingTabs ); - if ( match ) { - indents.push( -(match[0].replace( rLeadingTabs, "" ).length - match[0].length) ); - } - - // For empty lines inside the snippet, push in a
    so the line renders properly - if ( !s.trim().length ) { - r.push("
    "); - return; - } - - // Otherwise, just push the line in as-is - r.push(s) - - }); - - - // Find the lowest shared indent level across all lines - // If it's greater than 0, we have to outdent the entire codeblock - minTabs = indents.length ? grunt.utils._.min( indents ) : 0; - - if ( !minTabs ) { - return r; - } - - // Outdent the lines so indentation is only within the block, using the lowest shared indent level - outdent = new RegExp("^"+ new Array(minTabs).join("\t"), "g" ); - return r.map(function(s) { - return s.replace(outdent, ""); - }); - })(), - - data = { - startAt: startAt, - lines: lines, - gutter: gutter, - lang: lang - }, - - lined = grunt.template.process( lineNumberTemplate, data ); - - return lined; - -}); - grunt.registerHelper( "parse-markdown", function( src, generateToc ) { var toc = "", marked = require( "marked" ), diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 8e55a14..312e4d0 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -382,16 +382,16 @@

    Initialize the with the option specified:

    
    -						$( ".selector" ).({ :  });
    +							$( ".selector" ).({ :  });
     						

    Get or set the option, after initialization:

    
    -// getter
    -var  = $( ".selector" ).( "option", "" );
    +							// getter
    +							var  = $( ".selector" ).( "option", "" );
     
    -// setter
    -$( ".selector" ).( "option", "",  );
    +							// setter
    +							$( ".selector" ).( "option", "",  );
     						
    @@ -886,16 +886,16 @@ $( ".selector" ).( "option", "

    Initialize the with the callback specified:

    
    -$( ".selector" ).
    -
    -({
    	
    -
    -: function( event, ui ) {}
    });
    +			$( ".selector" ).
    +			
    +			({
    	
    +			
    +			: function( event, ui ) {}
    });
     		

    Bind an event listener to the event:

    
    -$( ".selector" ).on( "", function( event, ui ) {} );
    +			$( ".selector" ).on( "", function( event, ui ) {} );
     		
    From 4c6f74fdcf827225ff39c9cc5aaaef60aabfe9d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 7 Jan 2013 16:26:55 -0500 Subject: [PATCH 079/241] 0.8.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 583774f..033e1f6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.7.2", + "version": "0.8.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From f0ee93c1bd4c77a16d88fc174fe82b142adda474 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 7 Jan 2013 17:11:13 -0500 Subject: [PATCH 080/241] API Sites: Don't recurse on @returns since it can't contain detailed information. --- tasks/jquery-xml/entries2html-base.xsl | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 312e4d0..f6bce4a 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -611,15 +611,18 @@ - + + + + + - - Function + @@ -627,12 +630,12 @@ => - - - - - - + + + + + + @@ -683,7 +686,7 @@ Returns: - + From 291f8380a32ba5f8aa4097224fd6f53e449e787d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 7 Jan 2013 17:11:24 -0500 Subject: [PATCH 081/241] 0.8.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 033e1f6..5244cc6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.8.0", + "version": "0.8.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 9be7335a4df38cef44c200d5cfb99b723127e42b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 5 Feb 2013 14:21:17 -0500 Subject: [PATCH 082/241] Hack in support for @widget-name to supercede @name. Fixes jquery/api.jqueryui.com#86. --- tasks/jquery-xml/entries2html-base.xsl | 44 ++++++++++++++++++++------ 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index f6bce4a..a5cc861 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -330,6 +330,16 @@ + + + + + + + + + +
    @@ -380,18 +390,18 @@ Code examples: -

    Initialize the with the option specified:

    +

    Initialize the with the option specified:

    
    -							$( ".selector" ).({ :  });
    +							$( ".selector" ).({ :  });
     						

    Get or set the option, after initialization:

    
     							// getter
    -							var  = $( ".selector" ).( "option", "" );
    +							var  = $( ".selector" ).( "option", "" );
     
     							// setter
    -							$( ".selector" ).( "option", "",  );
    +							$( ".selector" ).( "option", "",  );
     						
    @@ -442,7 +452,7 @@ = $( ".selector" ). - + ( " " @@ -480,6 +490,7 @@ + @@ -846,13 +857,14 @@ + - + @@ -887,10 +899,10 @@
    Code examples: -

    Initialize the with the callback specified:

    +

    Initialize the with the callback specified:

    
     			$( ".selector" ).
    -			
    +			
     			({
    	
     			
     			: function( event, ui ) {}
    });
    @@ -922,7 +934,21 @@ placeholder with @foo from the  -->
     
     
     	
    -	
    +	
    +		
    +			
    +				
    +					
    +				
    +				
    +					
    +				
    +			
    +		
    +		
    +			
    +		
    +	
     
     
     
    
    From 1bacc1baa06fbbadcbc6d9ce7b0f68528fb4d98a Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= 
    Date: Tue, 5 Feb 2013 14:21:49 -0500
    Subject: [PATCH 083/241] 0.8.2
    
    ---
     package.json | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/package.json b/package.json
    index 5244cc6..a8e6a3f 100644
    --- a/package.json
    +++ b/package.json
    @@ -1,7 +1,7 @@
     {
       "name": "grunt-jquery-content",
       "description": "A collection of tasks for building the jQuery websites",
    -  "version": "0.8.1",
    +  "version": "0.8.2",
       "homepage": "https://github.com/jquery/grunt-jquery-content",
       "author": {
         "name": "jQuery Foundation"
    
    From 5768c61f32f4f285cda6f53b47b246d9d5202cbf Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= 
    Date: Thu, 14 Feb 2013 21:02:19 -0500
    Subject: [PATCH 084/241] Upgrade js-yaml to 2.0.1.
    
    ---
     package.json | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/package.json b/package.json
    index a8e6a3f..ef67efd 100644
    --- a/package.json
    +++ b/package.json
    @@ -30,7 +30,7 @@
         "cheerio": "0.8.3",
         "rimraf": "2.0.2",
         "marked": "0.2.5",
    -    "js-yaml": "1.0.2"
    +    "js-yaml": "2.0.1"
       },
       "devDependencies": {
         "grunt": "0.3.17"
    
    From 96a33122b32351b687f0cc8232862d5fd583b5f4 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= 
    Date: Fri, 1 Mar 2013 15:45:53 -0500
    Subject: [PATCH 085/241] Sort links in QuickNav.
    
    ---
     tasks/jquery-xml/entries2html-base.xsl | 3 +++
     1 file changed, 3 insertions(+)
    
    diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl
    index a5cc861..7251232 100644
    --- a/tasks/jquery-xml/entries2html-base.xsl
    +++ b/tasks/jquery-xml/entries2html-base.xsl
    @@ -521,6 +521,7 @@
     		

    Options

    +
    @@ -529,6 +530,7 @@

    Methods

    +
    @@ -537,6 +539,7 @@

    Events

    +
    From fa082d114eeb74c8d0ecdb89259b1c1bc9dd35bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Sat, 2 Mar 2013 12:29:15 -0500 Subject: [PATCH 086/241] 0.8.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ef67efd..63fe280 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.8.2", + "version": "0.8.3", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 4eaf77413c279fee9f4b535ac59c6650cdb0748e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 20 Mar 2013 08:24:23 -0400 Subject: [PATCH 087/241] API sites: Fixed properties with nested properties. --- tasks/jquery-xml/entries2html-base.xsl | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 7251232..1dc908f 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -267,6 +267,8 @@
  • + +
  • @@ -750,6 +752,15 @@ + + + +
      + +
    +
    +
    +
  • From fc3adb2b199ff9f3eac8c68c4b26a97da6c5884d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 20 Mar 2013 08:24:52 -0400 Subject: [PATCH 088/241] 0.8.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 63fe280..5116ad0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.8.3", + "version": "0.8.4", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From b16b106413fe55cb08a0fbee8fc849eed0788ca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 20 Mar 2013 09:30:20 -0400 Subject: [PATCH 089/241] Fix data-linenum handling. Fixes #5. --- tasks/build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/build.js b/tasks/build.js index 456e4b7..759e7b4 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -211,7 +211,7 @@ grunt.registerHelper( "syntax-highlight", function( options ) { crudeHtmlCheck( code ) || "javascript", linenumAttr = $t.attr( "data-linenum" ), - linenum = (linenumAttr === "true" ? 1 : linenumAttr) || 1, + linenum = (linenumAttr === "true" ? 1 : parseInt( linenumAttr, 10 ) ) || 1, gutter = linenumAttr === undefined ? false : true, highlighted = hljs.highlight( lang, code ), fixed = hljs.fixMarkup( highlighted.value, " " ); From f0798bee7760f31c812c7f990b51ecc20a10e75b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 20 Mar 2013 09:49:17 -0400 Subject: [PATCH 090/241] Wrap each line of a multi-line comment in the appropriate class. Fixes #32. --- tasks/build.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tasks/build.js b/tasks/build.js index 759e7b4..93a2670 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -216,6 +216,12 @@ grunt.registerHelper( "syntax-highlight", function( options ) { highlighted = hljs.highlight( lang, code ), fixed = hljs.fixMarkup( highlighted.value, " " ); + // Handle multi-line comments (#32) + fixed = fixed.replace( /\/\*([^<]+)\*\/<\/span>/g, function( full, comment ) { + return "/*" + + comment.split( "\n" ).join( "\n" ) + + "*/"; + }); $t.parent().replaceWith( grunt.template.process( lineNumberTemplate, { lines: fixed.split("\n"), startAt: linenum, From 088472d82807e3c1e357df3a1281b5fca9b1e580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 20 Mar 2013 09:49:32 -0400 Subject: [PATCH 091/241] 0.8.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5116ad0..865c9ef 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.8.4", + "version": "0.8.5", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From a9a2974caa43c1905c48d8facb2764f77d204291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 20 Mar 2013 09:24:54 -0400 Subject: [PATCH 092/241] API Sites: Make method signatures links. Fixes #34. --- tasks/jquery-xml/entries2html-base.xsl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 1dc908f..7ece142 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -281,20 +281,24 @@
    • - + - - +

      - - - - + + + + + + + +

      From aa7e810e851c28f0f79453303973cac89f1faa78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 20 Mar 2013 11:05:10 -0400 Subject: [PATCH 093/241] 0.8.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 865c9ef..f676553 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.8.5", + "version": "0.8.6", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 500a90e59de60a21a03897d3adf877d199708f58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 27 Mar 2013 10:45:52 -0400 Subject: [PATCH 094/241] API Sites: Add links to individual method signatures in TOC. Fixes jquery/api.jquery.com#34. --- tasks/jquery-xml/entries2html-base.xsl | 36 ++++++++++++++------------ 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 7ece142..efb8b4f 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -124,18 +124,12 @@

      Contents:

        - - - - - + - - - + @@ -144,13 +138,15 @@ - + +
      • - + +
      • @@ -164,11 +160,20 @@ @@ -284,8 +289,7 @@ - - - + - From 30dcd3c7aa0a7e1f16b868320c30e7936ba306aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 27 Mar 2013 10:46:02 -0400 Subject: [PATCH 095/241] 0.8.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f676553..2870e3e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.8.6", + "version": "0.8.7", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 58ed13082a8488ca8b1b23d90d35663b64301763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 27 Mar 2013 13:46:51 -0400 Subject: [PATCH 096/241] Added support for first-class events. Fixes #16. --- tasks/jquery-xml/entries2html-base.xsl | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index efb8b4f..545bc09 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -209,6 +209,12 @@ + + + + event + + @@ -228,6 +234,9 @@ + + + @@ -279,6 +288,35 @@
      + +
        + + +
      • +

        + + jQuery( + + + + + + ".selector" + + + ).on( " + + ", function( event ) { ... } ) +

        + +

        Additional properties on the event object:

        + +
      • +
        +
      +
      + From f7e2763c2c966a7cec7bd28c6678f2f1480b1836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 27 Mar 2013 13:47:36 -0400 Subject: [PATCH 097/241] 0.8.8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2870e3e..d765353 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.8.7", + "version": "0.8.8", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 1671d830ee8dcc76c60cf8ce97abee4d7584ce8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 27 Mar 2013 13:51:00 -0400 Subject: [PATCH 098/241] API Sites: Only show additional property note if there are additional properties. --- tasks/jquery-xml/entries2html-base.xsl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 545bc09..d71027f 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -310,8 +310,10 @@ ", function( event ) { ... } ) -

      Additional properties on the event object:

      - + +

      Additional properties on the event object:

      + +
    From 9f8463a4b73cc83a0da6113655b494c898c31e4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 27 Mar 2013 13:51:06 -0400 Subject: [PATCH 099/241] 0.8.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d765353..e9e9901 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.8.8", + "version": "0.8.9", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 4ebabd230df87e13c812e5b8de7f3b6f9f2bffa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 1 Apr 2013 10:19:17 -0400 Subject: [PATCH 100/241] Upgrade to grunt-wordpress 1.0.7. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e9e9901..c458ab9 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "node": "*" }, "dependencies": { - "grunt-wordpress": "1.0.5", + "grunt-wordpress": "1.0.7", "highlight.js": "7.3.0", "ent": "0.0.5", "cheerio": "0.8.3", From 2165fbefbc3d6d168349e4fca88706f7d1e37e07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 1 Apr 2013 10:19:55 -0400 Subject: [PATCH 101/241] 0.9.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c458ab9..390932f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.8.9", + "version": "0.9.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 151d7ce2d75268aaeaa85483647088bdbed50711 Mon Sep 17 00:00:00 2001 From: TJ VanToll Date: Sun, 21 Apr 2013 23:07:02 -0400 Subject: [PATCH 102/241] Add a note about the ui object passed to events when it contains no properties. --- tasks/jquery-xml/entries2html-base.xsl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index d71027f..f2aea72 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -957,6 +957,9 @@ + +

    Note: The ui object is empty but included for consistency with other events.

    +
    Code examples: From 973691a93a47a1b21a61c1a85729ecf270e3c2d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 23 Apr 2013 09:27:11 -0400 Subject: [PATCH 103/241] 0.9.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 390932f..451df2e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.9.0", + "version": "0.9.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 1259385e7139c76536e9a3613a3888fecf1cb111 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 25 Apr 2013 08:30:45 -0400 Subject: [PATCH 104/241] API Sites: Recursively process notes. --- tasks/jquery-xml/entries2html-base.xsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index f2aea72..dc89749 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -989,7 +989,7 @@ placeholder with @foo from the --> - + From be74fd2d097abe5931011925012e1b3a8288d555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 25 Apr 2013 08:30:55 -0400 Subject: [PATCH 105/241] 0.9.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 451df2e..3669bab 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.9.1", + "version": "0.9.2", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 0bd231118dc885046030cf2d7a269605e2b5c072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 7 May 2013 10:01:40 -0400 Subject: [PATCH 106/241] API Sites: Added @init-only for widget options. --- tasks/jquery-xml/entries2html-base.xsl | 52 ++++++++++++++++++-------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index dc89749..b05bd56 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -438,21 +438,9 @@ - Code examples: - -

    Initialize the with the option specified:

    -
    
    -							$( ".selector" ).({ :  });
    -						
    - -

    Get or set the option, after initialization:

    -
    
    -							// getter
    -							var  = $( ".selector" ).( "option", "" );
    -
    -							// setter
    -							$( ".selector" ).( "option", "",  );
    -						
    + + +
    @@ -597,6 +585,40 @@
    + + + + Code examples: + +

    Initialize the with the option specified:

    +
    
    +		$( ".selector" ).({ :  });
    +	
    + +

    + + + Get + + + Get or set + + + the + + option, after initialization: +

    +
    
    +		// getter
    +		var  = $( ".selector" ).( "option", "" );
    +		
    +
    +		// setter
    +		$( ".selector" ).( "option", "",  );
    +		
    +	
    +
    + From 8cc6f88ef3bb5cadf9d3b6bcdb2c235669890739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 7 May 2013 10:06:20 -0400 Subject: [PATCH 107/241] 0.9.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3669bab..913d457 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.9.2", + "version": "0.9.3", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From ce94f6f58e72a1184c1a5f5cb94997b671d1c6dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 28 May 2013 15:56:51 -0400 Subject: [PATCH 108/241] Upgrade to marked 0.2.8. --- package.json | 2 +- tasks/build.js | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 913d457..a23d040 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "ent": "0.0.5", "cheerio": "0.8.3", "rimraf": "2.0.2", - "marked": "0.2.5", + "marked": "0.2.8", "js-yaml": "2.0.1" }, "devDependencies": { diff --git a/tasks/build.js b/tasks/build.js index 93a2670..e61ce94 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -236,7 +236,8 @@ grunt.registerHelper( "syntax-highlight", function( options ) { grunt.registerHelper( "parse-markdown", function( src, generateToc ) { var toc = "", marked = require( "marked" ), - tokens = marked.lexer( src ); + tokens = marked.lexer( src ), + links = tokens.links; if ( generateToc ) { tokens.filter(function( item ) { @@ -268,6 +269,9 @@ grunt.registerHelper( "parse-markdown", function( src, generateToc ) { }); tokens = marked.lexer( toc ).concat( tokens ); + // The TOC never generates links, so we can just copy the links directly + // from the original tokens. + tokens.links = links; } // Override the default encoding of code blocks so that syntax highlighting From f681c058c5f076b13e99cd1a7f45ab918239debf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 28 May 2013 21:47:14 -0400 Subject: [PATCH 109/241] Upgrade to marked 0.2.9. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a23d040..6f0227c 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "ent": "0.0.5", "cheerio": "0.8.3", "rimraf": "2.0.2", - "marked": "0.2.8", + "marked": "0.2.9", "js-yaml": "2.0.1" }, "devDependencies": { From 37205a6aed228287b9ce91b50ad07058bff119bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 29 May 2013 08:07:26 -0400 Subject: [PATCH 110/241] Removed custom encoding for code blocks. Marked now does what we want. --- tasks/build.js | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/tasks/build.js b/tasks/build.js index e61ce94..b895d04 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -274,17 +274,6 @@ grunt.registerHelper( "parse-markdown", function( src, generateToc ) { tokens.links = links; } - // Override the default encoding of code blocks so that syntax highlighting - // works properly. - tokens.forEach(function( token ) { - if ( token.type === "code" ) { - token.escaped = true; - token.text = token.text - .replace( //g, ">" ); - } - }); - return marked.parser( tokens ); }); From 5fb280df5c41375e194da11a600d8437007295db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 29 May 2013 10:12:10 -0400 Subject: [PATCH 111/241] API Sites: Syntax highlight category descriptions. Fixes #37. --- tasks/build-xml.js | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/tasks/build-xml.js b/tasks/build-xml.js index 9786216..61266da 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -116,7 +116,8 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an }); grunt.registerTask( "build-xml-categories", function() { - var taskDone = this.async(); + var taskDone = this.async(), + targetPath = grunt.config( "wordpress.dir" ) + "/taxonomies.json"; grunt.utils.spawn({ cmd: "xsltproc", @@ -132,9 +133,11 @@ grunt.registerTask( "build-xml-categories", function() { grunt.utils.spawn({ cmd: "xsltproc", - args: [ "--output", grunt.config( "wordpress.dir" ) + "/taxonomies.json", + args: [ "--output", targetPath, grunt.task.getFile( "jquery-xml/xml2json.xsl" ), "taxonomies.xml" ] }, function( err, result ) { + var taxonomies; + if ( err ) { grunt.verbose.error(); grunt.log.error( err ); @@ -142,6 +145,29 @@ grunt.registerTask( "build-xml-categories", function() { return; } + // Syntax highlight code blocks + function highlightDescription( category ) { + if ( category.description ) { + category.description = grunt.helper( "syntax-highlight", + { content: category.description } ); + } + } + + function highlightCategories( categories ) { + categories.forEach(function( category ) { + highlightDescription( category ); + if ( category.children ) { + highlightCategories( category.children ); + } + }); + } + + if ( !grunt.option( "nohighlight" ) ) { + taxonomies = grunt.file.readJSON( targetPath ); + highlightCategories( taxonomies.category ); + grunt.file.write( targetPath, JSON.stringify( taxonomies ) ); + } + fs.unlinkSync( "taxonomies.xml" ); grunt.verbose.ok(); taskDone(); From df0fdb8f538f71b529a1dcb777c44d49ace54cf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 31 May 2013 10:05:00 -0400 Subject: [PATCH 112/241] 0.10.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6f0227c..7a6bf77 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.9.3", + "version": "0.10.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 605b43953d21afb3d98147f3e35c167aff053c73 Mon Sep 17 00:00:00 2001 From: Anne-Gaelle Colom Date: Fri, 7 Jun 2013 16:13:53 +0200 Subject: [PATCH 113/241] adding the trailing '/' to links on http://api.jquery.com/Types/ Currently, Safari is not adding the trailing '/' and me miss the anchor info from the api docs to jQuery Types. Fixes #40 --- tasks/jquery-xml/entries2html-base.xsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index b05bd56..29c35ec 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -721,7 +721,7 @@ - + @@ -730,7 +730,7 @@ , - + From e9c070d7f87ac5cc817d616f3f7e8964f5c4a3b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 10 Jun 2013 08:59:10 -0400 Subject: [PATCH 114/241] Cleanup. --- grunt.js | 62 +++++++-------- tasks/build-xml.js | 18 ++--- tasks/build.js | 192 ++++++++++++++++++++++----------------------- 3 files changed, 135 insertions(+), 137 deletions(-) diff --git a/grunt.js b/grunt.js index 0abcacf..76f4528 100644 --- a/grunt.js +++ b/grunt.js @@ -1,38 +1,36 @@ -module.exports = function(grunt) { +module.exports = function( grunt ) { "use strict"; - // Project configuration. - grunt.initConfig({ - lint: { - files: ['grunt.js', 'tasks/**/*.js' ] - }, - watch: { - files: '', - tasks: 'default' - }, - jshint: { - options: { - curly: true, - eqeqeq: true, - immed: true, - latedef: true, - newcap: true, - noarg: true, - sub: true, - undef: true, - boss: true, - eqnull: true, - node: true, - es5: true - }, - globals: {} - } - }); +grunt.initConfig({ + lint: { + files: [ "grunt.js", "tasks/**/*.js" ] + }, + watch: { + files: "", + tasks: "default" + }, + jshint: { + options: { + boss: true, + curly: true, + eqeqeq: true, + eqnull: true, + expr: true, + immed: true, + noarg: true, + onevar: true, + quotmark: "double", + smarttabs: true, + trailing: true, + undef: true, + unused: true, - // Load local tasks. - grunt.loadTasks('tasks'); + node: true + } + } +}); - // Default task. - grunt.registerTask('default', 'lint'); +grunt.loadTasks( "tasks" ); +grunt.registerTask( "default", "lint" ); }; diff --git a/tasks/build-xml.js b/tasks/build-xml.js index 61266da..3f38f11 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -13,10 +13,10 @@ grunt.registerMultiTask( "xmllint", "Lint xml files", function() { grunt.utils.spawn({ cmd: "xmllint", args: [ "--noout", fileName ] - }, function( err, result ) { - if ( err ) { + }, function( error ) { + if ( error ) { grunt.verbose.error(); - grunt.log.error( err ); + grunt.log.error( error ); fileDone(); return; } @@ -123,10 +123,10 @@ grunt.registerTask( "build-xml-categories", function() { cmd: "xsltproc", args: [ "--output", "taxonomies.xml", grunt.task.getFile( "jquery-xml/cat2tax.xsl" ), "categories.xml" ] - }, function( err, result ) { - if ( err ) { + }, function( error ) { + if ( error ) { grunt.verbose.error(); - grunt.log.error( err ); + grunt.log.error( error ); taskDone(); return; } @@ -135,12 +135,12 @@ grunt.registerTask( "build-xml-categories", function() { cmd: "xsltproc", args: [ "--output", targetPath, grunt.task.getFile( "jquery-xml/xml2json.xsl" ), "taxonomies.xml" ] - }, function( err, result ) { + }, function( error ) { var taxonomies; - if ( err ) { + if ( error ) { grunt.verbose.error(); - grunt.log.error( err ); + grunt.log.error( error ); taskDone(); return; } diff --git a/tasks/build.js b/tasks/build.js index b895d04..952353b 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -1,24 +1,21 @@ -module.exports = function(grunt) { +module.exports = function( grunt ) { "use strict"; -function htmlEscape(text) { +function htmlEscape( text ) { return text // supports keeping markup in source file, but drop from inline sample - .replace(/[\s\S]+@placeholder-end -->/g, function(match, input) { + .replace( /[\s\S]+@placeholder-end -->/g, function( match, input ) { return "<-- " + input + " -->"; }) - .replace(/&/g,'&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); + .replace( /&/g, "&" ) + .replace( //g, ">" ) + .replace( /"/g, """ ) + .replace( /'/g, "'" ); } -var // modules - fs = require( "fs" ), - cheerio = require( "cheerio" ), +var cheerio = require( "cheerio" ), hljs = require( "highlight.js" ), - path = require( "path" ), ent = require( "ent" ), yaml = require( "js-yaml" ); @@ -48,8 +45,7 @@ grunt.registerHelper( "wordpress-parse-post-flex", function( path ) { }); grunt.registerMultiTask( "build-pages", "Process html and markdown files as pages, include @partials and syntax higlight code snippets", function() { - var content, - task = this, + var task = this, taskDone = task.async(), files = this.data, targetDir = grunt.config( "wordpress.dir" ) + "/posts/page/"; @@ -138,100 +134,104 @@ grunt.registerMultiTask( "build-resources", "Copy resources", function() { }); }); -var lineNumberTemplate = grunt.file.read( grunt.task.getFile("jquery-build/lineNumberTemplate.jst") ); -grunt.registerHelper( "syntax-highlight", function( options ) { +grunt.registerHelper( "syntax-highlight", (function() { + var lineNumberTemplate = grunt.file.read( + grunt.task.getFile( "jquery-build/lineNumberTemplate.jst" ) ); - // receives the innerHTML of a element and if the first character - // is an encoded left angle bracket, we'll assume the language is html - function crudeHtmlCheck ( input ) { - var first = input.trim().charAt( 0 ); - return ( first === "<" || first === "<" ) ? "xml" : ""; - } + return function( options ) { - // when parsing the class attribute, make sure a class matches an actually - // highlightable language, instead of being presentational (e.g. 'example') - function getLanguageFromClass( str ) { - str = str || ""; - var classes = str.split(" "), - i = 0, - length = classes.length; - for ( ; i < length; i++ ) { - if ( hljs.LANGUAGES[ classes[i].replace( /^lang-/, "" ) ] ) { - return classes[i].replace( /^lang-/, "" ); - } + // receives the innerHTML of a element and if the first character + // is an encoded left angle bracket, we'll assume the language is html + function crudeHtmlCheck ( input ) { + var first = input.trim().charAt( 0 ); + return ( first === "<" || first === "<" ) ? "xml" : ""; } - return ""; - } - - function outdent( string ) { - var rOutdent, - adjustedLines = [], - minTabs = Infinity, - rLeadingTabs = /^\t+/; - string.split( "\n" ).forEach(function( line, i, arr ) { - // Don't include first or last line if it's nothing but whitespace - if ( (i === 0 || i === arr.length - 1) && !line.trim().length ) { - return; - } - - // For empty lines inside the snippet, push a space so the line renders properly - if ( !line.trim().length ) { - adjustedLines.push(" "); - return; + // when parsing the class attribute, make sure a class matches an actually + // highlightable language, instead of being presentational (e.g. 'example') + function getLanguageFromClass( str ) { + str = str || ""; + var classes = str.split( " " ), + i = 0, + length = classes.length; + for ( ; i < length; i++ ) { + if ( hljs.LANGUAGES[ classes[ i ].replace( /^lang-/, "" ) ] ) { + return classes[i].replace( /^lang-/, "" ); + } } + return ""; + } - // Count how many leading tabs there are and update the global minimum - var match = line.match( rLeadingTabs ), - tabs = match ? match[0].length : 0; - minTabs = Math.min( minTabs, tabs ); + function outdent( string ) { + var rOutdent, + adjustedLines = [], + minTabs = Infinity, + rLeadingTabs = /^\t+/; + + string.split( "\n" ).forEach(function( line, i, arr ) { + // Don't include first or last line if it's nothing but whitespace + if ( (i === 0 || i === arr.length - 1) && !line.trim().length ) { + return; + } + + // For empty lines inside the snippet, push a space so the line renders properly + if ( !line.trim().length ) { + adjustedLines.push(" "); + return; + } + + // Count how many leading tabs there are and update the global minimum + var match = line.match( rLeadingTabs ), + tabs = match ? match[0].length : 0; + minTabs = Math.min( minTabs, tabs ); + + adjustedLines.push( line ); + }); - adjustedLines.push( line ); - }); + if ( minTabs !== Infinity ) { + // Outdent the lines as much as possible + rOutdent = new RegExp( "^\t{" + minTabs + "}" ); + adjustedLines = adjustedLines.map(function( line ) { + return line.replace( rOutdent, "" ); + }); + } - if ( minTabs !== Infinity ) { - // Outdent the lines as much as possible - rOutdent = new RegExp( "^\t{" + minTabs + "}" ); - adjustedLines = adjustedLines.map(function( line ) { - return line.replace( rOutdent, "" ); - }); + return adjustedLines.join( "\n" ); } - return adjustedLines.join( "\n" ); - } - - var html = options.file ? grunt.file.read( options.file ) : options.content, - $ = cheerio.load( html ); - - $( "pre > code" ).each( function( index, el ) { - var $t = $( this ), - code = ent.decode( outdent( $t.html() ) ), - lang = $t.attr( "data-lang" ) || - getLanguageFromClass( $t.attr( "class" ) ) || - crudeHtmlCheck( code ) || - "javascript", - linenumAttr = $t.attr( "data-linenum" ), - linenum = (linenumAttr === "true" ? 1 : parseInt( linenumAttr, 10 ) ) || 1, - gutter = linenumAttr === undefined ? false : true, - highlighted = hljs.highlight( lang, code ), - fixed = hljs.fixMarkup( highlighted.value, " " ); - - // Handle multi-line comments (#32) - fixed = fixed.replace( /\/\*([^<]+)\*\/<\/span>/g, function( full, comment ) { - return "/*" + - comment.split( "\n" ).join( "\n" ) + - "*/"; + var html = options.file ? grunt.file.read( options.file ) : options.content, + $ = cheerio.load( html ); + + $( "pre > code" ).each(function() { + var $t = $( this ), + code = ent.decode( outdent( $t.html() ) ), + lang = $t.attr( "data-lang" ) || + getLanguageFromClass( $t.attr( "class" ) ) || + crudeHtmlCheck( code ) || + "javascript", + linenumAttr = $t.attr( "data-linenum" ), + linenum = (linenumAttr === "true" ? 1 : parseInt( linenumAttr, 10 ) ) || 1, + gutter = linenumAttr === undefined ? false : true, + highlighted = hljs.highlight( lang, code ), + fixed = hljs.fixMarkup( highlighted.value, " " ); + + // Handle multi-line comments (#32) + fixed = fixed.replace( /\/\*([^<]+)\*\/<\/span>/g, function( full, comment ) { + return "/*" + + comment.split( "\n" ).join( "\n" ) + + "*/"; + }); + $t.parent().replaceWith( grunt.template.process( lineNumberTemplate, { + lines: fixed.split("\n"), + startAt: linenum, + gutter: gutter, + lang: lang + })); }); - $t.parent().replaceWith( grunt.template.process( lineNumberTemplate, { - lines: fixed.split("\n"), - startAt: linenum, - gutter: gutter, - lang: lang - })); - }); - return $.html(); -}); + return $.html(); + }; +})() ); grunt.registerHelper( "parse-markdown", function( src, generateToc ) { var toc = "", From 302aca8e8edcfc77857a9679fa9998c27ef46d59 Mon Sep 17 00:00:00 2001 From: Mathias Bynens Date: Tue, 25 Jun 2013 11:57:41 +0200 Subject: [PATCH 115/241] Use `he` for HTML entity decoding --- package.json | 8 ++++---- tasks/build.js | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 7a6bf77..9194ef5 100644 --- a/package.json +++ b/package.json @@ -24,13 +24,13 @@ "node": "*" }, "dependencies": { + "cheerio": "0.8.3", "grunt-wordpress": "1.0.7", + "he": "0.1.2", "highlight.js": "7.3.0", - "ent": "0.0.5", - "cheerio": "0.8.3", - "rimraf": "2.0.2", + "js-yaml": "2.0.1", "marked": "0.2.9", - "js-yaml": "2.0.1" + "rimraf": "2.0.2" }, "devDependencies": { "grunt": "0.3.17" diff --git a/tasks/build.js b/tasks/build.js index 952353b..90722ae 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -16,7 +16,7 @@ function htmlEscape( text ) { var cheerio = require( "cheerio" ), hljs = require( "highlight.js" ), - ent = require( "ent" ), + he = require( "he" ), yaml = require( "js-yaml" ); // Add a wrapper around wordpress-parse-post that supports YAML @@ -204,7 +204,7 @@ grunt.registerHelper( "syntax-highlight", (function() { $( "pre > code" ).each(function() { var $t = $( this ), - code = ent.decode( outdent( $t.html() ) ), + code = he.decode( outdent( $t.html() ) ), lang = $t.attr( "data-lang" ) || getLanguageFromClass( $t.attr( "class" ) ) || crudeHtmlCheck( code ) || From c363303d1d41384b52d2c22c41c869aba6efb0a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 25 Jun 2013 08:10:00 -0400 Subject: [PATCH 116/241] 0.10.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9194ef5..3ff522b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.10.0", + "version": "0.10.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From aececebad24ad921734efe42aa6a1fba40cf5286 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 3 Jul 2013 13:53:22 -0400 Subject: [PATCH 117/241] API sites: Only use categories from the first entry in the file. Fixes jquery/api.jqueryui.com#154. --- tasks/jquery-xml/entries2html-base.xsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 29c35ec..a0b95f0 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -32,7 +32,7 @@ , "termSlugs": { "category": [ - + , " From 77a0db27c078c3181f0ae27aa7b5e111907bae13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 3 Jul 2013 13:53:38 -0400 Subject: [PATCH 118/241] 0.10.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3ff522b..4af61df 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.10.1", + "version": "0.10.2", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From f5306da876d2f5d367137238ebb776eff4b1a612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 4 Sep 2013 08:40:17 -0400 Subject: [PATCH 119/241] Check for xmllint and xsltproc before using them. Fixes jquery/api.jqueryui.com#169. --- package.json | 3 ++- tasks/build-xml.js | 45 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4af61df..1fa1a0a 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,8 @@ "highlight.js": "7.3.0", "js-yaml": "2.0.1", "marked": "0.2.9", - "rimraf": "2.0.2" + "rimraf": "2.0.2", + "which": "1.0.5" }, "devDependencies": { "grunt": "0.3.17" diff --git a/tasks/build-xml.js b/tasks/build-xml.js index 3f38f11..5ad1698 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -2,12 +2,39 @@ module.exports = function( grunt ) { "use strict"; var fs = require( "fs" ), - path = require( "path" ); + path = require( "path" ), + which = require( "which" ); + +function checkLibxml2( executable ) { + try { + which.sync( executable ); + } catch( error ) { + grunt.log.error( "Missing executable: " + executable + "." ); + grunt.log.error( "You must install libxml2." ); + grunt.log.error( "Downloads are available from http://www.xmlsoft.org/downloads.html" ); + return false; + } + + return true; +} + +function checkXmllint() { + return checkLibxml2( "xmllint" ); +} + +function checkXsltproc() { + return checkLibxml2( "xsltproc" ); +} grunt.registerMultiTask( "xmllint", "Lint xml files", function() { var task = this, taskDone = task.async(), files = this.data; + + if ( !checkXmllint() ) { + taskDone( false ); + } + grunt.utils.async.forEachSeries( this.data, function( fileName, fileDone ) { grunt.verbose.write( "Linting " + fileName + "..." ); grunt.utils.spawn({ @@ -42,6 +69,10 @@ grunt.registerMultiTask( "xmltidy", "Tidy xml files - changes source files!", fu // Only tidy files that are lint free task.requires( "xmllint" ); + if ( !checkXmllint() ) { + taskDone( false ); + } + grunt.utils.async.forEachSeries( files, function( fileName, fileDone ) { grunt.verbose.write( "Tidying " + fileName + "..." ); grunt.utils.spawn({ @@ -77,6 +108,10 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an files = this.data, targetDir = grunt.config( "wordpress.dir" ) + "/posts/post/"; + if ( !checkXsltproc() ) { + taskDone( false ); + } + grunt.file.mkdir( targetDir ); grunt.utils.async.forEachSeries( files, function( fileName, fileDone ) { @@ -119,6 +154,10 @@ grunt.registerTask( "build-xml-categories", function() { var taskDone = this.async(), targetPath = grunt.config( "wordpress.dir" ) + "/taxonomies.json"; + if ( !checkXsltproc() ) { + taskDone( false ); + } + grunt.utils.spawn({ cmd: "xsltproc", args: [ "--output", "taxonomies.xml", @@ -178,6 +217,10 @@ grunt.registerTask( "build-xml-categories", function() { grunt.registerTask( "build-xml-full", function() { var taskDone = this.async(); + if ( !checkXsltproc() ) { + taskDone( false ); + } + grunt.file.copy( grunt.task.getFile( "jquery-xml/all-entries.xml" ), "all-entries.xml", { process: function( content ) { return content.replace( "", From 7669bf0428ff97e4894b7dacbe866c96a9ad82c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 17 Sep 2013 15:00:26 -0400 Subject: [PATCH 120/241] 0.10.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1fa1a0a..a461103 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.10.2", + "version": "0.10.3", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 4698d747ab1d33aeb3c37aad9efb4ce6686c0bc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 18 Sep 2013 09:46:19 -0400 Subject: [PATCH 121/241] API Sites: Added ability to document methods as extension points. Fixes jquery/api.jqueryui.com#177. --- tasks/jquery-xml/entries2html-base.xsl | 155 +++++++++++++++++-------- 1 file changed, 106 insertions(+), 49 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index a0b95f0..3aa1741 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -458,55 +458,41 @@ -
    - -
    - - api-item - - first-item - - - - - - - - - -
    - Code examples: - -

    Invoke the method:

    -
    
    -										
    -											
    -												
    -											
    -											
    -												
    -													var 
    -													
    -													 = 
    -												
    -												$( ".selector" ).
    -												
    -												( "
    -												
    -												"
    -												
    -													, 
    -													
    -												
    -												 );
    -											
    -										
    -									
    -
    -
    -
    -
    -
    + + + + + + +
    + + + +
    +
    +

    Extension Points

    +
    +

    + The widget is built with the + widget factory and can be + extended. When extending widgets, you have the ability to override or add to the + behavior of existing methods. The following methods are provided as extension points + with the same API stability as the plugin methods listed + above. For more information on widget extensions, see + Extending + Widgets with the Widget Factory. +

    +
    + + + + + + + + + +
    @@ -572,6 +558,15 @@
    + +
    +

    Extension Points

    + + + +
    +
    +
    @@ -917,6 +912,68 @@ + + + + + + + +
    + +
    + + api-item + + first-item + + + + + + + + + + + +
    + Code examples: + + +

    Invoke the method:

    +
    
    +								
    +									var 
    +									
    +									 = 
    +								
    +								$( ".selector" ).
    +								
    +								( "
    +								
    +								"
    +								
    +									, 
    +									
    +								
    +								 );
    +							
    +
    + +

    +
    
    +								
    +							
    +
    +
    +
    +
    +
    +
    +
    + From 4b9e09a7b02678d9a0ca6ac4d01657c2bb700982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 18 Sep 2013 09:46:42 -0400 Subject: [PATCH 122/241] API docs: Removed extraneous blank line in option examples. --- tasks/jquery-xml/entries2html-base.xsl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 3aa1741..518897e 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -605,8 +605,7 @@

    
     		// getter
    -		var  = $( ".selector" ).( "option", "" );
    -		
    +		var  = $( ".selector" ).( "option", "" );
     
     		// setter
     		$( ".selector" ).( "option", "",  );
    
    From 42ea7886131609db33916fc38b025bcdfe228bb3 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= 
    Date: Wed, 18 Sep 2013 09:48:03 -0400
    Subject: [PATCH 123/241] API docs: Removed underline class from headers; no
     longer used on sites.
    
    ---
     tasks/jquery-xml/entries2html-base.xsl | 10 +++++-----
     1 file changed, 5 insertions(+), 5 deletions(-)
    
    diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl
    index 518897e..8cb6b7d 100644
    --- a/tasks/jquery-xml/entries2html-base.xsl
    +++ b/tasks/jquery-xml/entries2html-base.xsl
    @@ -104,7 +104,7 @@
     						
     
     						
    -

    Examples:

    +

    Examples:

    @@ -394,7 +394,7 @@
    -

    Options

    +

    Options

    @@ -452,7 +452,7 @@
    -

    Methods

    +

    Methods

    @@ -470,7 +470,7 @@
    -

    Extension Points

    +

    Extension Points

    The widget is built with the @@ -499,7 +499,7 @@

    -

    Events

    +

    Events

    From 7e5900ec9c9e54c3356413827aa930ac3bbbab34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 20 Sep 2013 16:24:24 -0400 Subject: [PATCH 124/241] 0.10.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a461103..a5420d0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.10.3", + "version": "0.10.4", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 2641e47c8e7cd02e432065b9418e32703c48e78a Mon Sep 17 00:00:00 2001 From: Karl Swedberg Date: Tue, 24 Sep 2013 14:49:08 -0400 Subject: [PATCH 125/241] Change no-arg signature text to "This signature" when multiple sigs --- tasks/jquery-xml/entries2html-base.xsl | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 8cb6b7d..f876ab3 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -812,7 +812,18 @@
      -
    • This method does not accept any arguments.
    • +
    • +
      + + + This signature does not accept any arguments. + + + This method does not accept any arguments. + + +
      +
    From 1a7de0ea4d1570b6ade3f32804e08cb15005cc44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 25 Sep 2013 09:28:53 -0400 Subject: [PATCH 126/241] 0.10.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a5420d0..ea1eecd 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.10.4", + "version": "0.10.5", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From a5b5f820e7ca501ced46df39600f686c875a87be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 11 Oct 2013 10:31:55 -0400 Subject: [PATCH 127/241] API Sites: Added support for rest parameters. --- tasks/jquery-xml/entries2html-base.xsl | 1 + 1 file changed, 1 insertion(+) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index f876ab3..bc207db 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -798,6 +798,7 @@ , ] + [, ... ]
    From ebf7cfcbf33d342c68d712445e28bc3566531b90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 11 Oct 2013 10:32:09 -0400 Subject: [PATCH 128/241] 0.10.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ea1eecd..9043071 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.10.5", + "version": "0.10.6", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From a9ee5b0e421fea47b83470e196a9a0fb23b596e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Sun, 13 Oct 2013 15:46:14 -0400 Subject: [PATCH 129/241] API Sites: Document return value for widget methods that don't have an explicit return value. Fixes jquery/api.jqueryui.com#164. --- tasks/jquery-xml/entries2html-base.xsl | 52 ++++++++++++++++++-------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index bc207db..49821b6 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -762,24 +762,42 @@ - + + + + Returns: - - - - - - - - - or + + + + + + + - - - - - + + + + or + + + + + + + + + + + + + ( + plugin only + ) + + + @@ -993,7 +1011,9 @@ - + + +
    From 3cb76069cf4c59ca93feca255fb93ac5c7735013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Sun, 13 Oct 2013 17:44:56 -0400 Subject: [PATCH 130/241] Removed widget-method-examples variable; all sites should have examples. --- tasks/jquery-xml/entries2html-base.xsl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 49821b6..de90faa 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -5,8 +5,6 @@ - - @@ -947,7 +945,7 @@ + select="not(../@suppress-auto-examples) and name(..) = 'methods'"/>
    From f6e10e0e0d9a8cd918de535891d44339741c02ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 22 Oct 2013 10:46:51 -0400 Subject: [PATCH 131/241] API Sites: Handle categories with only one child. --- tasks/build-xml.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tasks/build-xml.js b/tasks/build-xml.js index 5ad1698..ff1a85b 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -184,6 +184,21 @@ grunt.registerTask( "build-xml-categories", function() { return; } + // xml2json can't determine when to use an array if there is only one child, + // so we need to ensure all child terms are stored in an array + var taxonomies = grunt.file.readJSON( targetPath ); + function normalize( term ) { + if ( term.children && term.children.item ) { + term.children = [ term.children.item ]; + } + + if ( term.children ) { + term.children.forEach( normalize ); + } + } + taxonomies.category.forEach( normalize ); + grunt.file.write( targetPath, JSON.stringify( taxonomies ) ); + // Syntax highlight code blocks function highlightDescription( category ) { if ( category.description ) { From 632abaa115758778f75bff7d0e1e2f759263e4af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 22 Oct 2013 10:47:07 -0400 Subject: [PATCH 132/241] 0.10.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9043071..3557c1f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.10.6", + "version": "0.10.7", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 991b66ddef6e34cf7809b014c3358acaf543418e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 18 Nov 2013 13:55:12 -0500 Subject: [PATCH 133/241] API Sites: Detect errors with XML includes. --- tasks/build-xml.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tasks/build-xml.js b/tasks/build-xml.js index ff1a85b..5d1c416 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -120,10 +120,17 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an cmd: "xsltproc", args: [ "--xinclude", "entries2html.xsl", fileName ] }, function( err, content ) { + + // Certain errors won't cause the tranform to fail. For example, a + // broken include will write to stderr, but still exit cleanly. + if ( content.stderr && !err ) { + err = new Error( content.stderr ); + } + if ( err ) { grunt.verbose.error(); grunt.log.error( err ); - fileDone(); + fileDone( err ); return; } grunt.verbose.ok(); From 11eee2f94fe82712ca87b4138759db93d1888451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 18 Nov 2013 13:55:46 -0500 Subject: [PATCH 134/241] 0.10.8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3557c1f..a436889 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.10.7", + "version": "0.10.8", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From b0d545b9b431e733a63f2bcabfcdec2e033f671e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20B=C3=B6hm?= Date: Mon, 25 Nov 2013 11:55:13 -0500 Subject: [PATCH 135/241] API Sites: Added ability to use overrides/placeholders in attribute values. Partial fix for jquery/api.jqueryui.com#186. --- tasks/jquery-xml/entries2html-base.xsl | 27 +++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index de90faa..452f5b4 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -413,7 +413,7 @@
    Default: - +
    @@ -1124,6 +1124,31 @@ placeholder with @foo from the --> + + + + + + + + + + + + + + + + + + + + + "" From 443ee5c32cc79ae9b7054fd8244c435f0ecdc191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 25 Nov 2013 11:56:05 -0500 Subject: [PATCH 136/241] 0.10.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a436889..ac5837c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.10.8", + "version": "0.10.9", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 4ed57ec7a68b5f8d5bcd319734cdadacb1b60d43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20B=C3=B6hm?= Date: Tue, 26 Nov 2013 08:32:22 -0500 Subject: [PATCH 137/241] API Sites: Simplified implementation for attribute value overrides. --- tasks/jquery-xml/entries2html-base.xsl | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 452f5b4..63e9816 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -1125,30 +1125,25 @@ placeholder with @foo from the --> - - - - - + + + - - + + - + - - - - "" From 2d26e06d64336996b899d5cab31ae70c8c3a5e25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 26 Nov 2013 08:32:42 -0500 Subject: [PATCH 138/241] 0.10.10 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ac5837c..0f02d6d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.10.9", + "version": "0.10.10", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 989d12464f5a52dd4de4e2eb177e273a4597041e Mon Sep 17 00:00:00 2001 From: Anne-Gaelle Colom Date: Mon, 16 Dec 2013 14:13:57 +0000 Subject: [PATCH 139/241] Build: Fixed generated comments for placeholders --- tasks/build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/build.js b/tasks/build.js index 90722ae..740779d 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -5,7 +5,7 @@ function htmlEscape( text ) { return text // supports keeping markup in source file, but drop from inline sample .replace( /[\s\S]+@placeholder-end -->/g, function( match, input ) { - return "<-- " + input + " -->"; + return ""; }) .replace( /&/g, "&" ) .replace( / Date: Mon, 16 Dec 2013 09:21:41 -0500 Subject: [PATCH 140/241] 0.10.11 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0f02d6d..29955c8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.10.10", + "version": "0.10.11", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 20324b7a128bb1712ab9de4aa17e38b7bc48ec9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 31 Dec 2013 14:43:18 -0500 Subject: [PATCH 141/241] Docs: Added CONTRIBUTING.md --- CONTRIBUTING.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..efe687e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,5 @@ +Welcome! Thanks for your interest in contributing to grunt-jquery-content. You're **almost** in the right place. More information on how to contribute to this and all other jQuery Foundation projects is over at [contribute.jquery.org](http://contribute.jquery.org). You'll definitely want to take a look at the articles on contributing [code](http://contribute.jquery.org/code). + +You may also want to take a look at our [commit & pull request guide](http://contribute.jquery.org/commits-and-pull-requests/) and [style guides](http://contribute.jquery.org/style-guide/) for instructions on how to maintain your fork and submit your code. Before we can merge any pull request, we'll also need you to sign our [contributor license agreement](http://contribute.jquery.org/cla). + +You can find us on [IRC](http://irc.jquery.org), specifically in #jquery-content should you have any questions. If you've never contributed to open source before, we've put together [a short guide with tips, tricks, and ideas on getting started](http://contribute.jquery.org/open-source/). From e586cc90a0c1ebb932e1d9c34a14889d5e74f395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 6 Jan 2014 11:51:56 -0500 Subject: [PATCH 142/241] Markdown: Generate permalinks for headers Ref gh-36 --- tasks/build.js | 52 ++++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/tasks/build.js b/tasks/build.js index 740779d..a59281b 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -239,35 +239,37 @@ grunt.registerHelper( "parse-markdown", function( src, generateToc ) { tokens = marked.lexer( src ), links = tokens.links; - if ( generateToc ) { - tokens.filter(function( item ) { - if ( item.type !== "heading" ) { - return false; - } + tokens.forEach(function( item ) { + if ( item.type !== "heading" ) { + return; + } - // Store original text and create an id for linking - item.tocText = item.text; - item.tocId = item.text - .replace( /\W+/g, "-" ) - .replace( /^-+|-+$/, "" ) - .toLowerCase(); - - // Convert to HTML - item.type = "html"; - item.pre = false; - - // Insert the link - item.text = "" + - "" + - "link" + - " " + item.text + ""; - - return true; - }).forEach(function( item ) { + // Store original text and create an id for linking + var parsedText = marked( item.text ); + parsedText = parsedText.substring( 3, parsedText.length - 5 ); + item.tocText = parsedText.replace( /<[^>]+>/g, "" ); + item.tocId = item.tocText + .replace( /\W+/g, "-" ) + .replace( /^-+|-+$/, "" ) + .toLowerCase(); + + // Convert to HTML + item.type = "html"; + item.pre = false; + + // Insert the link + item.text = "" + + "" + + "link" + + " " + parsedText + ""; + + if ( generateToc ) { toc += new Array( (item.depth - 1) * 2 + 1 ).join( " " ) + "* " + "[" + item.tocText + "](#" + item.tocId + ")\n"; - }); + } + }); + if ( generateToc ) { tokens = marked.lexer( toc ).concat( tokens ); // The TOC never generates links, so we can just copy the links directly // from the original tokens. From 60786035b2fb17ac3920be4d7f64fe689a735965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 6 Jan 2014 11:54:37 -0500 Subject: [PATCH 143/241] 0.11.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 29955c8..3b12e1d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.10.11", + "version": "0.11.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 5255a2217e0d7d8db28cf4cd2797d67ea1d5e756 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 6 Jan 2014 14:06:17 -0500 Subject: [PATCH 144/241] Markdown: Added noHeadingLinks option Some pages are essentailly nothing but a list of headings. Those pages shouldn't have permalinks on the heading since the headings are likely to be links themselves. An example of such a page is the upgrade guide or changelog listing pages. Ref gh-36 --- tasks/build.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tasks/build.js b/tasks/build.js index a59281b..c53cbf3 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -67,7 +67,11 @@ grunt.registerMultiTask( "build-pages", "Process html and markdown files as page // Convert markdown to HTML if ( fileType === "md" ) { - content = grunt.helper( "parse-markdown", content, post.toc ); + content = grunt.helper( "parse-markdown", content, { + generateLinks: post.toc || !post.noHeadingLinks, + generateToc: post.toc + }); + delete post.noHeadingLinks; delete post.toc; } @@ -233,12 +237,16 @@ grunt.registerHelper( "syntax-highlight", (function() { }; })() ); -grunt.registerHelper( "parse-markdown", function( src, generateToc ) { +grunt.registerHelper( "parse-markdown", function( src, options ) { var toc = "", marked = require( "marked" ), tokens = marked.lexer( src ), links = tokens.links; + if ( !options.generateLinks ) { + return marked.parser( tokens ); + } + tokens.forEach(function( item ) { if ( item.type !== "heading" ) { return; @@ -263,13 +271,13 @@ grunt.registerHelper( "parse-markdown", function( src, generateToc ) { "link" + " " + parsedText + ""; - if ( generateToc ) { + if ( options.generateToc ) { toc += new Array( (item.depth - 1) * 2 + 1 ).join( " " ) + "* " + "[" + item.tocText + "](#" + item.tocId + ")\n"; } }); - if ( generateToc ) { + if ( options.generateToc ) { tokens = marked.lexer( toc ).concat( tokens ); // The TOC never generates links, so we can just copy the links directly // from the original tokens. From a87f849f34202b7ee0e2d39c1f6fa55f8c31b242 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 6 Jan 2014 14:10:12 -0500 Subject: [PATCH 145/241] 0.11.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3b12e1d..76e2b43 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.11.0", + "version": "0.11.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From b0cbd7f757f01e0deee21ad23b2da28dc717ffb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 14 Apr 2014 11:41:57 -0400 Subject: [PATCH 146/241] Build: Normalize line endings --- .gitattributes | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..b7ca95b --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# JS files must always use LF for tools to work +*.js eol=lf From b1f34f1405e6d50a4ba6af7a0566b22ad1f8b6e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 6 Jun 2014 14:56:59 -0400 Subject: [PATCH 147/241] XML: Update xml2json.xsl Updated to r31 from http://code.google.com/p/xml2json-xslt Restoring to unmodified implementation so that the local modifications can actually be tracked through the history. --- tasks/jquery-xml/xml2json.xsl | 41 ++++++++++++++--------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/tasks/jquery-xml/xml2json.xsl b/tasks/jquery-xml/xml2json.xsl index 14b1519..1fa1030 100644 --- a/tasks/jquery-xml/xml2json.xsl +++ b/tasks/jquery-xml/xml2json.xsl @@ -1,15 +1,9 @@ - + 0123456789 @@ -130,8 +120,9 @@ - - + + "" @@ -139,15 +130,6 @@ true false - - - - - - :null - , - - { @@ -155,7 +137,16 @@ : - + + + + null + + + + + + , } @@ -180,4 +171,4 @@ - + \ No newline at end of file From 313e9f65f78b2dea938d5d83aae66d26e03abdfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 6 Jun 2014 15:01:28 -0400 Subject: [PATCH 148/241] XML: Don't parse numbers when converting to JSON This ensures that version numbers are handled properly. --- tasks/jquery-xml/xml2json.xsl | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tasks/jquery-xml/xml2json.xsl b/tasks/jquery-xml/xml2json.xsl index 1fa1030..ddd6beb 100644 --- a/tasks/jquery-xml/xml2json.xsl +++ b/tasks/jquery-xml/xml2json.xsl @@ -23,6 +23,11 @@ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ==== + + Modified to remove number parsing so that version numbers like 1.0 are not + converted to the number 1, but stay as a string of "1.0". --> @@ -120,12 +125,6 @@ - - - "" - - true false From bbe988cb1588b86209c29b671707e7c49224b4f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 27 May 2014 14:59:28 -0400 Subject: [PATCH 149/241] Build: Update license Closes gh-53 --- LICENSE-MIT | 22 ---------------------- LICENSE.txt | 37 +++++++++++++++++++++++++++++++++++++ package.json | 2 +- 3 files changed, 38 insertions(+), 23 deletions(-) delete mode 100644 LICENSE-MIT create mode 100644 LICENSE.txt diff --git a/LICENSE-MIT b/LICENSE-MIT deleted file mode 100644 index 28a4c2c..0000000 --- a/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 jQuery Foundation, http://jquery.org/ - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..92f19fe --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,37 @@ +Copyright 2012, 2014 jQuery Foundation and other contributors, +https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/grunt-jquery-content + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules directory and +tasks/jquery-xml/xml2json.xsl are externally maintained libraries used +by this software which have their own licenses; we recommend you read +them, as their terms may differ from the terms above. diff --git a/package.json b/package.json index 76e2b43..310e0fc 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "licenses": [ { "type": "MIT", - "url": "https://github.com/jquery/grunt-jquery-content/blob/master/LICENSE-MIT.txt" + "url": "https://github.com/jquery/grunt-jquery-content/blob/master/LICENSE.txt" } ], "main": "grunt.js", From cb17a868a038c20ff56bcf4c36fe3dd486be9cde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 18 Jul 2014 10:08:04 -0400 Subject: [PATCH 150/241] API Sites: Support optional callback arguments Fixes gh-55 --- tasks/jquery-xml/entries2html-base.xsl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 63e9816..ac890b9 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -721,6 +721,7 @@ + [ , @@ -730,6 +731,7 @@ + ] From 6972a3290962b0908c649f790c02a85b49cf5234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 18 Jul 2014 10:08:47 -0400 Subject: [PATCH 151/241] 0.11.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 310e0fc..b8c8d70 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.11.1", + "version": "0.11.2", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 8220a6118a1cd6b12696e4986711ce86fc467525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 23 Jul 2014 14:59:05 -0400 Subject: [PATCH 152/241] API Sites: Support varargs for callbacks Fixes gh-56 Closes gh-57 --- tasks/jquery-xml/entries2html-base.xsl | 1 + 1 file changed, 1 insertion(+) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index ac890b9..ed53d1d 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -732,6 +732,7 @@ ] + [, ... ] From 949c8c3c11c33b1104bb2f123b3bab94239a382a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 24 Jul 2014 11:59:29 -0400 Subject: [PATCH 153/241] 0.11.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b8c8d70..df13897 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.11.2", + "version": "0.11.3", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 8d5e6181df033ebe4fffa2770bfe72b774c0bfb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 19 Aug 2014 16:18:14 -0400 Subject: [PATCH 154/241] Build: Upgrade to marked 0.3.2 https://nodesecurity.io/advisories/marked_multiple_content_injection_vulnerabilities Ref gh-59 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index df13897..265bde7 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "he": "0.1.2", "highlight.js": "7.3.0", "js-yaml": "2.0.1", - "marked": "0.2.9", + "marked": "0.3.2", "rimraf": "2.0.2", "which": "1.0.5" }, From 400da29c75a06408e77fb3a390003ac07d03db0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 19 Aug 2014 16:21:29 -0400 Subject: [PATCH 155/241] Build: Upgrade to js-yaml 3.1.0 Use `.safeLoad()` instead of `.load()`. https://nodesecurity.io/advisories/JS-YAML_Deserialization_Code_Execution Closes gh-59 --- package.json | 2 +- tasks/build.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 265bde7..7951f51 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "grunt-wordpress": "1.0.7", "he": "0.1.2", "highlight.js": "7.3.0", - "js-yaml": "2.0.1", + "js-yaml": "3.1.0", "marked": "0.3.2", "rimraf": "2.0.2", "which": "1.0.5" diff --git a/tasks/build.js b/tasks/build.js index c53cbf3..7610df7 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -29,7 +29,7 @@ grunt.registerHelper( "wordpress-parse-post-flex", function( path ) { if ( content.substring( 0, 4 ) === "---\n" ) { try { index = content.indexOf( "\n---\n" ); - post = yaml.load( content.substr( 4, index - 4 ) ); + post = yaml.safeLoad( content.substr( 4, index - 4 ) ); content = content.substr( index + 5 ); } catch( error ) { grunt.log.error( "Invalid YAML metadata for " + path ); From e93f801ea43246f9f279e5b6e09ef454a181b539 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 19 Aug 2014 16:25:59 -0400 Subject: [PATCH 156/241] 0.12.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7951f51..7131d8f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.11.3", + "version": "0.12.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 8bfefceed1e428bb6b980bf9cd3207500d470b5f Mon Sep 17 00:00:00 2001 From: Gary Wu Date: Mon, 11 Aug 2014 11:01:07 -0500 Subject: [PATCH 157/241] Normalize line endings in posts for proper support of Windows Closes gh-58 --- tasks/build.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tasks/build.js b/tasks/build.js index 7610df7..8dbf95f 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -17,7 +17,8 @@ function htmlEscape( text ) { var cheerio = require( "cheerio" ), hljs = require( "highlight.js" ), he = require( "he" ), - yaml = require( "js-yaml" ); + yaml = require( "js-yaml" ), + os = require( "os" ); // Add a wrapper around wordpress-parse-post that supports YAML grunt.registerHelper( "wordpress-parse-post-flex", function( path ) { @@ -25,6 +26,11 @@ grunt.registerHelper( "wordpress-parse-post-flex", function( path ) { post = {}, content = grunt.file.read( path ); + // Normalize line endings + if ( os.EOL !== "\n" ) { + content = content.replace( new RegExp( os.EOL, "g" ), "\n" ); + } + // Check for YAML metadata if ( content.substring( 0, 4 ) === "---\n" ) { try { From 47e5b8dfcafb4b1aeb33fb6383dc95fc5b2d0dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Sat, 13 Sep 2014 11:20:55 -0500 Subject: [PATCH 158/241] Build: Upgrade to grunt-wordpress 1.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7131d8f..235bb47 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ }, "dependencies": { "cheerio": "0.8.3", - "grunt-wordpress": "1.0.7", + "grunt-wordpress": "1.1.0", "he": "0.1.2", "highlight.js": "7.3.0", "js-yaml": "3.1.0", From 59f27407ee9e909c4a4d035834bee2c4ef009094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Sat, 13 Sep 2014 11:21:22 -0500 Subject: [PATCH 159/241] 0.12.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 235bb47..9f3609e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.12.0", + "version": "0.12.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 17328f475977d90c6f2ccd2e77321de01df7a8e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 30 Sep 2014 14:37:53 -0400 Subject: [PATCH 160/241] Build: Upgrade to grunt-wordpress 1.2.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9f3609e..3e969bc 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ }, "dependencies": { "cheerio": "0.8.3", - "grunt-wordpress": "1.1.0", + "grunt-wordpress": "1.2.1", "he": "0.1.2", "highlight.js": "7.3.0", "js-yaml": "3.1.0", From 542d7565ac85da3e535d89c0d34750ce8f49a60c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 30 Sep 2014 14:38:02 -0400 Subject: [PATCH 161/241] 0.13.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3e969bc..6ce7f58 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.12.1", + "version": "0.13.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From f4d81fbf9651967d3fe80b9f3dad6f2753e438d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 5 Nov 2014 08:23:29 -0500 Subject: [PATCH 162/241] API Sites: Allow multi-line option examples --- tasks/jquery-xml/entries2html-base.xsl | 44 ++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index ed53d1d..68fe9de 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -435,7 +435,7 @@ - + @@ -585,7 +585,13 @@

    Initialize the with the option specified:

    
    -		$( ".selector" ).({ :  });
    +		$( ".selector" ).
    +		
    +		({
    	
    +		
    +		: 
    +		
    +		
    });
     	

    @@ -602,11 +608,35 @@ option, after initialization:

    
    -		// getter
    -		var  = $( ".selector" ).( "option", "" );
    -
    -		// setter
    -		$( ".selector" ).( "option", "",  );
    +		// Getter
    
    +		var 
    +		
    +		 = $( ".selector" ).
    +		
    +		( "option", "
    +		
    +		" );
    +
    +		
    +			
    
    
    +			// Setter
    
    +			$( ".selector" ).
    +			
    +			( "option", "
    +			
    +			", 
    +			
    +				
    +					
    +					 
    +				
    +				
    +					
    	
    +					
    +					
    
    +				
    +			
    +			);
     		
     	
    From f670f535302d350af5119a07add410f01e595ee1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 5 Nov 2014 09:26:32 -0500 Subject: [PATCH 163/241] API Sites: Fix handling of XML content --- tasks/build-xml.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasks/build-xml.js b/tasks/build-xml.js index 5d1c416..9a4212b 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -133,6 +133,8 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an fileDone( err ); return; } + + content = content.stdout; grunt.verbose.ok(); var targetFileName = targetDir + path.basename( fileName, ".xml" ) + ".html"; From 89ef0219c70155041be5faaa6f8447b1701fa1d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 5 Nov 2014 09:27:32 -0500 Subject: [PATCH 164/241] Build: Upgrade to cheerio 0.17.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6ce7f58..9a3dfda 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "node": "*" }, "dependencies": { - "cheerio": "0.8.3", + "cheerio": "0.17.0", "grunt-wordpress": "1.2.1", "he": "0.1.2", "highlight.js": "7.3.0", From d15b6394b22cc4179bc5c2face65dd18f3a742aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 5 Nov 2014 09:28:22 -0500 Subject: [PATCH 165/241] Build: Upgrade to he 0.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9a3dfda..829bab1 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dependencies": { "cheerio": "0.17.0", "grunt-wordpress": "1.2.1", - "he": "0.1.2", + "he": "0.5.0", "highlight.js": "7.3.0", "js-yaml": "3.1.0", "marked": "0.3.2", From 45dcee5495702e4ba17d0d3634a54d3588a13b4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 5 Nov 2014 09:31:34 -0500 Subject: [PATCH 166/241] Build: Upgrade to rimraf 2.2.8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 829bab1..8444f3d 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "highlight.js": "7.3.0", "js-yaml": "3.1.0", "marked": "0.3.2", - "rimraf": "2.0.2", + "rimraf": "2.2.8", "which": "1.0.5" }, "devDependencies": { From 06f246dcfe6d4747410523c65f80c213fc49d444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 6 Nov 2014 09:09:17 -0500 Subject: [PATCH 167/241] Posts: Remove support for YAML front matter --- package.json | 1 - tasks/build.js | 33 +-------------------------------- 2 files changed, 1 insertion(+), 33 deletions(-) diff --git a/package.json b/package.json index 8444f3d..a554afd 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,6 @@ "grunt-wordpress": "1.2.1", "he": "0.5.0", "highlight.js": "7.3.0", - "js-yaml": "3.1.0", "marked": "0.3.2", "rimraf": "2.2.8", "which": "1.0.5" diff --git a/tasks/build.js b/tasks/build.js index 8dbf95f..df2403d 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -17,39 +17,8 @@ function htmlEscape( text ) { var cheerio = require( "cheerio" ), hljs = require( "highlight.js" ), he = require( "he" ), - yaml = require( "js-yaml" ), os = require( "os" ); -// Add a wrapper around wordpress-parse-post that supports YAML -grunt.registerHelper( "wordpress-parse-post-flex", function( path ) { - var index, - post = {}, - content = grunt.file.read( path ); - - // Normalize line endings - if ( os.EOL !== "\n" ) { - content = content.replace( new RegExp( os.EOL, "g" ), "\n" ); - } - - // Check for YAML metadata - if ( content.substring( 0, 4 ) === "---\n" ) { - try { - index = content.indexOf( "\n---\n" ); - post = yaml.safeLoad( content.substr( 4, index - 4 ) ); - content = content.substr( index + 5 ); - } catch( error ) { - grunt.log.error( "Invalid YAML metadata for " + path ); - return null; - } - - post.content = content; - return post; - } - - // Fall back to standard JSON parsing - return grunt.helper( "wordpress-parse-post", path ); -}); - grunt.registerMultiTask( "build-pages", "Process html and markdown files as pages, include @partials and syntax higlight code snippets", function() { var task = this, taskDone = task.async(), @@ -60,7 +29,7 @@ grunt.registerMultiTask( "build-pages", "Process html and markdown files as page grunt.utils.async.forEachSeries( files, function( fileName, fileDone ) { var content, - post = grunt.helper( "wordpress-parse-post-flex", fileName ), + post = grunt.helper( "wordpress-parse-post", fileName ), fileType = /\.(\w+)$/.exec( fileName )[ 1 ], targetFileName = targetDir + fileName.replace( /^.+?\/(.+)\.\w+$/, "$1" ) + ".html"; From 3aff80d9a1753d48d14ccc8983b046814f09a2ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 6 Nov 2014 11:04:33 -0500 Subject: [PATCH 168/241] Build: Fix lint errors --- tasks/build-xml.js | 2 -- tasks/build.js | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/tasks/build-xml.js b/tasks/build-xml.js index 9a4212b..160744a 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -184,8 +184,6 @@ grunt.registerTask( "build-xml-categories", function() { args: [ "--output", targetPath, grunt.task.getFile( "jquery-xml/xml2json.xsl" ), "taxonomies.xml" ] }, function( error ) { - var taxonomies; - if ( error ) { grunt.verbose.error(); grunt.log.error( error ); diff --git a/tasks/build.js b/tasks/build.js index df2403d..9ff67e3 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -16,8 +16,7 @@ function htmlEscape( text ) { var cheerio = require( "cheerio" ), hljs = require( "highlight.js" ), - he = require( "he" ), - os = require( "os" ); + he = require( "he" ); grunt.registerMultiTask( "build-pages", "Process html and markdown files as pages, include @partials and syntax higlight code snippets", function() { var task = this, From 7818a7b407b1ac6a7b5876eb91b353212b4a8f37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 6 Nov 2014 11:04:37 -0500 Subject: [PATCH 169/241] 0.14.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a554afd..873e5c8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.13.0", + "version": "0.14.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation" From 304088ab16c3bc3016e9c9e28bccc805a97561cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 1 Dec 2014 15:42:50 -0500 Subject: [PATCH 170/241] Build: Upgrade to Grunt 0.4.5 * Switched to Grunt 0.4 API * Upgraded to grunt-contrib-jshint 0.10.0 * Switched from grunt-wordpress to Gilded WordPress * Reorganized most of the code * Added .jshintrc --- .jshintrc | 17 ++ Gruntfile.js | 20 ++ grunt.js | 36 --- lib/highlight.js | 102 ++++++++ .../lineNumberTemplate.jst | 0 lib/util.js | 93 +++++++ package.json | 6 +- tasks/build-xml.js | 122 +++++----- tasks/build.js | 230 +++--------------- 9 files changed, 324 insertions(+), 302 deletions(-) create mode 100644 .jshintrc create mode 100644 Gruntfile.js delete mode 100644 grunt.js create mode 100644 lib/highlight.js rename {tasks/jquery-build => lib}/lineNumberTemplate.jst (100%) create mode 100644 lib/util.js diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..d34c42d --- /dev/null +++ b/.jshintrc @@ -0,0 +1,17 @@ +{ + "boss": true, + "curly": true, + "eqeqeq": true, + "eqnull": true, + "expr": true, + "immed": true, + "noarg": true, + "onevar": true, + "quotmark": "double", + "smarttabs": true, + "trailing": true, + "undef": true, + "unused": true, + + "node": true +} diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..0e77a9a --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,20 @@ +module.exports = function( grunt ) { + +grunt.loadNpmTasks( "grunt-contrib-jshint" ); + +grunt.initConfig({ + watch: { + files: "", + tasks: "default" + }, + jshint: { + options: { + jshintrc: true + }, + files: [ "Gruntfile.js", "tasks/**/*.js" ] + } +}); + +grunt.registerTask( "default", "jshint" ); + +}; diff --git a/grunt.js b/grunt.js deleted file mode 100644 index 76f4528..0000000 --- a/grunt.js +++ /dev/null @@ -1,36 +0,0 @@ -module.exports = function( grunt ) { -"use strict"; - -grunt.initConfig({ - lint: { - files: [ "grunt.js", "tasks/**/*.js" ] - }, - watch: { - files: "", - tasks: "default" - }, - jshint: { - options: { - boss: true, - curly: true, - eqeqeq: true, - eqnull: true, - expr: true, - immed: true, - noarg: true, - onevar: true, - quotmark: "double", - smarttabs: true, - trailing: true, - undef: true, - unused: true, - - node: true - } - } -}); - -grunt.loadTasks( "tasks" ); -grunt.registerTask( "default", "lint" ); - -}; diff --git a/lib/highlight.js b/lib/highlight.js new file mode 100644 index 0000000..beedf71 --- /dev/null +++ b/lib/highlight.js @@ -0,0 +1,102 @@ +var fs = require( "fs" ), + hljs = require( "highlight.js" ), + cheerio = require( "cheerio" ), + he = require( "he" ), + grunt = require( "grunt" ), + lineNumberTemplate = fs.readFileSync( __dirname + "/lineNumberTemplate.jst", "utf-8" ); + +// When parsing the class attribute, make sure a class matches an actually +// highlightable language, instead of being presentational (e.g. 'example') +function getLanguageFromClass( str ) { + var classes = (str || "").split( " " ), + i = 0, + length = classes.length; + + for ( ; i < length; i++ ) { + if ( hljs.LANGUAGES[ classes[ i ].replace( /^lang-/, "" ) ] ) { + return classes[i].replace( /^lang-/, "" ); + } + } + + return ""; +} + +function outdent( string ) { + var rOutdent, + adjustedLines = [], + minTabs = Infinity, + rLeadingTabs = /^\t+/; + + string.split( "\n" ).forEach(function( line, i, arr ) { + + // Don't include first or last line if it's nothing but whitespace + if ( (i === 0 || i === arr.length - 1) && !line.trim().length ) { + return; + } + + // For empty lines inside the snippet, push a space so the line renders properly + if ( !line.trim().length ) { + adjustedLines.push(" "); + return; + } + + // Count how many leading tabs there are and update the global minimum + var match = line.match( rLeadingTabs ), + tabs = match ? match[0].length : 0; + minTabs = Math.min( minTabs, tabs ); + + adjustedLines.push( line ); + }); + + if ( minTabs !== Infinity ) { + + // Outdent the lines as much as possible + rOutdent = new RegExp( "^\t{" + minTabs + "}" ); + adjustedLines = adjustedLines.map(function( line ) { + return line.replace( rOutdent, "" ); + }); + } + + return adjustedLines.join( "\n" ); +} + +function syntaxHighlight( html ) { + var $ = cheerio.load( html ); + + $( "pre > code" ).each(function() { + var $t = $( this ), + code = he.decode( outdent( $t.html() ) ), + lang = $t.attr( "data-lang" ) || + getLanguageFromClass( $t.attr( "class" ) ) || + (code.trim().charAt( 0 ) === "<" ? "xml" : "") || + "javascript", + linenumAttr = $t.attr( "data-linenum" ), + linenum = (linenumAttr === "true" ? 1 : parseInt( linenumAttr, 10 ) ) || 1, + gutter = linenumAttr === undefined ? false : true, + highlighted = hljs.highlight( lang, code ), + fixed = hljs.fixMarkup( highlighted.value, " " ); + + // Handle multi-line comments (#32) + fixed = fixed.replace( + /\/\*([^<]+)\*\/<\/span>/g, + function( full, comment ) { + return "/*" + + comment.split( "\n" ).join( "\n" ) + + "*/"; + } + ); + + $t.parent().replaceWith( grunt.template.process( lineNumberTemplate, { + data: { + lines: fixed.split( "\n" ), + startAt: linenum, + gutter: gutter, + lang: lang + } + })); + }); + + return $.html(); +} + +module.exports = syntaxHighlight; diff --git a/tasks/jquery-build/lineNumberTemplate.jst b/lib/lineNumberTemplate.jst similarity index 100% rename from tasks/jquery-build/lineNumberTemplate.jst rename to lib/lineNumberTemplate.jst diff --git a/lib/util.js b/lib/util.js new file mode 100644 index 0000000..71b91a1 --- /dev/null +++ b/lib/util.js @@ -0,0 +1,93 @@ +var marked = require( "marked" ), + grunt = require( "grunt" ), + async = require( "async" ); + +function htmlEscape( text ) { + return text + + // Supports keeping markup in source file, but drop from inline sample + .replace( + /[\s\S]+@placeholder-end -->/g, + function( match, input ) { + return ""; + } + ) + .replace( /&/g, "&" ) + .replace( //g, ">" ) + .replace( /"/g, """ ) + .replace( /'/g, "'" ); +} + +function parseMarkdown( src, options ) { + var toc = "", + tokens = marked.lexer( src ), + links = tokens.links; + + if ( !options.generateLinks ) { + return marked.parser( tokens ); + } + + tokens.forEach(function( item ) { + if ( item.type !== "heading" ) { + return; + } + + // Store original text and create an id for linking + var parsedText = marked( item.text ); + parsedText = parsedText.substring( 3, parsedText.length - 5 ); + item.tocText = parsedText.replace( /<[^>]+>/g, "" ); + item.tocId = item.tocText + .replace( /\W+/g, "-" ) + .replace( /^-+|-+$/, "" ) + .toLowerCase(); + + // Convert to HTML + item.type = "html"; + item.pre = false; + + // Insert the link + item.text = "" + + "
    " + + "link" + + " " + parsedText + ""; + + if ( options.generateToc ) { + toc += new Array( (item.depth - 1) * 2 + 1 ).join( " " ) + "* " + + "[" + item.tocText + "](#" + item.tocId + ")\n"; + } + }); + + if ( options.generateToc ) { + tokens = marked.lexer( toc ).concat( tokens ); + + // The TOC never generates links, so we can just copy the links directly + // from the original tokens. + tokens.links = links; + } + + return marked.parser( tokens ); +} + +function eachFile( files, stepFn, complete ) { + var count = 0; + + async.forEachSeries( files, function( fileName, fileDone ) { + if ( !grunt.file.isFile( fileName ) ) { + return fileDone(); + } + + count++; + stepFn( fileName, fileDone ); + }, function( error ) { + if ( error ) { + return complete( error ); + } + + complete( null, count ); + }); +} + +exports.htmlEscape = htmlEscape; +exports.parseMarkdown = parseMarkdown; +exports.eachFile = eachFile; diff --git a/package.json b/package.json index 873e5c8..c7f0886 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,9 @@ "node": "*" }, "dependencies": { + "async": "0.9.0", "cheerio": "0.17.0", - "grunt-wordpress": "1.2.1", + "gilded-wordpress": "1.0.0", "he": "0.5.0", "highlight.js": "7.3.0", "marked": "0.3.2", @@ -33,7 +34,8 @@ "which": "1.0.5" }, "devDependencies": { - "grunt": "0.3.17" + "grunt": "0.4.5", + "grunt-contrib-jshint": "0.10.0" }, "keywords": [ "gruntplugin" diff --git a/tasks/build-xml.js b/tasks/build-xml.js index 160744a..be996dc 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -1,9 +1,10 @@ module.exports = function( grunt ) { -"use strict"; var fs = require( "fs" ), path = require( "path" ), - which = require( "which" ); + which = require( "which" ), + util = require( "../lib/util" ), + syntaxHighlight = require( "../lib/highlight" ); function checkLibxml2( executable ) { try { @@ -28,76 +29,73 @@ function checkXsltproc() { grunt.registerMultiTask( "xmllint", "Lint xml files", function() { var task = this, - taskDone = task.async(), - files = this.data; + taskDone = task.async(); if ( !checkXmllint() ) { - taskDone( false ); + return taskDone( false ); } - grunt.utils.async.forEachSeries( this.data, function( fileName, fileDone ) { + util.eachFile( this.filesSrc, function( fileName, fileDone ) { grunt.verbose.write( "Linting " + fileName + "..." ); - grunt.utils.spawn({ + grunt.util.spawn({ cmd: "xmllint", args: [ "--noout", fileName ] }, function( error ) { if ( error ) { grunt.verbose.error(); grunt.log.error( error ); - fileDone(); - return; + return fileDone(); } + grunt.verbose.ok(); fileDone(); }); - }, function() { + }, function( error, count ) { if ( task.errorCount ) { grunt.warn( "Task \"" + task.name + "\" failed." ); - taskDone(); - return; + return taskDone(); } - grunt.log.writeln( "Lint free files: " + files.length ); + + grunt.log.writeln( "Lint free files: " + count ); taskDone(); }); }); grunt.registerMultiTask( "xmltidy", "Tidy xml files - changes source files!", function() { var task = this, - taskDone = task.async(), - files = this.data; + taskDone = task.async(); // Only tidy files that are lint free task.requires( "xmllint" ); if ( !checkXmllint() ) { - taskDone( false ); + return taskDone( false ); } - grunt.utils.async.forEachSeries( files, function( fileName, fileDone ) { + util.eachFile( this.filesSrc, function( fileName, fileDone ) { grunt.verbose.write( "Tidying " + fileName + "..." ); - grunt.utils.spawn({ + grunt.util.spawn({ cmd: "xmllint", args: [ "--format", fileName ] - }, function( err, result ) { - if ( err ) { + }, function( error, result ) { + if ( error ) { grunt.verbose.error(); - grunt.log.error( err ); - fileDone(); - return; + grunt.log.error( error ); + return fileDone(); } - grunt.verbose.ok(); + grunt.verbose.ok(); grunt.file.write( fileName, result ); fileDone(); }); - }, function() { + }, function( error, count ) { if ( task.errorCount ) { grunt.warn( "Task \"" + task.name + "\" failed." ); - taskDone(); - return; + return taskDone(); } - grunt.log.writeln( "Tidied " + files.length + " files." ); + + grunt.log.writeln( "Tidied " + count + " files." ); taskDone(); }); }); @@ -105,33 +103,31 @@ grunt.registerMultiTask( "xmltidy", "Tidy xml files - changes source files!", fu grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl and syntax highlight", function() { var task = this, taskDone = task.async(), - files = this.data, targetDir = grunt.config( "wordpress.dir" ) + "/posts/post/"; if ( !checkXsltproc() ) { - taskDone( false ); + return taskDone( false ); } grunt.file.mkdir( targetDir ); - grunt.utils.async.forEachSeries( files, function( fileName, fileDone ) { + util.eachFile( this.filesSrc, function( fileName, fileDone ) { grunt.verbose.write( "Transforming " + fileName + "..." ); - grunt.utils.spawn({ + grunt.util.spawn({ cmd: "xsltproc", args: [ "--xinclude", "entries2html.xsl", fileName ] - }, function( err, content ) { + }, function( error, content ) { // Certain errors won't cause the tranform to fail. For example, a // broken include will write to stderr, but still exit cleanly. - if ( content.stderr && !err ) { - err = new Error( content.stderr ); + if ( content.stderr && !error ) { + error = new Error( content.stderr ); } - if ( err ) { + if ( error ) { grunt.verbose.error(); - grunt.log.error( err ); - fileDone( err ); - return; + grunt.log.error( error ); + return fileDone( error ); } content = content.stdout; @@ -141,20 +137,19 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an // Syntax highlight code blocks if ( !grunt.option( "nohighlight" ) ) { - content = grunt.helper( "syntax-highlight", { content: content } ); + content = syntaxHighlight( content ); } grunt.file.write( targetFileName, content ); fileDone(); }); - }, function() { + }, function( error, count ) { if ( task.errorCount ) { grunt.warn( "Task \"" + task.name + "\" failed." ); - taskDone(); - return; + return taskDone(); } - grunt.log.writeln( "Built " + files.length + " entries." ); + grunt.log.writeln( "Built " + count + " entries." ); taskDone(); }); }); @@ -164,31 +159,29 @@ grunt.registerTask( "build-xml-categories", function() { targetPath = grunt.config( "wordpress.dir" ) + "/taxonomies.json"; if ( !checkXsltproc() ) { - taskDone( false ); + return taskDone( false ); } - grunt.utils.spawn({ + grunt.util.spawn({ cmd: "xsltproc", args: [ "--output", "taxonomies.xml", - grunt.task.getFile( "jquery-xml/cat2tax.xsl" ), "categories.xml" ] + path.join( __dirname, "jquery-xml/cat2tax.xsl" ), "categories.xml" ] }, function( error ) { if ( error ) { grunt.verbose.error(); grunt.log.error( error ); - taskDone(); - return; + return taskDone(); } - grunt.utils.spawn({ + grunt.util.spawn({ cmd: "xsltproc", args: [ "--output", targetPath, - grunt.task.getFile( "jquery-xml/xml2json.xsl" ), "taxonomies.xml" ] + path.join( __dirname, "jquery-xml/xml2json.xsl" ), "taxonomies.xml" ] }, function( error ) { if ( error ) { grunt.verbose.error(); grunt.log.error( error ); - taskDone(); - return; + return taskDone(); } // xml2json can't determine when to use an array if there is only one child, @@ -209,8 +202,7 @@ grunt.registerTask( "build-xml-categories", function() { // Syntax highlight code blocks function highlightDescription( category ) { if ( category.description ) { - category.description = grunt.helper( "syntax-highlight", - { content: category.description } ); + category.description = syntaxHighlight( category.description ); } } @@ -240,34 +232,34 @@ grunt.registerTask( "build-xml-full", function() { var taskDone = this.async(); if ( !checkXsltproc() ) { - taskDone( false ); + return taskDone( false ); } - grunt.file.copy( grunt.task.getFile( "jquery-xml/all-entries.xml" ), "all-entries.xml", { + grunt.file.copy( path.join( __dirname, "jquery-xml/all-entries.xml" ), "all-entries.xml", { process: function( content ) { return content.replace( "", - grunt.file.expandFiles( "entries/*.xml" ).map(function( entry ) { + grunt.file.expand( "entries/*.xml" ).map(function( entry ) { return ""; }).join( "\n" ) ); } }); - grunt.utils.spawn({ + grunt.util.spawn({ cmd: "xsltproc", args: [ "--xinclude", "--path", process.cwd(), // "--output", grunt.config( "wordpress.dir" ) + "/resources/api.xml", - grunt.task.getFile( "jquery-xml/all-entries.xsl" ), "all-entries.xml" ] - }, function( err, result ) { + path.join( __dirname, "jquery-xml/all-entries.xsl" ), "all-entries.xml" ] + }, function( error, result ) { + // For some reason using --output with xsltproc kills the --xinclude option, // so we let it write to stdout, then save it to a file grunt.file.write( grunt.config( "wordpress.dir" ) + "/resources/api.xml", result ); fs.unlinkSync( "all-entries.xml" ); - if ( err ) { + if ( error ) { grunt.verbose.error(); - grunt.log.error( err ); - taskDone( false ); - return; + grunt.log.error( error ); + return taskDone( false ); } taskDone(); diff --git a/tasks/build.js b/tasks/build.js index 9ff67e3..b0f00f4 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -1,47 +1,35 @@ module.exports = function( grunt ) { -"use strict"; -function htmlEscape( text ) { - return text - // supports keeping markup in source file, but drop from inline sample - .replace( /[\s\S]+@placeholder-end -->/g, function( match, input ) { - return ""; - }) - .replace( /&/g, "&" ) - .replace( //g, ">" ) - .replace( /"/g, """ ) - .replace( /'/g, "'" ); -} - -var cheerio = require( "cheerio" ), - hljs = require( "highlight.js" ), - he = require( "he" ); +var wordpress = require( "gilded-wordpress" ), + util = require( "../lib/util" ), + syntaxHighlight = require( "../lib/highlight" ); grunt.registerMultiTask( "build-pages", "Process html and markdown files as pages, include @partials and syntax higlight code snippets", function() { var task = this, taskDone = task.async(), - files = this.data, + wordpressClient = wordpress.createClient( grunt.config( "wordpress" ) ), targetDir = grunt.config( "wordpress.dir" ) + "/posts/page/"; grunt.file.mkdir( targetDir ); - grunt.utils.async.forEachSeries( files, function( fileName, fileDone ) { - var content, - post = grunt.helper( "wordpress-parse-post", fileName ), - fileType = /\.(\w+)$/.exec( fileName )[ 1 ], - targetFileName = targetDir + - fileName.replace( /^.+?\/(.+)\.\w+$/, "$1" ) + ".html"; - + util.eachFile( this.filesSrc, function( fileName, fileDone ) { grunt.verbose.write( "Processing " + fileName + "..." ); - function processPost() { - content = post.content; + wordpressClient.parsePost( fileName, function( error, post ) { + if ( error ) { + return fileDone( error ); + } + + var content = post.content, + fileType = /\.(\w+)$/.exec( fileName )[ 1 ], + targetFileName = targetDir + + fileName.replace( /^.+?\/(.+)\.\w+$/, "$1" ) + ".html"; + delete post.content; // Convert markdown to HTML if ( fileType === "md" ) { - content = grunt.helper( "parse-markdown", content, { + content = util.parseMarkdown( content, { generateLinks: post.toc || !post.noHeadingLinks, generateToc: post.toc }); @@ -51,12 +39,12 @@ grunt.registerMultiTask( "build-pages", "Process html and markdown files as page // Replace partials content = content.replace( /@partial\((.+)\)/g, function( match, input ) { - return htmlEscape( grunt.file.read( input ) ); + return util.htmlEscape( grunt.file.read( input ) ); }); // Syntax highlight code blocks if ( !grunt.option( "nohighlight" ) ) { - content = grunt.helper( "syntax-highlight", { content: content } ); + content = syntaxHighlight( content ); } post.customFields = post.customFields || []; @@ -70,195 +58,39 @@ grunt.registerMultiTask( "build-pages", "Process html and markdown files as page "\n" + content ); fileDone(); - } - - // Invoke the pre-processor for custom functionality - grunt.helper( "build-pages-preprocess", post, fileName, processPost ); - }, function() { + }); + }, function( error, count ) { if ( task.errorCount ) { grunt.warn( "Task \"" + task.name + "\" failed." ); - taskDone(); - return; + return taskDone(); } - grunt.log.writeln( "Built " + files.length + " pages." ); + + grunt.log.writeln( "Built " + count + " pages." ); taskDone(); }); }); -// Default pre-processor is a no-op -grunt.registerHelper( "build-pages-preprocess", function( post, fileName, done ) { - done(); -}); - grunt.registerMultiTask( "build-resources", "Copy resources", function() { var task = this, taskDone = task.async(), - files = this.data, targetDir = grunt.config( "wordpress.dir" ) + "/resources/"; grunt.file.mkdir( targetDir ); - grunt.utils.async.forEachSeries( files, function( fileName, fileDone ) { - grunt.file.copy( fileName, targetDir + fileName.replace( /^.+?\//, "" ) ); + util.eachFile( this.filesSrc, function( fileName, fileDone ) { + if ( grunt.file.isFile( fileName ) ) { + grunt.file.copy( fileName, targetDir + fileName.replace( /^.+?\//, "" ) ); + } fileDone(); - }, function() { + }, function( error, count ) { if ( task.errorCount ) { grunt.warn( "Task \"" + task.name + "\" failed." ); - taskDone(); - return; - } - grunt.log.writeln( "Built " + files.length + " resources." ); - taskDone(); - }); -}); - -grunt.registerHelper( "syntax-highlight", (function() { - var lineNumberTemplate = grunt.file.read( - grunt.task.getFile( "jquery-build/lineNumberTemplate.jst" ) ); - - return function( options ) { - - // receives the innerHTML of a element and if the first character - // is an encoded left angle bracket, we'll assume the language is html - function crudeHtmlCheck ( input ) { - var first = input.trim().charAt( 0 ); - return ( first === "<" || first === "<" ) ? "xml" : ""; - } - - // when parsing the class attribute, make sure a class matches an actually - // highlightable language, instead of being presentational (e.g. 'example') - function getLanguageFromClass( str ) { - str = str || ""; - var classes = str.split( " " ), - i = 0, - length = classes.length; - for ( ; i < length; i++ ) { - if ( hljs.LANGUAGES[ classes[ i ].replace( /^lang-/, "" ) ] ) { - return classes[i].replace( /^lang-/, "" ); - } - } - return ""; - } - - function outdent( string ) { - var rOutdent, - adjustedLines = [], - minTabs = Infinity, - rLeadingTabs = /^\t+/; - - string.split( "\n" ).forEach(function( line, i, arr ) { - // Don't include first or last line if it's nothing but whitespace - if ( (i === 0 || i === arr.length - 1) && !line.trim().length ) { - return; - } - - // For empty lines inside the snippet, push a space so the line renders properly - if ( !line.trim().length ) { - adjustedLines.push(" "); - return; - } - - // Count how many leading tabs there are and update the global minimum - var match = line.match( rLeadingTabs ), - tabs = match ? match[0].length : 0; - minTabs = Math.min( minTabs, tabs ); - - adjustedLines.push( line ); - }); - - if ( minTabs !== Infinity ) { - // Outdent the lines as much as possible - rOutdent = new RegExp( "^\t{" + minTabs + "}" ); - adjustedLines = adjustedLines.map(function( line ) { - return line.replace( rOutdent, "" ); - }); - } - - return adjustedLines.join( "\n" ); + return taskDone(); } - var html = options.file ? grunt.file.read( options.file ) : options.content, - $ = cheerio.load( html ); - - $( "pre > code" ).each(function() { - var $t = $( this ), - code = he.decode( outdent( $t.html() ) ), - lang = $t.attr( "data-lang" ) || - getLanguageFromClass( $t.attr( "class" ) ) || - crudeHtmlCheck( code ) || - "javascript", - linenumAttr = $t.attr( "data-linenum" ), - linenum = (linenumAttr === "true" ? 1 : parseInt( linenumAttr, 10 ) ) || 1, - gutter = linenumAttr === undefined ? false : true, - highlighted = hljs.highlight( lang, code ), - fixed = hljs.fixMarkup( highlighted.value, " " ); - - // Handle multi-line comments (#32) - fixed = fixed.replace( /\/\*([^<]+)\*\/<\/span>/g, function( full, comment ) { - return "/*" + - comment.split( "\n" ).join( "\n" ) + - "*/"; - }); - $t.parent().replaceWith( grunt.template.process( lineNumberTemplate, { - lines: fixed.split("\n"), - startAt: linenum, - gutter: gutter, - lang: lang - })); - }); - - return $.html(); - }; -})() ); - -grunt.registerHelper( "parse-markdown", function( src, options ) { - var toc = "", - marked = require( "marked" ), - tokens = marked.lexer( src ), - links = tokens.links; - - if ( !options.generateLinks ) { - return marked.parser( tokens ); - } - - tokens.forEach(function( item ) { - if ( item.type !== "heading" ) { - return; - } - - // Store original text and create an id for linking - var parsedText = marked( item.text ); - parsedText = parsedText.substring( 3, parsedText.length - 5 ); - item.tocText = parsedText.replace( /<[^>]+>/g, "" ); - item.tocId = item.tocText - .replace( /\W+/g, "-" ) - .replace( /^-+|-+$/, "" ) - .toLowerCase(); - - // Convert to HTML - item.type = "html"; - item.pre = false; - - // Insert the link - item.text = "" + - "" + - "link" + - " " + parsedText + ""; - - if ( options.generateToc ) { - toc += new Array( (item.depth - 1) * 2 + 1 ).join( " " ) + "* " + - "[" + item.tocText + "](#" + item.tocId + ")\n"; - } + grunt.log.writeln( "Built " + count + " resources." ); + taskDone(); }); - - if ( options.generateToc ) { - tokens = marked.lexer( toc ).concat( tokens ); - // The TOC never generates links, so we can just copy the links directly - // from the original tokens. - tokens.links = links; - } - - return marked.parser( tokens ); }); }; From 909f606887981394ee00cefd90132baae3b3bb00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 1 Dec 2014 15:48:00 -0500 Subject: [PATCH 171/241] README: Remove (duplicative and outdated) license info --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index ff59881..98381ee 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,3 @@ regular markup will show up here other content ``` - -## License -Copyright (c) 2012 jQuery Foundation -Licensed under the MIT license. From 091b37b166af261dbf3fcfa9fe4f8f4dbf33448d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 2 Dec 2014 10:17:12 -0500 Subject: [PATCH 172/241] Build: Use spawnback instead of deprecated grunt.util.spawn --- package.json | 1 + tasks/build-xml.js | 50 +++++++++++++++++++--------------------------- 2 files changed, 21 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index c7f0886..418b576 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "highlight.js": "7.3.0", "marked": "0.3.2", "rimraf": "2.2.8", + "spawnback": "1.0.0", "which": "1.0.5" }, "devDependencies": { diff --git a/tasks/build-xml.js b/tasks/build-xml.js index be996dc..08d53b1 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -3,6 +3,7 @@ module.exports = function( grunt ) { var fs = require( "fs" ), path = require( "path" ), which = require( "which" ), + spawn = require( "spawnback" ), util = require( "../lib/util" ), syntaxHighlight = require( "../lib/highlight" ); @@ -37,10 +38,7 @@ grunt.registerMultiTask( "xmllint", "Lint xml files", function() { util.eachFile( this.filesSrc, function( fileName, fileDone ) { grunt.verbose.write( "Linting " + fileName + "..." ); - grunt.util.spawn({ - cmd: "xmllint", - args: [ "--noout", fileName ] - }, function( error ) { + spawn( "xmllint", [ "--noout", fileName ], function( error ) { if ( error ) { grunt.verbose.error(); grunt.log.error( error ); @@ -74,10 +72,7 @@ grunt.registerMultiTask( "xmltidy", "Tidy xml files - changes source files!", fu util.eachFile( this.filesSrc, function( fileName, fileDone ) { grunt.verbose.write( "Tidying " + fileName + "..." ); - grunt.util.spawn({ - cmd: "xmllint", - args: [ "--format", fileName ] - }, function( error, result ) { + spawn( "xmllint", [ "--format", fileName ], function( error, result ) { if ( error ) { grunt.verbose.error(); grunt.log.error( error ); @@ -113,15 +108,14 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an util.eachFile( this.filesSrc, function( fileName, fileDone ) { grunt.verbose.write( "Transforming " + fileName + "..." ); - grunt.util.spawn({ - cmd: "xsltproc", - args: [ "--xinclude", "entries2html.xsl", fileName ] - }, function( error, content ) { + spawn( "xsltproc", + [ "--xinclude", "entries2html.xsl", fileName ], + function( error, content, stderr ) { // Certain errors won't cause the tranform to fail. For example, a // broken include will write to stderr, but still exit cleanly. - if ( content.stderr && !error ) { - error = new Error( content.stderr ); + if ( stderr && !error ) { + error = new Error( stderr ); } if ( error ) { @@ -130,7 +124,6 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an return fileDone( error ); } - content = content.stdout; grunt.verbose.ok(); var targetFileName = targetDir + path.basename( fileName, ".xml" ) + ".html"; @@ -162,22 +155,20 @@ grunt.registerTask( "build-xml-categories", function() { return taskDone( false ); } - grunt.util.spawn({ - cmd: "xsltproc", - args: [ "--output", "taxonomies.xml", - path.join( __dirname, "jquery-xml/cat2tax.xsl" ), "categories.xml" ] - }, function( error ) { + spawn( "xsltproc", + [ "--output", "taxonomies.xml", + path.join( __dirname, "jquery-xml/cat2tax.xsl" ), "categories.xml" ], + function( error ) { if ( error ) { grunt.verbose.error(); grunt.log.error( error ); return taskDone(); } - grunt.util.spawn({ - cmd: "xsltproc", - args: [ "--output", targetPath, - path.join( __dirname, "jquery-xml/xml2json.xsl" ), "taxonomies.xml" ] - }, function( error ) { + spawn( "xsltproc", + [ "--output", targetPath, + path.join( __dirname, "jquery-xml/xml2json.xsl" ), "taxonomies.xml" ], + function( error ) { if ( error ) { grunt.verbose.error(); grunt.log.error( error ); @@ -244,12 +235,11 @@ grunt.registerTask( "build-xml-full", function() { } }); - grunt.util.spawn({ - cmd: "xsltproc", - args: [ "--xinclude", "--path", process.cwd(), + spawn( "xsltproc", + [ "--xinclude", "--path", process.cwd(), // "--output", grunt.config( "wordpress.dir" ) + "/resources/api.xml", - path.join( __dirname, "jquery-xml/all-entries.xsl" ), "all-entries.xml" ] - }, function( error, result ) { + path.join( __dirname, "jquery-xml/all-entries.xsl" ), "all-entries.xml" ], + function( error, result ) { // For some reason using --output with xsltproc kills the --xinclude option, // so we let it write to stdout, then save it to a file From 09edb416b741232886a1bc4eeabda82850daf01b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 2 Dec 2014 11:21:09 -0500 Subject: [PATCH 173/241] API Sites: Remove xmltidy task This task was never used and produces output that we wouldn't want to work with. --- tasks/build-xml.js | 36 ------------------------------------ 1 file changed, 36 deletions(-) diff --git a/tasks/build-xml.js b/tasks/build-xml.js index 08d53b1..02b3ee2 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -59,42 +59,6 @@ grunt.registerMultiTask( "xmllint", "Lint xml files", function() { }); }); -grunt.registerMultiTask( "xmltidy", "Tidy xml files - changes source files!", function() { - var task = this, - taskDone = task.async(); - - // Only tidy files that are lint free - task.requires( "xmllint" ); - - if ( !checkXmllint() ) { - return taskDone( false ); - } - - util.eachFile( this.filesSrc, function( fileName, fileDone ) { - grunt.verbose.write( "Tidying " + fileName + "..." ); - spawn( "xmllint", [ "--format", fileName ], function( error, result ) { - if ( error ) { - grunt.verbose.error(); - grunt.log.error( error ); - return fileDone(); - } - - grunt.verbose.ok(); - grunt.file.write( fileName, result ); - - fileDone(); - }); - }, function( error, count ) { - if ( task.errorCount ) { - grunt.warn( "Task \"" + task.name + "\" failed." ); - return taskDone(); - } - - grunt.log.writeln( "Tidied " + count + " files." ); - taskDone(); - }); -}); - grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl and syntax highlight", function() { var task = this, taskDone = task.async(), From 8409470037d3dba55c356f65bc4bedc1f38063a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 2 Dec 2014 12:42:44 -0500 Subject: [PATCH 174/241] Buid: Remove superflous fields in package.json --- package.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/package.json b/package.json index 418b576..255928e 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,6 @@ "url": "https://github.com/jquery/grunt-jquery-content/blob/master/LICENSE.txt" } ], - "main": "grunt.js", - "engines": { - "node": "*" - }, "dependencies": { "async": "0.9.0", "cheerio": "0.17.0", From c792960908179995bdd218281b12f4c18d11d7ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 2 Dec 2014 12:45:12 -0500 Subject: [PATCH 175/241] Build: Remove dates from copyright notice --- LICENSE.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index 92f19fe..af932fa 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,5 +1,4 @@ -Copyright 2012, 2014 jQuery Foundation and other contributors, -https://jquery.org/ +Copyright jQuery Foundation and other contributors, https://jquery.org/ This software consists of voluntary contributions made by many individuals. For exact contribution history, see the revision history From 95966f5c70c6c4e96d44f3f59787e99a85bf9dc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 3 Dec 2014 20:22:27 -0500 Subject: [PATCH 176/241] Util: Don't use Grunt internally --- lib/util.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/util.js b/lib/util.js index 71b91a1..294d22e 100644 --- a/lib/util.js +++ b/lib/util.js @@ -1,6 +1,6 @@ -var marked = require( "marked" ), - grunt = require( "grunt" ), - async = require( "async" ); +var fs = require( "fs" ), + async = require( "async" ), + marked = require( "marked" ); function htmlEscape( text ) { return text @@ -73,7 +73,7 @@ function eachFile( files, stepFn, complete ) { var count = 0; async.forEachSeries( files, function( fileName, fileDone ) { - if ( !grunt.file.isFile( fileName ) ) { + if ( !fs.statSync( fileName ).isFile() ) { return fileDone(); } From 1fcd08011fb7ae7c692e41dbca405a85e362167f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 4 Dec 2014 13:08:28 -0500 Subject: [PATCH 177/241] Tasks: Expose grunt-wodpress tasks --- package.json | 2 +- tasks/build.js | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 255928e..940caab 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "dependencies": { "async": "0.9.0", "cheerio": "0.17.0", - "gilded-wordpress": "1.0.0", + "grunt-wordpress": "2.1.0", "he": "0.5.0", "highlight.js": "7.3.0", "marked": "0.3.2", diff --git a/tasks/build.js b/tasks/build.js index b0f00f4..c3f283f 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -1,9 +1,13 @@ module.exports = function( grunt ) { -var wordpress = require( "gilded-wordpress" ), +var wordpress = require( "grunt-wordpress" ), util = require( "../lib/util" ), syntaxHighlight = require( "../lib/highlight" ); +// Load the grunt-wordpress tasks as local tasks +// Grunt doesn't provide an API to pass thru tasks from dependent grunt plugins +require( "grunt-wordpress/tasks/wordpress" )( grunt ); + grunt.registerMultiTask( "build-pages", "Process html and markdown files as pages, include @partials and syntax higlight code snippets", function() { var task = this, taskDone = task.async(), From 65ea03f241ca732f0d22ee3fd2d90240227dcc59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 4 Dec 2014 13:09:41 -0500 Subject: [PATCH 178/241] Tasks: Expose post preprocessor to replace old helper --- index.js | 3 +++ tasks/build.js | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 index.js diff --git a/index.js b/index.js new file mode 100644 index 0000000..14903b1 --- /dev/null +++ b/index.js @@ -0,0 +1,3 @@ +exports.preprocessPost = function( post, fileName, callback ) { + callback( null, post ); +}; diff --git a/tasks/build.js b/tasks/build.js index c3f283f..fea5989 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -2,7 +2,8 @@ module.exports = function( grunt ) { var wordpress = require( "grunt-wordpress" ), util = require( "../lib/util" ), - syntaxHighlight = require( "../lib/highlight" ); + syntaxHighlight = require( "../lib/highlight" ), + mainExports = require( "../" ); // Load the grunt-wordpress tasks as local tasks // Grunt doesn't provide an API to pass thru tasks from dependent grunt plugins @@ -16,10 +17,20 @@ grunt.registerMultiTask( "build-pages", "Process html and markdown files as page grunt.file.mkdir( targetDir ); + function parsePost( fileName, callback ) { + wordpressClient.parsePost( fileName, function( error, post ) { + if ( error ) { + return callback( error ); + } + + mainExports.preprocessPost( post, fileName, callback ); + }); + } + util.eachFile( this.filesSrc, function( fileName, fileDone ) { grunt.verbose.write( "Processing " + fileName + "..." ); - wordpressClient.parsePost( fileName, function( error, post ) { + parsePost( fileName, function( error, post ) { if ( error ) { return fileDone( error ); } From 51cd8c57fc6ccdf6408664ba2ed6376760a3d296 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 4 Dec 2014 13:10:42 -0500 Subject: [PATCH 179/241] Exports: Expose syntax highlighter to replace old helper --- index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/index.js b/index.js index 14903b1..9fa1910 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,7 @@ +var syntaxHighlight = require( "./lib/highlight" ); + +exports.syntaxHighlight = syntaxHighlight; + exports.preprocessPost = function( post, fileName, callback ) { callback( null, post ); }; From 8e3e4ec1a5ad53d818e0c6490757334854c2d4de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 4 Dec 2014 15:40:11 -0500 Subject: [PATCH 180/241] README: Document tasks and exports --- README.md | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 83 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 98381ee..3c36ab7 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,27 @@ # grunt-jquery-content -A collection of tasks for building the jQuery websites +A collection of tasks for building the jQuery web sites via Grunt. -## build-pages +This module builds on top of [grunt-wordpress](https://github.com/scottgonzalez/grunt-wordpress), which builds on top of [Gilded WordPress](https://github.com/scottgonzalez/gilded-wordpress). See the Gilded WordPress documentation for details on the [directory structure and file formats](https://github.com/scottgonzalez/gilded-wordpress#directory-structure). -This multi-task takes a list of html or markdown files, copies them to `[wordpress.dir]/posts/page`, processes @partial entries and highlights the syntax in each. +## Tasks -### @partial +### build-pages + +This multi-task takes a list of html or markdown files, copies them to `[wordpress.dir]/posts/page/`, processes `@partial` entries and highlights the syntax in each. + +See the [`preprocessPost()` export](#preprocesspost-post-filename-callback-) for a hook to implement custom processing. + +#### markdown + +Using markdown files provides additional features over HTML files. By default, links for each header are automatically generated for markdown files. + +In addition to the [standard metadata](https://github.com/scottgonzalez/gilded-wordpress#post-files) for post files, the following properties can be set: + +* `noHeadingLinks`: When set to `false`, heading links won't be generated. +* `toc`: When set to `true`, a table of contents will be inserted at the top of the post based on the headings within the post. + +#### @partial Usage: @@ -14,11 +29,11 @@ Usage:
    @partial(resources/code-sample.html)
    ``` -Where `resources/code-sample.html` is relative path in the current directory. That html file will be inserted, escaped and highlighted. +Where `resources/code-sample.html` is a relative path in the current directory. That html file will be inserted, escaped and highlighted. -### @placeholder +#### @placeholder -Inside markup included with @partial you can mark sections of code as @placeholder code, to be excluded from the inserted code, replaced with a html comment. +Inside markup included with `@partial`, you can mark sections of code as `@placeholder` code, to be excluded from the inserted code, replaced with an html comment. Usage: @@ -32,9 +47,69 @@ other content That will result in: - ```html regular markup will show up here other content ``` + +### build-resources + +This mult-task copies all source files into `[wordpress.dir]/resources/`. + +### xmllint + +This multi-task lints XML files to ensure the files are valid. + +### build-xml-entries + +This multi-task generates HTML files to be published to WordPress by parsing the source XML files and transforming them through `entries2html.xsl`. The generate files are copied to `[wordpress.dir]/posts/post/`. + +The content repo must create its own `entries2html.xsl` file which must import `node_modules/grunt-jquery-content/tasks/jquery-xml/entries2html-base.xsl`. + +### build-xml-categories + +This task reads `categories.xml` from the root of the content repo and generates `[wordpress.dir]/taxonomies.json`. + +`categories.xml` should have the following format: + +```xml + + + A description of the category. + + + + + This category is boring. + + +``` + +Code examples in the descriptions will be syntax highlighted. + +### build-xml-full + +This task generates a single XML file that contains all entries and stores the result in `[wordpress.dir]/resources/api.xml`. + + + +## Exports + +This module also exports some methods through the standard node `require()` API. + +### syntaxHighlight( content ) + +Syntax highlights content. + +* `content` String: The string the highlight. + +### preprocessPost( post, fileName, callback ) + +Hook for modifying the posts before they're processed in the [`build-pages`](#build-pages) task. + +* `post` Object: The post being processed. +* `fileName` String: The name of the file used to generate the post object. +* `callback` function( error, post ): Callback to invoke after modifying the post. + * `error`: An `Error` instance, if there was an error while modifying the post. + * `post` The modified post. From 15bea280cff4ff8f7aa46b76e32d3210fbfdd7be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Thu, 4 Dec 2014 20:33:07 -0500 Subject: [PATCH 181/241] Build: Update author --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 940caab..5e54e36 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.14.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { - "name": "jQuery Foundation" + "name": "jQuery Foundation and other contributors" }, "repository": { "type": "git", From 2493c1762700daf05ef9cd282835f45dffae3734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Fri, 5 Dec 2014 08:56:02 -0500 Subject: [PATCH 182/241] 1.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5e54e36..d86ccf5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "0.14.0", + "version": "1.0.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From ca2872d0cd6e51fea4fdbb57c97aa820bfdda96e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 8 Dec 2014 10:02:20 -0500 Subject: [PATCH 183/241] Tasks: Expose check-modules task --- package.json | 1 + tasks/build.js | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index d86ccf5..b3fa1ec 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "dependencies": { "async": "0.9.0", "cheerio": "0.17.0", + "grunt-check-modules": "1.0.0", "grunt-wordpress": "2.1.0", "he": "0.5.0", "highlight.js": "7.3.0", diff --git a/tasks/build.js b/tasks/build.js index fea5989..77d3fd5 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -5,9 +5,10 @@ var wordpress = require( "grunt-wordpress" ), syntaxHighlight = require( "../lib/highlight" ), mainExports = require( "../" ); -// Load the grunt-wordpress tasks as local tasks +// Load external tasks as local tasks // Grunt doesn't provide an API to pass thru tasks from dependent grunt plugins require( "grunt-wordpress/tasks/wordpress" )( grunt ); +require( "grunt-check-modules/tasks/check-modules" )( grunt ); grunt.registerMultiTask( "build-pages", "Process html and markdown files as pages, include @partials and syntax higlight code snippets", function() { var task = this, From 4628276be2c8fe923bf624f5c9ea108136c9f382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 8 Dec 2014 10:05:25 -0500 Subject: [PATCH 184/241] Tasks: Add clean-dist task --- README.md | 4 ++++ tasks/build.js | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3c36ab7..5735fb7 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ This module builds on top of [grunt-wordpress](https://github.com/scottgonzalez/ ## Tasks +### clean-dist + +This task removes all files in the `dist/` directory. + ### build-pages This multi-task takes a list of html or markdown files, copies them to `[wordpress.dir]/posts/page/`, processes `@partial` entries and highlights the syntax in each. diff --git a/tasks/build.js b/tasks/build.js index 77d3fd5..7fd7b20 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -1,6 +1,7 @@ module.exports = function( grunt ) { -var wordpress = require( "grunt-wordpress" ), +var rimraf = require( "rimraf" ), + wordpress = require( "grunt-wordpress" ), util = require( "../lib/util" ), syntaxHighlight = require( "../lib/highlight" ), mainExports = require( "../" ); @@ -10,6 +11,10 @@ var wordpress = require( "grunt-wordpress" ), require( "grunt-wordpress/tasks/wordpress" )( grunt ); require( "grunt-check-modules/tasks/check-modules" )( grunt ); +grunt.registerTask( "clean-dist", function() { + rimraf.sync( "dist" ); +}); + grunt.registerMultiTask( "build-pages", "Process html and markdown files as pages, include @partials and syntax higlight code snippets", function() { var task = this, taskDone = task.async(), From c33520a165b1a62238ac41684acb0c434673b265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 8 Dec 2014 10:13:33 -0500 Subject: [PATCH 185/241] Tasks: Add lint and build-wordpress tasks Defining a standard build-wordpress task removes some boilerplate from every site's Gruntfile. --- README.md | 16 ++++++++++++++++ tasks/build.js | 5 +++++ 2 files changed, 21 insertions(+) diff --git a/README.md b/README.md index 5735fb7..1c14f69 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,22 @@ This module builds on top of [grunt-wordpress](https://github.com/scottgonzalez/ This task removes all files in the `dist/` directory. +### lint + +This is an empty task list. If the site contains any lint checks, they should be defined here. For example, API sites should have the following task list: + +``` +grunt.registerTask( "lint", [ "xmllint" ] ); +``` + +### build + +This is a task list that must be defined per site, containing all of the build steps. A simple site would have the following task list: + +``` +grunt.registerTask( "build", [ "build-pages", "build-resources" ] ); +``` + ### build-pages This multi-task takes a list of html or markdown files, copies them to `[wordpress.dir]/posts/page/`, processes `@partial` entries and highlights the syntax in each. diff --git a/tasks/build.js b/tasks/build.js index 7fd7b20..36e1ed6 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -15,6 +15,11 @@ grunt.registerTask( "clean-dist", function() { rimraf.sync( "dist" ); }); +// Define an empty lint task, to be redefined by each site with relevant lint tasks +grunt.registerTask( "lint", [] ); + +grunt.registerTask( "build-wordpress", [ "check-modules", "lint", "clean-dist", "build" ] ); + grunt.registerMultiTask( "build-pages", "Process html and markdown files as pages, include @partials and syntax higlight code snippets", function() { var task = this, taskDone = task.async(), From 38c4bf1ea980c1c33ccb3cd6bfe731524a4f2392 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 8 Dec 2014 11:35:58 -0500 Subject: [PATCH 186/241] Tasks: Change build-pages to build-posts and handle all post types Changes preprocessPost() export to postPreprocessors hash. Allows specifying the target file name via a preprocessor. This was needed by meetings.jquery.org to support the custom directory structure. Fixes gh-35 --- README.md | 21 +++++++++++++++------ index.js | 6 ++++-- tasks/build.js | 12 ++++++++---- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 1c14f69..2742866 100644 --- a/README.md +++ b/README.md @@ -23,14 +23,14 @@ grunt.registerTask( "lint", [ "xmllint" ] ); This is a task list that must be defined per site, containing all of the build steps. A simple site would have the following task list: ``` -grunt.registerTask( "build", [ "build-pages", "build-resources" ] ); +grunt.registerTask( "build", [ "build-posts", "build-resources" ] ); ``` -### build-pages +### build-posts -This multi-task takes a list of html or markdown files, copies them to `[wordpress.dir]/posts/page/`, processes `@partial` entries and highlights the syntax in each. +This multi-task takes a list of html or markdown files, copies them to `[wordpress.dir]/posts/[post-type]/`, processes `@partial` entries and highlights the syntax in each. The keys are the post types for each set of posts. -See the [`preprocessPost()` export](#preprocesspost-post-filename-callback-) for a hook to implement custom processing. +See the [`postPreprocessors` export](#postpreprocessors) for a hook to implement custom processing. #### markdown @@ -124,12 +124,21 @@ Syntax highlights content. * `content` String: The string the highlight. -### preprocessPost( post, fileName, callback ) +### postPreprocessors -Hook for modifying the posts before they're processed in the [`build-pages`](#build-pages) task. +Hooks for modifying the posts before they're processed in the [`build-posts`](#build-posts) task. + +`postPreprocessors` is a hash of preprocessors, where the key is the post type and the value is a function which modifies the post. + +The functions must be in the form of: +`function( post, fileName, callback )` * `post` Object: The post being processed. * `fileName` String: The name of the file used to generate the post object. * `callback` function( error, post ): Callback to invoke after modifying the post. * `error`: An `Error` instance, if there was an error while modifying the post. * `post` The modified post. + +By default, posts are placed in the `[wordpress.dir]/[post-type]` directory using the same relative path and file name as the source file. The relative path can be changed by setting the `fileName` property on the post. + +If a preprocessor is not defined for the given post type, then the `_default` preprocessor will be used. diff --git a/index.js b/index.js index 9fa1910..d959c0f 100644 --- a/index.js +++ b/index.js @@ -2,6 +2,8 @@ var syntaxHighlight = require( "./lib/highlight" ); exports.syntaxHighlight = syntaxHighlight; -exports.preprocessPost = function( post, fileName, callback ) { - callback( null, post ); +exports.postPreprocessors = { + _default: function( post, fileName, callback ) { + callback( null, post ); + } }; diff --git a/tasks/build.js b/tasks/build.js index 36e1ed6..289b664 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -20,11 +20,14 @@ grunt.registerTask( "lint", [] ); grunt.registerTask( "build-wordpress", [ "check-modules", "lint", "clean-dist", "build" ] ); -grunt.registerMultiTask( "build-pages", "Process html and markdown files as pages, include @partials and syntax higlight code snippets", function() { +grunt.registerMultiTask( "build-posts", "Process html and markdown files as posts", function() { var task = this, taskDone = task.async(), wordpressClient = wordpress.createClient( grunt.config( "wordpress" ) ), - targetDir = grunt.config( "wordpress.dir" ) + "/posts/page/"; + postType = this.target, + preprocessor = mainExports.postPreprocessors[ postType ] || + mainExports.postPreprocessors._default, + targetDir = grunt.config( "wordpress.dir" ) + "/posts/" + postType + "/"; grunt.file.mkdir( targetDir ); @@ -34,7 +37,7 @@ grunt.registerMultiTask( "build-pages", "Process html and markdown files as page return callback( error ); } - mainExports.preprocessPost( post, fileName, callback ); + preprocessor( post, fileName, callback ); }); } @@ -49,9 +52,10 @@ grunt.registerMultiTask( "build-pages", "Process html and markdown files as page var content = post.content, fileType = /\.(\w+)$/.exec( fileName )[ 1 ], targetFileName = targetDir + - fileName.replace( /^.+?\/(.+)\.\w+$/, "$1" ) + ".html"; + ( post.fileName || fileName.replace( /^.+?\/(.+)\.\w+$/, "$1" ) + ".html" ); delete post.content; + delete post.fileName; // Convert markdown to HTML if ( fileType === "md" ) { From bfab3e639035d8cd93e87943b97c7156fe3bab3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 8 Dec 2014 12:10:21 -0500 Subject: [PATCH 187/241] 2.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b3fa1ec..71e4c72 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "1.0.0", + "version": "2.0.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From f2669ae8780dbf3de1bc102910fab215c55f1f78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 24 Feb 2015 13:00:42 -0500 Subject: [PATCH 188/241] API Sites: Add support for custom examples in widget events --- tasks/jquery-xml/entries2html-base.xsl | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 68fe9de..98e331f 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -1118,6 +1118,15 @@
    
     			$( ".selector" ).on( "", function( event, ui ) {} );
     		
    + + + +

    +
    
    +					
    +				
    +
    +
    From 47e54dcd22a3799d4b4978e4b1fed1261fca9f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 24 Feb 2015 13:01:18 -0500 Subject: [PATCH 189/241] 2.0.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 71e4c72..349d5a0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "2.0.0", + "version": "2.0.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 39c1f0021c7241adde17855298d759e4d65f0da5 Mon Sep 17 00:00:00 2001 From: Aurelio De Rosa Date: Sat, 28 Feb 2015 15:50:37 +0000 Subject: [PATCH 190/241] API Sites: Fix inclusion of notes on Windows Added the slash so the task searches the file in the root and not in the "jquery-xml" folder. Closes gh-62 --- tasks/jquery-xml/all-entries.xsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/jquery-xml/all-entries.xsl b/tasks/jquery-xml/all-entries.xsl index 55f98d7..10415e7 100644 --- a/tasks/jquery-xml/all-entries.xsl +++ b/tasks/jquery-xml/all-entries.xsl @@ -1,7 +1,7 @@ - + From 6b2321b9d71f9c047a705d74dfdd11765a0e9ffc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Mon, 2 Mar 2015 18:22:28 -0500 Subject: [PATCH 191/241] 2.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 349d5a0..bde846e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "2.0.1", + "version": "2.1.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From f841813cdb2bcb4c76f7c4d2da0175be69f13cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Fri, 20 Mar 2015 11:55:05 +0100 Subject: [PATCH 192/241] API Sites: Loop over method examples instead of assuming there's just one Ref jquery/api.jqueryui.com#257 Closes #63 --- tasks/jquery-xml/entries2html-base.xsl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 98e331f..5ba8745 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -1022,10 +1022,12 @@
    -

    -
    
    -								
    -							
    + +

    +
    
    +									
    +								
    +
    From 0bd1568abd2f13a7d8a2181108930bf5d3002e42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Sat, 21 Mar 2015 11:39:17 +0100 Subject: [PATCH 193/241] 2.1.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bde846e..5e2ee7f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "2.1.0", + "version": "2.1.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 8245a09e662afc18999b275622cd6c03d36356d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Thu, 9 Apr 2015 18:28:09 +0200 Subject: [PATCH 194/241] API sites: Consistent styling for examples Fixes #65 --- tasks/jquery-xml/entries2html-base.xsl | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 5ba8745..76debd6 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -435,14 +435,17 @@ - - - - + + Code examples: + + + + + + + + - - - @@ -581,8 +584,6 @@ - Code examples: -

    Initialize the with the option specified:

    
     		$( ".selector" ).
    @@ -656,10 +657,9 @@
     			
     		
     
    -		

    - Example: - -

    +

    + +

    
     			
     				
    
    From d60fe8461c8c2d6d3a90effae8512dd7876ff1a9 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= 
    Date: Thu, 9 Apr 2015 21:30:40 +0200
    Subject: [PATCH 195/241] API sites: Replace  inside 
     elements
    
    Fixes #66
    Closes #67
    ---
     tasks/jquery-xml/entries2html-base.xsl | 10 +++++-----
     1 file changed, 5 insertions(+), 5 deletions(-)
    
    diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl
    index 76debd6..4fecfb8 100644
    --- a/tasks/jquery-xml/entries2html-base.xsl
    +++ b/tasks/jquery-xml/entries2html-base.xsl
    @@ -435,14 +435,14 @@
     							
     						
     					
    -					
    +					
     						Code examples:
     						
     							
     								
     							
     						
    -						
    +						
     							
     						
     					
    @@ -666,7 +666,7 @@
     					
     				
     				
    -					
    +					
     				
     			
     		
    @@ -1132,9 +1132,9 @@ - - + From 0fb99ba7daa6848c82528f16d1e31aefb7289168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Thu, 9 Apr 2015 22:11:30 +0200 Subject: [PATCH 196/241] API sites: Support inside options, fix hiding of gutter Due to some bad logic, the gutter was always displayed by default, the reverse of what the code intended. Changing the actual default now to keep the previous behaviour, but allowing opt-out, which the new element is now using. Fixes #64 --- lib/highlight.js | 4 ++-- lib/lineNumberTemplate.jst | 4 +++- tasks/jquery-xml/entries2html-base.xsl | 7 ++++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/highlight.js b/lib/highlight.js index beedf71..375f1dc 100644 --- a/lib/highlight.js +++ b/lib/highlight.js @@ -71,8 +71,8 @@ function syntaxHighlight( html ) { (code.trim().charAt( 0 ) === "<" ? "xml" : "") || "javascript", linenumAttr = $t.attr( "data-linenum" ), - linenum = (linenumAttr === "true" ? 1 : parseInt( linenumAttr, 10 ) ) || 1, - gutter = linenumAttr === undefined ? false : true, + linenum = parseInt( linenumAttr, 10 ) || 1, + gutter = linenumAttr === "false" ? false : true, highlighted = hljs.highlight( lang, code ), fixed = hljs.fixMarkup( highlighted.value, " " ); diff --git a/lib/lineNumberTemplate.jst b/lib/lineNumberTemplate.jst index 3a8bb39..a2a9a43 100644 --- a/lib/lineNumberTemplate.jst +++ b/lib/lineNumberTemplate.jst @@ -1,12 +1,14 @@ -
    +
    + <% if (gutter) { %> + <% } %> diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 4fecfb8..b7d748d 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -413,7 +413,12 @@
    Default: - + + + + +
    +
    From 51733536707bc1745d7d66a155ead3fb379db094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Thu, 9 Apr 2015 22:40:09 +0200 Subject: [PATCH 197/241] API sites: Render option type on its own line Fixes #51 --- tasks/jquery-xml/entries2html-base.xsl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index b7d748d..1497561 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -405,12 +405,12 @@

    - - - Type: - - +  

    +
    + Type: + +
    Default: From 3f94a5d23f528792f69cd6c20ff216f16d32773d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Thu, 9 Apr 2015 22:42:27 +0200 Subject: [PATCH 198/241] 2.2.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5e2ee7f..7023694 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "2.1.1", + "version": "2.2.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 81579ec2e3db6327969f0f7cfcaab2b6afedec11 Mon Sep 17 00:00:00 2001 From: Corey Frang Date: Sat, 18 Jul 2015 16:36:13 -0400 Subject: [PATCH 199/241] Redirects: Add support for setting redirects in redirects.json Ref jquery/grunt-jquery-content#61 Closes gh-69 --- package.json | 3 ++- tasks/redirects.js | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 tasks/redirects.js diff --git a/package.json b/package.json index 7023694..267b853 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,8 @@ "marked": "0.3.2", "rimraf": "2.2.8", "spawnback": "1.0.0", - "which": "1.0.5" + "which": "1.0.5", + "wordpress": "0.1.3" }, "devDependencies": { "grunt": "0.4.5", diff --git a/tasks/redirects.js b/tasks/redirects.js new file mode 100644 index 0000000..c51bd0f --- /dev/null +++ b/tasks/redirects.js @@ -0,0 +1,15 @@ +module.exports = function( grunt ) { + +var wp = require( "wordpress" ); + +grunt.registerTask( "deploy-redirects", function() { + var config = grunt.config( "wordpress" ); + var redirects = grunt.file.exists( "redirects.json" ) ? grunt.file.readJSON( "redirects.json" ) : {}; + var client = wp.createClient( config ); + + client.authenticatedCall( "jq.setRedirects", JSON.stringify( redirects ), this.async() ); +} ); + +grunt.registerTask( "deploy", [ "wordpress-deploy", "deploy-redirects" ] ); + +}; From c83d3ecdf562289ae6d1427de442d966409c4998 Mon Sep 17 00:00:00 2001 From: Corey Frang Date: Tue, 21 Jul 2015 11:47:16 -0400 Subject: [PATCH 200/241] 2.3.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 267b853..091fb8c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "2.2.0", + "version": "2.3.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 99c8c802ce4d722ae761df3a41c3a837dadfad97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Tue, 27 Oct 2015 16:44:10 +0100 Subject: [PATCH 201/241] API sites: Make sure options examples have unique IDs Ref jquery/api.jqueryui.com#280 --- tasks/jquery-xml/entries2html-base.xsl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 1497561..7e88124 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -449,6 +449,7 @@ +
    @@ -651,9 +652,11 @@ +
    + example- From 84c6ad5b5932841949901d7d436221309dcefff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Tue, 27 Oct 2015 16:45:06 +0100 Subject: [PATCH 202/241] 2.3.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 091fb8c..ca1bc7a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "2.3.0", + "version": "2.3.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 9cdfa8c5e4b4c7f9c49f99b2c20dbdcc3658e656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 16 Dec 2015 20:17:50 -0500 Subject: [PATCH 203/241] Build: Upgrade grunt-wordpress --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ca1bc7a..86c3ec2 100644 --- a/package.json +++ b/package.json @@ -23,14 +23,14 @@ "async": "0.9.0", "cheerio": "0.17.0", "grunt-check-modules": "1.0.0", - "grunt-wordpress": "2.1.0", + "grunt-wordpress": "2.1.1", "he": "0.5.0", "highlight.js": "7.3.0", "marked": "0.3.2", "rimraf": "2.2.8", "spawnback": "1.0.0", "which": "1.0.5", - "wordpress": "0.1.3" + "wordpress": "1.1.2" }, "devDependencies": { "grunt": "0.4.5", From cf29f1a2cafdcd5f034dba50504fe31677769687 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Wed, 16 Dec 2015 20:18:44 -0500 Subject: [PATCH 204/241] 3.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 86c3ec2..d1d7939 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "2.3.1", + "version": "3.0.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 92ef8c0a456e377f1962615a419dfc041c3e9519 Mon Sep 17 00:00:00 2001 From: Kris Borchers Date: Tue, 29 Mar 2016 14:51:04 -0700 Subject: [PATCH 205/241] Build: Update grunt-wordpress --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d1d7939..8ad2247 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "async": "0.9.0", "cheerio": "0.17.0", "grunt-check-modules": "1.0.0", - "grunt-wordpress": "2.1.1", + "grunt-wordpress": "2.1.2", "he": "0.5.0", "highlight.js": "7.3.0", "marked": "0.3.2", From a6bdf5a02fc38fef1e95291b712653929dacd8b3 Mon Sep 17 00:00:00 2001 From: Kris Borchers Date: Wed, 30 Mar 2016 15:11:12 +0100 Subject: [PATCH 206/241] 3.0.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8ad2247..f5e7d9c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "3.0.0", + "version": "3.0.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 29fa4be2cf9448a9bc46f6eb22c0fe5dc4d8deba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski?= Date: Wed, 16 Nov 2016 17:57:04 -0500 Subject: [PATCH 207/241] Build: Upgrade grunt-check-modules, add .npmrc with save-exact=true Closes gh-71 --- .npmrc | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 .npmrc diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..cffe8cd --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +save-exact=true diff --git a/package.json b/package.json index f5e7d9c..6c00d5a 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "dependencies": { "async": "0.9.0", "cheerio": "0.17.0", - "grunt-check-modules": "1.0.0", + "grunt-check-modules": "1.1.0", "grunt-wordpress": "2.1.2", "he": "0.5.0", "highlight.js": "7.3.0", From c4a2339ce568fb460c69d00c054112ba48a4ce27 Mon Sep 17 00:00:00 2001 From: Karl Swedberg Date: Wed, 16 Nov 2016 17:58:52 -0500 Subject: [PATCH 208/241] 3.0.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6c00d5a..6f87b6b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "3.0.1", + "version": "3.0.2", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 6194ebf479ceeb10e9a3a1176ccc97e7143596eb Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Tue, 12 Jul 2016 21:39:08 +0200 Subject: [PATCH 209/241] Support newer versions of gilded-wordpress, node-wordpress Closes gh-72 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 6f87b6b..07a77b9 100644 --- a/package.json +++ b/package.json @@ -23,14 +23,14 @@ "async": "0.9.0", "cheerio": "0.17.0", "grunt-check-modules": "1.1.0", - "grunt-wordpress": "2.1.2", + "grunt-wordpress": "2.1.3", "he": "0.5.0", "highlight.js": "7.3.0", "marked": "0.3.2", "rimraf": "2.2.8", "spawnback": "1.0.0", "which": "1.0.5", - "wordpress": "1.1.2" + "wordpress": "1.3.0" }, "devDependencies": { "grunt": "0.4.5", From 910293948dbf5ef1e46a91b33682fcb66676a8d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Scott=20Gonz=C3=A1lez?= Date: Sat, 11 Mar 2017 07:11:30 -0500 Subject: [PATCH 210/241] 3.0.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 07a77b9..303c677 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "3.0.2", + "version": "3.0.3", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 0b869471cd6b1e4b47dbbc018108405b1135d454 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?= Date: Thu, 12 Oct 2017 11:37:39 +0200 Subject: [PATCH 211/241] Build: Add .mailmap with my new name --- .mailmap | 1 + 1 file changed, 1 insertion(+) create mode 100644 .mailmap diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000..1f2f86f --- /dev/null +++ b/.mailmap @@ -0,0 +1 @@ +Michał Gołębiowski-Owczarek From 4534d3e6771cfea2d69a110d65cf33b88467a764 Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Fri, 13 Jul 2018 08:40:07 -0400 Subject: [PATCH 212/241] API sites: Make anchors for object properties and method arguments Fixes #73 Closes #74 --- tasks/jquery-xml/entries2html-base.xsl | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 7e88124..bc7b909 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -280,7 +280,9 @@ - + + + @@ -343,7 +345,9 @@ - + + + @@ -863,9 +867,12 @@ +
      - + + +
    @@ -887,16 +894,25 @@
    +
      - + + +
    +
  • + + + + +
    (default: ) From 8bd0226bfc0c3de4a3b361fb8bd69b81cca37e34 Mon Sep 17 00:00:00 2001 From: Andrew <974088545@qq.com> Date: Wed, 19 May 2021 19:03:05 +0800 Subject: [PATCH 213/241] API sites: Support multiple return types in function parameters Fixes jquery/api.jquery.com#1184 Closes gh-80 --- tasks/jquery-xml/entries2html-base.xsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index bc7b909..3555b2e 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -793,11 +793,11 @@ - + - ERROR: A single return element is expected + | From 27a54fbfd03aefcf8934a7c0f10afa6e8e495da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?= Date: Fri, 21 May 2021 18:35:34 +0200 Subject: [PATCH 214/241] Build: Update dependencies * Update dependencies. * Switch from JSHint to ESLint. Closes https://github.com/jquery/grunt-jquery-content/pull/81. --- .eslintrc.json | 20 + .jshintrc | 17 - .npmrc | 1 - Gruntfile.js | 16 +- index.js | 6 +- lib/highlight.js | 56 +- lib/util.js | 20 +- package-lock.json | 1921 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 27 +- tasks/build-xml.js | 56 +- tasks/build.js | 41 +- tasks/redirects.js | 12 +- 12 files changed, 2067 insertions(+), 126 deletions(-) create mode 100644 .eslintrc.json delete mode 100644 .jshintrc delete mode 100644 .npmrc create mode 100644 package-lock.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..9aab0e7 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,20 @@ +{ + "root": true, + + "extends": "jquery", + + "reportUnusedDisableDirectives": true, + + "parserOptions": { + "ecmaVersion": 2018 + }, + + "env": { + "es6": true, + "node": true + }, + + "rules": { + "strict": ["error", "global"] + } +} diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index d34c42d..0000000 --- a/.jshintrc +++ /dev/null @@ -1,17 +0,0 @@ -{ - "boss": true, - "curly": true, - "eqeqeq": true, - "eqnull": true, - "expr": true, - "immed": true, - "noarg": true, - "onevar": true, - "quotmark": "double", - "smarttabs": true, - "trailing": true, - "undef": true, - "unused": true, - - "node": true -} diff --git a/.npmrc b/.npmrc deleted file mode 100644 index cffe8cd..0000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -save-exact=true diff --git a/Gruntfile.js b/Gruntfile.js index 0e77a9a..df57e25 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,20 +1,22 @@ -module.exports = function( grunt ) { +"use strict"; -grunt.loadNpmTasks( "grunt-contrib-jshint" ); +module.exports = function( grunt ) { -grunt.initConfig({ +grunt.initConfig( { watch: { files: "", tasks: "default" }, - jshint: { + eslint: { options: { jshintrc: true }, - files: [ "Gruntfile.js", "tasks/**/*.js" ] + files: [ "*.js", "lib/**/*.js", "tasks/**/*.js" ] } -}); +} ); + +grunt.loadNpmTasks( "grunt-eslint" ); -grunt.registerTask( "default", "jshint" ); +grunt.registerTask( "default", "eslint" ); }; diff --git a/index.js b/index.js index d959c0f..08bea70 100644 --- a/index.js +++ b/index.js @@ -1,9 +1,11 @@ -var syntaxHighlight = require( "./lib/highlight" ); +"use strict"; + +const syntaxHighlight = require( "./lib/highlight" ); exports.syntaxHighlight = syntaxHighlight; exports.postPreprocessors = { - _default: function( post, fileName, callback ) { + _default( post, _fileName, callback ) { callback( null, post ); } }; diff --git a/lib/highlight.js b/lib/highlight.js index 375f1dc..aa62c5e 100644 --- a/lib/highlight.js +++ b/lib/highlight.js @@ -1,20 +1,22 @@ -var fs = require( "fs" ), - hljs = require( "highlight.js" ), - cheerio = require( "cheerio" ), - he = require( "he" ), - grunt = require( "grunt" ), - lineNumberTemplate = fs.readFileSync( __dirname + "/lineNumberTemplate.jst", "utf-8" ); +"use strict"; + +const fs = require( "fs" ); +const hljs = require( "highlight.js" ); +const cheerio = require( "cheerio" ); +const he = require( "he" ); +const grunt = require( "grunt" ); +const lineNumberTemplate = fs.readFileSync( __dirname + "/lineNumberTemplate.jst", "utf-8" ); // When parsing the class attribute, make sure a class matches an actually // highlightable language, instead of being presentational (e.g. 'example') function getLanguageFromClass( str ) { - var classes = (str || "").split( " " ), + var classes = ( str || "" ).split( " " ), i = 0, length = classes.length; for ( ; i < length; i++ ) { - if ( hljs.LANGUAGES[ classes[ i ].replace( /^lang-/, "" ) ] ) { - return classes[i].replace( /^lang-/, "" ); + if ( hljs.getLanguage( classes[ i ].replace( /^lang-/, "" ) ) ) { + return classes[ i ].replace( /^lang-/, "" ); } } @@ -27,34 +29,34 @@ function outdent( string ) { minTabs = Infinity, rLeadingTabs = /^\t+/; - string.split( "\n" ).forEach(function( line, i, arr ) { + string.split( "\n" ).forEach( function( line, i, arr ) { // Don't include first or last line if it's nothing but whitespace - if ( (i === 0 || i === arr.length - 1) && !line.trim().length ) { + if ( ( i === 0 || i === arr.length - 1 ) && !line.trim().length ) { return; } // For empty lines inside the snippet, push a space so the line renders properly if ( !line.trim().length ) { - adjustedLines.push(" "); + adjustedLines.push( " " ); return; } // Count how many leading tabs there are and update the global minimum var match = line.match( rLeadingTabs ), - tabs = match ? match[0].length : 0; + tabs = match ? match[ 0 ].length : 0; minTabs = Math.min( minTabs, tabs ); adjustedLines.push( line ); - }); + } ); if ( minTabs !== Infinity ) { // Outdent the lines as much as possible rOutdent = new RegExp( "^\t{" + minTabs + "}" ); - adjustedLines = adjustedLines.map(function( line ) { + adjustedLines = adjustedLines.map( function( line ) { return line.replace( rOutdent, "" ); - }); + } ); } return adjustedLines.join( "\n" ); @@ -63,25 +65,25 @@ function outdent( string ) { function syntaxHighlight( html ) { var $ = cheerio.load( html ); - $( "pre > code" ).each(function() { + $( "pre > code" ).each( function() { var $t = $( this ), code = he.decode( outdent( $t.html() ) ), lang = $t.attr( "data-lang" ) || getLanguageFromClass( $t.attr( "class" ) ) || - (code.trim().charAt( 0 ) === "<" ? "xml" : "") || + ( code.trim().charAt( 0 ) === "<" ? "xml" : "" ) || "javascript", linenumAttr = $t.attr( "data-linenum" ), linenum = parseInt( linenumAttr, 10 ) || 1, - gutter = linenumAttr === "false" ? false : true, - highlighted = hljs.highlight( lang, code ), - fixed = hljs.fixMarkup( highlighted.value, " " ); + gutter = linenumAttr !== "false", + highlighted = hljs.highlight( code, { language: lang } ), + fixed = highlighted.value.replace( /\t/g, " " ); // Handle multi-line comments (#32) fixed = fixed.replace( - /\/\*([^<]+)\*\/<\/span>/g, - function( full, comment ) { - return "/*" + - comment.split( "\n" ).join( "\n" ) + + /\/\*([^<]+)\*\/<\/span>/g, + function( _full, comment ) { + return "/*" + + comment.split( "\n" ).join( "\n" ) + "*/"; } ); @@ -93,8 +95,8 @@ function syntaxHighlight( html ) { gutter: gutter, lang: lang } - })); - }); + } ) ); + } ); return $.html(); } diff --git a/lib/util.js b/lib/util.js index 294d22e..00b76ee 100644 --- a/lib/util.js +++ b/lib/util.js @@ -1,6 +1,8 @@ -var fs = require( "fs" ), - async = require( "async" ), - marked = require( "marked" ); +"use strict"; + +const fs = require( "fs" ); +const async = require( "async" ); +const marked = require( "marked" ); function htmlEscape( text ) { return text @@ -8,9 +10,7 @@ function htmlEscape( text ) { // Supports keeping markup in source file, but drop from inline sample .replace( /[\s\S]+@placeholder-end -->/g, - function( match, input ) { - return ""; - } + ( _match, input ) => "" ) .replace( /&/g, "&" ) .replace( / " + parsedText + ""; if ( options.generateToc ) { - toc += new Array( (item.depth - 1) * 2 + 1 ).join( " " ) + "* " + + toc += new Array( ( item.depth - 1 ) * 2 + 1 ).join( " " ) + "* " + "[" + item.tocText + "](#" + item.tocId + ")\n"; } - }); + } ); if ( options.generateToc ) { tokens = marked.lexer( toc ).concat( tokens ); @@ -85,7 +85,7 @@ function eachFile( files, stepFn, complete ) { } complete( null, count ); - }); + } ); } exports.htmlEscape = htmlEscape; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..57ef5ea --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1921 @@ +{ + "name": "grunt-jquery-content", + "version": "3.0.3", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "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" + } + }, + "chalk": { + "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": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@eslint/eslintrc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", + "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "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" + } + } + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + } + } + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "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=", + "dev": true + }, + "eslint": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", + "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "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" + } + } + } + }, + "eslint-config-jquery": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-jquery/-/eslint-config-jquery-3.0.0.tgz", + "integrity": "sha512-VDdRAIlNq1EM5P7J4JGQSCnZEIvIlNGGTUTCPT2wQNZ2GT69rsAwSIqZVcoiyZbwY7TaaMwLOxwSjqm+DEUjbA==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "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 + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "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=", + "dev": true + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "requires": { + "glob": "~5.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "getobject": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.1.tgz", + "integrity": "sha512-tj18lLe+917AACr6BdVoUuHnBPTVd9BEJp1vxnMZ58ztNvuxz9Ufa+wf3g37tlGITH35jggwZ2d9lcgHJJgXfQ==", + "dev": true + }, + "gilded-wordpress": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.5.tgz", + "integrity": "sha1-EnBg4iv/x6uo+++Xq/Pr+7fsScE=", + "requires": { + "async": "^0.9.0", + "glob": "^4.0.6", + "wordpress": "^1.1.2" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + } + } + }, + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "dependencies": { + "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" + } + } + } + }, + "globals": { + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", + "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "grunt": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.4.0.tgz", + "integrity": "sha512-yRFc0GVCDu9yxqOFzpuXQ2pEdgtLDnFv5Qz54jfIcNnpJ8Z7B7P7kPkT4VMuRvm+N+QOsI8C4v/Q0DSaoj3LgQ==", + "dev": true, + "requires": { + "dateformat": "~3.0.3", + "eventemitter2": "~0.4.13", + "exit": "~0.1.2", + "findup-sync": "~0.3.0", + "glob": "~7.1.6", + "grunt-cli": "~1.4.2", + "grunt-known-options": "~1.1.1", + "grunt-legacy-log": "~3.0.0", + "grunt-legacy-util": "~2.0.1", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.14.0", + "minimatch": "~3.0.4", + "mkdirp": "~1.0.4", + "nopt": "~3.0.6", + "rimraf": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "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" + } + }, + "grunt-cli": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.2.tgz", + "integrity": "sha512-wsu6BZh7KCnfeaSkDrKIAvOlqGKxNRTZjc8xfZlvxCByQIqUfZ31kh5uHpPnhQ4NdVgvaWaVxa1LUbVU80nACw==", + "dev": true, + "requires": { + "grunt-known-options": "~1.1.1", + "interpret": "~1.1.0", + "liftup": "~3.0.1", + "nopt": "~4.0.1", + "v8flags": "~3.2.0" + }, + "dependencies": { + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + } + } + }, + "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" + } + } + } + }, + "grunt-check-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-check-modules/-/grunt-check-modules-1.1.0.tgz", + "integrity": "sha1-fBZB28ZlSGdqbVl5Ga35C3s11kQ=" + }, + "grunt-eslint": { + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-23.0.0.tgz", + "integrity": "sha512-QqHSAiGF08EVD7YlD4OSRWuLRaDvpsRdTptwy9WaxUXE+03mCLVA/lEaR6SHWehF7oUwIqCEjaNONeeeWlB4LQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "eslint": "^7.0.0" + } + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", + "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", + "dev": true, + "requires": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.1.0", + "hooker": "~0.2.3", + "lodash": "~4.17.19" + } + }, + "grunt-legacy-log-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", + "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", + "dev": true, + "requires": { + "chalk": "~4.1.0", + "lodash": "~4.17.19" + } + }, + "grunt-legacy-util": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", + "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", + "dev": true, + "requires": { + "async": "~3.2.0", + "exit": "~0.1.2", + "getobject": "~1.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.21", + "underscore.string": "~3.3.5", + "which": "~2.0.2" + } + }, + "grunt-wordpress": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/grunt-wordpress/-/grunt-wordpress-2.1.3.tgz", + "integrity": "sha1-fNI9lBN9DDe+PybfZ4Y2FPUABXA=", + "requires": { + "gilded-wordpress": "1.0.5" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "highlight.js": { + "version": "10.7.2", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz", + "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg==" + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "liftup": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", + "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==", + "dev": true, + "requires": { + "extend": "^3.0.2", + "findup-sync": "^4.0.0", + "fined": "^1.2.0", + "flagged-respawn": "^1.0.1", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.1", + "rechoir": "^0.7.0", + "resolve": "^1.19.0" + }, + "dependencies": { + "findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + } + } + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "marked": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.3.tgz", + "integrity": "sha512-5otztIIcJfPc2qGTN8cVtOJEjNJZ0jwa46INMagrYfk0EvqtRuEHLsEe0LrFS0/q+ZRKT0+kXK7P2T1AN5lWRA==" + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "requires": { + "brace-expansion": "^1.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "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" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.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=", + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "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-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 + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "picomatch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "rechoir": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "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 + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "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" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "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==" + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "spawnback": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/spawnback/-/spawnback-1.0.1.tgz", + "integrity": "sha512-340ZqtqJzWAZtHwaCC2gx4mdQOnkUWAWNDp7y0bCEatdjmgQ4j7b0qQ7qO5WIJWx/luNrKcrYzpKbH3NTR030A==" + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.4.0.tgz", + "integrity": "sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "underscore.string": { + "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" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordpress": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/wordpress/-/wordpress-1.4.1.tgz", + "integrity": "sha512-U2zADxCSyyYcpgc5i7ipiDzNx6/e0zq2ldWyqTqr8n88Nj+iHd5JT/WavZkIQ+x0b9QlBv9lHoXyrqxdbckIrw==", + "requires": { + "xmlrpc": "1.3.2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=" + }, + "xmlrpc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz", + "integrity": "sha1-JrLqNHhI0Ciqx+dRS1NRl23j6D0=", + "requires": { + "sax": "1.2.x", + "xmlbuilder": "8.2.x" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/package.json b/package.json index 303c677..bf37b36 100644 --- a/package.json +++ b/package.json @@ -20,21 +20,22 @@ } ], "dependencies": { - "async": "0.9.0", - "cheerio": "0.17.0", - "grunt-check-modules": "1.1.0", - "grunt-wordpress": "2.1.3", - "he": "0.5.0", - "highlight.js": "7.3.0", - "marked": "0.3.2", - "rimraf": "2.2.8", - "spawnback": "1.0.0", - "which": "1.0.5", - "wordpress": "1.3.0" + "async": "^3.2.0", + "cheerio": "^0.22.0", + "grunt-check-modules": "^1.1.0", + "grunt-wordpress": "^2.1.3", + "he": "^1.2.0", + "highlight.js": "^10.7.2", + "marked": "^2.0.3", + "rimraf": "^3.0.2", + "spawnback": "^1.0.1", + "which": "^2.0.2", + "wordpress": "^1.4.1" }, "devDependencies": { - "grunt": "0.4.5", - "grunt-contrib-jshint": "0.10.0" + "eslint-config-jquery": "3.0.0", + "grunt": "1.4.0", + "grunt-eslint": "23.0.0" }, "keywords": [ "gruntplugin" diff --git a/tasks/build-xml.js b/tasks/build-xml.js index 02b3ee2..d133dbf 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -1,16 +1,18 @@ +"use strict"; + module.exports = function( grunt ) { -var fs = require( "fs" ), - path = require( "path" ), - which = require( "which" ), - spawn = require( "spawnback" ), - util = require( "../lib/util" ), - syntaxHighlight = require( "../lib/highlight" ); +const fs = require( "fs" ); +const path = require( "path" ); +const which = require( "which" ); +const spawn = require( "spawnback" ); +const util = require( "../lib/util" ); +const syntaxHighlight = require( "../lib/highlight" ); function checkLibxml2( executable ) { try { which.sync( executable ); - } catch( error ) { + } catch ( error ) { grunt.log.error( "Missing executable: " + executable + "." ); grunt.log.error( "You must install libxml2." ); grunt.log.error( "Downloads are available from http://www.xmlsoft.org/downloads.html" ); @@ -47,8 +49,8 @@ grunt.registerMultiTask( "xmllint", "Lint xml files", function() { grunt.verbose.ok(); fileDone(); - }); - }, function( error, count ) { + } ); + }, function( _error, count ) { if ( task.errorCount ) { grunt.warn( "Task \"" + task.name + "\" failed." ); return taskDone(); @@ -56,10 +58,11 @@ grunt.registerMultiTask( "xmllint", "Lint xml files", function() { grunt.log.writeln( "Lint free files: " + count ); taskDone(); - }); -}); + } ); +} ); -grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl and syntax highlight", function() { +grunt.registerMultiTask( "build-xml-entries", + "Process API xml files with xsl and syntax highlight", function() { var task = this, taskDone = task.async(), targetDir = grunt.config( "wordpress.dir" ) + "/posts/post/"; @@ -99,8 +102,8 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an grunt.file.write( targetFileName, content ); fileDone(); - }); - }, function( error, count ) { + } ); + }, function( _error, count ) { if ( task.errorCount ) { grunt.warn( "Task \"" + task.name + "\" failed." ); return taskDone(); @@ -108,8 +111,8 @@ grunt.registerMultiTask( "build-xml-entries", "Process API xml files with xsl an grunt.log.writeln( "Built " + count + " entries." ); taskDone(); - }); -}); + } ); +} ); grunt.registerTask( "build-xml-categories", function() { var taskDone = this.async(), @@ -162,12 +165,12 @@ grunt.registerTask( "build-xml-categories", function() { } function highlightCategories( categories ) { - categories.forEach(function( category ) { + categories.forEach( function( category ) { highlightDescription( category ); if ( category.children ) { highlightCategories( category.children ); } - }); + } ); } if ( !grunt.option( "nohighlight" ) ) { @@ -179,9 +182,9 @@ grunt.registerTask( "build-xml-categories", function() { fs.unlinkSync( "taxonomies.xml" ); grunt.verbose.ok(); taskDone(); - }); - }); -}); + } ); + } ); +} ); grunt.registerTask( "build-xml-full", function() { var taskDone = this.async(); @@ -193,14 +196,15 @@ grunt.registerTask( "build-xml-full", function() { grunt.file.copy( path.join( __dirname, "jquery-xml/all-entries.xml" ), "all-entries.xml", { process: function( content ) { return content.replace( "", - grunt.file.expand( "entries/*.xml" ).map(function( entry ) { + grunt.file.expand( "entries/*.xml" ).map( function( entry ) { return ""; - }).join( "\n" ) ); + } ).join( "\n" ) ); } - }); + } ); spawn( "xsltproc", [ "--xinclude", "--path", process.cwd(), + // "--output", grunt.config( "wordpress.dir" ) + "/resources/api.xml", path.join( __dirname, "jquery-xml/all-entries.xsl" ), "all-entries.xml" ], function( error, result ) { @@ -217,7 +221,7 @@ grunt.registerTask( "build-xml-full", function() { } taskDone(); - }); -}); + } ); +} ); }; diff --git a/tasks/build.js b/tasks/build.js index 289b664..6e89597 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -1,10 +1,12 @@ +"use strict"; + module.exports = function( grunt ) { -var rimraf = require( "rimraf" ), - wordpress = require( "grunt-wordpress" ), - util = require( "../lib/util" ), - syntaxHighlight = require( "../lib/highlight" ), - mainExports = require( "../" ); +const rimraf = require( "rimraf" ); +const wordpress = require( "grunt-wordpress" ); +const util = require( "../lib/util" ); +const syntaxHighlight = require( "../lib/highlight" ); +const mainExports = require( "../" ); // Load external tasks as local tasks // Grunt doesn't provide an API to pass thru tasks from dependent grunt plugins @@ -13,7 +15,7 @@ require( "grunt-check-modules/tasks/check-modules" )( grunt ); grunt.registerTask( "clean-dist", function() { rimraf.sync( "dist" ); -}); +} ); // Define an empty lint task, to be redefined by each site with relevant lint tasks grunt.registerTask( "lint", [] ); @@ -38,7 +40,7 @@ grunt.registerMultiTask( "build-posts", "Process html and markdown files as post } preprocessor( post, fileName, callback ); - }); + } ); } util.eachFile( this.filesSrc, function( fileName, fileDone ) { @@ -62,15 +64,16 @@ grunt.registerMultiTask( "build-posts", "Process html and markdown files as post content = util.parseMarkdown( content, { generateLinks: post.toc || !post.noHeadingLinks, generateToc: post.toc - }); + } ); delete post.noHeadingLinks; delete post.toc; } // Replace partials - content = content.replace( /@partial\((.+)\)/g, function( match, input ) { + content = content.replace( /@partial\((.+)\)/g, + function( _match, input ) { return util.htmlEscape( grunt.file.read( input ) ); - }); + } ); // Syntax highlight code blocks if ( !grunt.option( "nohighlight" ) ) { @@ -78,18 +81,18 @@ grunt.registerMultiTask( "build-posts", "Process html and markdown files as post } post.customFields = post.customFields || []; - post.customFields.push({ + post.customFields.push( { key: "source_path", value: fileName - }); + } ); // Write file grunt.file.write( targetFileName, "\n" + content ); fileDone(); - }); - }, function( error, count ) { + } ); + }, function( _error, count ) { if ( task.errorCount ) { grunt.warn( "Task \"" + task.name + "\" failed." ); return taskDone(); @@ -97,8 +100,8 @@ grunt.registerMultiTask( "build-posts", "Process html and markdown files as post grunt.log.writeln( "Built " + count + " pages." ); taskDone(); - }); -}); + } ); +} ); grunt.registerMultiTask( "build-resources", "Copy resources", function() { var task = this, @@ -112,7 +115,7 @@ grunt.registerMultiTask( "build-resources", "Copy resources", function() { grunt.file.copy( fileName, targetDir + fileName.replace( /^.+?\//, "" ) ); } fileDone(); - }, function( error, count ) { + }, function( _error, count ) { if ( task.errorCount ) { grunt.warn( "Task \"" + task.name + "\" failed." ); return taskDone(); @@ -120,7 +123,7 @@ grunt.registerMultiTask( "build-resources", "Copy resources", function() { grunt.log.writeln( "Built " + count + " resources." ); taskDone(); - }); -}); + } ); +} ); }; diff --git a/tasks/redirects.js b/tasks/redirects.js index c51bd0f..0a0f226 100644 --- a/tasks/redirects.js +++ b/tasks/redirects.js @@ -1,11 +1,15 @@ +"use strict"; + module.exports = function( grunt ) { -var wp = require( "wordpress" ); +const wp = require( "wordpress" ); grunt.registerTask( "deploy-redirects", function() { - var config = grunt.config( "wordpress" ); - var redirects = grunt.file.exists( "redirects.json" ) ? grunt.file.readJSON( "redirects.json" ) : {}; - var client = wp.createClient( config ); + const config = grunt.config( "wordpress" ); + const redirects = grunt.file.exists( "redirects.json" ) ? + grunt.file.readJSON( "redirects.json" ) : + {}; + const client = wp.createClient( config ); client.authenticatedCall( "jq.setRedirects", JSON.stringify( redirects ), this.async() ); } ); From 09cd676e7af28089e6cfe95d2b6342105f102cb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?= Date: Sat, 22 May 2021 03:29:35 +0200 Subject: [PATCH 215/241] 3.1.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 57ef5ea..7f8bb11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "grunt-jquery-content", - "version": "3.0.3", + "version": "3.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index bf37b36..c67d322 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "3.0.3", + "version": "3.1.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 84026b420c67566f8ccd30b12900bbe7ceb99851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?= Date: Sat, 22 May 2021 13:50:51 +0200 Subject: [PATCH 216/241] Build: Remove an incorrect ESLint's jshintrc option It's a leftover from the JSHint to ESLint migration. --- Gruntfile.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index df57e25..0409989 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -8,9 +8,6 @@ grunt.initConfig( { tasks: "default" }, eslint: { - options: { - jshintrc: true - }, files: [ "*.js", "lib/**/*.js", "tasks/**/*.js" ] } } ); From a0f208e905c69fab0d2e1318c354a7d022c3dc32 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 14 Aug 2021 13:10:46 +0200 Subject: [PATCH 217/241] Bump path-parse from 1.0.6 to 1.0.7 Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7. - [Release notes](https://github.com/jbgutierrez/path-parse/releases) - [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7) Closes gh-82 --- updated-dependencies: - dependency-name: path-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f8bb11..82e11ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1524,9 +1524,9 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-root": { From 87f51d17fb08980dfa340975599a32b9f1968b28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Apr 2022 14:42:54 +0200 Subject: [PATCH 218/241] Bump grunt from 1.4.0 to 1.5.2 Bumps [grunt](https://github.com/gruntjs/grunt) from 1.4.0 to 1.5.2. - [Release notes](https://github.com/gruntjs/grunt/releases) - [Changelog](https://github.com/gruntjs/grunt/blob/main/CHANGELOG) - [Commits](https://github.com/gruntjs/grunt/compare/v1.4.0...v1.5.2) Closes gh-84 --- updated-dependencies: - dependency-name: grunt dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 89 +++++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 49 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index 82e11ad..1a55cbe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -744,9 +744,9 @@ "dev": true }, "getobject": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.1.tgz", - "integrity": "sha512-tj18lLe+917AACr6BdVoUuHnBPTVd9BEJp1vxnMZ58ztNvuxz9Ufa+wf3g37tlGITH35jggwZ2d9lcgHJJgXfQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", + "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", "dev": true }, "gilded-wordpress": { @@ -839,9 +839,9 @@ } }, "grunt": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.4.0.tgz", - "integrity": "sha512-yRFc0GVCDu9yxqOFzpuXQ2pEdgtLDnFv5Qz54jfIcNnpJ8Z7B7P7kPkT4VMuRvm+N+QOsI8C4v/Q0DSaoj3LgQ==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.2.tgz", + "integrity": "sha512-XCtfaIu72OyDqK24MjWiGC9SwlkuhkS1mrULr1xzuJ2XqAFhP3ZAchZGHJeSCY6mkaOXU4F7SbmmCF7xIVoC9w==", "dev": true, "requires": { "dateformat": "~3.0.3", @@ -849,8 +849,8 @@ "exit": "~0.1.2", "findup-sync": "~0.3.0", "glob": "~7.1.6", - "grunt-cli": "~1.4.2", - "grunt-known-options": "~1.1.1", + "grunt-cli": "~1.4.3", + "grunt-known-options": "~2.0.0", "grunt-legacy-log": "~3.0.0", "grunt-legacy-util": "~2.0.1", "iconv-lite": "~0.4.13", @@ -876,12 +876,12 @@ } }, "grunt-cli": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.2.tgz", - "integrity": "sha512-wsu6BZh7KCnfeaSkDrKIAvOlqGKxNRTZjc8xfZlvxCByQIqUfZ31kh5uHpPnhQ4NdVgvaWaVxa1LUbVU80nACw==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", + "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", "dev": true, "requires": { - "grunt-known-options": "~1.1.1", + "grunt-known-options": "~2.0.0", "interpret": "~1.1.0", "liftup": "~3.0.1", "nopt": "~4.0.1", @@ -901,9 +901,9 @@ } }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -927,9 +927,9 @@ } }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", + "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==", "dev": true }, "grunt-legacy-log": { @@ -1098,9 +1098,9 @@ } }, "is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "requires": { "has": "^1.0.3" @@ -1359,13 +1359,13 @@ "integrity": "sha512-5otztIIcJfPc2qGTN8cVtOJEjNJZ0jwa46INMagrYfk0EvqtRuEHLsEe0LrFS0/q+ZRKT0+kXK7P2T1AN5lWRA==" }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "minimatch": { @@ -1545,9 +1545,9 @@ "dev": true }, "picomatch": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", - "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "prelude-ls": { @@ -1579,9 +1579,9 @@ } }, "rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, "requires": { "resolve": "^1.9.0" @@ -1600,13 +1600,14 @@ "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-dir": { @@ -1761,6 +1762,12 @@ "has-flag": "^4.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "table": { "version": "6.7.1", "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", @@ -1832,12 +1839,12 @@ "dev": true }, "underscore.string": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", - "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz", + "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==", "dev": true, "requires": { - "sprintf-js": "^1.0.3", + "sprintf-js": "^1.1.1", "util-deprecate": "^1.0.2" } }, diff --git a/package.json b/package.json index c67d322..d50a1f0 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ }, "devDependencies": { "eslint-config-jquery": "3.0.0", - "grunt": "1.4.0", + "grunt": "1.5.2", "grunt-eslint": "23.0.0" }, "keywords": [ From 81a5e9a4fc751254d0d7768611a02d275571bf37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Apr 2022 14:44:21 +0200 Subject: [PATCH 219/241] Bump async from 3.2.0 to 3.2.2 Bumps [async](https://github.com/caolan/async) from 3.2.0 to 3.2.2. - [Release notes](https://github.com/caolan/async/releases) - [Changelog](https://github.com/caolan/async/blob/master/CHANGELOG.md) - [Commits](https://github.com/caolan/async/compare/v3.2.0...v3.2.2) Closes gh-85 --- updated-dependencies: - dependency-name: async dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1a55cbe..2ae43b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -206,9 +206,9 @@ "dev": true }, "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", + "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==" }, "balanced-match": { "version": "1.0.2", From 6793149d9addbfb21af655f6035ceff9ce7efd89 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Apr 2022 14:44:43 +0200 Subject: [PATCH 220/241] Bump ansi-regex from 5.0.0 to 5.0.1 Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 5.0.0 to 5.0.1. - [Release notes](https://github.com/chalk/ansi-regex/releases) - [Commits](https://github.com/chalk/ansi-regex/compare/v5.0.0...v5.0.1) Closes gh-86 --- updated-dependencies: - dependency-name: ansi-regex dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2ae43b4..3da94b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -156,9 +156,9 @@ "dev": true }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { From 9acc9f6a4566535c49039aa97b15e6346fda8a04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jun 2022 17:34:17 +0200 Subject: [PATCH 221/241] Bump grunt from 1.5.2 to 1.5.3 (#87) Bumps [grunt](https://github.com/gruntjs/grunt) from 1.5.2 to 1.5.3. - [Release notes](https://github.com/gruntjs/grunt/releases) - [Changelog](https://github.com/gruntjs/grunt/blob/main/CHANGELOG) - [Commits](https://github.com/gruntjs/grunt/compare/v1.5.2...v1.5.3) --- updated-dependencies: - dependency-name: grunt dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3da94b9..e58181f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -190,7 +190,7 @@ "array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", "dev": true }, "array-slice": { @@ -839,9 +839,9 @@ } }, "grunt": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.2.tgz", - "integrity": "sha512-XCtfaIu72OyDqK24MjWiGC9SwlkuhkS1mrULr1xzuJ2XqAFhP3ZAchZGHJeSCY6mkaOXU4F7SbmmCF7xIVoC9w==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz", + "integrity": "sha512-mKwmo4X2d8/4c/BmcOETHek675uOqw0RuA/zy12jaspWqvTp4+ZeQF1W+OTpcbncnaBsfbQJ6l0l4j+Sn/GmaQ==", "dev": true, "requires": { "dateformat": "~3.0.3", diff --git a/package.json b/package.json index d50a1f0..656454a 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ }, "devDependencies": { "eslint-config-jquery": "3.0.0", - "grunt": "1.5.2", + "grunt": "1.5.3", "grunt-eslint": "23.0.0" }, "keywords": [ From f5fab356d6fef968e60d5e9c4a13db682b96e4ab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Apr 2023 22:14:56 +0200 Subject: [PATCH 222/241] Bump nth-check and cheerio Bumps [nth-check](https://github.com/fb55/nth-check) to 2.1.1 and updates ancestor dependency [cheerio](https://github.com/cheeriojs/cheerio). These dependencies need to be updated together. Updates `nth-check` from 1.0.2 to 2.1.1 - [Release notes](https://github.com/fb55/nth-check/releases) - [Commits](https://github.com/fb55/nth-check/compare/v1.0.2...v2.1.1) Updates `cheerio` from 0.22.0 to 1.0.0-rc.12 - [Release notes](https://github.com/cheeriojs/cheerio/releases) - [Commits](https://github.com/cheeriojs/cheerio/compare/0.22.0...v1.0.0-rc.12) Closes gh-88 --- updated-dependencies: - dependency-name: nth-check dependency-type: indirect - dependency-name: cheerio dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 236 +++++++++++++++++----------------------------- package.json | 2 +- 2 files changed, 89 insertions(+), 149 deletions(-) diff --git a/package-lock.json b/package-lock.json index e58181f..df141db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -218,7 +218,7 @@ "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "brace-expansion": { "version": "1.1.11", @@ -255,26 +255,30 @@ } }, "cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "requires": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + } + }, + "cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "requires": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" } }, "color-convert": { @@ -315,20 +319,21 @@ } }, "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" } }, "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" }, "dateformat": { "version": "3.0.3", @@ -367,34 +372,36 @@ } }, "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" } }, "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" }, "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "requires": { - "domelementtype": "1" + "domelementtype": "^2.3.0" } }, "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" } }, "emoji-regex": { @@ -413,9 +420,9 @@ } }, "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" }, "escape-string-regexp": { "version": "1.0.5", @@ -1018,16 +1025,14 @@ "dev": true }, "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, "iconv-lite": { @@ -1257,72 +1262,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" - }, - "lodash.bind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" - }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" - }, - "lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - }, - "lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" - }, - "lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" - }, - "lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" - }, - "lodash.reject": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", - "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" - }, - "lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" - }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -1404,11 +1349,11 @@ } }, "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "requires": { - "boolbase": "~1.0.0" + "boolbase": "^1.0.0" } }, "object.defaults": { @@ -1512,6 +1457,23 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "requires": { + "entities": "^4.4.0" + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "requires": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + } + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1568,16 +1530,6 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "rechoir": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", @@ -1657,11 +1609,6 @@ } } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -1730,14 +1677,6 @@ "strip-ansi": "^6.0.0" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -1860,7 +1799,8 @@ "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 }, "v8-compile-cache": { "version": "2.3.0", diff --git a/package.json b/package.json index 656454a..9eef847 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ ], "dependencies": { "async": "^3.2.0", - "cheerio": "^0.22.0", + "cheerio": "^1.0.0-rc.12", "grunt-check-modules": "^1.1.0", "grunt-wordpress": "^2.1.3", "he": "^1.2.0", From 6cc209a55ffa5429335c8c3077437321bdda963b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Jul 2023 00:21:46 +0200 Subject: [PATCH 223/241] Bump word-wrap from 1.2.3 to 1.2.4 Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4) Closes gh-89 --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index df141db..42c6a01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1826,9 +1826,9 @@ } }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true }, "wordpress": { From 06106bbef5a87b7ed0f39c9ec09f12f161e7b88a Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Mon, 30 Oct 2023 08:50:55 +0000 Subject: [PATCH 224/241] Util: Move toc ID in parseMarkdown from icon to heading Currently, the heading IDs are not actually on the heading elements. This means that scrapers such as Algolia and Typesense often link text excerpts under a heading to something far away like `#content` instead of the nearest preceeding heading. For semantics, and to benefit search suggestions, I think the heading IDs are better suited on headings. Closes gh-90 Ref jquery/infrastructure-puppet#33 --- lib/util.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/util.js b/lib/util.js index 00b76ee..37ddf97 100644 --- a/lib/util.js +++ b/lib/util.js @@ -47,8 +47,8 @@ function parseMarkdown( src, options ) { item.pre = false; // Insert the link - item.text = "" + - "" + + item.text = "" + + "" + "link" + " " + parsedText + ""; From 8bce38cbf01989362458882001367e8ed24f85de Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Mon, 30 Oct 2023 20:18:05 +0000 Subject: [PATCH 225/241] 3.2.0 --- package-lock.json | 2557 ++++++++++++++++++++++++++++++++++++++++++--- package.json | 2 +- 2 files changed, 2424 insertions(+), 135 deletions(-) diff --git a/package-lock.json b/package-lock.json index 42c6a01..ba25f52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,2385 @@ { "name": "grunt-jquery-content", - "version": "3.1.0", - "lockfileVersion": 1, + "version": "3.2.0", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "grunt-jquery-content", + "version": "3.2.0", + "dependencies": { + "async": "^3.2.0", + "cheerio": "^1.0.0-rc.12", + "grunt-check-modules": "^1.1.0", + "grunt-wordpress": "^2.1.3", + "he": "^1.2.0", + "highlight.js": "^10.7.2", + "marked": "^2.0.3", + "rimraf": "^3.0.2", + "spawnback": "^1.0.1", + "which": "^2.0.2", + "wordpress": "^1.4.1" + }, + "devDependencies": { + "eslint-config-jquery": "3.0.0", + "grunt": "1.5.3", + "grunt-eslint": "23.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "node_modules/@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "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, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "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, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", + "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/argparse/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", + "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", + "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-jquery": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-jquery/-/eslint-config-jquery-3.0.0.tgz", + "integrity": "sha512-VDdRAIlNq1EM5P7J4JGQSCnZEIvIlNGGTUTCPT2wQNZ2GT69rsAwSIqZVcoiyZbwY7TaaMwLOxwSjqm+DEUjbA==", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dependencies": { + "glob": "~5.0.0" + }, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/findup-sync/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/getobject": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", + "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/gilded-wordpress": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.5.tgz", + "integrity": "sha1-EnBg4iv/x6uo+++Xq/Pr+7fsScE=", + "dependencies": { + "async": "^0.9.0", + "glob": "^4.0.6", + "wordpress": "^1.1.2" + } + }, + "node_modules/gilded-wordpress/node_modules/async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "node_modules/glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", + "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grunt": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz", + "integrity": "sha512-mKwmo4X2d8/4c/BmcOETHek675uOqw0RuA/zy12jaspWqvTp4+ZeQF1W+OTpcbncnaBsfbQJ6l0l4j+Sn/GmaQ==", + "dependencies": { + "dateformat": "~3.0.3", + "eventemitter2": "~0.4.13", + "exit": "~0.1.2", + "findup-sync": "~0.3.0", + "glob": "~7.1.6", + "grunt-cli": "~1.4.3", + "grunt-known-options": "~2.0.0", + "grunt-legacy-log": "~3.0.0", + "grunt-legacy-util": "~2.0.1", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.14.0", + "minimatch": "~3.0.4", + "mkdirp": "~1.0.4", + "nopt": "~3.0.6", + "rimraf": "~3.0.2" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/grunt-check-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-check-modules/-/grunt-check-modules-1.1.0.tgz", + "integrity": "sha1-fBZB28ZlSGdqbVl5Ga35C3s11kQ=", + "engines": { + "node": ">=0.6.0" + }, + "peerDependencies": { + "grunt": ">=0.4.0" + } + }, + "node_modules/grunt-eslint": { + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-23.0.0.tgz", + "integrity": "sha512-QqHSAiGF08EVD7YlD4OSRWuLRaDvpsRdTptwy9WaxUXE+03mCLVA/lEaR6SHWehF7oUwIqCEjaNONeeeWlB4LQ==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "eslint": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + }, + "peerDependencies": { + "grunt": ">=1" + } + }, + "node_modules/grunt-known-options": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", + "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-legacy-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", + "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", + "dependencies": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.1.0", + "hooker": "~0.2.3", + "lodash": "~4.17.19" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/grunt-legacy-log-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", + "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", + "dependencies": { + "chalk": "~4.1.0", + "lodash": "~4.17.19" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/grunt-legacy-util": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", + "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", + "dependencies": { + "async": "~3.2.0", + "exit": "~0.1.2", + "getobject": "~1.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.21", + "underscore.string": "~3.3.5", + "which": "~2.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/grunt-wordpress": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/grunt-wordpress/-/grunt-wordpress-2.1.3.tgz", + "integrity": "sha1-fNI9lBN9DDe+PybfZ4Y2FPUABXA=", + "dependencies": { + "gilded-wordpress": "1.0.5" + } + }, + "node_modules/grunt/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/grunt/node_modules/grunt-cli": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", + "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", + "dependencies": { + "grunt-known-options": "~2.0.0", + "interpret": "~1.1.0", + "liftup": "~3.0.1", + "nopt": "~4.0.1", + "v8flags": "~3.2.0" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/grunt/node_modules/grunt-cli/node_modules/nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/grunt/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "10.7.2", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz", + "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg==", + "engines": { + "node": "*" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "engines": { + "node": "*" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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 + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/liftup": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", + "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==", + "dependencies": { + "extend": "^3.0.2", + "findup-sync": "^4.0.0", + "fined": "^1.2.0", + "flagged-respawn": "^1.0.1", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.1", + "rechoir": "^0.7.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/liftup/node_modules/findup-sync": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", + "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/marked": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.3.tgz", + "integrity": "sha512-5otztIIcJfPc2qGTN8cVtOJEjNJZ0jwa46INMagrYfk0EvqtRuEHLsEe0LrFS0/q+ZRKT0+kXK7P2T1AN5lWRA==", + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">= 8.16.2" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", + "dependencies": { + "brace-expansion": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/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=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/spawnback": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/spawnback/-/spawnback-1.0.1.tgz", + "integrity": "sha512-340ZqtqJzWAZtHwaCC2gx4mdQOnkUWAWNDp7y0bCEatdjmgQ4j7b0qQ7qO5WIJWx/luNrKcrYzpKbH3NTR030A==" + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.4.0.tgz", + "integrity": "sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/underscore.string": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz", + "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==", + "dependencies": { + "sprintf-js": "^1.1.1", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordpress": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/wordpress/-/wordpress-1.4.1.tgz", + "integrity": "sha512-U2zADxCSyyYcpgc5i7ipiDzNx6/e0zq2ldWyqTqr8n88Nj+iHd5JT/WavZkIQ+x0b9QlBv9lHoXyrqxdbckIrw==", + "dependencies": { + "xmlrpc": "1.3.2" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlrpc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz", + "integrity": "sha1-JrLqNHhI0Ciqx+dRS1NRl23j6D0=", + "dependencies": { + "sax": "1.2.x", + "xmlbuilder": "8.2.x" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.0.0" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + }, "dependencies": { "@babel/code-frame": { "version": "7.12.11", @@ -122,8 +2499,7 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "acorn": { "version": "7.4.1", @@ -135,7 +2511,8 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true + "dev": true, + "requires": {} }, "ajv": { "version": "6.12.6", @@ -165,7 +2542,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -174,7 +2550,6 @@ "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" }, @@ -182,22 +2557,19 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" } } }, "array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", - "dev": true + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==" }, "array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" }, "astral-regex": { "version": "2.0.0", @@ -233,7 +2605,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -248,7 +2619,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -285,7 +2655,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -293,14 +2662,12 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, "concat-map": { "version": "0.0.1", @@ -338,8 +2705,7 @@ "dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" }, "debug": { "version": "4.3.1", @@ -359,8 +2725,7 @@ "detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" }, "doctrine": { "version": "3.0.0", @@ -547,8 +2912,7 @@ "esprima": { "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 + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.4.0", @@ -599,20 +2963,17 @@ "eventemitter2": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", - "dev": true + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" }, "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, "requires": { "homedir-polyfill": "^1.0.1" } @@ -620,8 +2981,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "fast-deep-equal": { "version": "3.1.3", @@ -654,7 +3014,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -663,7 +3022,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", - "dev": true, "requires": { "glob": "~5.0.0" }, @@ -672,7 +3030,6 @@ "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", @@ -687,7 +3044,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, "requires": { "expand-tilde": "^2.0.2", "is-plain-object": "^2.0.3", @@ -699,8 +3055,7 @@ "flagged-respawn": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" }, "flat-cache": { "version": "3.0.4", @@ -721,14 +3076,12 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, "for-own": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, "requires": { "for-in": "^1.0.1" } @@ -741,8 +3094,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -753,8 +3105,7 @@ "getobject": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", - "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==", - "dev": true + "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==" }, "gilded-wordpress": { "version": "1.0.5", @@ -797,7 +3148,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, "requires": { "global-prefix": "^1.0.1", "is-windows": "^1.0.1", @@ -808,7 +3158,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, "requires": { "expand-tilde": "^2.0.2", "homedir-polyfill": "^1.0.1", @@ -821,7 +3170,6 @@ "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" } @@ -849,7 +3197,6 @@ "version": "1.5.3", "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz", "integrity": "sha512-mKwmo4X2d8/4c/BmcOETHek675uOqw0RuA/zy12jaspWqvTp4+ZeQF1W+OTpcbncnaBsfbQJ6l0l4j+Sn/GmaQ==", - "dev": true, "requires": { "dateformat": "~3.0.3", "eventemitter2": "~0.4.13", @@ -872,7 +3219,6 @@ "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -886,7 +3232,6 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", - "dev": true, "requires": { "grunt-known-options": "~2.0.0", "interpret": "~1.1.0", @@ -899,7 +3244,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -911,7 +3255,6 @@ "version": "3.0.8", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -921,7 +3264,8 @@ "grunt-check-modules": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/grunt-check-modules/-/grunt-check-modules-1.1.0.tgz", - "integrity": "sha1-fBZB28ZlSGdqbVl5Ga35C3s11kQ=" + "integrity": "sha1-fBZB28ZlSGdqbVl5Ga35C3s11kQ=", + "requires": {} }, "grunt-eslint": { "version": "23.0.0", @@ -936,14 +3280,12 @@ "grunt-known-options": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", - "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==", - "dev": true + "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==" }, "grunt-legacy-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", - "dev": true, "requires": { "colors": "~1.1.2", "grunt-legacy-log-utils": "~2.1.0", @@ -955,7 +3297,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", - "dev": true, "requires": { "chalk": "~4.1.0", "lodash": "~4.17.19" @@ -965,7 +3306,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", - "dev": true, "requires": { "async": "~3.2.0", "exit": "~0.1.2", @@ -988,7 +3328,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -996,8 +3335,7 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "he": { "version": "1.2.0", @@ -1013,7 +3351,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, "requires": { "parse-passwd": "^1.0.0" } @@ -1021,8 +3358,7 @@ "hooker": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", - "dev": true + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=" }, "htmlparser2": { "version": "8.0.2", @@ -1039,7 +3375,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -1083,20 +3418,17 @@ "ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "interpret": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" }, "is-absolute": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, "requires": { "is-relative": "^1.0.0", "is-windows": "^1.0.1" @@ -1106,7 +3438,6 @@ "version": "2.9.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, "requires": { "has": "^1.0.3" } @@ -1114,8 +3445,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -1127,7 +3457,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -1135,14 +3464,12 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, "requires": { "isobject": "^3.0.1" } @@ -1151,7 +3478,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, "requires": { "is-unc-path": "^1.0.0" } @@ -1160,7 +3486,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, "requires": { "unc-path-regex": "^0.1.2" } @@ -1168,8 +3493,7 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, "isexe": { "version": "2.0.0", @@ -1179,8 +3503,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "js-tokens": { "version": "4.0.0", @@ -1192,7 +3515,6 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1213,8 +3535,7 @@ "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "levn": { "version": "0.4.1", @@ -1230,7 +3551,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==", - "dev": true, "requires": { "extend": "^3.0.2", "findup-sync": "^4.0.0", @@ -1246,7 +3566,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", - "dev": true, "requires": { "detect-file": "^1.0.0", "is-glob": "^4.0.0", @@ -1259,8 +3578,7 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.clonedeep": { "version": "4.5.0", @@ -1287,7 +3605,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, "requires": { "kind-of": "^6.0.2" } @@ -1295,8 +3612,7 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, "marked": { "version": "2.0.3", @@ -1307,7 +3623,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -1324,8 +3639,7 @@ "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "ms": { "version": "2.1.2", @@ -1343,7 +3657,6 @@ "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" } @@ -1360,7 +3673,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, "requires": { "array-each": "^1.0.1", "array-slice": "^1.0.0", @@ -1372,7 +3684,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, "requires": { "for-own": "^1.0.0", "make-iterator": "^1.0.0" @@ -1382,7 +3693,6 @@ "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" } @@ -1412,20 +3722,17 @@ "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 + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "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 + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -1444,7 +3751,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, "requires": { "is-absolute": "^1.0.0", "map-cache": "^0.2.0", @@ -1454,8 +3760,7 @@ "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" }, "parse5": { "version": "7.1.2", @@ -1488,14 +3793,12 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-root": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, "requires": { "path-root-regex": "^0.1.0" } @@ -1503,14 +3806,12 @@ "path-root-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "prelude-ls": { "version": "1.2.1", @@ -1534,7 +3835,6 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, "requires": { "resolve": "^1.9.0" } @@ -1555,7 +3855,6 @@ "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, "requires": { "is-core-module": "^2.8.1", "path-parse": "^1.0.7", @@ -1566,7 +3865,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, "requires": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" @@ -1612,8 +3910,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sax": { "version": "1.2.4", @@ -1663,8 +3960,7 @@ "sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, "string-width": { "version": "4.2.2", @@ -1696,7 +3992,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -1704,8 +3999,7 @@ "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "table": { "version": "6.7.1", @@ -1751,7 +4045,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -1774,14 +4067,12 @@ "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" }, "underscore.string": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz", "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==", - "dev": true, "requires": { "sprintf-js": "^1.1.1", "util-deprecate": "^1.0.2" @@ -1799,8 +4090,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "v8-compile-cache": { "version": "2.3.0", @@ -1812,7 +4102,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dev": true, "requires": { "homedir-polyfill": "^1.0.1" } diff --git a/package.json b/package.json index 9eef847..3b69136 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "3.1.0", + "version": "3.2.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 3c9beefd8fb58fc4b2d543c315f9af27408174c9 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sun, 5 Nov 2023 05:23:08 +0000 Subject: [PATCH 226/241] Build: Add integration test for build task --- .github/workflows/node.yml | 28 ++++ .gitignore | 3 +- Gruntfile.js | 32 ++-- README.md | 2 + entries2html.xsl | 11 ++ fixture/entries/addClass.xml | 50 ++++++ fixture/pages/Hello_World.html | 17 ++ fixture/pages/Mark.md | 17 ++ fixture/resources/x.txt | 1 + package-lock.json | 149 +++++++++++++----- package.json | 10 +- tasks/build.js | 4 +- test/build.test.js | 38 +++++ .../posts/page/pages/Hello_World.html | 34 ++++ .../wordpress/posts/page/pages/Mark.html | 10 ++ .../wordpress/posts/post/addClass.html | 120 ++++++++++++++ .../wordpress/resources/resources/x.txt | 1 + 17 files changed, 470 insertions(+), 57 deletions(-) create mode 100644 .github/workflows/node.yml create mode 100644 entries2html.xsl create mode 100644 fixture/entries/addClass.xml create mode 100644 fixture/pages/Hello_World.html create mode 100644 fixture/pages/Mark.md create mode 100644 fixture/resources/x.txt create mode 100644 test/build.test.js create mode 100644 test/expected/wordpress/posts/page/pages/Hello_World.html create mode 100644 test/expected/wordpress/posts/page/pages/Mark.html create mode 100644 test/expected/wordpress/posts/post/addClass.html create mode 100644 test/expected/wordpress/resources/resources/x.txt diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml new file mode 100644 index 0000000..e39ad91 --- /dev/null +++ b/.github/workflows/node.yml @@ -0,0 +1,28 @@ +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs + +name: Node.js + +on: + - push + - pull_request + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x, 20.x] + + steps: + - name: Install Debian packages + run: sudo apt-get install -y libxml2-utils xsltproc + - uses: actions/checkout@v3 + - name: Install Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - run: npm ci + - run: npm test diff --git a/.gitignore b/.gitignore index b512c09..f484804 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -node_modules \ No newline at end of file +/node_modules +/test/dist diff --git a/Gruntfile.js b/Gruntfile.js index 0409989..bdba453 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,19 +1,25 @@ "use strict"; module.exports = function( grunt ) { + grunt.initConfig( { + "build-posts": { + page: "fixture/pages/**" + }, + "build-resources": { + all: "fixture/resources/**" + }, + "build-xml-entries": { + all: "fixture/entries/**" + }, + wordpress: { + url: "example.org", + username: "admin", + password: "admin", + dir: "test/dist/wordpress" + } + } ); -grunt.initConfig( { - watch: { - files: "", - tasks: "default" - }, - eslint: { - files: [ "*.js", "lib/**/*.js", "tasks/**/*.js" ] - } -} ); - -grunt.loadNpmTasks( "grunt-eslint" ); - -grunt.registerTask( "default", "eslint" ); + grunt.loadTasks( "tasks" ); + grunt.registerTask( "build", [ "build-posts", "build-resources", "build-xml-entries" ] ); }; diff --git a/README.md b/README.md index 2742866..113eb55 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Tested with QUnit](https://img.shields.io/badge/tested_with-qunit-9c3493.svg)](https://qunitjs.com/) + # grunt-jquery-content A collection of tasks for building the jQuery web sites via Grunt. diff --git a/entries2html.xsl b/entries2html.xsl new file mode 100644 index 0000000..aed39b9 --- /dev/null +++ b/entries2html.xsl @@ -0,0 +1,11 @@ + + + + + +<!doctype html> +<style> </style> + + + + diff --git a/fixture/entries/addClass.xml b/fixture/entries/addClass.xml new file mode 100644 index 0000000..6d0f2b4 --- /dev/null +++ b/fixture/entries/addClass.xml @@ -0,0 +1,50 @@ + + + .addClass() + + 1.0 + + One or more space-separated classes to be added. + + + + 1.4 + + A function returning one or more space-separated class names. + + + + + + Adds the specified class(es) to each element in the set of matched elements. + +

    This method does not replace a class. It simply adds the class.

    +
    
    +$( "p" ).addClass( "myClass yourClass" );
    +    
    +

    The .addClass() method changes the className property on the selected elements.

    +
    + + Add the class "selected" to the matched elements. + + + + + + +
    diff --git a/fixture/pages/Hello_World.html b/fixture/pages/Hello_World.html new file mode 100644 index 0000000..4d91798 --- /dev/null +++ b/fixture/pages/Hello_World.html @@ -0,0 +1,17 @@ + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pellentesque placerat arcu, vel viverra augue posuere commodo. Aenean hendrerit quam sed commodo pellentesque.

    +

    Donec sed commodo velit, non molestie justo.

    +

    Phasellus

    +

    Cras vel justo molestie lorem auctor convallis. Donec ac lacus tincidunt, euismod lectus eu, pulvinar tortor.

    +
     Hello.world({
    +   // Handle the event
    +   // ......
    + });
    +
    +

    Sed sed molestie purus

    +

    Aliquam venenatis sem elit, et aliquet libero ultrices vitae. Nullam rutrum convallis justo, sed suscipit leo facilisis et. +

    diff --git a/fixture/pages/Mark.md b/fixture/pages/Mark.md new file mode 100644 index 0000000..2eff544 --- /dev/null +++ b/fixture/pages/Mark.md @@ -0,0 +1,17 @@ + + +**Conubia linguae** hydrae novissima recepto certe, clarus quod amictus tum ignota fluctibus *et quod*, est verba capitum, variusque. Sui saevam gentes propiora Cycladas, Hecate stamina nurus ramum! + +## Oculi miserarum + +Lorem [markdownum](https://en.wikipedia.org/wiki/Markdown) silentia umerique, colla. Per felix innoxia pariterque capillos accessit, nec ad tempore in nubes detrahitur. + +Aures precantibus supplice Medusaeo, Lycormas est esse aestuat aut Pterelas. + +## Domitos interea + +1. Non torsi numine amor +2. Tamen vino hinc indignatus aquas iunguntur sacrifica +3. Solitum bacae tellure ille diff --git a/fixture/resources/x.txt b/fixture/resources/x.txt new file mode 100644 index 0000000..587be6b --- /dev/null +++ b/fixture/resources/x.txt @@ -0,0 +1 @@ +x diff --git a/package-lock.json b/package-lock.json index ba25f52..8814020 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,15 +15,15 @@ "he": "^1.2.0", "highlight.js": "^10.7.2", "marked": "^2.0.3", - "rimraf": "^3.0.2", "spawnback": "^1.0.1", "which": "^2.0.2", "wordpress": "^1.4.1" }, "devDependencies": { + "eslint": "^7.0.0", "eslint-config-jquery": "3.0.0", "grunt": "1.5.3", - "grunt-eslint": "23.0.0" + "qunit": "^2.20.0" } }, "node_modules/@babel/code-frame": { @@ -392,6 +392,15 @@ "node": ">=0.1.90" } }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1078,6 +1087,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, "node_modules/grunt": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz", @@ -1117,25 +1138,6 @@ "grunt": ">=0.4.0" } }, - "node_modules/grunt-eslint": { - "version": "23.0.0", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-23.0.0.tgz", - "integrity": "sha512-QqHSAiGF08EVD7YlD4OSRWuLRaDvpsRdTptwy9WaxUXE+03mCLVA/lEaR6SHWehF7oUwIqCEjaNONeeeWlB4LQ==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "eslint": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - }, - "peerDependencies": { - "grunt": ">=1" - } - }, "node_modules/grunt-known-options": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", @@ -1641,14 +1643,14 @@ } }, "node_modules/marked": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.3.tgz", - "integrity": "sha512-5otztIIcJfPc2qGTN8cVtOJEjNJZ0jwa46INMagrYfk0EvqtRuEHLsEe0LrFS0/q+ZRKT0+kXK7P2T1AN5lWRA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", + "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", "bin": { "marked": "bin/marked" }, "engines": { - "node": ">= 8.16.2" + "node": ">= 10" } }, "node_modules/micromatch": { @@ -1698,6 +1700,15 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node_modules/node-watch": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", + "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", @@ -1942,6 +1953,23 @@ "node": ">=6" } }, + "node_modules/qunit": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.20.0.tgz", + "integrity": "sha512-N8Fp1J55waE+QG1KwX2LOyqulZUToRrrPBqDOfYfuAMkEglFL15uwvmH1P4Tq/omQ/mGbBI8PEB3PhIfvUb+jg==", + "dev": true, + "dependencies": { + "commander": "7.2.0", + "node-watch": "0.7.3", + "tiny-glob": "0.2.9" + }, + "bin": { + "qunit": "bin/qunit.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/rechoir": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", @@ -2233,6 +2261,16 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2669,6 +2707,12 @@ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -3193,6 +3237,18 @@ } } }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, "grunt": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz", @@ -3267,16 +3323,6 @@ "integrity": "sha1-fBZB28ZlSGdqbVl5Ga35C3s11kQ=", "requires": {} }, - "grunt-eslint": { - "version": "23.0.0", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-23.0.0.tgz", - "integrity": "sha512-QqHSAiGF08EVD7YlD4OSRWuLRaDvpsRdTptwy9WaxUXE+03mCLVA/lEaR6SHWehF7oUwIqCEjaNONeeeWlB4LQ==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "eslint": "^7.0.0" - } - }, "grunt-known-options": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", @@ -3615,9 +3661,9 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, "marked": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.3.tgz", - "integrity": "sha512-5otztIIcJfPc2qGTN8cVtOJEjNJZ0jwa46INMagrYfk0EvqtRuEHLsEe0LrFS0/q+ZRKT0+kXK7P2T1AN5lWRA==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", + "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==" }, "micromatch": { "version": "4.0.5", @@ -3653,6 +3699,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node-watch": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", + "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==", + "dev": true + }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", @@ -3831,6 +3883,17 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "qunit": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.20.0.tgz", + "integrity": "sha512-N8Fp1J55waE+QG1KwX2LOyqulZUToRrrPBqDOfYfuAMkEglFL15uwvmH1P4Tq/omQ/mGbBI8PEB3PhIfvUb+jg==", + "dev": true, + "requires": { + "commander": "7.2.0", + "node-watch": "0.7.3", + "tiny-glob": "0.2.9" + } + }, "rechoir": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", @@ -4041,6 +4104,16 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", diff --git a/package.json b/package.json index 3b69136..74c13ae 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "licenses": [ { "type": "MIT", - "url": "https://github.com/jquery/grunt-jquery-content/blob/master/LICENSE.txt" + "url": "https://github.com/jquery/grunt-jquery-content/blob/main/LICENSE.txt" } ], "dependencies": { @@ -27,15 +27,19 @@ "he": "^1.2.0", "highlight.js": "^10.7.2", "marked": "^2.0.3", - "rimraf": "^3.0.2", "spawnback": "^1.0.1", "which": "^2.0.2", "wordpress": "^1.4.1" }, + "scripts": { + "test": "eslint . && qunit test/*.js", + "build-example": "grunt build" + }, "devDependencies": { + "eslint": "^7.0.0", "eslint-config-jquery": "3.0.0", "grunt": "1.5.3", - "grunt-eslint": "23.0.0" + "qunit": "^2.20.0" }, "keywords": [ "gruntplugin" diff --git a/tasks/build.js b/tasks/build.js index 6e89597..767c326 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -2,7 +2,7 @@ module.exports = function( grunt ) { -const rimraf = require( "rimraf" ); +const fs = require( "fs" ); const wordpress = require( "grunt-wordpress" ); const util = require( "../lib/util" ); const syntaxHighlight = require( "../lib/highlight" ); @@ -14,7 +14,7 @@ require( "grunt-wordpress/tasks/wordpress" )( grunt ); require( "grunt-check-modules/tasks/check-modules" )( grunt ); grunt.registerTask( "clean-dist", function() { - rimraf.sync( "dist" ); + fs.rmSync( "dist", { recursive: true, force: true } ); } ); // Define an empty lint task, to be redefined by each site with relevant lint tasks diff --git a/test/build.test.js b/test/build.test.js new file mode 100644 index 0000000..d3760dd --- /dev/null +++ b/test/build.test.js @@ -0,0 +1,38 @@ +/* eslint-env qunit */ +"use strict"; + +const cp = require( "child_process" ); +const path = require( "path" ); +const fs = require( "fs" ); +const ROOT = path.join( __dirname, ".." ); +const DIST = path.join( __dirname, "dist" ); +const EXPECTED = path.join( __dirname, "expected" ); + +QUnit.module( "build", function() { + QUnit.test( "dist", function( assert ) { + fs.rmSync( DIST, { recursive: true, force: true } ); + try { + cp.execSync( "npm run build-example", { + cwd: ROOT, + env: { PATH: process.env.PATH, NPM_CONFIG_UPDATE_NOTIFIER: "false" }, + encoding: "utf8" + } ); + } catch ( e ) { + assert.equal( e.stdout || e.toString(), "", "error" ); + return; + } + + const actualFiles = fs.readdirSync( DIST, { recursive: true } ).sort(); + const expectedFiles = fs.readdirSync( EXPECTED, { recursive: true } ).sort(); + assert.deepEqual( actualFiles, expectedFiles, "file names" ); + + for ( const file of expectedFiles ) { + if ( fs.statSync( path.join( EXPECTED, file ) ).isDirectory() ) { + continue; + } + const actualContent = fs.readFileSync( path.join( DIST, file ), "utf8" ); + const expectedContent = fs.readFileSync( path.join( EXPECTED, file ), "utf8" ); + assert.strictEqual( actualContent, expectedContent, file ); + } + } ); +} ); diff --git a/test/expected/wordpress/posts/page/pages/Hello_World.html b/test/expected/wordpress/posts/page/pages/Hello_World.html new file mode 100644 index 0000000..56c7fd8 --- /dev/null +++ b/test/expected/wordpress/posts/page/pages/Hello_World.html @@ -0,0 +1,34 @@ + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pellentesque placerat arcu, vel viverra augue posuere commodo. Aenean hendrerit quam sed commodo pellentesque.

    +

    Donec sed commodo velit, non molestie justo.

    +

    Phasellus

    +

    Cras vel justo molestie lorem auctor convallis. Donec ac lacus tincidunt, euismod lectus eu, pulvinar tortor.

    +
    +
  • <% _.forEach(lines, function(line, i) { %>
    <%= i + startAt %>
    <% }); %>
    <% _.forEach(lines, function(line, i) { %>
    <%= line %>
    <% }); %>
    + + + + + + + + +
    + +
    1
    + +
    2
    + +
    3
    + +
    4
    + +
    +
    Hello.world({
    // Handle the event
    // ......
    });
    +
    +
    + +

    Sed sed molestie purus

    +

    Aliquam venenatis sem elit, et aliquet libero ultrices vitae. Nullam rutrum convallis justo, sed suscipit leo facilisis et. +

    + \ No newline at end of file diff --git a/test/expected/wordpress/posts/page/pages/Mark.html b/test/expected/wordpress/posts/page/pages/Mark.html new file mode 100644 index 0000000..fc8cf11 --- /dev/null +++ b/test/expected/wordpress/posts/page/pages/Mark.html @@ -0,0 +1,10 @@ + +

    Conubia linguae hydrae novissima recepto certe, clarus quod amictus tum ignota fluctibus et quod, est verba capitum, variusque. Sui saevam gentes propiora Cycladas, Hecate stamina nurus ramum!

    +

    link Oculi miserarum

    Lorem markdownum silentia umerique, colla. Per felix innoxia pariterque capillos accessit, nec ad tempore in nubes detrahitur.

    +

    Aures precantibus supplice Medusaeo, Lycormas est esse aestuat aut Pterelas.

    +

    link Domitos interea

      +
    1. Non torsi numine amor
    2. +
    3. Tamen vino hinc indignatus aquas iunguntur sacrifica
    4. +
    5. Solitum bacae tellure ille
    6. +
    + \ No newline at end of file diff --git a/test/expected/wordpress/posts/post/addClass.html b/test/expected/wordpress/posts/post/addClass.html new file mode 100644 index 0000000..806bf99 --- /dev/null +++ b/test/expected/wordpress/posts/post/addClass.html @@ -0,0 +1,120 @@ +

    +.addClass( className )Returns: jQuery +

    +
    +

    Description: Adds the specified class(es) to each element in the set of matched elements.

    + +
    +

    This method does not replace a class. It simply adds the class.

    +
    + + + + + + + + + +
    + +
    1
    + +
    +
    $( "p" ).addClass( "myClass yourClass" );
    +
    +
    + +

    The .addClass() method changes the className property on the selected elements.

    +
    +

    Example:

    +

    Add the class "selected" to the matched elements.

    +
    + + + + + + + + + +
    + +
    1
    + +
    2
    + +
    3
    + +
    4
    + +
    5
    + +
    6
    + +
    7
    + +
    8
    + +
    9
    + +
    10
    + +
    11
    + +
    12
    + +
    13
    + +
    14
    + +
    15
    + +
    16
    + +
    +
    <!doctype html>
    <style>
    p {
    margin: 8px;
    font-size: 16px;
    }
    .selected {
    color: blue;
    }
    .highlight {
    background: yellow;
    }
    </style>
    <p>Hello</p>
    <p>and</p>
    <p>Goodbye</p>
    +
    +
    + +

    Demo:

    +
    +
    +
    + \ No newline at end of file diff --git a/test/expected/wordpress/resources/resources/x.txt b/test/expected/wordpress/resources/resources/x.txt new file mode 100644 index 0000000..587be6b --- /dev/null +++ b/test/expected/wordpress/resources/resources/x.txt @@ -0,0 +1 @@ +x From ae94f14f847bcafa443857843c94c86f24fd4be1 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sun, 5 Nov 2023 05:26:12 +0000 Subject: [PATCH 227/241] Build: Upgrade from marked@2.x to marked@4.x Various CVEs are fixed in the latest 4.x release: https://github.com/markedjs/marked/security Upgrade notes: * https://github.com/markedjs/marked/releases/tag/v3.0.0 * https://github.com/markedjs/marked/releases/tag/v4.0.0 * https://github.com/markedjs/marked/blob/v4.0.19/docs/USING_PRO.md --- lib/util.js | 2 +- package-lock.json | 18 +++++++++--------- package.json | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/util.js b/lib/util.js index 37ddf97..8b83d91 100644 --- a/lib/util.js +++ b/lib/util.js @@ -34,7 +34,7 @@ function parseMarkdown( src, options ) { } // Store original text and create an id for linking - var parsedText = marked( item.text ); + var parsedText = marked.marked( item.text ); parsedText = parsedText.substring( 3, parsedText.length - 5 ); item.tocText = parsedText.replace( /<[^>]+>/g, "" ); item.tocId = item.tocText diff --git a/package-lock.json b/package-lock.json index 8814020..c3cfad4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "grunt-wordpress": "^2.1.3", "he": "^1.2.0", "highlight.js": "^10.7.2", - "marked": "^2.0.3", + "marked": "^4.0.0", "spawnback": "^1.0.1", "which": "^2.0.2", "wordpress": "^1.4.1" @@ -1643,14 +1643,14 @@ } }, "node_modules/marked": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", - "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "bin": { - "marked": "bin/marked" + "marked": "bin/marked.js" }, "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/micromatch": { @@ -3661,9 +3661,9 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, "marked": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", - "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==" }, "micromatch": { "version": "4.0.5", diff --git a/package.json b/package.json index 74c13ae..6bdf73a 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "grunt-wordpress": "^2.1.3", "he": "^1.2.0", "highlight.js": "^10.7.2", - "marked": "^2.0.3", + "marked": "^4.0.0", "spawnback": "^1.0.1", "which": "^2.0.2", "wordpress": "^1.4.1" From b786a2a7cc1c15820bedd7520ff5ad769250d3b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?= Date: Tue, 7 Nov 2023 09:47:27 +0100 Subject: [PATCH 228/241] Update ESLint & grunt-wordpress --- .eslintrc.json | 8 +- package-lock.json | 1798 +++++++++++++++++++++------------------------ package.json | 8 +- 3 files changed, 828 insertions(+), 986 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 9aab0e7..d9923b3 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -5,16 +5,12 @@ "reportUnusedDisableDirectives": true, - "parserOptions": { - "ecmaVersion": 2018 - }, - "env": { - "es6": true, + "es2023": true, "node": true }, "rules": { - "strict": ["error", "global"] + "strict": [ "error", "global" ] } } diff --git a/package-lock.json b/package-lock.json index c3cfad4..bebb751 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "async": "^3.2.0", "cheerio": "^1.0.0-rc.12", "grunt-check-modules": "^1.1.0", - "grunt-wordpress": "^2.1.3", + "grunt-wordpress": "^2.1.4", "he": "^1.2.0", "highlight.js": "^10.7.2", "marked": "^4.0.0", @@ -20,156 +20,202 @@ "wordpress": "^1.4.1" }, "devDependencies": { - "eslint": "^7.0.0", - "eslint-config-jquery": "3.0.0", - "grunt": "1.5.3", + "eslint": "^8.53.0", + "eslint-config-jquery": "3.0.2", + "grunt": "^1.6.1", "qunit": "^2.20.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true - }, - "node_modules/@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.14.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "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==", + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { - "node": ">=4" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@eslint/js": { + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", + "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "ajv": "^6.12.4", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "minimatch": "^3.0.5" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=10.10.0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "type-fest": "^0.8.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "*" + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -179,9 +225,9 @@ } }, "node_modules/acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -203,15 +249,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -264,15 +301,6 @@ "node": ">=0.10.0" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/async": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", @@ -447,17 +475,17 @@ } }, "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", "engines": { "node": "*" } }, "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -472,9 +500,9 @@ } }, "node_modules/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=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "node_modules/detect-file": { @@ -548,24 +576,6 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -578,124 +588,128 @@ } }, "node_modules/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=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", - "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.1", - "ajv": "^6.10.0", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", + "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.53.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.21", - "minimatch": "^3.0.4", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-jquery": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-jquery/-/eslint-config-jquery-3.0.0.tgz", - "integrity": "sha512-VDdRAIlNq1EM5P7J4JGQSCnZEIvIlNGGTUTCPT2wQNZ2GT69rsAwSIqZVcoiyZbwY7TaaMwLOxwSjqm+DEUjbA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-jquery/-/eslint-config-jquery-3.0.2.tgz", + "integrity": "sha512-1CdP7AY5ZuhDGUXz+/b7FwhRnDoK0A1swz+2nZ+zpEYJ3EyV085AOAfpFJL2s+ioHDspNQEsGSsl9uUEm9/f/g==", "dev": true }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -705,26 +719,20 @@ } }, "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -740,9 +748,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -751,15 +759,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -772,19 +771,10 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -843,9 +833,18 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -869,30 +868,34 @@ "node": ">=8" } }, - "node_modules/findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "dependencies": { - "glob": "~5.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/findup-sync/node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "node_modules/findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" }, "engines": { - "node": "*" + "node": ">= 10.13.0" } }, "node_modules/fined": { @@ -966,12 +969,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, "node_modules/getobject": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", @@ -981,24 +978,24 @@ } }, "node_modules/gilded-wordpress": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.5.tgz", - "integrity": "sha1-EnBg4iv/x6uo+++Xq/Pr+7fsScE=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.6.tgz", + "integrity": "sha512-xL03MCIpMfIgwsnSA2akCqRZ35Odfgp5xi6xXIl494LA4MwY3VGw844X+AlSHKnIezL/0aHQQNOevWtmpfvzTw==", "dependencies": { "async": "^0.9.0", "glob": "^4.0.6", - "wordpress": "^1.1.2" + "wordpress": "^1.4.2" } }, "node_modules/gilded-wordpress/node_modules/async": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==" }, "node_modules/glob": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "integrity": "sha512-I0rTWUKSZKxPSIAIaqhSXTM/DiII6wame+rEC3cFA5Lqmr9YmdL7z6Hj9+bdWtTvoY1Su4/OiMLmb37Y7JzvJQ==", "dependencies": { "inflight": "^1.0.4", "inherits": "2", @@ -1010,15 +1007,15 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/global-modules": { @@ -1061,9 +1058,9 @@ } }, "node_modules/globals": { - "version": "13.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", - "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1075,18 +1072,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globals/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/globalyzer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", @@ -1099,32 +1084,36 @@ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", "dev": true }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/grunt": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz", - "integrity": "sha512-mKwmo4X2d8/4c/BmcOETHek675uOqw0RuA/zy12jaspWqvTp4+ZeQF1W+OTpcbncnaBsfbQJ6l0l4j+Sn/GmaQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz", + "integrity": "sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==", "dependencies": { - "dateformat": "~3.0.3", + "dateformat": "~4.6.2", "eventemitter2": "~0.4.13", "exit": "~0.1.2", - "findup-sync": "~0.3.0", + "findup-sync": "~5.0.0", "glob": "~7.1.6", "grunt-cli": "~1.4.3", "grunt-known-options": "~2.0.0", "grunt-legacy-log": "~3.0.0", "grunt-legacy-util": "~2.0.1", - "iconv-lite": "~0.4.13", + "iconv-lite": "~0.6.3", "js-yaml": "~3.14.0", "minimatch": "~3.0.4", - "mkdirp": "~1.0.4", - "nopt": "~3.0.6", - "rimraf": "~3.0.2" + "nopt": "~3.0.6" }, "bin": { "grunt": "bin/grunt" }, "engines": { - "node": ">=8" + "node": ">=16" } }, "node_modules/grunt-check-modules": { @@ -1190,11 +1179,11 @@ } }, "node_modules/grunt-wordpress": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/grunt-wordpress/-/grunt-wordpress-2.1.3.tgz", - "integrity": "sha1-fNI9lBN9DDe+PybfZ4Y2FPUABXA=", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/grunt-wordpress/-/grunt-wordpress-2.1.4.tgz", + "integrity": "sha512-6rGpy8qm231FGbLdIylD+3nEpDLRUtJ3DSVaoYHimj388fwVWuLMnYZ7PkoYVa4tJnHkP+Tj0SuMRP5v0baYrQ==", "dependencies": { - "gilded-wordpress": "1.0.5" + "gilded-wordpress": "1.0.6" } }, "node_modules/grunt/node_modules/glob": { @@ -1330,20 +1319,20 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" @@ -1429,19 +1418,10 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1457,6 +1437,15 @@ "node": ">=0.12.0" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -1511,12 +1500,6 @@ "node": ">=0.10.0" } }, - "node_modules/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 - }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -1594,35 +1577,32 @@ "node": ">= 8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "node_modules/lru-cache": { + "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "p-locate": "^5.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "node_modules/make-iterator": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", @@ -1677,17 +1657,6 @@ "node": "*" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1777,17 +1746,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -1818,16 +1787,46 @@ "os-tmpdir": "^1.0.0" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "callsites": "^3.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/parse-filepath": { @@ -1874,6 +1873,15 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1935,24 +1943,35 @@ "node": ">= 0.8.0" } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/qunit": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.20.0.tgz", @@ -1981,27 +2000,6 @@ "node": ">= 0.10" } }, - "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -2039,10 +2037,21 @@ "node": ">=4" } }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -2057,6 +2066,7 @@ "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2076,6 +2086,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2083,6 +2094,29 @@ "node": "*" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -2093,21 +2127,6 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2129,23 +2148,6 @@ "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, "node_modules/spawnback": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/spawnback/-/spawnback-1.0.1.tgz", @@ -2156,27 +2158,13 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, - "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -2216,45 +2204,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.4.0.tgz", - "integrity": "sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -2295,12 +2244,15 @@ } }, "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/unc-path-regex": { @@ -2337,12 +2289,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "node_modules/v8flags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", @@ -2368,19 +2314,10 @@ "node": ">= 8" } }, - "node_modules/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wordpress": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/wordpress/-/wordpress-1.4.1.tgz", - "integrity": "sha512-U2zADxCSyyYcpgc5i7ipiDzNx6/e0zq2ldWyqTqr8n88Nj+iHd5JT/WavZkIQ+x0b9QlBv9lHoXyrqxdbckIrw==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/wordpress/-/wordpress-1.4.2.tgz", + "integrity": "sha512-T+o+Af6pK7mhTz/rJEZk4PpSIyRMVhx6vZm6UsmrnlL8pVudhu1gWzn1n3wZXlcEZQz7I0AOkEvPQ5hu++L+qg==", "dependencies": { "xmlrpc": "1.3.2" } @@ -2411,122 +2348,105 @@ "npm": ">=1.0.0" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } }, "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "requires": { - "@babel/highlight": "^7.10.4" + "eslint-visitor-keys": "^3.3.0" } }, - "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true }, - "@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "@eslint/eslintrc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "dependencies": { - "ansi-styles": { - "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" - } - }, - "chalk": { - "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": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "color-name": "1.1.3" + "argparse": "^2.0.1" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "brace-expansion": "^1.1.7" } } } }, - "@eslint/eslintrc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "@eslint/js": { + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", + "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "requires": { - "ajv": "^6.12.4", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "minimatch": "^3.0.5" }, "dependencies": { - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -2534,21 +2454,65 @@ } } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true }, "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "requires": {} }, @@ -2564,12 +2528,6 @@ "uri-js": "^4.2.2" } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -2609,12 +2567,6 @@ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, "async": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", @@ -2747,23 +2699,23 @@ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" }, "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==" }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" } }, "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=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "detect-file": { @@ -2813,81 +2765,82 @@ "domhandler": "^5.0.1" } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" }, "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=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "eslint": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", - "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.1", - "ajv": "^6.10.0", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", + "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.53.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.21", - "minimatch": "^3.0.4", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -2896,61 +2849,36 @@ } }, "eslint-config-jquery": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-jquery/-/eslint-config-jquery-3.0.0.tgz", - "integrity": "sha512-VDdRAIlNq1EM5P7J4JGQSCnZEIvIlNGGTUTCPT2wQNZ2GT69rsAwSIqZVcoiyZbwY7TaaMwLOxwSjqm+DEUjbA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-jquery/-/eslint-config-jquery-3.0.2.tgz", + "integrity": "sha512-1CdP7AY5ZuhDGUXz+/b7FwhRnDoK0A1swz+2nZ+zpEYJ3EyV085AOAfpFJL2s+ioHDspNQEsGSsl9uUEm9/f/g==", "dev": true }, "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "estraverse": "^5.2.0" } }, "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" } }, "esprima": { @@ -2959,20 +2887,12 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } } }, "esrecurse": { @@ -2982,20 +2902,12 @@ "dev": true, "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } } }, "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "esutils": { @@ -3042,9 +2954,18 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -3062,26 +2983,25 @@ "to-regex-range": "^5.0.1" } }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, "findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", "requires": { - "glob": "~5.0.0" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" } }, "fined": { @@ -3140,38 +3060,32 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, "getobject": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==" }, "gilded-wordpress": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.5.tgz", - "integrity": "sha1-EnBg4iv/x6uo+++Xq/Pr+7fsScE=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.6.tgz", + "integrity": "sha512-xL03MCIpMfIgwsnSA2akCqRZ35Odfgp5xi6xXIl494LA4MwY3VGw844X+AlSHKnIezL/0aHQQNOevWtmpfvzTw==", "requires": { "async": "^0.9.0", "glob": "^4.0.6", - "wordpress": "^1.1.2" + "wordpress": "^1.4.2" }, "dependencies": { "async": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==" } } }, "glob": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "integrity": "sha512-I0rTWUKSZKxPSIAIaqhSXTM/DiII6wame+rEC3cFA5Lqmr9YmdL7z6Hj9+bdWtTvoY1Su4/OiMLmb37Y7JzvJQ==", "requires": { "inflight": "^1.0.4", "inherits": "2", @@ -3180,12 +3094,12 @@ } }, "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "global-modules": { @@ -3221,20 +3135,12 @@ } }, "globals": { - "version": "13.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", - "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "requires": { "type-fest": "^0.20.2" - }, - "dependencies": { - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } } }, "globalyzer": { @@ -3249,26 +3155,30 @@ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", "dev": true }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "grunt": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz", - "integrity": "sha512-mKwmo4X2d8/4c/BmcOETHek675uOqw0RuA/zy12jaspWqvTp4+ZeQF1W+OTpcbncnaBsfbQJ6l0l4j+Sn/GmaQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz", + "integrity": "sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==", "requires": { - "dateformat": "~3.0.3", + "dateformat": "~4.6.2", "eventemitter2": "~0.4.13", "exit": "~0.1.2", - "findup-sync": "~0.3.0", + "findup-sync": "~5.0.0", "glob": "~7.1.6", "grunt-cli": "~1.4.3", "grunt-known-options": "~2.0.0", "grunt-legacy-log": "~3.0.0", "grunt-legacy-util": "~2.0.1", - "iconv-lite": "~0.4.13", + "iconv-lite": "~0.6.3", "js-yaml": "~3.14.0", "minimatch": "~3.0.4", - "mkdirp": "~1.0.4", - "nopt": "~3.0.6", - "rimraf": "~3.0.2" + "nopt": "~3.0.6" }, "dependencies": { "glob": { @@ -3363,11 +3273,11 @@ } }, "grunt-wordpress": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/grunt-wordpress/-/grunt-wordpress-2.1.3.tgz", - "integrity": "sha1-fNI9lBN9DDe+PybfZ4Y2FPUABXA=", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/grunt-wordpress/-/grunt-wordpress-2.1.4.tgz", + "integrity": "sha512-6rGpy8qm231FGbLdIylD+3nEpDLRUtJ3DSVaoYHimj388fwVWuLMnYZ7PkoYVa4tJnHkP+Tj0SuMRP5v0baYrQ==", "requires": { - "gilded-wordpress": "1.0.5" + "gilded-wordpress": "1.0.6" } }, "has": { @@ -3418,17 +3328,17 @@ } }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, "import-fresh": { @@ -3493,16 +3403,10 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "requires": { "is-extglob": "^2.1.1" } @@ -3512,6 +3416,12 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -3551,12 +3461,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "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": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -3621,32 +3525,26 @@ } } }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "make-iterator": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", @@ -3682,11 +3580,6 @@ "brace-expansion": "^1.0.0" } }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3758,17 +3651,17 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, "os-homedir": { @@ -3790,6 +3683,24 @@ "os-tmpdir": "^1.0.0" } }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3831,6 +3742,12 @@ "parse5": "^7.0.0" } }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -3871,16 +3788,16 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, "qunit": { @@ -3902,18 +3819,6 @@ "resolve": "^1.9.0" } }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, "resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -3939,10 +3844,17 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, "requires": { "glob": "^7.1.3" }, @@ -3951,6 +3863,7 @@ "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3964,12 +3877,22 @@ "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" } } } }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -3980,15 +3903,6 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4004,17 +3918,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, "spawnback": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/spawnback/-/spawnback-1.0.1.tgz", @@ -4025,24 +3928,13 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "strip-json-comments": { @@ -4064,40 +3956,6 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, - "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.4.0.tgz", - "integrity": "sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -4132,9 +3990,9 @@ } }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, "unc-path-regex": { @@ -4165,12 +4023,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "v8flags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", @@ -4187,16 +4039,10 @@ "isexe": "^2.0.0" } }, - "word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "dev": true - }, "wordpress": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/wordpress/-/wordpress-1.4.1.tgz", - "integrity": "sha512-U2zADxCSyyYcpgc5i7ipiDzNx6/e0zq2ldWyqTqr8n88Nj+iHd5JT/WavZkIQ+x0b9QlBv9lHoXyrqxdbckIrw==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/wordpress/-/wordpress-1.4.2.tgz", + "integrity": "sha512-T+o+Af6pK7mhTz/rJEZk4PpSIyRMVhx6vZm6UsmrnlL8pVudhu1gWzn1n3wZXlcEZQz7I0AOkEvPQ5hu++L+qg==", "requires": { "xmlrpc": "1.3.2" } @@ -4220,10 +4066,10 @@ "xmlbuilder": "8.2.x" } }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true } } diff --git a/package.json b/package.json index 6bdf73a..9fc3dd7 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "async": "^3.2.0", "cheerio": "^1.0.0-rc.12", "grunt-check-modules": "^1.1.0", - "grunt-wordpress": "^2.1.3", + "grunt-wordpress": "^2.1.4", "he": "^1.2.0", "highlight.js": "^10.7.2", "marked": "^4.0.0", @@ -36,9 +36,9 @@ "build-example": "grunt build" }, "devDependencies": { - "eslint": "^7.0.0", - "eslint-config-jquery": "3.0.0", - "grunt": "1.5.3", + "eslint": "^8.53.0", + "eslint-config-jquery": "3.0.2", + "grunt": "^1.6.1", "qunit": "^2.20.0" }, "keywords": [ From 72a287e903aeaebd20acba740d3c949d818eb73c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?= Date: Tue, 7 Nov 2023 09:48:25 +0100 Subject: [PATCH 229/241] Fix logic after cheerio update Newer cheerio by default wraps the content in `...` tags which we don't want. Fix the logic & test fixtures. --- lib/highlight.js | 5 ++++- test/expected/wordpress/posts/page/pages/Hello_World.html | 4 ++-- test/expected/wordpress/posts/page/pages/Mark.html | 3 +-- test/expected/wordpress/posts/post/addClass.html | 5 ++--- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/highlight.js b/lib/highlight.js index aa62c5e..96e5b00 100644 --- a/lib/highlight.js +++ b/lib/highlight.js @@ -63,7 +63,10 @@ function outdent( string ) { } function syntaxHighlight( html ) { - var $ = cheerio.load( html ); + + // The third parameter is `false` to disable wrapping contents + // in `...`, etc. + var $ = cheerio.load( html, null, false ); $( "pre > code" ).each( function() { var $t = $( this ), diff --git a/test/expected/wordpress/posts/page/pages/Hello_World.html b/test/expected/wordpress/posts/page/pages/Hello_World.html index 56c7fd8..db2a734 100644 --- a/test/expected/wordpress/posts/page/pages/Hello_World.html +++ b/test/expected/wordpress/posts/page/pages/Hello_World.html @@ -1,5 +1,6 @@ -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pellentesque placerat arcu, vel viverra augue posuere commodo. Aenean hendrerit quam sed commodo pellentesque.

    + +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pellentesque placerat arcu, vel viverra augue posuere commodo. Aenean hendrerit quam sed commodo pellentesque.

    Donec sed commodo velit, non molestie justo.

    Phasellus

    Cras vel justo molestie lorem auctor convallis. Donec ac lacus tincidunt, euismod lectus eu, pulvinar tortor.

    @@ -31,4 +32,3 @@

    Phasellus

    Sed sed molestie purus

    Aliquam venenatis sem elit, et aliquet libero ultrices vitae. Nullam rutrum convallis justo, sed suscipit leo facilisis et.

    - \ No newline at end of file diff --git a/test/expected/wordpress/posts/page/pages/Mark.html b/test/expected/wordpress/posts/page/pages/Mark.html index fc8cf11..f449c8f 100644 --- a/test/expected/wordpress/posts/page/pages/Mark.html +++ b/test/expected/wordpress/posts/page/pages/Mark.html @@ -1,5 +1,5 @@ -

    Conubia linguae hydrae novissima recepto certe, clarus quod amictus tum ignota fluctibus et quod, est verba capitum, variusque. Sui saevam gentes propiora Cycladas, Hecate stamina nurus ramum!

    +

    Conubia linguae hydrae novissima recepto certe, clarus quod amictus tum ignota fluctibus et quod, est verba capitum, variusque. Sui saevam gentes propiora Cycladas, Hecate stamina nurus ramum!

    link Oculi miserarum

    Lorem markdownum silentia umerique, colla. Per felix innoxia pariterque capillos accessit, nec ad tempore in nubes detrahitur.

    Aures precantibus supplice Medusaeo, Lycormas est esse aestuat aut Pterelas.

    link Domitos interea

      @@ -7,4 +7,3 @@

    - \ No newline at end of file From 8290d0674b68691be44aa40cf748648e68d5c7b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?= Date: Wed, 8 Nov 2023 18:54:58 +0100 Subject: [PATCH 230/241] Pin a version of grunt-wordpress to `2.1.4` `grunt-wordpress` updates `gilded-wordpress` in patch releases. However, our infra requires strict matching of the `gilded-wordpress` version in the `GW_VERSION` variable set in `gilded-wordpress.php`. Let's pin the version to avoid breaking changes from subdependencies updates. --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index bebb751..5b59d67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "async": "^3.2.0", "cheerio": "^1.0.0-rc.12", "grunt-check-modules": "^1.1.0", - "grunt-wordpress": "^2.1.4", + "grunt-wordpress": "2.1.4", "he": "^1.2.0", "highlight.js": "^10.7.2", "marked": "^4.0.0", diff --git a/package.json b/package.json index 9fc3dd7..9c22e98 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "async": "^3.2.0", "cheerio": "^1.0.0-rc.12", "grunt-check-modules": "^1.1.0", - "grunt-wordpress": "^2.1.4", + "grunt-wordpress": "2.1.4", "he": "^1.2.0", "highlight.js": "^10.7.2", "marked": "^4.0.0", From d2f2afcf8b8a98a324c8cac553a1ce47c7a9935c Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sun, 12 Nov 2023 16:30:29 +0000 Subject: [PATCH 231/241] Build: Remove dependency on grunt-wordpress This 20-line grunt plugin is a very thin wrapper around gilded-wordpress and node-wordpress. For ease of maintenance, use these directly here. None of scripts and other code is copied from the grunt-wordpress repository, only the grunt task itself. Reformatted per current jQuery code conventions to satisfy the ESLint preset. Ref https://github.com/jquery/api.jquery.com/issues/1119 --- LICENSE.txt | 7 +- README.md | 208 ++++++++++++++++++++++++++++++++++----------- package-lock.json | 18 +--- package.json | 2 +- tasks/build.js | 3 +- tasks/wordpress.js | 41 +++++++++ 6 files changed, 205 insertions(+), 74 deletions(-) create mode 100644 tasks/wordpress.js diff --git a/LICENSE.txt b/LICENSE.txt index af932fa..1f0face 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,8 +1,5 @@ -Copyright jQuery Foundation and other contributors, https://jquery.org/ - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/jquery/grunt-jquery-content +Copyright jQuery Foundation and other contributors, https://github.com/jquery/grunt-jquery-content +Copyright Scott González, http://scottgonzalez.com The following license applies to all parts of this software except as documented below: diff --git a/README.md b/README.md index 113eb55..6ecd675 100644 --- a/README.md +++ b/README.md @@ -2,83 +2,111 @@ # grunt-jquery-content -A collection of tasks for building the jQuery web sites via Grunt. +A collection of Grunt tasks for deploying jQuery documentation sites. -This module builds on top of [grunt-wordpress](https://github.com/scottgonzalez/grunt-wordpress), which builds on top of [Gilded WordPress](https://github.com/scottgonzalez/gilded-wordpress). See the Gilded WordPress documentation for details on the [directory structure and file formats](https://github.com/scottgonzalez/gilded-wordpress#directory-structure). +This module builds on top of [node-wordpress](https://github.com/scottgonzalez/node-wordpress) and the [Gilded WordPress](https://github.com/scottgonzalez/gilded-wordpress) plugin. See the Gilded WordPress documentation for details on the [directory structure and file formats](https://github.com/scottgonzalez/gilded-wordpress#directory-structure). -## Tasks +## Getting started -### clean-dist +Prerequisites: -This task removes all files in the `dist/` directory. +* Install the gilded-wordpress.php plugin on your WordPress site (copy from [Gilded WordPress](https://github.com/scottgonzalez/gilded-wordpress)). +* Depending on what kind of files you want to upload as "resources", you may need to configure WordPress to allow more permissive uploads. See the [Gilded WordPress documentation](https://github.com/scottgonzalez/gilded-wordpress#permissive-uploads) for how to do this. -### lint +Basic set up for your project: -This is an empty task list. If the site contains any lint checks, they should be defined here. For example, API sites should have the following task list: +1. add `wordpress` configuration to Gruntfile.js. +2. add `build-posts` task configuration to Gruntfile.js. +3. add `grunt.registerTask( "build", [ "build-posts" ] );` to Gruntfile.js -``` -grunt.registerTask( "lint", [ "xmllint" ] ); -``` +You can now use `grunt wordpress-deploy` to build and deploy your project. -### build +The `wordpress-deploy` task is a tree of the following tasks: -This is a task list that must be defined per site, containing all of the build steps. A simple site would have the following task list: +* `wordpress-deploy` + * `build-wordpress` + * `check-modules` + * `lint` (empty placeholder by default) + * `clean-dist` + * `build` (undefined by default) + * `wordpress-publish` + * `wordpress-validate` + * `wordpress-sync` -``` -grunt.registerTask( "build", [ "build-posts", "build-resources" ] ); -``` +The following optional tasks are made available to use via the `lint` or `build` phase: -### build-posts +* lint: + * `xmllint` +* build: + * `build-posts` + * `build-resources` + * `build-xml-entries` + * `build-xml-categories` + * `build-xml-full` -This multi-task takes a list of html or markdown files, copies them to `[wordpress.dir]/posts/[post-type]/`, processes `@partial` entries and highlights the syntax in each. The keys are the post types for each set of posts. +## Config -See the [`postPreprocessors` export](#postpreprocessors) for a hook to implement custom processing. +```javascript +grunt.initConfig({ + wordpress: { + url: "wordpress.localhost", + username: "admin", + password: "admin", + dir: "dist" + } +}); +``` -#### markdown +* `url`: The URL for the WordPress install. + Can be a full URL, e.g., `http://wordpress.localhost:1234/some/path` + or as short as just the host name. + If the protocol is `https`, then a secure connection will be used. +* `host` (optional): The actual host to connect to if different from the URL, e.g., when deploying to a local server behind a firewall. +* `username`: WordPress username. +* `password`: WordPress password. +* `dir`: Directory containing posts, taxonomies, and resources. + * See the [Gilded WordPress documentation](https://github.com/scottgonzalez/gilded-wordpress#directory-structure) for details on the directory structure and file formats. -Using markdown files provides additional features over HTML files. By default, links for each header are automatically generated for markdown files. +## Tasks -In addition to the [standard metadata](https://github.com/scottgonzalez/gilded-wordpress#post-files) for post files, the following properties can be set: +### clean-dist -* `noHeadingLinks`: When set to `false`, heading links won't be generated. -* `toc`: When set to `true`, a table of contents will be inserted at the top of the post based on the headings within the post. +This task removes all files in the `dist/` directory. -#### @partial +### lint -Usage: +This is an empty task list by default. If the site contains any lint checks, they should be defined here. For example, API documentation sites should have the following task list: -```html -
    @partial(resources/code-sample.html)
    +```javascript +grunt.registerTask( "lint", [ "xmllint" ] ); ``` -Where `resources/code-sample.html` is a relative path in the current directory. That html file will be inserted, escaped and highlighted. - -#### @placeholder - -Inside markup included with `@partial`, you can mark sections of code as `@placeholder` code, to be excluded from the inserted code, replaced with an html comment. - -Usage: +### build-posts -```html -regular markup will show up here - -this will be replaced - -other content +```javascript +grunt.initConfig({ + "build-posts": { + page: "pages/**" + }, +}); ``` -That will result in: +This multi-task takes a list of html or markdown files, copies them to `[wordpress.dir]/posts/[post-type]/`, processes `@partial` entries and highlights the syntax in each. The keys are the post types for each set of posts. -```html -regular markup will show up here - -other content -``` +See the [`postPreprocessors` export](#postpreprocessors) for a hook to implement custom processing. ### build-resources This mult-task copies all source files into `[wordpress.dir]/resources/`. +```javascript +grunt.initConfig({ + "build-resources": { + all: "resources/**" + }, +}); +``` + ### xmllint This multi-task lints XML files to ensure the files are valid. @@ -114,19 +142,101 @@ Code examples in the descriptions will be syntax highlighted. This task generates a single XML file that contains all entries and stores the result in `[wordpress.dir]/resources/api.xml`. +### wordpress-validate + +Walks through the `wordpress.dir` directory and performs various validations, such as: + +* Verifying that XML-RPC is enabled for the WordPress site. +* Verifying that the custom XML-RPC methods for gilded-wordpress are installed. +* Verifying the taxonomies and terms in `taxonomies.json`. +* Verifying that child-parent relationships for posts are valid. +* Verifying data for each post. +### wordpress-sync + +Synchronizes everything in `wordpress.dir` to the WordPress site. +This will create/edit/delete terms, posts, and resources. + +*Note: `wordpress-validate` must run prior to `wordpress-sync`.* + +### wordpress-publish + +Alias task for `wordpress-validate` and `wordpress-sync`. +This is useful if your original source content is already in the proper format, +or if you want to manually verify generated content between your custom build and publishing. + +### wordpress-deploy + +Alias task for `build-wordpress` and `wordpress-publish`. +This is useful if you are generating content for use with `wordpress-sync`. +Simply create a `build-wordpress` task that populates the `wordpress.dir` directory +and your deployments will be as simple as `grunt wordpress-deploy`. + +### deploy + +Alias task for `wordpress-deploy`. + +Since most projects that use grunt-jquery-content have one deploy target (WordPress), +there is a built-in `deploy` task that just runs `wordpress-deploy`. + +If your project has other deploy targets, you can redefine `deploy` as an alias that runs both `wordpress-deploy` and your other deployment-related tasks. + +## Page content + +The following features are available in pages built via the `build-posts` task. + +### Markdown + +Using markdown files provides additional features over HTML files. By default, links for each header are automatically generated for markdown files. + +In addition to the [standard metadata](https://github.com/scottgonzalez/gilded-wordpress#post-files) for post files, the following properties can be set: + +* `noHeadingLinks`: When set to `false`, heading links won't be generated. +* `toc`: When set to `true`, a table of contents will be inserted at the top of the post based on the headings within the post. + +### `@partial` + +Usage: + +```html +
    @partial(resources/code-sample.html)
    +``` + +Where `resources/code-sample.html` is a relative path in the current directory. That html file will be inserted, escaped and highlighted. + +### `@placeholder` + +Inside markup included with `@partial`, you can mark sections of code as `@placeholder` code, to be excluded from the inserted code, replaced with an html comment. + +Usage: + +```html +regular markup will show up here + +this will be replaced + +other content +``` + +That will result in: + +```html +regular markup will show up here + +other content +``` ## Exports -This module also exports some methods through the standard node `require()` API. +The grunt-jquery-content module primarily registers Grunt tasks, but it also exports some methods through the `require()` API. -### syntaxHighlight( content ) +### `syntaxHighlight( content )` Syntax highlights content. * `content` String: The string the highlight. -### postPreprocessors +### `postPreprocessors` Hooks for modifying the posts before they're processed in the [`build-posts`](#build-posts) task. diff --git a/package-lock.json b/package-lock.json index 5b59d67..5619967 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,8 @@ "dependencies": { "async": "^3.2.0", "cheerio": "^1.0.0-rc.12", + "gilded-wordpress": "1.0.6", "grunt-check-modules": "^1.1.0", - "grunt-wordpress": "2.1.4", "he": "^1.2.0", "highlight.js": "^10.7.2", "marked": "^4.0.0", @@ -1178,14 +1178,6 @@ "node": ">=10" } }, - "node_modules/grunt-wordpress": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/grunt-wordpress/-/grunt-wordpress-2.1.4.tgz", - "integrity": "sha512-6rGpy8qm231FGbLdIylD+3nEpDLRUtJ3DSVaoYHimj388fwVWuLMnYZ7PkoYVa4tJnHkP+Tj0SuMRP5v0baYrQ==", - "dependencies": { - "gilded-wordpress": "1.0.6" - } - }, "node_modules/grunt/node_modules/glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -3272,14 +3264,6 @@ "which": "~2.0.2" } }, - "grunt-wordpress": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/grunt-wordpress/-/grunt-wordpress-2.1.4.tgz", - "integrity": "sha512-6rGpy8qm231FGbLdIylD+3nEpDLRUtJ3DSVaoYHimj388fwVWuLMnYZ7PkoYVa4tJnHkP+Tj0SuMRP5v0baYrQ==", - "requires": { - "gilded-wordpress": "1.0.6" - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", diff --git a/package.json b/package.json index 9c22e98..2068b03 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "async": "^3.2.0", "cheerio": "^1.0.0-rc.12", "grunt-check-modules": "^1.1.0", - "grunt-wordpress": "2.1.4", + "gilded-wordpress": "1.0.6", "he": "^1.2.0", "highlight.js": "^10.7.2", "marked": "^4.0.0", diff --git a/tasks/build.js b/tasks/build.js index 767c326..e960fa4 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -3,14 +3,13 @@ module.exports = function( grunt ) { const fs = require( "fs" ); -const wordpress = require( "grunt-wordpress" ); +const wordpress = require( "gilded-wordpress" ); const util = require( "../lib/util" ); const syntaxHighlight = require( "../lib/highlight" ); const mainExports = require( "../" ); // Load external tasks as local tasks // Grunt doesn't provide an API to pass thru tasks from dependent grunt plugins -require( "grunt-wordpress/tasks/wordpress" )( grunt ); require( "grunt-check-modules/tasks/check-modules" )( grunt ); grunt.registerTask( "clean-dist", function() { diff --git a/tasks/wordpress.js b/tasks/wordpress.js new file mode 100644 index 0000000..b79ced8 --- /dev/null +++ b/tasks/wordpress.js @@ -0,0 +1,41 @@ +"use strict"; + +const wordpress = require( "gilded-wordpress" ); + +module.exports = function( grunt ) { + + var client = ( function() { + var _client; + + return function() { + if ( !_client ) { + var config = grunt.config( "wordpress" ); + config.verbose = grunt.option( "verbose" ) || false; + + _client = wordpress.createClient( config ); + _client.log = function() { + grunt.log.writeln.apply( grunt.log, arguments ); + }; + _client.logError = function() { + grunt.log.error.apply( grunt.log, arguments ); + }; + } + + return _client; + }; + } )(); + + grunt.registerTask( "wordpress-validate", function() { + client().validate( this.async() ); + } ); + + grunt.registerTask( "wordpress-sync", function() { + this.requires( "wordpress-validate" ); + client().sync( this.async() ); + } ); + + grunt.registerTask( "wordpress-publish", [ "wordpress-validate", "wordpress-sync" ] ); + grunt.registerTask( "wordpress-deploy", [ "build-wordpress", "wordpress-publish" ] ); + grunt.registerTask( "deploy", [ "wordpress-deploy" ] ); + +}; From 8f769df213bd04f71dc85e142de598129c64b2fc Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sun, 5 Nov 2023 05:36:11 +0000 Subject: [PATCH 232/241] Build: Upgrade from `which@2` to `which@4` https://github.com/npm/node-which/blob/v4.0.0/CHANGELOG.md * which 3.0: Removes support for Node 10 and 12. Requires Node 14+. * which 4.0: Removes support for Node 14. Requires Node 16+. --- package-lock.json | 87 +++++++++++++++++++++++++++++++++++++++++------ package.json | 2 +- 2 files changed, 77 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5619967..54647a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "highlight.js": "^10.7.2", "marked": "^4.0.0", "spawnback": "^1.0.1", - "which": "^2.0.2", + "which": "^4.0.0", "wordpress": "^1.4.1" }, "devDependencies": { @@ -448,6 +448,21 @@ "node": ">= 8" } }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", @@ -1178,6 +1193,20 @@ "node": ">=10" } }, + "node_modules/grunt-legacy-util/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/grunt/node_modules/glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -2293,17 +2322,25 @@ } }, "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dependencies": { - "isexe": "^2.0.0" + "isexe": "^3.1.1" }, "bin": { - "node-which": "bin/node-which" + "node-which": "bin/which.js" }, "engines": { - "node": ">= 8" + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" } }, "node_modules/wordpress": { @@ -2671,6 +2708,17 @@ "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "css-select": { @@ -3262,6 +3310,16 @@ "lodash": "~4.17.21", "underscore.string": "~3.3.5", "which": "~2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } } }, "has": { @@ -4016,11 +4074,18 @@ } }, "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "requires": { - "isexe": "^2.0.0" + "isexe": "^3.1.1" + }, + "dependencies": { + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==" + } } }, "wordpress": { diff --git a/package.json b/package.json index 2068b03..56bd910 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "highlight.js": "^10.7.2", "marked": "^4.0.0", "spawnback": "^1.0.1", - "which": "^2.0.2", + "which": "^4.0.0", "wordpress": "^1.4.1" }, "scripts": { From b51c322a4d1a483a2d6bc68378f4a6c8978e65a4 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sun, 12 Nov 2023 17:36:45 +0000 Subject: [PATCH 233/241] Build: remove `async` and `spawnback` dependencies Use async-await, for-of, and cp.spawn directly. --- Gruntfile.js | 7 ++ lib/util.js | 21 +--- package-lock.json | 12 --- package.json | 3 +- tasks/build-xml.js | 257 +++++++++++++++++++++++---------------------- tasks/build.js | 140 ++++++++++++------------ test/lint.test.js | 30 ++++++ 7 files changed, 248 insertions(+), 222 deletions(-) create mode 100644 test/lint.test.js diff --git a/Gruntfile.js b/Gruntfile.js index bdba453..d73b79d 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2,6 +2,12 @@ module.exports = function( grunt ) { grunt.initConfig( { + xmllint: { + all: [ + "fixture/entries/**", + "entries2html.xsl" + ] + }, "build-posts": { page: "fixture/pages/**" }, @@ -21,5 +27,6 @@ module.exports = function( grunt ) { grunt.loadTasks( "tasks" ); + grunt.registerTask( "lint", [ "xmllint" ] ); grunt.registerTask( "build", [ "build-posts", "build-resources", "build-xml-entries" ] ); }; diff --git a/lib/util.js b/lib/util.js index 8b83d91..8e8d2f8 100644 --- a/lib/util.js +++ b/lib/util.js @@ -1,7 +1,6 @@ "use strict"; const fs = require( "fs" ); -const async = require( "async" ); const marked = require( "marked" ); function htmlEscape( text ) { @@ -69,23 +68,13 @@ function parseMarkdown( src, options ) { return marked.parser( tokens ); } -function eachFile( files, stepFn, complete ) { - var count = 0; - - async.forEachSeries( files, function( fileName, fileDone ) { +async function eachFile( files, stepFn ) { + for ( const fileName of files ) { if ( !fs.statSync( fileName ).isFile() ) { - return fileDone(); - } - - count++; - stepFn( fileName, fileDone ); - }, function( error ) { - if ( error ) { - return complete( error ); + continue; } - - complete( null, count ); - } ); + await stepFn( fileName ); + } } exports.htmlEscape = htmlEscape; diff --git a/package-lock.json b/package-lock.json index 54647a6..c3bae2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,14 +8,12 @@ "name": "grunt-jquery-content", "version": "3.2.0", "dependencies": { - "async": "^3.2.0", "cheerio": "^1.0.0-rc.12", "gilded-wordpress": "1.0.6", "grunt-check-modules": "^1.1.0", "he": "^1.2.0", "highlight.js": "^10.7.2", "marked": "^4.0.0", - "spawnback": "^1.0.1", "which": "^4.0.0", "wordpress": "^1.4.1" }, @@ -2169,11 +2167,6 @@ "node": ">=8" } }, - "node_modules/spawnback": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/spawnback/-/spawnback-1.0.1.tgz", - "integrity": "sha512-340ZqtqJzWAZtHwaCC2gx4mdQOnkUWAWNDp7y0bCEatdjmgQ4j7b0qQ7qO5WIJWx/luNrKcrYzpKbH3NTR030A==" - }, "node_modules/sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -3960,11 +3953,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "spawnback": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/spawnback/-/spawnback-1.0.1.tgz", - "integrity": "sha512-340ZqtqJzWAZtHwaCC2gx4mdQOnkUWAWNDp7y0bCEatdjmgQ4j7b0qQ7qO5WIJWx/luNrKcrYzpKbH3NTR030A==" - }, "sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", diff --git a/package.json b/package.json index 56bd910..3392ce7 100644 --- a/package.json +++ b/package.json @@ -20,19 +20,18 @@ } ], "dependencies": { - "async": "^3.2.0", "cheerio": "^1.0.0-rc.12", "grunt-check-modules": "^1.1.0", "gilded-wordpress": "1.0.6", "he": "^1.2.0", "highlight.js": "^10.7.2", "marked": "^4.0.0", - "spawnback": "^1.0.1", "which": "^4.0.0", "wordpress": "^1.4.1" }, "scripts": { "test": "eslint . && qunit test/*.js", + "lint-example": "grunt lint", "build-example": "grunt build" }, "devDependencies": { diff --git a/tasks/build-xml.js b/tasks/build-xml.js index d133dbf..5f76934 100644 --- a/tasks/build-xml.js +++ b/tasks/build-xml.js @@ -5,7 +5,7 @@ module.exports = function( grunt ) { const fs = require( "fs" ); const path = require( "path" ); const which = require( "which" ); -const spawn = require( "spawnback" ); +const cp = require( "child_process" ); const util = require( "../lib/util" ); const syntaxHighlight = require( "../lib/highlight" ); @@ -30,7 +30,7 @@ function checkXsltproc() { return checkLibxml2( "xsltproc" ); } -grunt.registerMultiTask( "xmllint", "Lint xml files", function() { +grunt.registerMultiTask( "xmllint", "Lint xml files", async function() { var task = this, taskDone = task.async(); @@ -38,31 +38,30 @@ grunt.registerMultiTask( "xmllint", "Lint xml files", function() { return taskDone( false ); } - util.eachFile( this.filesSrc, function( fileName, fileDone ) { + var count = 0; + async function lintFile( fileName ) { + count++; grunt.verbose.write( "Linting " + fileName + "..." ); - spawn( "xmllint", [ "--noout", fileName ], function( error ) { - if ( error ) { - grunt.verbose.error(); - grunt.log.error( error ); - return fileDone(); - } - - grunt.verbose.ok(); - fileDone(); - } ); - }, function( _error, count ) { - if ( task.errorCount ) { - grunt.warn( "Task \"" + task.name + "\" failed." ); - return taskDone(); - } + cp.spawnSync( "xmllint", [ "--noout", fileName ] ); + grunt.verbose.ok(); + } - grunt.log.writeln( "Lint free files: " + count ); + try { + await util.eachFile( this.filesSrc, lintFile ); + } catch ( e ) { + grunt.verbose.error(); + grunt.log.error( e ); + grunt.warn( "Task \"" + task.name + "\" failed." ); taskDone(); - } ); + return; + } + + grunt.log.writeln( "Lint free files: " + count ); + taskDone(); } ); grunt.registerMultiTask( "build-xml-entries", - "Process API xml files with xsl and syntax highlight", function() { + "Process API xml files with xsl and syntax highlight", async function() { var task = this, taskDone = task.async(), targetDir = grunt.config( "wordpress.dir" ) + "/posts/post/"; @@ -73,45 +72,45 @@ grunt.registerMultiTask( "build-xml-entries", grunt.file.mkdir( targetDir ); - util.eachFile( this.filesSrc, function( fileName, fileDone ) { + var count = 0; + async function transformFile( fileName ) { + count++; grunt.verbose.write( "Transforming " + fileName + "..." ); - spawn( "xsltproc", - [ "--xinclude", "entries2html.xsl", fileName ], - function( error, content, stderr ) { - - // Certain errors won't cause the tranform to fail. For example, a - // broken include will write to stderr, but still exit cleanly. - if ( stderr && !error ) { - error = new Error( stderr ); - } + const result = cp.spawnSync( "xsltproc", + [ "--xinclude", "entries2html.xsl", fileName ] + ); - if ( error ) { - grunt.verbose.error(); - grunt.log.error( error ); - return fileDone( error ); - } - - grunt.verbose.ok(); - - var targetFileName = targetDir + path.basename( fileName, ".xml" ) + ".html"; + // Certain errors won't cause the tranform to fail. For example, a + // broken include will write to stderr, but still exit cleanly. + const error = result.stderr && result.stderr.toString(); + if ( error ) { + throw new Error( error ); + } - // Syntax highlight code blocks - if ( !grunt.option( "nohighlight" ) ) { - content = syntaxHighlight( content ); - } + let content = result.stdout.toString(); - grunt.file.write( targetFileName, content ); - fileDone(); - } ); - }, function( _error, count ) { - if ( task.errorCount ) { - grunt.warn( "Task \"" + task.name + "\" failed." ); - return taskDone(); + // Syntax highlight code blocks + if ( !grunt.option( "nohighlight" ) ) { + content = syntaxHighlight( content ); } - grunt.log.writeln( "Built " + count + " entries." ); + const targetFileName = targetDir + path.basename( fileName, ".xml" ) + ".html"; + grunt.file.write( targetFileName, content ); + grunt.verbose.ok(); + } + + try { + await util.eachFile( this.filesSrc, transformFile ); + } catch ( e ) { + grunt.verbose.error(); + grunt.log.error( e ); + grunt.warn( "Task \"" + task.name + "\" failed." ); taskDone(); - } ); + return; + } + + grunt.log.writeln( "Built " + count + " entries." ); + taskDone(); } ); grunt.registerTask( "build-xml-categories", function() { @@ -122,68 +121,70 @@ grunt.registerTask( "build-xml-categories", function() { return taskDone( false ); } - spawn( "xsltproc", - [ "--output", "taxonomies.xml", - path.join( __dirname, "jquery-xml/cat2tax.xsl" ), "categories.xml" ], - function( error ) { - if ( error ) { - grunt.verbose.error(); - grunt.log.error( error ); - return taskDone(); + try { + cp.spawnSync( "xsltproc", [ + "--output", "taxonomies.xml", + path.join( __dirname, "jquery-xml/cat2tax.xsl" ), + "categories.xml" + ] ); + } catch ( error ) { + grunt.verbose.error(); + grunt.log.error( error ); + return taskDone(); + } + + try { + cp.spawnSync( "xsltproc", [ + "--output", targetPath, + path.join( __dirname, "jquery-xml/xml2json.xsl" ), + "taxonomies.xml" + ] ); + } catch ( error ) { + grunt.verbose.error(); + grunt.log.error( error ); + return taskDone(); + } + + // xml2json can't determine when to use an array if there is only one child, + // so we need to ensure all child terms are stored in an array + var taxonomies = grunt.file.readJSON( targetPath ); + function normalize( term ) { + if ( term.children && term.children.item ) { + term.children = [ term.children.item ]; } - spawn( "xsltproc", - [ "--output", targetPath, - path.join( __dirname, "jquery-xml/xml2json.xsl" ), "taxonomies.xml" ], - function( error ) { - if ( error ) { - grunt.verbose.error(); - grunt.log.error( error ); - return taskDone(); - } + if ( term.children ) { + term.children.forEach( normalize ); + } + } + taxonomies.category.forEach( normalize ); + grunt.file.write( targetPath, JSON.stringify( taxonomies ) ); - // xml2json can't determine when to use an array if there is only one child, - // so we need to ensure all child terms are stored in an array - var taxonomies = grunt.file.readJSON( targetPath ); - function normalize( term ) { - if ( term.children && term.children.item ) { - term.children = [ term.children.item ]; - } - - if ( term.children ) { - term.children.forEach( normalize ); - } - } - taxonomies.category.forEach( normalize ); - grunt.file.write( targetPath, JSON.stringify( taxonomies ) ); - - // Syntax highlight code blocks - function highlightDescription( category ) { - if ( category.description ) { - category.description = syntaxHighlight( category.description ); - } - } + // Syntax highlight code blocks + function highlightDescription( category ) { + if ( category.description ) { + category.description = syntaxHighlight( category.description ); + } + } - function highlightCategories( categories ) { - categories.forEach( function( category ) { - highlightDescription( category ); - if ( category.children ) { - highlightCategories( category.children ); - } - } ); + function highlightCategories( categories ) { + categories.forEach( function( category ) { + highlightDescription( category ); + if ( category.children ) { + highlightCategories( category.children ); } + } ); + } - if ( !grunt.option( "nohighlight" ) ) { - taxonomies = grunt.file.readJSON( targetPath ); - highlightCategories( taxonomies.category ); - grunt.file.write( targetPath, JSON.stringify( taxonomies ) ); - } + if ( !grunt.option( "nohighlight" ) ) { + taxonomies = grunt.file.readJSON( targetPath ); + highlightCategories( taxonomies.category ); + grunt.file.write( targetPath, JSON.stringify( taxonomies ) ); + } - fs.unlinkSync( "taxonomies.xml" ); - grunt.verbose.ok(); - taskDone(); - } ); - } ); + fs.unlinkSync( "taxonomies.xml" ); + grunt.verbose.ok(); + taskDone(); } ); grunt.registerTask( "build-xml-full", function() { @@ -202,26 +203,32 @@ grunt.registerTask( "build-xml-full", function() { } } ); - spawn( "xsltproc", - [ "--xinclude", "--path", process.cwd(), - - // "--output", grunt.config( "wordpress.dir" ) + "/resources/api.xml", - path.join( __dirname, "jquery-xml/all-entries.xsl" ), "all-entries.xml" ], - function( error, result ) { + let result; + let error; + try { + result = cp.spawnSync( "xsltproc", [ + "--xinclude", + "--path", process.cwd(), + path.join( __dirname, "jquery-xml/all-entries.xsl" ), + "all-entries.xml" + ] ); + } catch ( e ) { + error = e; + } - // For some reason using --output with xsltproc kills the --xinclude option, - // so we let it write to stdout, then save it to a file - grunt.file.write( grunt.config( "wordpress.dir" ) + "/resources/api.xml", result ); - fs.unlinkSync( "all-entries.xml" ); + // For some reason using --output with xsltproc kills the --xinclude option, + // so we let it write to stdout, then save it to a file + const content = result.stdout.toString(); + grunt.file.write( grunt.config( "wordpress.dir" ) + "/resources/api.xml", content ); + fs.unlinkSync( "all-entries.xml" ); - if ( error ) { - grunt.verbose.error(); - grunt.log.error( error ); - return taskDone( false ); - } + if ( error ) { + grunt.verbose.error(); + grunt.log.error( error ); + return taskDone( false ); + } - taskDone(); - } ); + taskDone(); } ); }; diff --git a/tasks/build.js b/tasks/build.js index e960fa4..271fef7 100644 --- a/tasks/build.js +++ b/tasks/build.js @@ -21,7 +21,8 @@ grunt.registerTask( "lint", [] ); grunt.registerTask( "build-wordpress", [ "check-modules", "lint", "clean-dist", "build" ] ); -grunt.registerMultiTask( "build-posts", "Process html and markdown files as posts", function() { +grunt.registerMultiTask( "build-posts", + "Process html and markdown files as posts", async function() { var task = this, taskDone = task.async(), wordpressClient = wordpress.createClient( grunt.config( "wordpress" ) ), @@ -32,74 +33,78 @@ grunt.registerMultiTask( "build-posts", "Process html and markdown files as post grunt.file.mkdir( targetDir ); - function parsePost( fileName, callback ) { - wordpressClient.parsePost( fileName, function( error, post ) { - if ( error ) { - return callback( error ); - } - - preprocessor( post, fileName, callback ); + async function parsePost( fileName ) { + return new Promise( function( resolve, reject ) { + wordpressClient.parsePost( fileName, function( error, post ) { + if ( error ) { + return reject( error ); + } + + preprocessor( post, fileName, function( err, res ) { + if ( error ) { + return reject( err ); + } + resolve( res ); + } ); + } ); } ); } - util.eachFile( this.filesSrc, function( fileName, fileDone ) { + var count = 0; + async function processFile( fileName ) { + count++; grunt.verbose.write( "Processing " + fileName + "..." ); - parsePost( fileName, function( error, post ) { - if ( error ) { - return fileDone( error ); - } + const post = await parsePost( fileName ); - var content = post.content, - fileType = /\.(\w+)$/.exec( fileName )[ 1 ], - targetFileName = targetDir + - ( post.fileName || fileName.replace( /^.+?\/(.+)\.\w+$/, "$1" ) + ".html" ); + var content = post.content, + fileType = /\.(\w+)$/.exec( fileName )[ 1 ], + targetFileName = targetDir + + ( post.fileName || fileName.replace( /^.+?\/(.+)\.\w+$/, "$1" ) + ".html" ); - delete post.content; - delete post.fileName; + delete post.content; + delete post.fileName; - // Convert markdown to HTML - if ( fileType === "md" ) { - content = util.parseMarkdown( content, { - generateLinks: post.toc || !post.noHeadingLinks, - generateToc: post.toc - } ); - delete post.noHeadingLinks; - delete post.toc; - } - - // Replace partials - content = content.replace( /@partial\((.+)\)/g, - function( _match, input ) { - return util.htmlEscape( grunt.file.read( input ) ); + // Convert markdown to HTML + if ( fileType === "md" ) { + content = util.parseMarkdown( content, { + generateLinks: post.toc || !post.noHeadingLinks, + generateToc: post.toc } ); + delete post.noHeadingLinks; + delete post.toc; + } - // Syntax highlight code blocks - if ( !grunt.option( "nohighlight" ) ) { - content = syntaxHighlight( content ); - } - - post.customFields = post.customFields || []; - post.customFields.push( { - key: "source_path", - value: fileName - } ); + // Replace partials + content = content.replace( /@partial\((.+)\)/g, function( _match, input ) { + return util.htmlEscape( grunt.file.read( input ) ); + } ); - // Write file - grunt.file.write( targetFileName, - "\n" + content ); + // Syntax highlight code blocks + if ( !grunt.option( "nohighlight" ) ) { + content = syntaxHighlight( content ); + } - fileDone(); + post.customFields = post.customFields || []; + post.customFields.push( { + key: "source_path", + value: fileName } ); - }, function( _error, count ) { - if ( task.errorCount ) { - grunt.warn( "Task \"" + task.name + "\" failed." ); - return taskDone(); - } - grunt.log.writeln( "Built " + count + " pages." ); - taskDone(); - } ); + // Write file + grunt.file.write( targetFileName, + "\n" + content ); + } + + try { + await util.eachFile( this.filesSrc, processFile ); + } catch ( e ) { + grunt.warn( "Task \"" + task.name + "\" failed." ); + return taskDone(); + } + + grunt.log.writeln( "Built " + count + " pages." ); + taskDone(); } ); grunt.registerMultiTask( "build-resources", "Copy resources", function() { @@ -109,20 +114,21 @@ grunt.registerMultiTask( "build-resources", "Copy resources", function() { grunt.file.mkdir( targetDir ); - util.eachFile( this.filesSrc, function( fileName, fileDone ) { - if ( grunt.file.isFile( fileName ) ) { - grunt.file.copy( fileName, targetDir + fileName.replace( /^.+?\//, "" ) ); - } - fileDone(); - }, function( _error, count ) { - if ( task.errorCount ) { - grunt.warn( "Task \"" + task.name + "\" failed." ); - return taskDone(); + var count = 0; + try { + for ( const fileName of this.filesSrc ) { + if ( grunt.file.isFile( fileName ) ) { + grunt.file.copy( fileName, targetDir + fileName.replace( /^.+?\//, "" ) ); + count++; + } } + } catch ( e ) { + grunt.warn( "Task \"" + task.name + "\" failed." ); + return taskDone(); + } - grunt.log.writeln( "Built " + count + " resources." ); - taskDone(); - } ); + grunt.log.writeln( "Built " + count + " resources." ); + taskDone(); } ); }; diff --git a/test/lint.test.js b/test/lint.test.js new file mode 100644 index 0000000..6d3667f --- /dev/null +++ b/test/lint.test.js @@ -0,0 +1,30 @@ +/* eslint-env qunit */ +"use strict"; + +const cp = require( "child_process" ); +const path = require( "path" ); +const ROOT = path.join( __dirname, ".." ); + +QUnit.module( "lint", function() { + QUnit.test( "fixture", function( assert ) { + let stdout; + try { + const result = cp.execSync( "npm run -s lint-example", { + cwd: ROOT, + env: { PATH: process.env.PATH, NPM_CONFIG_UPDATE_NOTIFIER: "false" }, + encoding: "utf8" + } ); + stdout = result.toString().trim(); + } catch ( e ) { + assert.equal( e.stdout || e.toString(), "", "error" ); + return; + } + + const expect = +`Running "xmllint:all" (xmllint) task +Lint free files: 2 + +Done.`; + assert.strictEqual( stdout, expect, "stdout" ); + } ); +} ); From 7ff23bea871be6121c55837aad382a56260580fa Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sun, 12 Nov 2023 19:02:05 +0000 Subject: [PATCH 234/241] 3.2.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c3bae2a..cf21338 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "grunt-jquery-content", - "version": "3.2.0", + "version": "3.2.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "grunt-jquery-content", - "version": "3.2.0", + "version": "3.2.1", "dependencies": { "cheerio": "^1.0.0-rc.12", "gilded-wordpress": "1.0.6", diff --git a/package.json b/package.json index 3392ce7..f7280e5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "3.2.0", + "version": "3.2.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 0326aa52c62fe368f05c7d2c8e7891d39255eb7d Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sun, 12 Nov 2023 20:34:20 +0000 Subject: [PATCH 235/241] 3.3.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index cf21338..532c77e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "grunt-jquery-content", - "version": "3.2.1", + "version": "3.3.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "grunt-jquery-content", - "version": "3.2.1", + "version": "3.3.0", "dependencies": { "cheerio": "^1.0.0-rc.12", "gilded-wordpress": "1.0.6", diff --git a/package.json b/package.json index f7280e5..06a3b76 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "3.2.1", + "version": "3.3.0", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 57bcbf75bc1e99f798d823f48d928aa129daf364 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sun, 12 Nov 2023 20:38:57 +0000 Subject: [PATCH 236/241] Build: Update to gilded-wordpress 1.0.7 This resolves npm audit warnings about minimatch, which affected `glob <=5.0.14`. Ref https://github.com/scottgonzalez/gilded-wordpress/pull/7 --- package-lock.json | 146 ++++++---------------------------------------- package.json | 2 +- 2 files changed, 18 insertions(+), 130 deletions(-) diff --git a/package-lock.json b/package-lock.json index 532c77e..276b9bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "3.3.0", "dependencies": { "cheerio": "^1.0.0-rc.12", - "gilded-wordpress": "1.0.6", + "gilded-wordpress": "1.0.7", "grunt-check-modules": "^1.1.0", "he": "^1.2.0", "highlight.js": "^10.7.2", @@ -98,18 +98,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/js": { "version": "8.53.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", @@ -133,18 +121,6 @@ "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -719,18 +695,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -991,12 +955,11 @@ } }, "node_modules/gilded-wordpress": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.6.tgz", - "integrity": "sha512-xL03MCIpMfIgwsnSA2akCqRZ35Odfgp5xi6xXIl494LA4MwY3VGw844X+AlSHKnIezL/0aHQQNOevWtmpfvzTw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.7.tgz", + "integrity": "sha512-w8g4jfs1TWywX2hZ4+LlzQoz2z/JRX/8S6OgelD3IUsNnGHxXQ1FgExoIqomwZVPAmxYs0vEu2BeA1Y4KciZlw==", "dependencies": { "async": "^0.9.0", - "glob": "^4.0.6", "wordpress": "^1.4.2" } }, @@ -1005,20 +968,6 @@ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==" }, - "node_modules/glob": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha512-I0rTWUKSZKxPSIAIaqhSXTM/DiII6wame+rEC3cFA5Lqmr9YmdL7z6Hj9+bdWtTvoY1Su4/OiMLmb37Y7JzvJQ==", - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^2.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -1665,12 +1614,12 @@ } }, "node_modules/minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", - "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { - "brace-expansion": "^1.0.0" + "brace-expansion": "^1.1.7" }, "engines": { "node": "*" @@ -2101,18 +2050,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -2436,15 +2373,6 @@ "requires": { "argparse": "^2.0.1" } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } } } }, @@ -2463,17 +2391,6 @@ "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" - }, - "dependencies": { - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } } }, "@humanwhocodes/module-importer": { @@ -2869,15 +2786,6 @@ "requires": { "argparse": "^2.0.1" } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } } } }, @@ -3099,12 +3007,11 @@ "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==" }, "gilded-wordpress": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.6.tgz", - "integrity": "sha512-xL03MCIpMfIgwsnSA2akCqRZ35Odfgp5xi6xXIl494LA4MwY3VGw844X+AlSHKnIezL/0aHQQNOevWtmpfvzTw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.7.tgz", + "integrity": "sha512-w8g4jfs1TWywX2hZ4+LlzQoz2z/JRX/8S6OgelD3IUsNnGHxXQ1FgExoIqomwZVPAmxYs0vEu2BeA1Y4KciZlw==", "requires": { "async": "^0.9.0", - "glob": "^4.0.6", "wordpress": "^1.4.2" }, "dependencies": { @@ -3115,17 +3022,6 @@ } } }, - "glob": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha512-I0rTWUKSZKxPSIAIaqhSXTM/DiII6wame+rEC3cFA5Lqmr9YmdL7z6Hj9+bdWtTvoY1Su4/OiMLmb37Y7JzvJQ==", - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^2.0.1", - "once": "^1.3.0" - } - }, "glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -3608,11 +3504,12 @@ } }, "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "requires": { - "brace-expansion": "^1.0.0" + "brace-expansion": "^1.1.7" } }, "ms": { @@ -3907,15 +3804,6 @@ "once": "^1.3.0", "path-is-absolute": "^1.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" - } } } }, diff --git a/package.json b/package.json index 06a3b76..1ef5975 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "dependencies": { "cheerio": "^1.0.0-rc.12", "grunt-check-modules": "^1.1.0", - "gilded-wordpress": "1.0.6", + "gilded-wordpress": "1.0.7", "he": "^1.2.0", "highlight.js": "^10.7.2", "marked": "^4.0.0", From add624ce8934596302b216144727cb7a1a768b99 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sun, 12 Nov 2023 20:41:24 +0000 Subject: [PATCH 237/241] 3.3.1 --- .npmignore | 3 + package-lock.json | 1684 +-------------------------------------------- package.json | 2 +- 3 files changed, 7 insertions(+), 1682 deletions(-) create mode 100644 .npmignore diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..b0a3eb8 --- /dev/null +++ b/.npmignore @@ -0,0 +1,3 @@ +/.* +/fixture +/test diff --git a/package-lock.json b/package-lock.json index 276b9bf..90593fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "grunt-jquery-content", - "version": "3.3.0", - "lockfileVersion": 2, + "version": "3.3.1", + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "grunt-jquery-content", - "version": "3.3.0", + "version": "3.3.1", "dependencies": { "cheerio": "^1.0.0-rc.12", "gilded-wordpress": "1.0.7", @@ -2319,1683 +2319,5 @@ "url": "https://github.com/sponsors/sindresorhus" } } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - } - } - }, - "@eslint/js": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", - "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - } - } - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==" - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" - }, - "async": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", - "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "requires": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - } - }, - "cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "requires": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" - }, - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - }, - "dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - }, - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "requires": { - "domelementtype": "^2.3.0" - } - }, - "domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" - } - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", - "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.53.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - } - } - }, - "eslint-config-jquery": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-jquery/-/eslint-config-jquery-3.0.2.tgz", - "integrity": "sha512-1CdP7AY5ZuhDGUXz+/b7FwhRnDoK0A1swz+2nZ+zpEYJ3EyV085AOAfpFJL2s+ioHDspNQEsGSsl9uUEm9/f/g==", - "dev": true - }, - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - }, - "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "findup-sync": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", - "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.3", - "micromatch": "^4.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "requires": { - "for-in": "^1.0.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "getobject": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz", - "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==" - }, - "gilded-wordpress": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.7.tgz", - "integrity": "sha512-w8g4jfs1TWywX2hZ4+LlzQoz2z/JRX/8S6OgelD3IUsNnGHxXQ1FgExoIqomwZVPAmxYs0vEu2BeA1Y4KciZlw==", - "requires": { - "async": "^0.9.0", - "wordpress": "^1.4.2" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==" - } - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true - }, - "globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "grunt": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz", - "integrity": "sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==", - "requires": { - "dateformat": "~4.6.2", - "eventemitter2": "~0.4.13", - "exit": "~0.1.2", - "findup-sync": "~5.0.0", - "glob": "~7.1.6", - "grunt-cli": "~1.4.3", - "grunt-known-options": "~2.0.0", - "grunt-legacy-log": "~3.0.0", - "grunt-legacy-util": "~2.0.1", - "iconv-lite": "~0.6.3", - "js-yaml": "~3.14.0", - "minimatch": "~3.0.4", - "nopt": "~3.0.6" - }, - "dependencies": { - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "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" - } - }, - "grunt-cli": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz", - "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==", - "requires": { - "grunt-known-options": "~2.0.0", - "interpret": "~1.1.0", - "liftup": "~3.0.1", - "nopt": "~4.0.1", - "v8flags": "~3.2.0" - }, - "dependencies": { - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - } - } - }, - "minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "grunt-check-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt-check-modules/-/grunt-check-modules-1.1.0.tgz", - "integrity": "sha1-fBZB28ZlSGdqbVl5Ga35C3s11kQ=", - "requires": {} - }, - "grunt-known-options": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz", - "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==" - }, - "grunt-legacy-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", - "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", - "requires": { - "colors": "~1.1.2", - "grunt-legacy-log-utils": "~2.1.0", - "hooker": "~0.2.3", - "lodash": "~4.17.19" - } - }, - "grunt-legacy-log-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", - "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", - "requires": { - "chalk": "~4.1.0", - "lodash": "~4.17.19" - } - }, - "grunt-legacy-util": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz", - "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==", - "requires": { - "async": "~3.2.0", - "exit": "~0.1.2", - "getobject": "~1.0.0", - "hooker": "~0.2.3", - "lodash": "~4.17.21", - "underscore.string": "~3.3.5", - "which": "~2.0.2" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "highlight.js": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz", - "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg==" - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hooker": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=" - }, - "htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "liftup": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", - "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==", - "requires": { - "extend": "^3.0.2", - "findup-sync": "^4.0.0", - "fined": "^1.2.0", - "flagged-respawn": "^1.0.1", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.1", - "rechoir": "^0.7.0", - "resolve": "^1.19.0" - }, - "dependencies": { - "findup-sync": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", - "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^4.0.2", - "resolve-dir": "^1.0.1" - } - } - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "requires": { - "kind-of": "^6.0.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node-watch": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", - "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==", - "dev": true - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "requires": { - "abbrev": "1" - } - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "requires": { - "boolbase": "^1.0.0" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.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=", - "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" - } - }, - "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "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=" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" - }, - "parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "requires": { - "entities": "^4.4.0" - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "requires": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "qunit": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.20.0.tgz", - "integrity": "sha512-N8Fp1J55waE+QG1KwX2LOyqulZUToRrrPBqDOfYfuAMkEglFL15uwvmH1P4Tq/omQ/mGbBI8PEB3PhIfvUb+jg==", - "dev": true, - "requires": { - "commander": "7.2.0", - "node-watch": "0.7.3", - "tiny-glob": "0.2.9" - } - }, - "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "requires": { - "resolve": "^1.9.0" - } - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "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 - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "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" - } - } - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, - "requires": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" - }, - "underscore.string": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz", - "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==", - "requires": { - "sprintf-js": "^1.1.1", - "util-deprecate": "^1.0.2" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "requires": { - "isexe": "^3.1.1" - }, - "dependencies": { - "isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==" - } - } - }, - "wordpress": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/wordpress/-/wordpress-1.4.2.tgz", - "integrity": "sha512-T+o+Af6pK7mhTz/rJEZk4PpSIyRMVhx6vZm6UsmrnlL8pVudhu1gWzn1n3wZXlcEZQz7I0AOkEvPQ5hu++L+qg==", - "requires": { - "xmlrpc": "1.3.2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "xmlbuilder": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=" - }, - "xmlrpc": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz", - "integrity": "sha1-JrLqNHhI0Ciqx+dRS1NRl23j6D0=", - "requires": { - "sax": "1.2.x", - "xmlbuilder": "8.2.x" - } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } } } diff --git a/package.json b/package.json index 1ef5975..307177e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "3.3.0", + "version": "3.3.1", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors" From 89ec87a29d198018fc258609ddbd5acf4caca3bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 23:21:20 +0200 Subject: [PATCH 238/241] Build(deps): Bump braces from 3.0.2 to 3.0.3 Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3. - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Closes gh-93 --- updated-dependencies: - dependency-name: braces dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 90593fc..9f9c3bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -300,11 +300,11 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -835,9 +835,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, From 1abaf4b81c800f332880583e6d97b0ef6b2b44c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 23:49:03 +0200 Subject: [PATCH 239/241] Build: Bump micromatch from 4.0.5 to 4.0.8 Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.5 to 4.0.8. - [Release notes](https://github.com/micromatch/micromatch/releases) - [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8) Closes gh-94 --- updated-dependencies: - dependency-name: micromatch dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9f9c3bd..8f164a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1602,11 +1602,11 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { From 00ee37ddbedb9a63b21197951770fe7d1b1263d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aldimar=20J=C3=BAnior?= <98884282+aldimar-junior@users.noreply.github.com> Date: Mon, 14 Apr 2025 13:56:01 -0300 Subject: [PATCH 240/241] API Sites: Separate consecutive examples more clearly If there's more than one example append an `

    ` tag with the number of the example, e.g. "Example 1". Closes gh-95 Ref jquery/api.jquery.com#1157 Ref jquery/jquery-wp-content#481 --- tasks/jquery-xml/entries2html-base.xsl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasks/jquery-xml/entries2html-base.xsl b/tasks/jquery-xml/entries2html-base.xsl index 3555b2e..fa2b581 100644 --- a/tasks/jquery-xml/entries2html-base.xsl +++ b/tasks/jquery-xml/entries2html-base.xsl @@ -669,6 +669,11 @@ + +

    + Example +

    +

    From a8c00fa2ea22d9a9ea55816ab946908ebf25919a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski-Owczarek?= Date: Mon, 14 Apr 2025 19:01:41 +0200 Subject: [PATCH 241/241] 3.3.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f164a6..4f679c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "grunt-jquery-content", - "version": "3.3.1", + "version": "3.3.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "grunt-jquery-content", - "version": "3.3.1", + "version": "3.3.2", "dependencies": { "cheerio": "^1.0.0-rc.12", "gilded-wordpress": "1.0.7", diff --git a/package.json b/package.json index 307177e..64bcda7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-jquery-content", "description": "A collection of tasks for building the jQuery websites", - "version": "3.3.1", + "version": "3.3.2", "homepage": "https://github.com/jquery/grunt-jquery-content", "author": { "name": "jQuery Foundation and other contributors"