diff --git a/.mailmap b/.mailmap
index 1f2f86f..b20d04d 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1 +1,2 @@
Michał Gołębiowski-Owczarek
+Timo Tijhof
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..d776a24
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+tag-version-prefix="v"
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 0000000..3c03207
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+18
diff --git a/Gruntfile.js b/Gruntfile.js
index 69ba82e..c2b0477 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -1,5 +1,3 @@
-var async = require( "async" );
-
module.exports = function( grunt ) {
grunt.loadNpmTasks( "grunt-jquery-content" );
@@ -18,63 +16,6 @@ grunt.initConfig({
})()
});
-grunt.registerTask( "build-member-list", function() {
- var https = require( "https" ),
- done = this.async(),
- path = grunt.config( "wordpress.dir" ) + "/resources/corporate-members.json";
-
- function getMembers( level, callback ) {
- var request = https.request({
- host: "raw.githubusercontent.com",
- path: "/jquery/jquery.org/master/data/members/" + level + ".json"
- }, function ( response ) {
- var json = "";
- response.setEncoding( "utf8" );
- response.on( "data", function( chunk ) {
- json += chunk;
- });
- response.on( "end", function() {
- try {
- json = JSON.parse( json );
- } catch( error ) {
- return callback( error );
- }
-
- callback( null, json );
- });
- });
-
- request.end();
- }
-
- async.parallel({
- diamond: getMembers.bind( null, "diamond" ),
- platinum: getMembers.bind( null, "platinum" ),
- gold: getMembers.bind( null, "gold" )
- }, function( error, members ) {
- if ( error ) {
- return done( error );
- }
-
- var corporateMembers = members.diamond
- .concat( members.platinum )
- .concat( members.gold )
- .filter(function( member ) {
-
- // modern.IE has a special membership which doesn't get logo rotation
- if ( member.name === "modern.IE" ) {
- return false;
- }
-
- return true;
- });
-
- corporateMembers = JSON.stringify( corporateMembers );
- grunt.file.write( path, corporateMembers );
- done();
- });
-});
-
-grunt.registerTask( "build", [ "build-posts", "build-resources", "build-member-list" ] );
+grunt.registerTask( "build", [ "build-posts", "build-resources" ] );
};
diff --git a/config-sample.json b/config-sample.json
index 4e6f6a4..272677c 100644
--- a/config-sample.json
+++ b/config-sample.json
@@ -1,5 +1,5 @@
{
- "url": "vagrant.jquery.com",
- "username": "admin",
- "password": "secret"
+ "url": "http://local.jquery.com",
+ "username": "dev",
+ "password": "dev"
}
diff --git a/package-lock.json b/package-lock.json
index c03c5ee..415290f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,669 +1,1518 @@
{
"name": "jquery.com",
- "version": "3.0.24",
- "lockfileVersion": 1,
+ "version": "4.0.4",
+ "lockfileVersion": 3,
"requires": true,
- "dependencies": {
- "CSSselect": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/CSSselect/-/CSSselect-0.4.1.tgz",
- "integrity": "sha1-+Kt+H4QYzmPNput713ioXX7EkrI=",
- "requires": {
- "CSSwhat": "0.4.7",
- "domutils": "1.4.3"
- }
- },
- "CSSwhat": {
- "version": "0.4.7",
- "resolved": "https://registry.npmjs.org/CSSwhat/-/CSSwhat-0.4.7.tgz",
- "integrity": "sha1-hn2g/zn3eGEyQsRM/qg/CqTr35s="
- },
- "abbrev": {
+ "packages": {
+ "": {
+ "name": "jquery.com",
+ "version": "4.0.4",
+ "dependencies": {
+ "grunt": "1.6.1",
+ "grunt-jquery-content": "3.3.3"
+ }
+ },
+ "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==",
+ "license": "ISC"
+ },
+ "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==",
+ "license": "MIT",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-slice": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
- "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8="
- },
- "argparse": {
- "version": "0.1.16",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
- "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=",
- "requires": {
- "underscore": "1.7.0",
- "underscore.string": "2.4.0"
- },
- "dependencies": {
- "underscore.string": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz",
- "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs="
- }
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "async": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz",
- "integrity": "sha1-rDYTsdqb7RtHUQu0ZRuJMeRxRsc="
+ "node_modules/async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+ "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "MIT"
},
- "balanced-match": {
+ "node_modules/boolbase": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
- },
- "brace-expansion": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
- "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
- "requires": {
- "balanced-match": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "license": "ISC"
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
- "cheerio": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.17.0.tgz",
- "integrity": "sha1-+lrkLMYBIRM9KW0LRtmDIV9yaOo=",
- "requires": {
- "CSSselect": "0.4.1",
- "dom-serializer": "0.0.1",
- "entities": "1.1.1",
- "htmlparser2": "3.7.3",
- "lodash": "2.4.2"
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
"dependencies": {
- "lodash": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
- "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4="
- }
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "coffee-script": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz",
- "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ="
+ "node_modules/cheerio": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz",
+ "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==",
+ "license": "MIT",
+ "dependencies": {
+ "cheerio-select": "^2.1.0",
+ "dom-serializer": "^2.0.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.1.0",
+ "encoding-sniffer": "^0.2.0",
+ "htmlparser2": "^9.1.0",
+ "parse5": "^7.1.2",
+ "parse5-htmlparser2-tree-adapter": "^7.0.0",
+ "parse5-parser-stream": "^7.1.2",
+ "undici": "^6.19.5",
+ "whatwg-mimetype": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=18.17"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+ }
},
- "colors": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
- "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w="
+ "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==",
+ "license": "BSD-2-Clause",
+ "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"
+ }
},
- "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/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==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
},
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ "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==",
+ "license": "MIT"
},
- "dateformat": {
- "version": "1.0.2-1.2.3",
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz",
- "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk="
+ "node_modules/colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.1.90"
+ }
},
- "dom-serializer": {
+ "node_modules/concat-map": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.0.1.tgz",
- "integrity": "sha1-lYmCfx4y0iw3yCmtq9WbMkevjq8=",
- "requires": {
- "domelementtype": "1.1.3",
- "entities": "1.1.1"
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "license": "MIT"
+ },
+ "node_modules/css-select": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
+ "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
+ "license": "BSD-2-Clause",
+ "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.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
},
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/dateformat": {
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
+ "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.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==",
+ "license": "MIT",
"dependencies": {
- "domelementtype": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
- "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
- }
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
- "domelementtype": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
- "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI="
+ "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"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
},
- "domhandler": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.2.1.tgz",
- "integrity": "sha1-Wd+dzSJ+gIs2Wuc+H2aErD2Ub8I=",
- "requires": {
- "domelementtype": "1.3.0"
+ "node_modules/domutils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
}
},
- "domutils": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz",
- "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=",
- "requires": {
- "domelementtype": "1.3.0"
+ "node_modules/encoding-sniffer": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
+ "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "^0.6.3",
+ "whatwg-encoding": "^3.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
}
},
- "entities": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
- "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA="
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
},
- "esprima": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
- "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0="
+ "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==",
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "eventemitter2": {
+ "node_modules/eventemitter2": {
"version": "0.4.14",
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
- "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas="
+ "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==",
+ "license": "MIT"
},
- "exit": {
+ "node_modules/exit": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw="
- },
- "findup-sync": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz",
- "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=",
- "requires": {
- "glob": "3.2.11",
- "lodash": "2.4.2"
- },
- "dependencies": {
- "glob": {
- "version": "3.2.11",
- "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
- "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
- "requires": {
- "inherits": "2.0.3",
- "minimatch": "0.3.0"
- }
- },
- "lodash": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
- "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4="
- },
- "minimatch": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
- "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
- "requires": {
- "lru-cache": "2.7.3",
- "sigmund": "1.0.1"
- }
- }
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "getobject": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
- "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw="
+ "node_modules/expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
+ "license": "MIT",
+ "dependencies": {
+ "homedir-polyfill": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "gilded-wordpress": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.3.tgz",
- "integrity": "sha1-kh/iJ93yWyxAgp5QUjsOMXRDsz4=",
- "requires": {
- "async": "0.9.0",
- "glob": "4.0.6",
- "wordpress": "1.1.2"
- },
- "dependencies": {
- "glob": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-4.0.6.tgz",
- "integrity": "sha1-aVxQvdTi+1xdNwsJHziNNwfikac=",
- "requires": {
- "graceful-fs": "3.0.11",
- "inherits": "2.0.3",
- "minimatch": "1.0.0",
- "once": "1.4.0"
- }
- },
- "graceful-fs": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
- "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
- "requires": {
- "natives": "1.1.0"
- }
- },
- "minimatch": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz",
- "integrity": "sha1-4N0hILSeG3JM6NcUxSCCKpQ4V20=",
- "requires": {
- "lru-cache": "2.7.3",
- "sigmund": "1.0.1"
- }
- }
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "license": "MIT"
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "glob": {
- "version": "3.1.21",
- "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
- "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
- "requires": {
- "graceful-fs": "1.2.3",
- "inherits": "1.0.2",
- "minimatch": "0.2.14"
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.4",
+ "resolve-dir": "^1.0.1"
},
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "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==",
+ "license": "MIT",
"dependencies": {
- "inherits": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
- "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js="
- }
+ "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"
}
},
- "graceful-fs": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
- "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q="
- },
- "grunt": {
- "version": "0.4.5",
- "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz",
- "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=",
- "requires": {
- "async": "0.1.22",
- "coffee-script": "1.3.3",
- "colors": "0.6.2",
- "dateformat": "1.0.2-1.2.3",
- "eventemitter2": "0.4.14",
- "exit": "0.1.2",
- "findup-sync": "0.1.3",
- "getobject": "0.1.0",
- "glob": "3.1.21",
- "grunt-legacy-log": "0.1.3",
- "grunt-legacy-util": "0.2.0",
- "hooker": "0.2.3",
- "iconv-lite": "0.2.11",
- "js-yaml": "2.0.5",
- "lodash": "0.9.2",
- "minimatch": "0.2.14",
- "nopt": "1.0.10",
- "rimraf": "2.2.8",
- "underscore.string": "2.2.1",
- "which": "1.0.9"
- },
- "dependencies": {
- "async": {
- "version": "0.1.22",
- "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
- "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE="
- }
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "license": "MIT",
+ "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": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
+ "license": "MIT",
+ "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": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "license": "ISC"
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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.7",
+ "resolved": "https://registry.npmjs.org/gilded-wordpress/-/gilded-wordpress-1.0.7.tgz",
+ "integrity": "sha512-w8g4jfs1TWywX2hZ4+LlzQoz2z/JRX/8S6OgelD3IUsNnGHxXQ1FgExoIqomwZVPAmxYs0vEu2BeA1Y4KciZlw==",
+ "license": "MIT",
+ "dependencies": {
+ "async": "^0.9.0",
+ "wordpress": "^1.4.2"
}
},
- "grunt-check-modules": {
+ "node_modules/glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "license": "ISC",
+ "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/global-modules": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/grunt-check-modules/-/grunt-check-modules-1.0.0.tgz",
- "integrity": "sha1-Y/9erkYTF5tKifaozTcfekAfd4I="
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "license": "MIT",
+ "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": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
+ "license": "MIT",
+ "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/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
+ },
+ "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==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/grunt": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz",
+ "integrity": "sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==",
+ "license": "MIT",
+ "dependencies": {
+ "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"
+ },
+ "bin": {
+ "grunt": "bin/grunt"
+ },
+ "engines": {
+ "node": ">=16"
+ }
},
- "grunt-cli": {
+ "node_modules/grunt-check-modules": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.1.0.tgz",
- "integrity": "sha1-r9eWmTTd8zYg6ER+3B+pTlHlWjQ=",
- "requires": {
- "findup-sync": "0.3.0",
- "nopt": "3.0.6",
- "resolve": "1.1.7"
- },
- "dependencies": {
- "findup-sync": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
- "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
- "requires": {
- "glob": "5.0.15"
- }
- },
- "glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "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.8"
- }
- },
- "nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "requires": {
- "abbrev": "1.1.0"
- }
- }
+ "resolved": "https://registry.npmjs.org/grunt-check-modules/-/grunt-check-modules-1.1.0.tgz",
+ "integrity": "sha512-B0dWhmnqEZztfDbqEb5UWAI/9o0mmlRPEyJYdpitgr/W7i1893cq4hmN+Vw+xJEC/+A5vzmaaHfDZU3fO8JheQ==",
+ "engines": {
+ "node": ">=0.6.0"
+ },
+ "peerDependencies": {
+ "grunt": ">=0.4.0"
}
},
- "grunt-jquery-content": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/grunt-jquery-content/-/grunt-jquery-content-3.0.1.tgz",
- "integrity": "sha1-aHdrx0G1SVEdaPBouVCsizd+g90=",
- "requires": {
- "async": "0.9.0",
- "cheerio": "0.17.0",
- "grunt-check-modules": "1.0.0",
- "grunt-wordpress": "2.1.2",
- "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"
- },
- "dependencies": {
- "which": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/which/-/which-1.0.5.tgz",
- "integrity": "sha1-VjDWgZ3aaS8UZEYueVbLQsCEJzk="
- }
+ "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==",
+ "license": "MIT",
+ "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"
}
},
- "grunt-legacy-log": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz",
- "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=",
- "requires": {
- "colors": "0.6.2",
- "grunt-legacy-log-utils": "0.1.1",
- "hooker": "0.2.3",
- "lodash": "2.4.2",
- "underscore.string": "2.3.3"
- },
- "dependencies": {
- "lodash": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
- "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4="
- },
- "underscore.string": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
- "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0="
- }
+ "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==",
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
}
},
- "grunt-legacy-log-utils": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz",
- "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=",
- "requires": {
- "colors": "0.6.2",
- "lodash": "2.4.2",
- "underscore.string": "2.3.3"
- },
- "dependencies": {
- "lodash": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
- "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4="
- },
- "underscore.string": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
- "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0="
- }
+ "node_modules/grunt-jquery-content": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/grunt-jquery-content/-/grunt-jquery-content-3.3.3.tgz",
+ "integrity": "sha512-PKlMpReqeujVKqRmCP0XpJ0dCFHHqdpRXznw1GZRZn7tt+fgOtJMYNlXmuWax5meefLqXkPwBLmlPLlnTVRlng==",
+ "dependencies": {
+ "cheerio": "1.0.0",
+ "gilded-wordpress": "1.0.7",
+ "grunt-check-modules": "^1.1.0",
+ "he": "^1.2.0",
+ "highlight.js": "^10.7.3",
+ "marked": "^4.0.0",
+ "which": "^5.0.0",
+ "wordpress": "^1.4.2"
}
},
- "grunt-legacy-util": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz",
- "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=",
- "requires": {
- "async": "0.1.22",
- "exit": "0.1.2",
- "getobject": "0.1.0",
- "hooker": "0.2.3",
- "lodash": "0.9.2",
- "underscore.string": "2.2.1",
- "which": "1.0.9"
- },
- "dependencies": {
- "async": {
- "version": "0.1.22",
- "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
- "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE="
- }
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "grunt-wordpress": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/grunt-wordpress/-/grunt-wordpress-2.1.2.tgz",
- "integrity": "sha1-ue3Lv5jp6HM9F6gsMmWf2zbO2LE=",
- "requires": {
- "gilded-wordpress": "1.0.3"
+ "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==",
+ "license": "MIT",
+ "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"
}
},
- "he": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/he/-/he-0.5.0.tgz",
- "integrity": "sha1-LAX/rvkLaOhg8/0rVO9YCYknfuI="
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "~4.1.0",
+ "lodash": "~4.17.19"
+ },
+ "engines": {
+ "node": ">=10"
+ }
},
- "highlight.js": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-7.3.0.tgz",
- "integrity": "sha1-bF8PZOcHj2ZAK82/yJEQw/0bqZ8="
+ "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==",
+ "license": "MIT",
+ "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-legacy-util/node_modules/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "license": "MIT"
+ },
+ "node_modules/grunt-legacy-util/node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
+ },
+ "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==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
},
- "hooker": {
+ "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==",
+ "license": "MIT",
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/highlight.js": {
+ "version": "10.7.3",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
+ "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
+ "license": "BSD-3-Clause",
+ "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==",
+ "license": "MIT",
+ "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="
- },
- "htmlparser2": {
- "version": "3.7.3",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.7.3.tgz",
- "integrity": "sha1-amTHdjfAjG8w7CqBV6UzM758sF4=",
- "requires": {
- "domelementtype": "1.3.0",
- "domhandler": "2.2.1",
- "domutils": "1.5.1",
- "entities": "1.0.0",
- "readable-stream": "1.1.14"
- },
- "dependencies": {
- "domutils": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
- "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
- "requires": {
- "dom-serializer": "0.0.1",
- "domelementtype": "1.3.0"
- }
- },
- "entities": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
- "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY="
+ "integrity": "sha512-t+UerCsQviSymAInD01Pw+Dn/usmz1sRO+3Zk1+lx8eg+WKpD2ulcwWqHHL0+aseRBr+3+vIhiG1K1JTwaIcTA==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz",
+ "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
}
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.1.0",
+ "entities": "^4.5.0"
}
},
- "iconv-lite": {
- "version": "0.2.11",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz",
- "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg="
+ "node_modules/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==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "inflight": {
+ "node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
}
},
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
},
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "license": "ISC"
},
- "js-yaml": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz",
- "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=",
- "requires": {
- "argparse": "0.1.16",
- "esprima": "1.0.4"
+ "node_modules/interpret": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha512-CLM8SNMDu7C5psFCn6Wg/tgpj/bKAg7hc2gWqcuR9OD5Ft9PhBpIu8PLicPeis+xDd6YX2ncI8MCA64I9tftIA==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "is-relative": "^1.0.0",
+ "is-windows": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "lodash": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
- "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw="
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "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": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
+ "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==",
+ "license": "MIT",
+ "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==",
+ "license": "MIT",
+ "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==",
+ "license": "MIT",
+ "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==",
+ "license": "MIT",
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz",
+ "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/js-yaml": {
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
},
- "lru-cache": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
- "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "marked": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.2.tgz",
- "integrity": "sha1-AV2xWIZEOPJKZL3WGgQotBhwbQk="
+ "node_modules/liftup": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz",
+ "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==",
+ "license": "MIT",
+ "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"
+ }
},
- "minimatch": {
- "version": "0.2.14",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
- "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
- "requires": {
- "lru-cache": "2.7.3",
- "sigmund": "1.0.1"
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "micromatch": "^4.0.2",
+ "resolve-dir": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "natives": {
+ "node_modules/lodash": {
+ "version": "4.17.23",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
+ "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
+ "license": "MIT"
+ },
+ "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==",
+ "license": "MIT",
+ "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": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/marked": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
+ "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
+ "license": "MIT",
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
+ "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
+ "license": "ISC",
+ "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==",
+ "license": "BSD-2-Clause",
+ "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/natives/-/natives-1.1.0.tgz",
- "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE="
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
+ "license": "MIT",
+ "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"
+ }
},
- "nopt": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
- "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
- "requires": {
- "abbrev": "1.1.0"
+ "node_modules/object.map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+ "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",
+ "license": "MIT",
+ "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": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "license": "MIT",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "once": {
+ "node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1.0.2"
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
+ "license": "MIT",
+ "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": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "license": "MIT",
+ "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==",
+ "deprecated": "This package is no longer supported.",
+ "license": "ISC",
+ "dependencies": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "node_modules/parse-filepath": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+ "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
+ "license": "MIT",
+ "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": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
- "path-is-absolute": {
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
+ "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==",
+ "license": "MIT",
+ "dependencies": {
+ "domhandler": "^5.0.3",
+ "parse5": "^7.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5-parser-stream": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
+ "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
+ "license": "MIT",
+ "dependencies": {
+ "parse5": "^7.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?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="
- },
- "readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "resolve": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs="
- },
- "rimraf": {
- "version": "2.2.8",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
- "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI="
- },
- "sax": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz",
- "integrity": "sha1-VjsZx8HeiS4Jv8Ty/DDjwn8JUrk="
- },
- "sigmund": {
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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==",
+ "license": "MIT"
+ },
+ "node_modules/path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
+ "license": "MIT",
+ "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": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
+ "license": "MIT",
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/rechoir": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
+ "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
+ "license": "MIT",
+ "dependencies": {
+ "resolve": "^1.9.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.11",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
+ "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.16.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-dir": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
- "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
+ "license": "MIT",
+ "dependencies": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
+ },
+ "node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "license": "ISC"
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "license": "BSD-3-Clause"
+ },
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
- "spawnback": {
+ "node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/spawnback/-/spawnback-1.0.0.tgz",
- "integrity": "sha1-9zZi9+VNlTZ+ynTWQmxnfdfqaG8="
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- },
- "underscore": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
- "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk="
- },
- "underscore.string": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz",
- "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk="
- },
- "which": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz",
- "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8="
- },
- "wordpress": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/wordpress/-/wordpress-1.1.2.tgz",
- "integrity": "sha1-uDZhhSBVSXESG8VsQ7A5yzgg94M=",
- "requires": {
- "xmlrpc": "1.3.1"
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "wrappy": {
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "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": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
+ "license": "MIT",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "^1.1.1",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/underscore.string/node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/undici": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.1.tgz",
+ "integrity": "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.17"
+ }
+ },
+ "node_modules/util-deprecate": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "license": "MIT"
+ },
+ "node_modules/v8flags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
+ "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
+ "license": "MIT",
+ "dependencies": {
+ "homedir-polyfill": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
},
- "xmlbuilder": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.5.tgz",
- "integrity": "sha1-b/etYPty0idk8AehZLd/K/FABSY=",
- "requires": {
- "lodash": "3.10.1"
+ "node_modules/whatwg-encoding": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
+ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
+ "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation",
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "0.6.3"
},
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
+ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/which": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
+ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+ "license": "ISC",
"dependencies": {
- "lodash": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
- }
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
}
},
- "xmlrpc": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.1.tgz",
- "integrity": "sha1-OqWCCG/vUwz+Hc2qDEyd3F0ORFE=",
- "requires": {
- "sax": "0.6.1",
- "xmlbuilder": "2.6.5"
+ "node_modules/wordpress": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/wordpress/-/wordpress-1.4.2.tgz",
+ "integrity": "sha512-T+o+Af6pK7mhTz/rJEZk4PpSIyRMVhx6vZm6UsmrnlL8pVudhu1gWzn1n3wZXlcEZQz7I0AOkEvPQ5hu++L+qg==",
+ "license": "MIT",
+ "dependencies": {
+ "xmlrpc": "1.3.2"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC"
+ },
+ "node_modules/xmlbuilder": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
+ "integrity": "sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlrpc": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz",
+ "integrity": "sha512-jQf5gbrP6wvzN71fgkcPPkF4bF/Wyovd7Xdff8d6/ihxYmgETQYSuTc+Hl+tsh/jmgPLro/Aro48LMFlIyEKKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "sax": "1.2.x",
+ "xmlbuilder": "8.2.x"
+ },
+ "engines": {
+ "node": ">=0.8",
+ "npm": ">=1.0.0"
}
}
}
diff --git a/package.json b/package.json
index 10395a6..0ab8e92 100644
--- a/package.json
+++ b/package.json
@@ -1,28 +1,9 @@
{
"name": "jquery.com",
- "title": "jQuery Homepage",
- "version": "3.0.24",
- "homepage": "https://github.com/jquery/jquery.com",
- "author": {
- "name": "jQuery Foundation and other contributors"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/jquery/jquery.com.git"
- },
- "bugs": {
- "url": "https://github.com/jquery/jquery.com/issues"
- },
- "licenses": [
- {
- "type": "MIT",
- "url": "https://github.com/jquery/jquery.com/blob/master/LICENSE.txt"
- }
- ],
+ "private": true,
+ "version": "4.0.4",
"dependencies": {
- "async": "0.9.0",
- "grunt": "0.4.5",
- "grunt-cli": "1.1.0",
- "grunt-jquery-content": "3.0.1"
+ "grunt": "1.6.1",
+ "grunt-jquery-content": "3.3.3"
}
}
diff --git a/pages/browser-support.html b/pages/browser-support.html
deleted file mode 100644
index 3f89291..0000000
--- a/pages/browser-support.html
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-Current Active Support
-
-Desktop
-
- - Chrome: (Current - 1) and Current
- - Edge: (Current - 1) and Current
- - Firefox: (Current - 1) and Current, ESR
- - Internet Explorer: 9+
- - Safari: (Current - 1) and Current
- - Opera: Current
-
-
-Mobile
-
- - Stock browser on Android 4.0+
- - Safari on iOS 7+
-
-
-Any problem with jQuery in the above browsers should be reported as a bug in jQuery.
-
-(Current - 1) and Current denotes that we support the current stable version of the browser and the version that preceded it. For example, if the current version of a browser is 24.x, we support the 24.x and 23.x versions.
-
-Firefox ESR (Extended Support Release) is a Firefox version for use by organizations including schools, universities, businesses and others who need extended support for mass deployments. It is based on a regular release of Firefox and synced from the next regular Firefox every few releases - example ESR versions include Firefox 47, 52 & 60. At any given time there are at most two ESR versions available; jQuery supports both of them. See the Mozilla site for more information.
-
-If you need to support older browsers like Internet Explorer 6-8, Opera 12.1x or Safari 5.1+, use jQuery 1.12.
-
-
-Unsupported Browsers
-While jQuery might run without major issues in older browser versions, we do not actively test jQuery in them and generally do not fix bugs that may appear in them.
-
-Similarly, jQuery does not fix bugs in pre-release versions of browsers, such as beta or dev releases. If you find a bug with jQuery in a pre-release of a browser, you should report the bug to the browser vendor.
-
-
-
-About Browser Support
-jQuery is constantly tested with all of its supported browsers via unit tests. However, a web page using jQuery may not work in the same set of browsers if its own code takes advantage of (or falls prey to) browser-specific behaviors. Testing is essential to fully support a browser. The Microsoft Edge Developer site makes available virtual machines for testing many different versions of Internet Explorer. Older versions of other browsers can be found at oldversion.com.
-
-Only the most current version of jQuery is tested and updated to fix bugs or add features. Users of older versions that find a bug should upgrade to the latest released version to determine if the bug has already been fixed. The jQuery Migrate plugin may be helpful in identifying and fixing problems during a version upgrade.
-
-
-
-About CSS Selector Compatibility
-Regardless of a browser's support of CSS selectors, all selectors listed at api.jquery.com/category/selectors/ will return the correct set of elements when passed as an argument of the jQuery function.
-CSS styles applied with jQuery's .css() method are dependent on the browser's level of support. In general, jQuery does not attempt to overcome the limitations of a browser's style rendering. (One exception is opacity, which jQuery "shims" for older Internet Explorer's alternative implementation.) Furthermore, prior to version 1.8, jQuery does not normalize vendor-prefixed properties.
diff --git a/pages/browser-support.md b/pages/browser-support.md
new file mode 100644
index 0000000..daf8462
--- /dev/null
+++ b/pages/browser-support.md
@@ -0,0 +1,59 @@
+
+
+## Current Active Support
+
+### Desktop
+
+* Chrome: (Current - 1) and Current
+* Edge: (Current - 1) and Current[1], IE mode[2]
+* Firefox: (Current - 1) and Current, ESR[3]
+* Internet Explorer: 11[2]
+* Safari: (Current - 1) and Current
+* Opera: Current
+
+### Mobile
+
+* Chrome on Android: (Current - 1) and Current
+* Safari on iOS: (Current - 2), (Current - 1) and Current
+
+Any problem with jQuery in the above browsers should be reported as a bug in jQuery.
+
+Current denotes that we support the current stable version of the browser, (Current - 1) - that the version that preceded it is supported. For example, if we support (Current - 2), (Current - 1) and Current versions of a particular browser & the current version of a browser is 24.x, we support the 24.x, 23.x and 22.x versions.
+
+If you need to support Edge Legacy, Internet Explorer 9-10, iOS 7+ (and not just 3 latest versions) or Android Browser in Android 4.0+, use [jQuery 3.x](https://code.jquery.com/jquery/#jquery-all-3.x).
+
+If, additionally, you need to support Internet Explorer 6-8, Opera 12.1x or Safari 5.1+, use [jQuery 1.x](https://releases.jquery.com/jquery/#jquery-all-1.x).
+
+[1] Only the Chromium-based Edge is supported, Edge Legacy & the old EdgeHTML-based version – is not.
+
+[2] We support both the real Internet Explorer 11 and Edge in IE mode, but only in standards mode and in the IE 11 document mode. [Read more about IE mode in Edge](https://learn.microsoft.com/en-us/deployedge/edge-ie-mode).
+
+[3] Firefox ESR (Extended Support Release) is a Firefox version for use by organizations including schools, universities, businesses and others who need extended support for mass deployments. It is based on a regular release of Firefox and synced from the next regular Firefox every few releases - example ESR versions include Firefox 102, 115 & 128. At any given time there are at most two ESR versions available; jQuery supports all of them. See [the Mozilla site for organizations](https://www.mozilla.org/en-US/firefox/organizations/) for more information.
+
+-----
+
+## Unsupported Browsers
+
+While jQuery might run without major issues in older browser versions, we do not actively test jQuery in them and generally do not fix bugs that may appear in them.
+
+Similarly, jQuery does not fix bugs in pre-release versions of browsers, such as beta or dev releases. If you find a bug with jQuery in a pre-release of a browser, you should report the bug to the browser vendor.
+
+-----
+
+## About Browser Support
+
+jQuery is constantly tested with all of its supported browsers via unit tests. However, a web page using jQuery may not work in the same set of browsers if its own code takes advantage of (or falls prey to) browser-specific behaviors. Testing is essential to fully support a browser.
+
+Only the most current version of jQuery is tested and updated to fix bugs or add features. Users of older versions that find a bug should upgrade to the latest released version to determine if the bug has already been fixed. The [jQuery Migrate plugin](https://github.com/jquery/jquery-migrate/#readme) may be helpful in identifying and fixing problems during a version upgrade.
+
+-----
+
+## About CSS Selector Compatibility
+
+Regardless of a browser's support of CSS selectors, all selectors listed at https://api.jquery.com/category/selectors/ will return the correct set of elements when passed as an argument of the `jQuery` function.
+
+CSS styles applied with jQuery's `.css()` method are dependent on the browser's level of support. In general, jQuery does not attempt to overcome the limitations of a browser's style rendering. (One exception is `opacity`, which jQuery "shims" for older Internet Explorer's alternative implementation.) Furthermore, prior to version 1.8, jQuery does not normalize vendor-prefixed properties.
diff --git a/pages/download.md b/pages/download.md
index f2c3fc7..b32a4f7 100644
--- a/pages/download.md
+++ b/pages/download.md
@@ -1,148 +1,106 @@
-
+
-## Downloading jQuery
-
-Compressed and uncompressed copies of jQuery files are available. The uncompressed file is best used during development or debugging; the compressed file saves bandwidth and improves performance in production.
-You can also download a [sourcemap file](https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/) for use when debugging with a compressed file.
-The map file is _not_ required for users to run jQuery, it just improves the developer's debugger experience.
-As of jQuery 1.11.0/2.1.0 the `//# sourceMappingURL` comment is [not included](https://blog.jquery.com/2014/01/24/jquery-1-11-and-2-1-released/) in the compressed file.
+## Latest version
To locally download these files, right-click the link and select "Save as..." from the menu.
-### jQuery
+Download the compressed, production version:
+
+Download jQuery 4.0.0
+
+* [Download the uncompressed development version of jQuery 4.0.0](https://code.jquery.com/jquery-4.0.0.js)
+* [Download the map file for jQuery 4.0.0](https://code.jquery.com/jquery-4.0.0.min.map)
+* [jQuery 4.0.0 blog post with release notes](https://blog.jquery.com/2026/01/17/jquery-4-0-0/)
+
+The slim build is a smaller version, that excludes the [ajax](https://api.jquery.com/category/ajax/) and [effects](https://api.jquery.com/category/effects/) modules:
+
+* [Download jQuery 4.0.0 slim build](https://code.jquery.com/jquery-4.0.0.slim.min.js)
+* [Download the uncompressed development version of the jQuery 4.0.0 slim build](https://code.jquery.com/jquery-4.0.0.slim.js)
+* [Download the map for the jQuery 4.0.0 slim build](https://code.jquery.com/jquery-4.0.0.slim.min.map)
-For help when upgrading jQuery, please see the [upgrade guide](https://jquery.com/upgrade-guide/) most relevant to your version.
+The uncompressed version is best used during development or debugging; the compressed file saves bandwidth and improves performance in production. You can download the [source map](https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/) file to help with debugging the compressed production version. The source map is _not_ required for end-users to run jQuery; it is a tool to help improve a developer's debugging experience. As of jQuery 1.11/2.1, we [no longer link source maps](https://blog.jquery.com/2014/01/24/jquery-1-11-and-2-1-released/) to compressed releases by default.
+
+Browse the jQuery CDN at **[releases.jquery.com](https://releases.jquery.com)** for a full list of assets, including older and historical versions.
+
+### Upgrade
+
+For help when upgrading jQuery, read the [upgrade guides](/upgrade-guide/).
We also recommend using the [jQuery Migrate plugin](https://github.com/jquery/jquery-migrate).
-Download the compressed, production jQuery 3.3.1
+### jQuery Migrate Plugin
-Download the uncompressed, development jQuery 3.3.1
+The [jQuery Migrate plugin](https://github.com/jquery/jquery-migrate/#readme) simplifies upgrading from older versions of jQuery. The plugin restores deprecated features and behaviors so that older code will still run properly on newer versions of jQuery.
-Download the map file for jQuery 3.3.1
+When upgrading from a pre-1.9 jQuery version to jQuery 1.9 or up to jQuery 3.0, first use jQuery Migrate 1.x:
-You can also use the slim build, which excludes the [ajax](https://api.jquery.com/category/ajax/) and [effects](https://api.jquery.com/category/effects/) modules:
+* Download jQuery Migrate 1.4.1 (compressed production version)
+* Download the uncompressed, development jQuery Migrate 1.4.1
-Download the compressed, production jQuery 3.3.1 slim build
+When migrating from jQuery 3.x to a later jQuery 3.x version, use jQuery Migrate 3.x instead:
-Download the uncompressed, development jQuery 3.3.1 slim build
+* Download jQuery Migrate 3.6.0 (compressed production version)
+* Download the uncompressed, development jQuery Migrate 3.6.0
-Download the map file for the jQuery 3.3.1 slim build
+Use the _compressed production_ version to restore compatibility issues without changing any application code.
-[jQuery 3.3.1 release notes](https://blog.jquery.com/2018/01/20/jquery-3-3-1-fixed-dependencies-in-release-tag/)
+Use the _uncompressed development_ version to additionally diagnose and help migrate compatibility issues, through helpful warnings on the console that identify how to transition your application code.
## Downloading jQuery using npm or Yarn
-jQuery is registered as [a package](https://www.npmjs.com/package/jquery) on [npm](https://www.npmjs.com/). You can install the latest version of jQuery with the npm CLI command:
+
+jQuery is published on [npm](https://www.npmjs.com/) under the [jquery package](https://www.npmjs.com/package/jquery). You can install the latest version of jQuery with the npm CLI:
```
npm install jquery
```
-As an alternative you can use the [Yarn](https://github.com/yarnpkg/yarn) CLI command:
+As an alternative you can use the [Yarn CLI](https://github.com/yarnpkg/yarn):
```
yarn add jquery
```
This will install jQuery in the `node_modules` directory. Within `node_modules/jquery/dist/` you will find an uncompressed release, a compressed release, and a map file.
-## Downloading jQuery using Bower
-jQuery is also registered as a package with [Bower](https://bower.io). You can install the latest version of jQuery with the command:
-```
-bower install jquery
-```
-This will install jQuery to Bower's install directory, the default being `bower_components`. Within `bower_components/jquery/dist/` you will find an uncompressed release, a compressed release, and a map file.
-
-The jQuery Bower package contains additional files besides the default distribution. In most cases you can ignore these files, however if you wish to download the default release on its own you can use Bower to install jQuery from one of the above urls instead of the registered package. For example, if you wish to install just the compressed jQuery file, you can install just that file with the following command:
-```
-bower install https://code.jquery.com/jquery-3.3.1.min.js
-```
-
-## jQuery Migrate Plugin
-
-We have created the [jQuery Migrate plugin](https://github.com/jquery/jquery-migrate/#readme)
-to simplify the transition from older versions of jQuery. The plugin restores deprecated features and behaviors so that older code will still run properly on newer versions of jQuery. Use the _uncompressed development_ version to diagnose compatibility issues, it will generate warnings on the console that you can use to identify and fix problems. Use the _compressed production_ version to simply fix compatibility issues without generating console warnings.
-
-There are two versions of Migrate. The first will help you update your pre-1.9 jQuery code to jQuery 1.9 up to 3.0. You can get that version here:
-
-Download the compressed, production jQuery Migrate 1.4.1
-
-Download the uncompressed, development jQuery Migrate 1.4.1
-
-The second version helps you update code to run on jQuery 3.0 or higher, *once you have used Migrate 1.x and upgraded to jQuery 1.9 or higher*:
-
-Download the compressed, production jQuery Migrate 3.0.0
-
-Download the uncompressed, development jQuery Migrate 3.0.0
-
-## Cross-Browser Testing with jQuery
-
-Be sure to test web pages that use jQuery in all the browsers you want to support. The [Microsoft Developer Resources](https://developer.microsoft.com/en-us/microsoft-edge/) site makes available [virtual machines](https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/) for testing many different versions of Internet Explorer. Older versions of other browsers can be found at [oldversion.com](http://oldversion.com/).
-
## jQuery Pre-Release Builds
-The jQuery team is constantly working to improve the code. Each commit to the Github repo generates a work-in-progress version of the code that we update on the jQuery CDN. _These versions are sometimes unstable and never suitable for production sites._ We recommend they be used to determine whether a bug has already been fixed when reporting bugs against released versions, or to see if new bugs have been introduced.
+The jQuery team is constantly working to improve the code. Each commit to the Github repo generates a work-in-progress version of the code that we update on the jQuery CDN. We recommend they be used to determine whether a bug has already been fixed when reporting bugs against released versions, or to see if new bugs have been introduced.
-Download the work-in-progress jQuery build
+_These versions are sometimes unstable and never suitable for production sites._
-## Using jQuery with a CDN
+Browse Git builds of jQuery
-[CDNs](https://en.wikipedia.org/wiki/Content_delivery_network) can offer a performance benefit by hosting jQuery on servers spread across the globe. This also offers an advantage that
-if the visitor to your webpage has already downloaded a copy of jQuery from the same CDN, it won't have to be re-downloaded.
+## [jQuery CDN](https://releases.jquery.com)
-### jQuery's CDN provided by [StackPath](https://www.stackpath.com)
+To use the jQuery CDN, reference the file in the script tag directly from the jQuery CDN domain. You can get the complete script tag, including Subresource Integrity attribute, by visiting https://releases.jquery.com and clicking on the version of the file that you want to use. Copy and paste that tag into your HTML file.
-The jQuery CDN supports [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) (SRI) which allows the browser to verify that the files being delivered have not been modified. This [specification](https://www.w3.org/TR/SRI/) is currently being implemented by browsers. Adding the new integrity attribute will ensure your application gains this security improvement as browsers support it.
-
-To use the jQuery CDN, just reference the file in the script tag directly from the jQuery CDN domain. You can get the complete script tag, including Subresource Integrity attribute, by visiting https://code.jquery.com and clicking on the version of the file that you want to use. Copy and paste that tag into your HTML file.
+The jQuery CDN supports [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) (SRI) ([specification](https://www.w3.org/TR/SRI/)) which allows the browser to verify that the files being delivered have not been modified. Adding the new integrity attribute will ensure your application gains this security improvement in supporting browsers.
Starting with jQuery 1.9, [sourcemap files](https://blog.jquery.com/2013/01/09/jquery-1-9-rc1-and-migrate-rc1-released/#sourcemaps) are available on the jQuery CDN. However, as of version 1.10.0/2.1.0 the compressed jQuery no longer includes the sourcemap comment in CDN copies because it requires the uncompressed file and sourcemap file to be placed at the same location as the compressed file. If you are maintaining local copies and can control the locations all three files, you can add the sourcemap comment to the compressed file for easier debugging.
-To see all available files and versions, visit [https://code.jquery.com](https://code.jquery.com)
+To see all available files and versions, including older and historical versions, visit [https://releases.jquery.com](https://releases.jquery.com)
### Other CDNs
The following CDNs also host compressed and uncompressed versions of jQuery releases. Starting with jQuery 1.9 they may also host [sourcemap files](https://blog.jquery.com/2013/01/09/jquery-1-9-rc1-and-migrate-rc1-released/#sourcemaps); check the site's documentation.
-**Note that there may be delays between a jQuery release and its availability there. Please be patient, they receive the files at the same time the blog post is made public. Beta and release candidates are not hosted by these CDNs.**
+Note that **there may be delays between a jQuery release and its availability there**. Please be patient, they receive the files at the same time the blog post is made public. Beta and release candidates are not hosted by these CDNs.
-* [Google CDN](https://developers.google.com/speed/libraries/devguide#jquery)
-* [Microsoft CDN](https://www.asp.net/ajax/cdn#jQuery_Releases_on_the_CDN_0)
+* [Google CDN](https://developers.google.com/speed/libraries#jquery)
+* [Microsoft CDN](https://learn.microsoft.com/en-us/aspnet/ajax/cdn/overview#jQuery_Releases_on_the_CDN_0)
* [CDNJS CDN](https://cdnjs.com/libraries/jquery/)
* [jsDelivr CDN](https://www.jsdelivr.com/package/npm/jquery)
## About the Code
-**jQuery is provided under the MIT license.**
-
-The code is hosted and developed in the [jQuery GitHub repository](https://github.com/jquery/jquery). If you've spotted some areas of code that could be improved, please feel free to discuss it on the [Developing jQuery Core Forum](https://forum.jquery.com/developing-jquery-core). If you'd like to participate in developing jQuery, peruse our [contributor site](https://contribute.jquery.org) for more information.
+**jQuery is provided under the MIT license.**
-To find and download plugins developed by jQuery contributors, please visit the Plugins site. Plugin authors are responsible for maintenance of their plugins. Feedback on plugins should be directed to the plugin author, not the jQuery team.
-
-### Build from Git
-
-*Note:* To just use the latest work-in-progress version of jQuery, please try the jQuery Pre-Release Build described above.
-
-All source code is kept under Git revision control, which you can browse online. The repository's README has more information on building and testing your own jQuery, as well as instructions on creating a custom build that excludes some APIs to reduce file size.
-
-If you have access to Git, you can connect to the repository here:
-
-``` bash
-git clone git://github.com/jquery/jquery.git
-```
-
-You can also check out and build a specific version of jQuery from GitHub:
-
-``` bash
-git clone git://github.com/jquery/jquery.git
-git checkout 1.2.6
-```
+The code is hosted and developed in the [jQuery GitHub repository](https://github.com/jquery/jquery). If you've spotted some areas of code that could be improved, feel free to [report a bug](https://contribute.jquery.org/bug-reports/). If you'd like to participate in developing jQuery, peruse our [contributor site](https://contribute.jquery.org) for more information.
-The README file for a specific version will have instructions for building that version, as the process has changed over time.
+Feedback about a jQuery plugin should be directed to the plugin author, not the jQuery team.
-***
+-----
## Past Releases
-All past releases can be found on the [jQuery CDN](https://code.jquery.com).
+All past releases can be found on the [jQuery CDN](https://releases.jquery.com).
diff --git a/pages/history.html b/pages/history.html
new file mode 100644
index 0000000..c090d89
--- /dev/null
+++ b/pages/history.html
@@ -0,0 +1,576 @@
+
+
+
+
+
+
2015
+
+
September 2015
+
+
+
2014
+
+
June
+
+
+
January
+
+
+
2013
+
+
December
+
+
+
May
+
+
+
April
+
+
+
February
+
+
+
January
+
+
+
2012
+
+
October
+
+
+
July
+
+
+
June
+
+
+
April
+
+
+
March
+
+
+
February
+
+
+
+
2011
+
+
December
+
+
+
November
+
+
+
October
+
+
+
June
+
+
+
May
+
+
+
April
+
+
+
February
+
+
+
January
+
+
+
+
+
2010
+
+
November
+
+
+
October
+
+
+
September
+
+
+
August
+
+
+
July
+
+
+
April
+
+
+
March
+
+
+
January
+
+
+
+
+
2009
+
+
December
+
+
+
November
+
+
+
September
+
+
+
March
+
+
+
January
+
+
+
+
+
2008
+
+
September
+
+
+
August
+
+
+
June
+
+
+
May
+
+
+
February
+
+
+
+
2007
+
+
September
+
+
+
July
+
+
+
June
+
+
+
April
+
+
+
March
+
+
+
January
+
+
+
+
2006
+
+
December
+
+
+
November
+
+
+
September
+
+
+
August
+
+
+
June
+
+
+
May
+
+
+
April
+
+
+
March
+
+
+
February
+
+
+
January
+
+
+
+
+
2005
+
+
August
+
+ -
+ August 22nd, 2005 - Selectors in Javascript - John first hints of a JavaScript library to use CSS selectors with a more succinct syntax than existing libraries
+
+
+
+
+
diff --git a/pages/index.html b/pages/index.html
index 6baad9f..64375f1 100644
--- a/pages/index.html
+++ b/pages/index.html
@@ -1,24 +1,29 @@
-
+}
+
-
-
-
-
- Download jQuery
- v3.3.1
- The 1.x and 2.x branches no longer receive patches.
-
-
+
@@ -52,36 +57,16 @@
What is jQuery?
a multitude of browsers. With a combination of versatility and
extensibility, jQuery has changed the way that millions of people write
JavaScript.
-
-
Other Related Projects
-
-
-
@@ -119,3 +104,13 @@
Ajax
});
+
+
+ Related Projects
+
+
+ This project is in maintenance-only mode. Learn more.
+
+
+ This project is deprecated. Learn more.
+
diff --git a/pages/license.md b/pages/license.md
new file mode 100644
index 0000000..fcf9049
--- /dev/null
+++ b/pages/license.md
@@ -0,0 +1,29 @@
+
+
+**Note:** For the purposes of this document, the term "Project" will refer to any [OpenJS Foundation](https://openjsf.org/projects/) project using the MIT license **AND** referencing this document in the header of the distributed Project code or Project website source code.
+
+## Source Code
+
+Projects referencing this document are released under the terms of the [MIT license](https://tldrlegal.com/license/mit-license).
+
+The MIT License is simple and easy to understand and it places almost no restrictions on what you can do with the Project.
+
+You are free to use the Project in any other project (even commercial projects) as long as the copyright header is left intact.
+
+## Sample Code
+
+All demos and examples, whether in a Project's repository or displayed on a Project site, are released under the terms of the license as specified in the relevant repository. Many Projects choose to release their sample code under the terms of [CC0](https://www.tldrlegal.com/license/creative-commons-cc0-1-0-universal).
+
+CC0 is even more permissive than the MIT license, allowing you to use the code in any manner you want, without any copyright headers, notices, or other attribution.
+
+## Web Sites
+
+The content on a Project web site referencing this document in its header is released under the terms of the license specified in the website's repository or if not specified, under the [MIT license](https://tldrlegal.com/license/mit-license).
+
+**The design, layout, and look-and-feel of a Project website is not licensed for use and may not be used on any site, personal or commercial, without prior written consent from the OpenJS Foundation**.
+
+For information regarding OpenJS Foundation trademarks, please see [Trademark Policy](https://trademark-policy.openjsf.org/) and [Trademark List](https://trademark-list.openjsf.org/).
diff --git a/pages/meetups.md b/pages/meetups.md
index 3ab3bf1..aaaa9a2 100644
--- a/pages/meetups.md
+++ b/pages/meetups.md
@@ -1,14 +1,16 @@
-
+}
+
Meetups are a great way to meet other community members, expand your knowledge,
socialize, and show off what you've been working on.
Thousands of developers get together every month all over the world to share
-their knowledge. Check out meetup.com to find a [jQuery](https://jquery.meetup.com/)
-or [JavaScript](https://javascript.meetup.com/) meetup near you. Can't find a
-meetup near you? Consider [creating your own meetup](https://www.meetup.com/create/)!
+their knowledge. Check out meetup.com to find a
+[jQuery or JavaScript related meetup](https://www.meetup.com/find/)
+near you.
-Looking for larger events? We have plenty of
+Looking for larger events? We have
[trainings and conferences](https://events.jquery.org/) all over the world too!
diff --git a/pages/support.md b/pages/support.md
new file mode 100644
index 0000000..dc083a5
--- /dev/null
+++ b/pages/support.md
@@ -0,0 +1,93 @@
+
+
+## Supported versions
+
+We support only the latest version of jQuery. The 1.x and 2.x branches are no longer supported.
+
+jQuery 3.x will only receive critical security patches and bug fixes. We encourage all users to upgrade to the latest version of jQuery 4.x.
+
+jQuery 4.x is the current version branch of jQuery.
+
+### Unsupported versions
+
+When using a version earlier than the latest version, there are a few options:
+
+* [Upgrade](/download#upgrade) to the latest version of jQuery. The best solution is to upgrade as it will include all features, bug fixes, security patches, and improvements. The [jQuery Migrate Plugin](https://github.com/jquery/jquery-migrate) and [upgrade guides](/upgrade-guide) are available to assist with upgrading.
+* Continue using an older version of jQuery, but include all security patches through [commercial security support](#commercial-support).
+* Continue using an older version of jQuery without security patches. **However, this can come with multiple risks.**
+
+## Community support
+
+The following learning resources are available online and free of charge:
+
+* [jQuery Learning Center](https://learn.jquery.com/)
+* [jQuery API Documentation](https://api.jquery.com/)
+* [jQuery UI Demos](https://jqueryui.com/demos/)
+* [jQuery UI API Documentation](https://api.jqueryui.com/)
+
+### Matrix chat
+
+jQuery is on Matrix! The support channel for jQuery is [#jquery_jquery:gitter.im](https://app.element.io/#/room/#jquery_jquery:gitter.im). You can [read the channel on Element](https://app.element.io/#/room/#jquery_jquery:gitter.im) without an account, or [join the channel](https://matrix.to/#/#jquery_jquery:gitter.im) via any Matrix client.
+
+We use the public [#jquery_dev channel](https://app.element.io/#/room/#jquery_dev:gitter.im) to discuss project developments. We also hold [weekly meetings](https://meetings.jquery.org/) on Matrix.
+
+### IRC chat
+
+We are on [Libera Chat IRC](https://libera.chat/) in the `#jquery` channel where you can ask for support. You can [join via webchat](https://web.libera.chat/#jquery), or via any IRC client.
+
+### StackOverflow
+
+StackOverflow is a great place to ask questions and find support for all jQuery projects. Search or create [questions tagged with "jquery"](https://stackoverflow.com/questions/tagged/jquery), or refer to the ["jquery" tag introduction](https://stackoverflow.com/tags/jquery/info).
+
+## Commercial support
+
+The following companies offer commercial support services for jQuery.
+
+[HeroDevs](https://www.herodevs.com/support/jquery-nes?utm_source=jQuery&utm_medium=link&utm_campaign=eol_support_jQuery) offers security and compatibility support for EOL versions of jQuery through the [OpenJS Ecosystem Sustainability Program](https://openjsf.org/ecosystem-sustainability-program) and is an approved commercial support vendor. Find out more about their [Never Ending Support options](https://www.herodevs.com/support/jquery-nes?utm_source=jQuery&utm_medium=link&utm_campaign=eol_support_jQuery).
+
+-------
+
+## Follow us
+
+jQuery on Mastodon and the Fediverse:
+
+* [@jquery@social.lfx.dev](https://social.lfx.dev/@jquery)
+* [@qunit@fosstodon.org](https://fosstodon.org/@qunit)
+* [@openjsf@social.lfx.dev](https://social.lfx.dev/@openjsf)
+
+jQuery on Twitter:
+
+* [@jquery](https://twitter.com/jquery)
+* [@jqueryui](https://twitter.com/jqueryui)
+* [@jquerymobile](https://twitter.com/jquerymobile)
+* [@qunitjs](https://twitter.com/qunitjs)
+* [@jqcon](https://twitter.com/jqcon)
+
+-------
+
+## Media & Press inquiry
+
+Journalists seeking information on jQuery should contact: [info@jquery.com](mailto:info@jquery.com).
+
+For guidance on branding and trademark usage, visit
.
+
+-------
+
+## Found a bug?
+
+For reporting bugs in libraries, documentation, or content, the project's GitHub issue tracker should be used. All jQuery projects can be found at https://github.com/jquery
+
+Still haven't found what you're looking for? Please feel free to contact: [info@jquery.com](mailto:info@jquery.com)
+
+-------
+
+## Archives
+
+* [Freenode IRC chat channels](https://irc.jquery.org/) (2011-2021)
+* [jQuery Forum](https://forum.jquery.com/) (2010-2021): For questions and advice regarding jQuery Core, jQuery UI, Themeroller, QUnit, development of jQuery Plugins, and more.
+* [jQuery Accessibility mailing list](https://groups.google.com/group/jquery-a11y) (2008-2016).
+
diff --git a/pages/team.html b/pages/team.html
new file mode 100644
index 0000000..a0ad9c3
--- /dev/null
+++ b/pages/team.html
@@ -0,0 +1,143 @@
+
+
+
+ -
+
+ Richard Gibson
+ Core | QUnit | Former Sizzle Lead
+
+ -
+
+ Michał Gołębiowski-Owczarek
+ Core | UI
+
+ -
+
+ Felix Nagel
+ UI
+
+ -
+
+ Timo Tijhof
+ QUnit | Infrastructure Lead
+
+ -
+
+ Timmy Willison
+ Core Lead
+
+ -
+
+ Rafael Xavier
+ Globalize Lead
+
+
+
+
+
+
Past Team Members
+
These are the members of the jQuery team alumni. We recognize them for their contributions to current and past jQuery Projects. They may not be as active in the project as they were before but will always be considered key contributors to the jQuery Projects.
+
+ Brandon Aaron
Core
+ Clark Allan
Infrastructure
+ Mike Alsup
API, Forum, and Plugins
+ Julian Aubourg
Core | Standards
+ Paul Bakaus
jQuery UI Creator
+ Leo Balter
QUnit Lead | Standards
+ Rey Bango
Developer Relations
+ John Bender
Mobile
+ Tyler Benzinger
Mobile
+ Jay Blanchard
Developer Relations
+ Kin Blas
Mobile
+ Kris Borchers
Executive Director (formerly jQuery Foundation)
+ Kevin Boudloche
Developer Relations
+ Nate Cavanaugh
Design and Web
+ Darcy Clarke
Design and Web
+ Anne-Gaelle Colom
Content | Secretary (formerly jQuery Foundation)
+ Kim Cooperrider
Events
+ Maggie Costello Wachs
Mobile
+ Chris Coyier
Design
+ Richard D. Worth
Executive Director, UI
+ Aurelio De Rosa
Content
+ Alex Dovenmuehle
UI
+ Isaac Durazo
Outreach (Design)
+ Nate Eagle
Design
+ Ariel Flesler
Core
+ Corey Frang
Infrastructure
+ Sarah Frisk
Chassis Lead | Mobile
+ Cory Gackenheimer
Mobile
+ Oleg Gaidarenko
Core
+ Ryan Gibbons
Infrastructure
+ Skye Giordano
Design
+ Scott González
jQuery UI Lead | PEP Lead
+ Maurice Gottlieb
Mobile
+ Marc Grabanski
UI
+ James M. Greene
QUnit
+ Jasper de Groot
Mobile
+ Klaus Hartl
UI
+ Dan Heberden
Content
+ Mike Hostetler
Infrastructure and Operations
+ Paul Irish
Standards
+ Scott Jehl
Mobile
+ Yehuda Katz
Standards
+ Sean Koole
Content
+ Chris Lea
Infrastructure
+ Jeff Lembeck
Mobile
+ Cody Lindley
Developer Relations
+ Andrew Lunny
Globalize
+ Mat Marquis
Mobile
+ Dave Methvin
Core | President (formerly jQuery Foundation)
+ Rohit Mulange
Chassis
+ Doug Neiner
Design
+ Ryan Neufeld
Infrastructure
+ Addy Osmani
Content
+ Todd Parker
Mobile
+ Kevin Partington
ESLint | QUnit
+ David Petersen
UI
+ Stefan Petre
Creator of Interface Plugin
+ Abby Phoenix
Events
+ Tane Piper
Developer Relations
+ Corey Quinn
Web
+ Philippe Rathé
QUnit
+ John Resig
Creator of the jQuery Library | Emeritus Member (formerly jQuery Foundation)
+ Alex Schmitz
Mobile Lead | UI | PEP | Chassis | Infrastructure | Standards
+ Gabriel Schulhof
Project Representative (formerly jQuery Foundation)
+ Jason Scott
Mobile
+ Ghislain Seguin
Mobile
+ Boaz Sender
Content, Design, and Web
+ Bradley Sepos
Design
+ David Serduke
Core
+ Alex Sexton
At-large Director (formerly jQuery Foundation)
+ Craig Sharkie
Events (Pacific-Asia)
+ Remy Sharp
Developer Relations
+ Jonathan Sharp
Infrastructure
+ Mike Sherov
Core | UI | At-large Director (formerly jQuery Foundation)
+ Leah Silber
Events
+ Amanpreet Singh
Mobile
+ Adam Sontag
Conduct | Events
+ Marius Stefan Bethge
PEP
+ Karl Swedberg
Content
+ Nate Tassinari
Events
+ Patty Toland
Mobile
+ Adam Ulvi
Infrastructure Lead
+ TJ VanToll
UI
+ Arthur Verschaeve
Content
+ Rick Waldron
Core | Standards
+ Wesley Walser
QUnit
+ Ralph Whitbeck
Developer Relations Lead
+ Trent Willis
QUnit Lead
+ Keith Wood
Developer Relations
+ Kristy Yeaton
Chassis
+ Jörn Zaefferer
jQuery UI Dev Lead | QUnit Lead | Globalize | Infrastructure
+
diff --git a/pages/upgrade-guide.md b/pages/upgrade-guide.md
index aea9883..02e27ab 100644
--- a/pages/upgrade-guide.md
+++ b/pages/upgrade-guide.md
@@ -1,8 +1,41 @@
-
+}
+
-## [3.0 Upgrade Guide](/upgrade-guide/3.0/)
+## jQuery Upgrade Guides
-## [1.9 Upgrade Guide](/upgrade-guide/1.9/)
+The jQuery upgrade guides provide information on all breaking changes and some notable changes in pinnacle versions of jQuery. Overall, jQuery has had very strong backwards compatibility throughout its history. However, these breaking changes were deemed necessary to address security concerns, fix bugs that could not be fixed without behavior changes, or to adapt to the introduction of modern APIs on the web. Most of the breaking changes listed should not apply to the majority of users, but these guides add some context and explanation for each change.
+
+### [4.0 Upgrade Guide](/upgrade-guide/4.0/)
+
+### [3.5 Upgrade Guide](/upgrade-guide/3.5/)
+
+### [3.0 Upgrade Guide](/upgrade-guide/3.0/)
+
+### [1.9 Upgrade Guide](/upgrade-guide/1.9/)
+
+### Upgrading jQuery
+
+The jQuery Team provides the [jQuery Migrate plugin](https://github.com/jquery/jquery-migrate) to make upgrading jQuery as easy as possible. It is mainly meant as a development tool that generates warning messages in the browser console that can be used to identify and fix compatibility issues. It temporarily restores deprecated features and behaviors so that older code will still run on newer versions of jQuery while the compatibility issues are addressed.
+
+There are two versions of jQuery Migrate: [1.x](https://github.com/jquery/jquery-migrate/tree/1.x-stable) and [3.x](https://github.com/jquery/jquery-migrate) (there is no Migrate 2.x). Only one version should be used at a time, but you may need to use both in succession if upgrading from a jQuery version that predates jQuery 1.9.
+
+For example, if your current jQuery version is 1.4.4, first upgrade to jQuery 1.12.4 with jQuery Migrate 1.x and then upgrade to the latest jQuery with jQuery Migrate 3.x. If your current version is 1.9 or later, you can update straight to the latest jQuery with jQuery Migrate 3.x.
+
+#### Using jQuery Migrate
+
+First, add jQuery Migrate to your page *after* loading jQuery.
+
+```html
+
+
+```
+
+Then, test your website or application. As different jQuery APIs are used, jQuery Migrate will log messages to the console warning about any deprecations or breaking changes. Address each warning one at a time.
+
+Finally, when no more warnings are logged to the console and all breaking changes have been addressed, the jQuery Migrate can be removed and migration is complete!
+
+See the [jQuery Migrate README](https://github.com/jquery/jquery-migrate) for more details.
diff --git a/pages/upgrade-guide/1.9.md b/pages/upgrade-guide/1.9.md
index 6a7026a..9703268 100644
--- a/pages/upgrade-guide/1.9.md
+++ b/pages/upgrade-guide/1.9.md
@@ -27,7 +27,7 @@ For more information see the [jQuery Migrate plugin](https://github.com/jquery/j
The list below does not represent all changes made for jQuery 1.9, just the changes that we anticipate may affect behavior in a way that could break existing code. For a complete and detailed list of changes, see the changelogs in the release announcements on the [jQuery blog](https://blog.jquery.com) or visit [bugs.jquery.com](https://bugs.jquery.com).
-### .toggle(function, function, ... ) removed
+### .toggle( function, function, ... ) removed
This is the "click an element to run the specified functions" signature of `.toggle()`. It should not be confused with the "change the visibility of an element" of `.toggle()` which is not deprecated. The former is being removed to reduce confusion and improve the potential for modularity in the library. The jQuery Migrate plugin can be used to restore the functionality.
@@ -37,11 +37,11 @@ The `jQuery.browser()` method has been deprecated since jQuery 1.3 and is remove
### .live() removed
-The `.live()` method has been deprecated since jQuery 1.7 and has been removed in 1.9. We recommend upgrading code to use the `.on()` method instead. To exactly match `$("a.foo").live("click", fn)`, for example, you can write `$(document).on("click", "a.foo", fn)`. For more information, see the [.on() documentation](https://api.jquery.com/on/). In the meantime, the jQuery Migrate plugin can be used to restore the `.live()` functionality.
+The `.live()` method has been deprecated since jQuery 1.7 and has been removed in 1.9. We recommend upgrading code to use the `.on()` method instead. To exactly match `$( "a.foo" ).live( "click", fn )`, for example, you can write `$( document ).on( "click", "a.foo", fn )`. For more information, see the [`.on()` documentation](https://api.jquery.com/on/). In the meantime, the jQuery Migrate plugin can be used to restore the `.live()` functionality.
### .die() removed
-The `.die()` method has been deprecated since jQuery 1.7 and has been removed in 1.9. We recommend upgrading code to use the `.off()` method instead. To exactly match `$("a.foo").die("click")`, for example, you can write `$(document).off("click", "a.foo")`. For more information, see the [.off() documentation](https://api.jquery.com/off/). In the meantime, the jQuery Migrate plugin can be used to restore the `.die()` functionality.
+The `.die()` method has been deprecated since jQuery 1.7 and has been removed in 1.9. We recommend upgrading code to use the `.off()` method instead. To exactly match `$( "a.foo" ).die( "click" )`, for example, you can write `$( document ).off( "click", "a.foo" )`. For more information, see the [`.off()` documentation](https://api.jquery.com/off/). In the meantime, the jQuery Migrate plugin can be used to restore the `.die()` functionality.
### jQuery.sub() removed
@@ -53,7 +53,7 @@ The `.add()` method is always supposed to return its results in document order.
### .addBack( selector ) replaces .andSelf()
-As of jQuery 1.8, the `.andSelf()` method was deprecated in favor of the `.addBack()` method, which we feel is a better name for what this method does--"add back" the previous set of results. The new method accepts an optional selector that can be used to filter the previous set before adding it to the current set. So, `$("section, aside").children("ul").addBack("aside")` results in a set that includes all `aside` nodes plus the `ul` children of both `section` and `aside` nodes, in document order. Although the `.andSelf()` method still works in 1.9, we recommend switching names as soon as possible. The jQuery Migrate plugin will warn about the use of `.andSelf()`.
+As of jQuery 1.8, the `.andSelf()` method was deprecated in favor of the `.addBack()` method, which we feel is a better name for what this method does--"add back" the previous set of results. The new method accepts an optional selector that can be used to filter the previous set before adding it to the current set. So, `$( "section, aside" ).children( "ul" ).addBack( "aside" )` results in a set that includes all `aside` nodes plus the `ul` children of both `section` and `aside` nodes, in document order. Although the `.andSelf()` method still works in 1.9, we recommend switching names as soon as possible. The jQuery Migrate plugin will warn about the use of `.andSelf()`.
### .after(), .before(), and .replaceWith() with disconnected nodes
@@ -61,36 +61,40 @@ Prior to 1.9, `.after()`, `.before()`, and `.replaceWith()` would attempt to add
### .appendTo, .insertBefore, .insertAfter, and .replaceAll
-As of 1.9, these methods _always_ return a new set, making them consistently usable with chaining and the `.end()` method. Prior to 1.9, they would return the old set only if there was a single target element. Note that these methods have always returned the aggregate set of all elements appended to the target elements. If no elements are selected by the target selector (e.g., `$(elements).appendTo("#not_found")`) the resulting set will be empty.
+As of 1.9, these methods _always_ return a new set, making them consistently usable with chaining and the `.end()` method. Prior to 1.9, they would return the old set only if there was a single target element. Note that these methods have always returned the aggregate set of all elements appended to the target elements. If no elements are selected by the target selector (e.g., `$( elements ).appendTo( "#not_found" )`) the resulting set will be empty.
### Ajax events should be attached to document
-As of jQuery 1.9, the global Ajax events (ajaxStart, ajaxStop, ajaxSend, ajaxComplete, ajaxError, and ajaxSuccess) are only triggered on the `document` element. Change the program to listen for the Ajax events on the document. For example, if the code currently looks like this:
-```javascript
-$("#status").ajaxStart(function(){ $(this).text("Ajax started"); });
+As of jQuery 1.9, the global Ajax events (`ajaxStart`, `ajaxStop`, `ajaxSend`, `ajaxComplete`, `ajaxError`, and `ajaxSuccess`) are only triggered on the `document` element. Change the program to listen for the Ajax events on the document. For example, if the code currently looks like this:
+```js
+$( "#status" ).on( "ajaxStart", function() {
+ $( this ).text( "Ajax started" );
+} );
```
Change it to this:
-```javascript
-$(document).ajaxStart(function(){ $("#status").text("Ajax started"); });
+```js
+$( document ).on( "ajaxStart", function() {
+ $( "#status" ).text( "Ajax started" );
+} );
```
### Checkbox/radio state in a .trigger()ed "click" event
-When the _user_ clicks on a checkbox or radio button, the event handler sees the node in the state it will be in if `event.preventDefault()` is not called on the node--in essence, its new state. So for example, if the user clicks on an unchecked checkbox, the event handler will see a _checked_ box. Before 1.9, a synthetic event triggered by either `.trigger("click")` or `.click()` would see the checkbox in the opposite state than that of a user action. This has been fixed in 1.9 to reflect the same checked state as a user-initiated action.
+When the _user_ clicks on a checkbox or radio button, the event handler sees the node in the state it will be in if `event.preventDefault()` is not called on the node--in essence, its new state. So for example, if the user clicks on an unchecked checkbox, the event handler will see a _checked_ box. Before 1.9, a synthetic event triggered by either `.trigger( "click" )` or `.click()` would see the checkbox in the opposite state than that of a user action. This has been fixed in 1.9 to reflect the same checked state as a user-initiated action.
### Order of triggered "focus" events
-When the user clicks or tabs into a form element to bring it into focus, the browser first fires a blur event for the previously focused element and then a focus event for the new element. Prior to 1.9, a trigger()ed focus event using either `.trigger("focus")` or `.focus()` would fire a focus event for the new element and then the blur event for the previous element before finally actually focusing the element. In 1.9 this behavior has been changed to reflect the same order as if the user had caused the focus change.
+When the user clicks or tabs into a form element to bring it into focus, the browser first fires a blur event for the previously focused element and then a focus event for the new element. Prior to 1.9, a trigger()ed focus event using either `.trigger( "focus" )` or `.focus()` would fire a focus event for the new element and then the blur event for the previous element before finally actually focusing the element. In 1.9 this behavior has been changed to reflect the same order as if the user had caused the focus change.
-With native DOM focus events, the browser only calls a focus event handler if the target element is not already focused and can also successfully be focused. jQuery has always ensured that a call to `.trigger("focus")` or `.focus()` consistently runs any attached event handlers, even if the element cannot be focused, and jQuery 1.9 continues to do that. This is different behavior than the DOM `.focus()` method, which will not call event handlers in many cases including where the element is already focused or the element is disabled.
+With native DOM focus events, the browser only calls a focus event handler if the target element is not already focused and can also successfully be focused. jQuery has always ensured that a call to `.trigger( "focus" )` or `.focus()` consistently runs any attached event handlers, even if the element cannot be focused, and jQuery 1.9 continues to do that. This is different behavior than the DOM `.focus()` method, which will not call event handlers in many cases including where the element is already focused or the element is disabled.
-Unfortunately, all versions of Internet Explorer (6 through 10) fire focus events asynchronously. When you `.trigger("focus")` in IE, jQuery won't "see" the async focus event which will occur later, so it fires one of its own to ensure that a focus event always occurs as described above. This causes two calls to the event handler. To avoid this double-call--but risk that the event handler is not called at all--use the DOM focus method directly, e.g., `$("selector").get(0).focus()`.
+Unfortunately, all versions of Internet Explorer (6 through 10) fire focus events asynchronously. When you `.trigger( "focus" )` in IE, jQuery won't "see" the async focus event which will occur later, so it fires one of its own to ensure that a focus event always occurs as described above. This causes two calls to the event handler. To avoid this double-call--but risk that the event handler is not called at all--use the DOM focus method directly, e.g., `$( "selector" ).get( 0 ).focus()`.
-### jQuery(htmlString) versus jQuery(selectorString)
+### jQuery( htmlString ) versus jQuery( selectorString )
Prior to 1.9, a string would be considered to be an HTML string if it had HTML tags anywhere within the string. This has the potential to cause inadvertent execution of code and reject valid selector strings. As of 1.9, a string is only considered to be HTML if it starts with a less-than ("`<`") character. The Migrate plugin can be used to restore the pre-1.9 behavior.
-If a string is known to be HTML but may start with arbitrary text that is not an HTML tag, pass it to `jQuery.parseHTML()` which will return an array of DOM nodes representing the markup. A jQuery collection can be created from this, for example: `$($.parseHTML(htmlString))`. This would be considered best practice when processing HTML templates for example. Simple uses of literal strings such as `$("
Testing
").appendTo("body")` are unaffected by this change.
+If a string is known to be HTML but may start with arbitrary text that is not an HTML tag, pass it to `jQuery.parseHTML()` which will return an array of DOM nodes representing the markup. A jQuery collection can be created from this, for example: `$( $.parseHTML( htmlString ) )`. This would be considered best practice when processing HTML templates for example. Simple uses of literal strings such as `$( "
Testing
" ).appendTo( "body" )` are unaffected by this change.
Bottom line: HTML strings passed to `jQuery()` that start with something other than a less-than character will be interpreted as a selector. Since the string usually cannot be interpreted as a selector, the most likely result will be an "invalid selector syntax" error thrown by the Sizzle selector engine. Use `jQuery.parseHTML()` to parse arbitrary HTML.
@@ -98,7 +102,7 @@ When the jQuery Migrate plugin is used, it will use the old rules for determinin
### Events not fired by the .data() method; names with periods
-The `.data()` method had an undocumented and incredibly non-performant way to monitor setting and getting of values that was removed in 1.9. This has affected the interpretation of data names that contain periods, in a good way. As of 1.9, a call to `.data("abc.def")` retrieves the data for the name "abc.def" _only_, and never just "abc". Note that the lower-level `jQuery.data()` method never supported events and so it has not changed. The jQuery Migrate plugin does _not_ restore the old behavior for this case.
+The `.data()` method had an undocumented and incredibly non-performant way to monitor setting and getting of values that was removed in 1.9. This has affected the interpretation of data names that contain periods, in a good way. As of 1.9, a call to `.data( "abc.def" )` retrieves the data for the name "abc.def" _only_, and never just "abc". Note that the lower-level `jQuery.data()` method never supported events and so it has not changed. The jQuery Migrate plugin does _not_ restore the old behavior for this case.
### Ordering of disconnected nodes within a jQuery set
@@ -124,14 +128,14 @@ Here are some examples of correct usage when setting `checked` on a checkbox; th
```js
// Correct if changing the attribute is desired
-$(elem).attr("checked", "checked");
+$( elem ).attr( "checked", "checked" );
// Correct for checking the checkbox
-$(elem).prop("checked", true);
+$( elem ).prop( "checked", true );
// Correct if removing the attribute is desired (rare)
-$(elem).removeAttr("checked");
+$( elem ).removeAttr( "checked" );
// Correct for clearing the checkbox
-$(elem).prop("checked", false);
+$( elem ).prop( "checked", false );
```
The `value` property versus attribute on `input` elements is another example of this ambiguity. The attribute generally reflects the value that was read from the HTML markup; the property reflects the current value. Since the `.val()` method is the recommended jQuery way to get or set the values of form elements, this confusion usually does not affect users.
@@ -140,7 +144,7 @@ However, when a selector like `"input[value=abc]"` is used, it should always sel
The jQuery Migrate plugin restores the old attribute-vs-property rules.
-### $("input").attr("type", newValue) in oldIE
+### $( "input" ).attr( "type", newValue ) in oldIE
Prior to version 1.9, jQuery would throw an exception in all browsers for any attempt to set the `type` attribute on an input or button element. This was done to accommodate the lowest common denominator; IE 6/7/8 throw an error if you attempt to change the type of an input element. As of jQuery 1.9, we allow you to set the type of an element if the browser allows it. However, your own code will need to be aware that attempting to do this on oldIE will still throw an error. The jQuery Migrate plugin warns when you attempt to set the `type` attribute but does not throw a JavaScript error.
@@ -154,7 +158,7 @@ The remaining purpose of the deprecated `.selector` property on a jQuery object
### jQuery.attr()
-In 1.9 we have removed the undocumented signature jQuery.attr(elem, name, value, pass) using the pass argument. Any code that depended on this should be rewritten, but the jQuery Migrate plugin can provide backward-compatible behavior and will warn if this signature is used.
+In 1.9 we have removed the undocumented signature `jQuery.attr( elem, name, value, pass )` using the pass argument. Any code that depended on this should be rewritten, but the jQuery Migrate plugin can provide backward-compatible behavior and will warn if this signature is used.
### jQuery.ajax returning a JSON result of an empty string
@@ -162,11 +166,11 @@ Prior to 1.9, an ajax call that expected a return data type of JSON or JSONP wou
### jQuery.proxy() context
-New in 1.9, the function returned by calling jQuery.proxy with a falsy context will preserve its `this` object for the provided function. Previously, a falsy value for context would get translated into the global object (window) if null/undefined, or else wrapped in an object (e.g., new Boolean(false)).
+New in 1.9, the function returned by calling jQuery.proxy with a falsy context will preserve its `this` object for the provided function. Previously, a falsy value for context would get translated into the global object (window) if null/undefined, or else wrapped in an object (e.g., `new Boolean( false )`).
-### .data("events")
+### .data( "events" )
-Prior to 1.9, `.data("events")` could be used to retrieve jQuery's undocumented internal event data structure for an element if no other code had defined a data element with the name "events". This special case has been removed in 1.9. There is no public interface to retrieve this internal data structure, and it remains undocumented. However, the jQuery Migrate plugin restores this behavior for code that depends upon it.
+Prior to 1.9, `.data( "events" )` could be used to retrieve jQuery's undocumented internal event data structure for an element if no other code had defined a data element with the name "events". This special case has been removed in 1.9. There is no public interface to retrieve this internal data structure, and it remains undocumented. However, the jQuery Migrate plugin restores this behavior for code that depends upon it.
### Removed properties of the Event object
diff --git a/pages/upgrade-guide/3.0.md b/pages/upgrade-guide/3.0.md
index 98f33ce..a6a22e2 100644
--- a/pages/upgrade-guide/3.0.md
+++ b/pages/upgrade-guide/3.0.md
@@ -3,10 +3,6 @@
"toc": true
}
-
-
-# jQuery Core 3.0 Upgrade Guide
-
## Overview
With the major version of 3.0, the jQuery Core team has taken the opportunity to make changes to clean up the API and fix bugs that may prove to be breaking changes for some code. This includes the removal of previously deprecated public APIs, changes to or removal of undocumented APIs, and changes to the documented or undocumented behavior of existing APIs for specific inputs.
@@ -56,7 +52,7 @@ Changes are listed by their component category, and prefixed with a description
Remember that the jQuery Migrate plugin described above can detect and warn about many of these changes so that they can be fixed in your code.
-For a complete and detailed list of all code changes, see the 3.0 milestone in the [jQuery Core issue tracker](https://github.com/jquery/jquery/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.0.0) or the [version diff](https://github.com/jquery/jquery/compare/2.2-stable...master).
+For a complete and detailed list of all code changes, see the 3.0 milestone in the [jQuery Core issue tracker](https://github.com/jquery/jquery/issues?q=is%3Aissue+milestone%3A3.0.0) or the [version diff](https://github.com/jquery/jquery/compare/2.2.4...3.0.0).
### Ajax
#### Breaking change: Special-case Deferred methods removed from jQuery.ajax
@@ -78,7 +74,7 @@ https://github.com/jquery/jquery/issues/1732
#### Feature: New signature for jQuery.get() AND jQuery.post()
-jQuery 3 adds a new signature for the `jQuery.get()` and the `jQuery.post()` functions by adding a `settings` parameter. It's an object that can possess many properties and its the same object that you can provide to [`jQuery.ajax()`](https://api.jquery.com/jquery.ajax/#jQuery-ajax-settings).
+jQuery 3 adds a new signature for the `jQuery.get()` and the `jQuery.post()` functions by adding a `settings` parameter. It's an object that can possess many properties and its the same object that you can provide to [`jQuery.ajax()`](https://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings).
https://github.com/jquery/jquery/issues/1986
@@ -132,10 +128,10 @@ https://bugs.jquery.com/ticket/13335
The document-ready processing in jQuery has been powered by the `jQuery.Deferred` implementation since jQuery 1.6. As part of jQuery 3.0's alignment with the Promises/A+ standard, document-ready handlers are called asynchronously even if the document is currently ready at the point where the handler is added. This provides a consistent code execution order that is independent of whether the document is ready or not. For example, consider this code:
```js
-$(function(){
- console.log("ready");
-});
-console.log("outside ready");
+$( function() {
+ console.log( "ready" );
+} );
+console.log( "outside ready" );
```
In jQuery 3.0 this will always log "outside ready" followed by "ready" regardless of whether the document is ready at the point of execution. Earlier versions may log the messages in either order.
@@ -190,12 +186,12 @@ https://github.com/jquery/jquery/issues/2319
jQuery 3.0 supports the `for...of` loop introduced in ES2015. It allows looping over iterable objects including `Array`, `Map`, and `Set`. When using this loop, the value obtained is a DOM element of the jQuery collection, one at a time. Note that you will need to be using an environment that supports ES2015 or a transpiler such as Babel to use `for...of`. Here is an example:
```js
-var elems = $(".someclass");
+var elems = $( ".someclass" );
// Classic jQuery way
-$.each(function(i, elem) {
+$.each( function( i, elem ) {
// work with elem (or "this" object)
-});
+} );
// Prettier ES2015 way
for ( let elem of elems ) {
@@ -210,11 +206,11 @@ https://github.com/jquery/jquery/issues/1693
`jQuery.ready` has been consumable as a promise-like object ("thenable" in Promise terms) since jQuery version 1.8. As of jQuery 3.0 this object is documented as supported via `jQuery.when` or the native `Promise.resolve()`. No code should make assumptions about whether this object is a jQuery `Deferred` or some other type of promise object such as a native Promise. Typical usage might look like this:
```js
-$.when( $.ready, $.getScript("optional.js") ).then(function() {
+$.when( $.ready, $.getScript( "optional.js" ) ).then( function() {
// the document is ready and optional.js has loaded/run
-}).catch( function() {
+} ).catch( function() {
// an error occurred
-});
+} );
```
https://github.com/jquery/api.jquery.com/pull/530
@@ -230,17 +226,17 @@ Since all the browsers supported by jQuery 3.0 support the native `JSON.parse()`
https://github.com/jquery/jquery/issues/2800
-#### Deprecated: document-ready handlers other than `jQuery(function)`
+#### Deprecated: document-ready handlers other than `jQuery( function )`
Due to historical compatibility issues there are a multitude of ways to set a document ready handler. All of the following are equivalent and call the function `fn` when the document is ready:
```js
-$(fn);
-$().ready(fn);
-$(document).ready(fn);
-$("selector").ready(fn);
+$( fn );
+$().ready( fn );
+$( document ).ready( fn );
+$( "selector" ).ready( fn );
```
-As of jQuery 3.0 the recommended way to add a ready handler is the first method, `$(fn)`. As noted in the Event section, the `$(document).on("ready", fn)` event form has slightly different semantics and was removed in jQuery 3.0.
+As of jQuery 3.0 the recommended way to add a ready handler is the first method, `$(fn)`. As noted in the Event section, the `$( document ).on( "ready", fn )` event form has slightly different semantics and was removed in jQuery 3.0.
### Data
@@ -248,24 +244,24 @@ As of jQuery 3.0 the recommended way to add a ready handler is the first method
As of jQuery 3.0, all data names are stored in jQuery's internal data object in camelCase (e.g., `clickCount`), rather than kebab-case (e.g. `click-count`). This is consistent with the way that standard DOM turns dashed names into camel case for JavaScript names in CSS and data properties.
-In general, kebab case still works in jQuery 3.0 when setting or getting a specific data item, e.g. `.data("right-aligned")`, but if you retrieve the internal data object it will now have the data item in camel case (`rightAligned`). The main difference in 3.0 is when you use kebab case names directly on the data object instead of using the `.data()` API to get or set them.
+In general, kebab case still works in jQuery 3.0 when setting or getting a specific data item, e.g. `.data( "right-aligned" )`, but if you retrieve the internal data object it will now have the data item in camel case (`rightAligned`). The main difference in 3.0 is when you use kebab case names directly on the data object instead of using the `.data()` API to get or set them.
For example:
```js
-var $div = $("
");
-$div.data("clickCount", 2);
-$div.data("clickCount"); // 2
-$div.data("click-count", 3);
-$div.data("clickCount"); // 3
-$div.data("click-count"); // 3
+var $div = $( "
" );
+$div.data( "clickCount", 2 );
+$div.data( "clickCount" ); // 2
+$div.data( "click-count", 3 );
+$div.data( "clickCount" ); // 3
+$div.data( "click-count" ); // 3
var allData = $div.data();
allData.clickCount; // 3
-allData["click-count"]; // undefined
-allData["click-count"] = 14;
-$div.data("click-count"); // 3, NOT 14 as it would be in jQuery 2.x
+allData[ "click-count" ]; // undefined
+allData[ "click-count" ] = 14;
+$div.data( "click-count" ); // 3, NOT 14 as it would be in jQuery 2.x
allData.clickCount; // 3
-allData["click-count"]; // 14
+allData[ "click-count" ]; // 14
```
https://github.com/jquery/jquery/issues/2070
@@ -296,30 +292,30 @@ In jQuery 1.x and 2.x, an uncaught exception inside a callback function halts co
For example, consider this code using the new standard Promises/A+ behavior:
```js
-$.ajax("/status")
- .then(function(data) {
+$.ajax( "/status" )
+ .then( function( data ) {
whoops();
// console shows "jQuery.Deferred exception: whoops is not a function"
// no further code executes in this function
- })
- .catch(function(arg) {
+ } )
+ .catch( function( arg ) {
// this code executes after the error above
// arg is an Error object, "whoops is not a function"
- });
+ } );
```
Compare that to the old-style Deferred methods:
```js
-$.ajax("/status")
- .done(function(data) {
+$.ajax( "/status" )
+ .done( function( data ) {
whoops();
// console shows: "whoops is not a function"
// no further code executes in this function
- })
- .fail(function(arg) {
+ } )
+ .fail( function( arg ) {
// this code does not execute since the exception was not caught
- });
+ } );
```
Note that jQuery logs a message to the console when it is inside a Deferred and a JavaScript exception occurs. These messages take the form `jQuery.Deferred exception: (error message)`. If you do not want any console output on these exceptions, set `jQuery.Deferred.exceptionHook` to `undefined`. If you need further help in finding errors reported this way, use the [jquery-deferred-reporter plugin](https://github.com/dmethvin/jquery-deferred-reporter) during development to obtain stack traces.
@@ -332,7 +328,7 @@ The Promises/A+ spec says that promises are always resolved with a
single va
```js
// Typical old uses of .then() that are not Promises/A+ compatible
-$.ajax("url").then(
+$.ajax( "url" ).then(
// success
function( data, textStatus, jqXHR ) { /* code */ },
// error
@@ -340,11 +336,11 @@ $.ajax("url").then(
);
// Rewrite to this in order to maintain previous behavior
-$.ajax("url")
+$.ajax( "url" )
// success
- .done(function( data, textStatus, jqXHR ) { /* code */ })
+ .done( function( data, textStatus, jqXHR ) { /* code */ } )
// error
- .fail(function( jqXHR, textStatus, errorThrown ) { /* code */ });
+ .fail( function( jqXHR, textStatus, errorThrown ) { /* code */ } );
```
Another behavior change required for Promises/A+ compliance is that Deferred `.then()` callbacks are *always* called asynchronously. Previously, if a `.then()` callback was added to a Deferred that was already resolved or rejected, the callback would run immediately and synchronously.
@@ -374,9 +370,9 @@ https://github.com/jquery/jquery/issues/2710
### Dimensions
-#### Breaking change: .width(), .height(), .css("width"), and .css("height") can return non-integer values
+#### Breaking change: .width(), .height(), .css( "width" ), and .css( "height" ) can return non-integer values
-Before version 3.0, jQuery used the DOM `offsetWidth` and `offsetHeight` properties to determine the dimensions of an element, and these properties always return integers. With jQuery 3.0 we get more precise values via the DOM `getBoundingClientRect` API, and these may may not be integers. If your code always expects integers for dimensions, it may need to be adjusted to deal with this extra precision.
+Before version 3.0, jQuery used the DOM `offsetWidth` and `offsetHeight` properties to determine the dimensions of an element, and these properties always return integers. With jQuery 3.0 we get more precise values via the DOM `getBoundingClientRect` API, and these may not be integers. If your code always expects integers for dimensions, it may need to be adjusted to deal with this extra precision.
https://github.com/jquery/jquery/issues/1724
@@ -414,14 +410,14 @@ The easing functions called by `.animate()` are passed single argument, the perc
Example of an old easing method:
```js
-$.easing.easeInOutSine = function (x, t, b, c, d) {
- return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
+$.easing.easeInOutSine = function( x, t, b, c, d ) {
+ return -c / 2 * ( Math.cos( Math.PI * t / d ) - 1 ) + b;
};
```
The same easing method rewritten:
```js
-$.easing.easeInOutSine = function (x) {
- return -0.5*(Math.cos(Math.PI*x) - 1);
+$.easing.easeInOutSine = function( x ) {
+ return -0.5 * ( Math.cos( Math.PI * x ) - 1 );
};
```
@@ -432,11 +428,11 @@ https://github.com/jquery/api.jquery.com/issues/912
#### Breaking change: .load(), .unload(), and .error() removed
-These methods are shortcuts for event operations, but had several API limitations. The event `.load()` method conflicted with the ajax `.load()` method. The `.error()` method could not be used with `window.onerror` because of the way the DOM method is defined. If you need to attach events by these names, use the `.on()` method, e.g. change `$("img").load(fn)` to `$("img").on("load", fn)`.
+These methods are shortcuts for event operations, but had several API limitations. The event `.load()` method conflicted with the ajax `.load()` method. The `.error()` method could not be used with `window.onerror` because of the way the DOM method is defined. If you need to attach events by these names, use the `.on()` method, e.g. change `$( "img" ).load( fn )` to `$( "img" ).on( "load", fn )`.
https://github.com/jquery/jquery/issues/2286
-#### Breaking change: `.on("ready", fn)` removed
+#### Breaking change: `.on( "ready", fn )` removed
jQuery no longer supports a synthetic event named `"ready"` that can be used with the event functions. This event was error-prone and deprecated in jQuery 1.8 because it would only call the callback if it was attached before the document was ready. Replace any uses with `$(fn)` instead, which works reliably.
@@ -468,9 +464,9 @@ Five years ago in jQuery 1.7 we introduced the `.on()` method for attaching even
### Manipulation
-#### Breaking change: `.wrapAll(function)` only calls the function once
+#### Breaking change: `.wrapAll( function )` only calls the function once
-In previous versions, the `.wrapAll()` method acted like `.wrap()` when a function was passed. This has been corrected; now and `.wrapAll(function)` calls its function once, using the string result of the function call to wrap the entire collection.
+In previous versions, the `.wrapAll()` method acted like `.wrap()` when a function was passed. This has been corrected; now and `.wrapAll( function )` calls its function once, using the string result of the function call to wrap the entire collection.
https://github.com/jquery/jquery/issues/1843
@@ -494,9 +490,9 @@ An element is considered now visible if it has a layout box returned from the DO
https://github.com/jquery/jquery/issues/2227
https://github.com/jquery/jquery/issues/2604
-#### Breaking change: `jQuery("#")` and `.find("#")` are invalid syntax
+#### Breaking change: `jQuery( "#" )` and `.find( "#" )` are invalid syntax
-jQuery 3.0 throws a syntax error if a selector string consists of nothing but a hash-mark. In previous versions, `$("#")` returned an empty collection and `.find("#")` threw an error.
+jQuery 3.0 throws a syntax error if a selector string consists of nothing but a hash-mark. In previous versions, `$("#")` returned an empty collection and `.find( "#" )` threw an error.
https://github.com/jquery/jquery/pull/1682
diff --git a/pages/upgrade-guide/3.5.md b/pages/upgrade-guide/3.5.md
new file mode 100644
index 0000000..721f0a3
--- /dev/null
+++ b/pages/upgrade-guide/3.5.md
@@ -0,0 +1,65 @@
+
+
+## jQuery.htmlPrefilter changes
+
+### A workaround
+
+If you want to upgrade to jQuery 3.5.0 or newer and don't have time to deal with breaking changes at the moment, and you use jQuery Migrate 3.4.0 or newer, you can revert to the previous behavior by invoking:
+```js
+jQuery.migrateEnablePatches( "self-closed-tags" );
+```
+
+As long as this method has been called, jQuery Migrate 3.4.0 or newer logs warnings for all input that's affected by this change. **Note**: if you overwrite `jQuery.htmlPrefilter` manually, you'll lose those warnings!
+
+If you don't use jQuery Migrate, don't add it just for this one workaround. Instead, you can revert to the previous behavior by redefining `jQuery.htmlPrefilter` after loading jQuery:
+```js
+var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi;
+jQuery.htmlPrefilter = function( html ) {
+ return html.replace( rxhtmlTag, "<$1>$2>" );
+};
+```
+
+Note that if you do this, you lose the jQuery 3.5.0 security fix, and you have to be more careful with what HTML you pass to jQuery manipulation methods; regular HTML sanitizing will not be enough. Some security libraries have special sanitization settings for jQuery. For example, [DOMPurify](https://github.com/cure53/DOMPurify/tree/2.0.17#can-i-configure-dompurify) used to support the `SAFE_FOR_JQUERY` flag in versions `2.0.17` or older:
+```js
+var sanitizedHtml = DOMPurify.sanitize( unsafeHtml, { SAFE_FOR_JQUERY: true } );
+elem.html( sanitizedHtml );
+```
+
+### Description of the change
+
+`jQuery.htmlPrefilter` modifies and filters HTML strings passed through [jQuery manipulation methods](https://api.jquery.com/category/manipulation/). The default value of this function in jQueries older than 3.5.0 used to replace XHTML-like tags with versions that work in HTML. For example, previously the following:
+```js
+jQuery( "" );
+```
+would create the following structure:
+```html
+
+
+```
+because `` was replaced with `` & `` with ``.
+
+In jQuery 3.5.0, the `jQuery.htmlPrefilter` method always returns its argument unchanged. Modern browsers usually parse and render HTML strings in HTML mode. Elements such as `` and `` are never self-closing in HTML, so the browser interprets a string like `` as `` and leaves the tags open. The browser closes the tags at the end of the string or at an element that cannot be contained in the element, so another `` tag closes an existing open `
` tag.
+```html
+
+
+
+```
+
+To avoid this, don't use self-closing tags for tags that may have content unless your page runs in XHTML mode. Make sure you're sending a correct mime type: `application/xhtml+xml`; otherwise, your page will really run in HTML mode.
+
+If you're writing a library, and you want it to work both in HTML & XHTML modes, remember to use self-closing tags for empty elements, i.e. ones that don't have closing tags in HTML. For example, instead of:
+```js
+jQuery( "
" );
+```
+do this:
+```js
+jQuery( "
" );
+```
+
+One popular input that still works in jQuery 3.5.0 or newer is the one with a single tag with or without attributes:
+```js
+jQuery( "" );
+```
+This is because it's XHTML-compliant and in HTML the parser first changes it to just the opening tag: `` but then immediately auto-closes it as it reaches the end of input.
diff --git a/pages/upgrade-guide/4.0.md b/pages/upgrade-guide/4.0.md
new file mode 100644
index 0000000..2983cf1
--- /dev/null
+++ b/pages/upgrade-guide/4.0.md
@@ -0,0 +1,287 @@
+
+
+## Overview
+
+With the major version of 4.0, the jQuery Core team has taken the opportunity to make changes to clean up the API and fix bugs that may prove to be breaking changes for some. This includes the removal of previously deprecated public APIs, changes to or removal of undocumented APIs, and changes to the documented or undocumented behavior of existing APIs for specific inputs.
+
+## Browser Support
+
+As of jQuery 4.0, the following browsers are supported:
+
+* Internet Explorer: 11 only
+* Chrome, Edge, Firefox, Safari: Current and Current - 1
+* Opera: Current
+* Safari Mobile iOS: Current, Current - 1, and Current - 2
+* Android: Current and Current - 1
+
+### Browsers no longer supported
+
+* Edge: Legacy (non-Chromium) versions
+* Internet Explorer: 10 and below
+* Safari Mobile iOS: All versions older than Current - 2
+* Android: All versions older than Current - 1
+
+Browser support will not change until the next major version of jQuery (5.0).
+
+## jQuery Migrate Plugin
+
+A new version of the [jQuery Migrate Plugin](https://github.com/jquery/jquery-migrate/#README) is available to simplify migration of older code to version 4.0. We strongly recommend that you use this plugin as an upgrading tool, it will give specific advice about most of the major changes that may affect your code.
+
+[Version 4.0 of the jQuery Migrate Plugin](https://github.com/jquery/jquery-migrate/#README) *does not* warn about or restore behaviors that were removed in previous major version changes such as jQuery 1.0, 2.0, or 3.0. Use the following steps to upgrade from a version of jQuery older than 1.11.0 or 2.1.0 to this new version 4.0:
+
+### Start here if currently using jQuery 1.x or 2.x
+
+1. Upgrade the version of jQuery on the page to the latest 1.x or 2.x version.
+1. Add the uncompressed [jQuery Migrate 1.x Plugin](https://github.com/jquery/jquery-migrate/tree/1.x-stable) to the page.
+1. (Optional but recommended) Upgrade any plugins in use since later versions are usually the most compatible with recent versions of jQuery.
+1. Test the page and resolve any warnings that appear on the console, using the [JQMIGRATE 1.x warning documentation](https://github.com/jquery/jquery-migrate/tree/1.x-stable/warnings.md) as a guide.
+1. Remove the jQuery Migrate plugin and ensure that the updated jQuery code on the page continues to work properly with only the latest jQuery 1.x/2.x in use.
+
+### Start here if currently using the latest jQuery 1.x or 2.x version
+
+1. Upgrade the version of jQuery on the page to the latest 3.x version.
+1. Add the uncompressed [jQuery Migrate 3.x Plugin](https://github.com/jquery/jquery-migrate/tree/3.x-stable) to the page.
+1. (Optional but recommended) Upgrade any plugins in use since later versions are usually the most compatible with recent versions of jQuery.
+1. Test the page and resolve any warnings that appear on the console, using the [JQMIGRATE 3.x warning documentation](https://github.com/jquery/jquery-migrate/tree/3.x-stable/warnings.md) as a guide.
+1. Remove the jQuery Migrate plugin and ensure that the updated jQuery code on the page continues to work properly with only the latest jQuery 3.x in use.
+
+### Start here if currently using jQuery 3.x
+
+1. Upgrade the version of jQuery on the page to the latest 4.x version.
+1. Add the uncompressed [jQuery Migrate 4.x plugin](https://github.com/jquery/jquery-migrate/) to the page.
+1. (Optional but recommended) Upgrade any plugins in use since later versions are usually the most compatible with recent versions of jQuery.
+1. Test the page and resolve any warnings that appear on the console, using the [JQMIGRATE 4.x warning documentation](https://github.com/jquery/jquery-migrate/blob/master/warnings.md) as a guide. Report any bugs in third-party plugins to the plugin authors.
+1. Remove the jQuery Migrate plugin and ensure that the updated jQuery code on the page continues to work properly with only the latest jQuery 4.x in use.
+
+> [!Note]
+> jQuery Migrate 1.x and 3.x are in maintenance mode and will only receive updates for critical bugs. jQuery Migrate 3.x can be used to migrate to the latest jQuery 3.x if support for older browsers is needed.
+
+**Running multiple version of jQuery Migrate simultaneously is not supported.**
+
+The uncompressed development version of the Migrate plugin includes console log output to warn when specific deprecated and/or removed features are being used. This makes it valuable as a migration debugging tool for finding and remediating issues in existing jQuery code and plugins.
+
+The compressed version of the Migrate plugin does not generate any warnings, although it does issue a solitary console message that it has been included on the page. Migrate can be used on production sites when jQuery 3.0 or higher is desired but older incompatible jQuery code or plugins must also be used. Ideally this is only used as a short-term solution, since restoring old behavior may cause conflicts with new jQuery code that expects the new behavior.
+
+## Summary of Important Changes
+
+With a library as widely used as jQuery, it is often difficult for the team to know which changes may impact developers the most before a release occurs. Despite the length of this list, we believe that the majority are edge cases. Many jQuery projects should be able to run version 4.0 with only minor changes, if any.
+
+Changes are listed by their component category, and prefixed with a description to help you understand its impact:
+
+* **Breaking change:** This change *may* affect existing code, since it changes the API surface in some way. Most of the time the impacts are only for specific edge cases as noted.
+* **Feature:** The change is an API addition and should not affect existing code in most cases. However, there is the possibility that new features can interact negatively with existing code.
+* **Deprecated:** This feature or API is still present in jQuery 4.0, but its use is discouraged. It may be removed in a future major-version update.
+
+Remember that the jQuery Migrate plugin described above can detect and warn about many of these changes so that they can be fixed in your code.
+
+For a complete and detailed list of all code changes, see the milestone in the [jQuery Core issue tracker](https://github.com/jquery/jquery/issues?q=is%3Aissue+milestone%3A4.0.0).
+
+jQuery 4.0.0 is compatible with jQuery UI 1.13.3 or newer.
+
+### Ajax
+
+#### Breaking change: JSON to JSONP auto-promotion removed
+
+Previously, `jQuery.ajax` with `dataType: "json"` with a provided callback was automatically converted to a JSONP request unless one also specified `jsonp: false`. Today, the preferred way of interacting with a cross-domain backend is CORS, which works in all browsers jQuery 4 supports.
+
+Auto-promoting JSON requests to JSONP introduced a security issue. The developer may be unaware they are executing code from a remote domain. The auto-promoting logic has been disabled.
+
+To trigger a JSONP request, it's now required to specify `dataType: "jsonp"`.
+
+#### Breaking change: Scripts are no longer auto-executed without `dataType: "script"`
+
+jQuery 3.0.0 had already stopped auto-executing scripts retrieved with `jQuery.ajax` unless `dataType: "script"` was explicitly set for cross-domain scripts. That change has now been extended to same-domain scripts.
+
+To fetch *and* evaluate a script, pass `dataType: "script"` in `jQuery.ajax` options or use `jQuery.getScript`.
+
+#### Breaking change: Script tags now used for all async requests
+
+Until jQuery 4.0, the AJAX script transport only used a script tag to load scripts for cross-domain requests or ones with `scriptAttrs` set. We now always use a script tag for async requests to avoid any [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) errors.
+
+This change may affect existing code if certain scripts were expected to execute even when CSP headers were set. Either modify the CSP header to allow scripts from the same domain or remove the scripts.
+
+#### Potentially breaking change: `jQuery.ajax` now supports binary data
+
+jQuery 4.0 adds support for binary data in `jQuery.ajax` requests by adding support for `FormData` objects passed to the `data` argument. This change may affect existing code that relies on the previous behavior of `jQuery.ajax` when passing non-serializable data types, especially code that relies on the order of the execution of Ajax prefilters. Before, data was converted to a string before prefilters could be applied. Still, we don't expect this change to affect most users.
+
+### Attributes
+
+#### Breaking change: `toggleClass( Boolean | undefined )` signature removed
+
+This particular signature was deprecated in jQuery 3.0 and is now being removed in jQuery 4.0. After feedback and discussion with the community, it was determined that this signature caused unexpected behavior. For instance, if the argument to `toggleClass` was a variable that turned out to be `undefined` or `false`, it would result in all classes being removed. Also, while the `toggleClass( boolean )` signature was documented (and has been marked deprecated since 3.0), the `toggleClass( undefined )` signature was not.
+
+The recommendation for migration is to be explicit about which classes should be toggled.
+
+### Core
+
+#### Breaking change: Deprecated APIs removed
+
+The following APIs were deprecated in previous versions and have been removed in jQuery 4.0:
+
+* `jQuery.camelCase`
+ This function was never documented and was only used internally. It was deprecated in jQuery 3.0.
+
+* `jQuery.cssProps`
+ This object was used to map CSS properties to their vendor-prefixed versions, which is no longer necessary in jQuery 4.0's supported browsers.
+
+* `jQuery.isArray`
+ Use Array.isArray.
+
+* `jQuery.isFunction`
+ Use typeof value === "function".
+
+* `jQuery.isNumeric`
+ Use Number.isFinite or a custom implementation.
+
+* `jQuery.isWindow`
+ Window detection is generally unreliable and discouraged. If absolutely necessary, use `obj != null && obj === obj.window`.
+
+* `jQuery.fx.interval`
+ The default value was 13 (milliseconds), but has been removed as it does not work well with `requestAnimationFrame`. It should no longer be necessary.
+
+* `jQuery.nodeName`
+ Use `element.nodeName.toLowerCase()`.
+
+* `jQuery.now`
+ Use `Date.now()`.
+
+* `jQuery.parseJSON`
+ Use JSON.parse.
+
+* `jQuery.trim`
+ Use String.prototype.trim.
+
+* `jQuery.type`
+ Use `typeof` for primitive types, `Array.isArray` for arrays, and `instanceof` for objects. Or, use `Object.prototype.toString.call(value)`.
+
+* `jQuery.unique`
+ Use `jQuery.uniqueSort`.
+
+#### Breaking change: Remove undocumented Array methods
+
+jQuery 4.0 removes `push`, `sort`, and `splice` from the jQuery prototype. These methods were copies of the methods of the same names on the native Array prototype, but were never documented and were not intended for public use. Some plugins may have used them, so we are still marking this as a breaking change.
+
+#### Slim build breaking change: Remove `callbacks`, `deferred`, and `queue` modules
+
+The slim build of jQuery 4.0 no longer includes the `callbacks`, `deferred`, and `queue` modules. Use the full build if you need these modules, or use native Promise objects.
+
+#### Breaking change: Remove undocumented `root` parameter of `jQuery.fn.init()`
+
+`root` was the third parameter of `jQuery.fn.init()`, but was never documented and was only used internally. Also, it has not been necessary since jQuery 1.9 when `jQuery.sub()` was removed.
+
+#### Important fix: Add `exports` to package.json
+
+jQuery exports multiple builds that can be used in different environments. This includes the default build as both a universal module (UMD) and an ESM module, the slim build in UMD and ESM, and a factory build for running jQuery with DOM emulators like JSDOM. The `exports` field in `package.json` is used to specify which build is used in different environments. This change should not affect existing code in most cases, but it is an important fix to ensure that jQuery can be used in a wider range of environments.
+
+##### Potentially breaking change: Node.js without a DOM window requires the factory entry point
+
+Wherever jQuery is used, it requires a `window` with a proper `document`, which does not exist by default in Node.js and related environments. Tools like JSDOM can be used to create a fake `window` and `document` in Node.js, but the way jQuery can be imported in these environments has changed in jQuery 4.0.
+
+In jQuery 3.x, `require("jquery")` in a Node.js environment without a global `window` returned a factory function that accepted a `window` argument. In jQuery 4.0, the CommonJS wrapper no longer does this. Instead, use the dedicated factory entry point:
+
+```js
+// jQuery 3.x
+const jQuery = require( "jquery" )( window );
+
+// jQuery 4.0
+const jQuery = require( "jquery/factory" )( window );
+```
+
+A `jquery/factory-slim` entry point is also available.
+
+Alternatively, if you attach the JSDOM `window` to `globalThis` before importing or requiring jQuery, it will work without the factory entry point.
+
+#### Potentially breaking change: jQuery's source is no longer written using AMD modules
+
+jQuery's source code has been converted to use ES modules instead of AMD modules. While this has several advantages, some users may have been importing jQuery's source directly using AMD loaders such as RequireJS. This change may affect those users, but it is expected that most users will be able to continue using jQuery without any issues. The main jQuery file is still built as a UMD module, so it can be used in both AMD and non-AMD environments.
+
+### CSS
+
+#### Breaking change: `px` no longer automatically added to most unitless values
+
+jQuery 4.0 switches strategies when it comes to setting CSS properties that require units. Previously, jQuery would automatically add `px` to unitless values, with some exceptions. The old stragey did not properly handle new CSS properties that had been added to the CSS spec since jQuery's release and the "exceptions" list was growing fast. That behavior has been removed in jQuery 4.0.
+
+Instead, jQuery will now only add `px` to a limited set of properties that are known to require it. This change may affect existing code that relies on the old behavior.
+
+We encourage all users to explicitly specify units for CSS properties that require them, as this is the standard way of working with CSS and will help avoid any issues with future versions of jQuery. If the old behavior is still needed, see [the docs](https://api.jquery.com/css/#css-propertyName-value) for the current list of properties to which jQuery will automatically add `px`.
+
+#### Breaking change: Remove opacity CSS hook
+
+`.css( "opacity" )` will now return an empty string for detached elements in standard-compliant browsers and "1" in IE. That behavior is shared by most other CSS properties, but may affect existing code relying on a return value of "1".
+
+### Data
+
+#### Important fix: `Object.prototype` pollution
+
+jQuery 4.0 includes a fix to ensure event and data keys matching `Object.prototype` properties are supported without overriding the native properties. This may affect code calling `hasOwnProperty` on the data object, which should be rare.
+
+Switch from:
+
+```js
+if ( elem.data().hasOwnProperty( "key" ) ) { /* ... */ }
+```
+
+to:
+
+```js
+if ( "key" in elem.data() ) { /* ... */ }
+if ( Object.hasOwn( elem.data(), "key" ) ) { /* ... */ }
+```
+
+### Deferred
+
+#### Breaking change: Removed `jQuery.Deferred.getStackHook`
+
+[`jQuery.Deferred.getStackHook`](https://api.jquery.com/jQuery.Deferred.getStackHook/) was renamed to [`jQuery.Deferred.getErrorHook`](https://api.jquery.com/jQuery.Deferred.getErrorHook/) in 3.7.0. It is used to pass the original error to [`jQuery.Deferred.exceptionHook`](https://api.jquery.com/jQuery.Deferred.exceptionHook/). Previously, we recommended passing the stack but that didn't play well with source maps. `jQuery.Deferred.exceptionHook` can be used to debug asynchronous errors.
+
+### Event
+
+#### Breaking change: Stop shimming focusin & focusout events
+
+jQuery 4.0 no longer shims the `focusin` and `focusout` events. This only affects code that relies on the order of these events as they relate to `focus` and `blur`. This change is expected to affect very few users. Mostly, the order can be different in IE in that `blur` can come before `focousout` and `focus` before `focusin`. See [#4362](https://github.com/jquery/jquery/pull/4362) for details.
+
+#### Breaking change: `jQuery.event.special` no longer inherits from `Object.prototype`
+
+This may affect code calling `hasOwnProperty` on `jQuery.event.special`, which should be rare.
+
+### Manipulation
+
+#### Important feature: Add support for Trusted Types
+
+jQuery 4.0 adds support for [Trusted Types](https://developer.mozilla.org/en-US/docs/Web/API/Trusted_Types_API) for all manipulation methods. This change is not expected to affect existing code, but it is an important feature for security.
+
+#### Potentially breaking change: Avoid concatenating strings in buildFragment
+
+This change was needed in order to add support for [Trusted Types](https://developer.mozilla.org/en-US/docs/Web/API/Trusted_Types_API). It's not entirely clear what real use cases might be affected by this change, but we're listing it here just in case.
+
+#### Important fix: Don't remove HTML comments and `CDATA` sections from scripts
+
+Browsers can now handle these without jQuery's help. This change is not expected to affect existing code, but is an important fix because jQuery's logic removing them was not correct in 100% of cases.
+
+### Selector
+
+#### Important fix: Backport jQuery selection context logic to selector-native
+
+jQuery has long had a minimal selector engine that could be used in place of Sizzle. This engine was missing some logic that Sizzle had for handling the context of a selection. This change backports that logic to the native selector engine, which may affect code that relied on the old behavior. For example, `$div.find( "> *" )` will no longer throw an error when using the native selector engine. Also, given the following HTML:
+
+```html
+
+
+
+```
+
+The following returns 0 results in jQuery 4.0:
+
+```js
+const $div = $( "#parent" );
+$div.find( "div span" );
+```
+
+This is generally the expected behavior.
+
+#### Breaking change: Drop support for legacy custom pseudos
+
+References in Sizzle wiki: https://github.com/jquery/sizzle/wiki#-backwards-compatible-plugins-for-pseudos-with-arguments