diff options
author | Mario <mario@mariovavti.com> | 2020-05-07 23:35:02 +0200 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2020-05-07 23:35:02 +0200 |
commit | fae70bf0a7f1b566d25e30064f60d58ab150951a (patch) | |
tree | 1714511edb85ed0e28034ed9371d5fc515504fd6 /vendor | |
parent | ffd2faf8a09a870e8dbecb3ad168e0a9b25941d3 (diff) | |
download | volse-hubzilla-fae70bf0a7f1b566d25e30064f60d58ab150951a.tar.gz volse-hubzilla-fae70bf0a7f1b566d25e30064f60d58ab150951a.tar.bz2 volse-hubzilla-fae70bf0a7f1b566d25e30064f60d58ab150951a.zip |
Revert "composer updates"
This reverts commit dbfe748d274f6843fc91a3071df7be45c4ab5b00
Diffstat (limited to 'vendor')
445 files changed, 10168 insertions, 4291 deletions
diff --git a/vendor/blueimp/jquery-file-upload/.github/workflows/test.yml b/vendor/blueimp/jquery-file-upload/.github/workflows/test.yml index 945286b6e..048a2593e 100644 --- a/vendor/blueimp/jquery-file-upload/.github/workflows/test.yml +++ b/vendor/blueimp/jquery-file-upload/.github/workflows/test.yml @@ -6,7 +6,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v1 - name: Setup Node.js uses: actions/setup-node@v1 with: @@ -23,7 +23,7 @@ jobs: mocha: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v1 - name: chmod run: chmod -R 777 server/php/files - name: docker-compose build @@ -40,7 +40,7 @@ jobs: wdio-chrome: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v1 - name: chmod run: chmod -R 777 server/php/files wdio/reports - name: docker-compose build @@ -63,13 +63,13 @@ jobs: wdio-firefox: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v1 - name: chmod run: chmod -R 777 server/php/files wdio/reports - name: docker-compose build run: docker-compose build example - name: wdio firefox - run: docker-compose run --rm wdio conf/firefox.js + run: docker-compose run --rm wdio firefox.js - name: docker-compose logs if: always() run: docker-compose logs example diff --git a/vendor/blueimp/jquery-file-upload/README.md b/vendor/blueimp/jquery-file-upload/README.md index 5a13ef425..f3ca43f3c 100644 --- a/vendor/blueimp/jquery-file-upload/README.md +++ b/vendor/blueimp/jquery-file-upload/README.md @@ -120,7 +120,7 @@ For further information, please refer to the following guides: ### Mandatory requirements -- [jQuery](https://jquery.com/) v1.7+ +- [jQuery](https://jquery.com/) v1.6+ - [jQuery UI widget factory](https://api.jqueryui.com/jQuery.widget/) v1.9+ (included): Required for the basic File Upload plugin, but very lightweight without any other dependencies from the jQuery UI suite. diff --git a/vendor/blueimp/jquery-file-upload/SECURITY.md b/vendor/blueimp/jquery-file-upload/SECURITY.md index 1778d0205..768f2b95e 100644 --- a/vendor/blueimp/jquery-file-upload/SECURITY.md +++ b/vendor/blueimp/jquery-file-upload/SECURITY.md @@ -18,7 +18,7 @@ For an in-depth understanding of the potential security risks of providing file uploads and possible mitigations, please refer to the -[OWASP - Unrestricted File Upload](https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload) +[OWASP - Unrestricted File Upload](https://www.owasp.org/index.php/Unrestricted_File_Upload) documentation. To securely setup the project to serve uploaded files, please refer to the diff --git a/vendor/blueimp/jquery-file-upload/VULNERABILITIES.md b/vendor/blueimp/jquery-file-upload/VULNERABILITIES.md index 14f70b81d..5dfd5f315 100644 --- a/vendor/blueimp/jquery-file-upload/VULNERABILITIES.md +++ b/vendor/blueimp/jquery-file-upload/VULNERABILITIES.md @@ -84,7 +84,7 @@ is disabled by default since Apache `v2.3.9` via [ad4aefd](https://github.com/blueimp/jQuery-File-Upload/commit/ad4aefd96e4056deab6fea2690f0d8cf56bb2d7d) - [Full disclosure post on Hacker News](https://news.ycombinator.com/item?id=18267309). - [CVE-2018-9206](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-9206) -- [OWASP - Unrestricted File Upload](https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload) +- [OWASP - Unrestricted File Upload](https://www.owasp.org/index.php/Unrestricted_File_Upload) ## Open redirect vulnerability in the GAE components @@ -99,7 +99,7 @@ domain for phishing attacks. - Commit containing the security fix: [f74d2a8](https://github.com/blueimp/jQuery-File-Upload/commit/f74d2a8c3e3b1e8e336678d2899facd5bcdb589f) -- [OWASP - Unvalidated Redirects and Forwards Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) +- [OWASP - Unvalidated Redirects and Forwards Cheat Sheet](https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet) ## Cross-site scripting vulnerability in the Iframe Transport @@ -115,4 +115,4 @@ context of the Webserver. - Commit containing the security fix: [4175032](https://github.com/blueimp/jQuery-File-Upload/commit/41750323a464e848856dc4c5c940663498beb74a) -- [OWASP - Cross-site Scripting (XSS)](https://owasp.org/www-community/attacks/xss/) +- [OWASP - Cross-site Scripting (XSS)](<https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)>) diff --git a/vendor/blueimp/jquery-file-upload/cors/postmessage.html b/vendor/blueimp/jquery-file-upload/cors/postmessage.html index 536e8b3c6..5c90743af 100644 --- a/vendor/blueimp/jquery-file-upload/cors/postmessage.html +++ b/vendor/blueimp/jquery-file-upload/cors/postmessage.html @@ -26,7 +26,7 @@ 'use strict'; var origin = /^https:\/\/example.org/, target = new RegExp('^(http(s)?:)?\\/\\/' + location.host + '\\/'); - $(window).on('message', function (e) { + $(window).on('message', function(e) { e = e.originalEvent; var s = e.data, xhr = $.ajaxSettings.xhr(), @@ -39,7 +39,7 @@ 'Target "' + e.data.url + '" does not match ' + target ); } - $(xhr.upload).on('progress', function (ev) { + $(xhr.upload).on('progress', function(ev) { ev = ev.originalEvent; e.source.postMessage( { @@ -53,17 +53,17 @@ e.origin ); }); - s.xhr = function () { + s.xhr = function() { return xhr; }; if (!(s.data instanceof Blob)) { f = new FormData(); - $.each(s.data, function (i, v) { + $.each(s.data, function(i, v) { f.append(v.name, v.value); }); s.data = f; } - $.ajax(s).always(function (result, statusText, jqXHR) { + $.ajax(s).always(function(result, statusText, jqXHR) { if (!jqXHR.done) { jqXHR = result; result = null; diff --git a/vendor/blueimp/jquery-file-upload/index.html b/vendor/blueimp/jquery-file-upload/index.html index 62033e764..aa908e745 100644 --- a/vendor/blueimp/jquery-file-upload/index.html +++ b/vendor/blueimp/jquery-file-upload/index.html @@ -33,12 +33,11 @@ /> <!-- Generic page styles --> <style> - #navigation { - margin: 10px 0; + body { + padding-top: 60px; } @media (max-width: 767px) { - #title, - #description { + .description { display: none; } } @@ -60,23 +59,50 @@ /></noscript> </head> <body> + <div class="navbar navbar-default navbar-fixed-top"> + <div class="container"> + <div class="navbar-header"> + <button + type="button" + class="navbar-toggle" + data-toggle="collapse" + data-target=".navbar-fixed-top .navbar-collapse" + > + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a + class="navbar-brand" + href="https://github.com/blueimp/jQuery-File-Upload" + >jQuery File Upload</a + > + </div> + <div class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li> + <a href="https://github.com/blueimp/jQuery-File-Upload/tags" + >Download</a + > + </li> + <li> + <a href="https://github.com/blueimp/jQuery-File-Upload" + >Source Code</a + > + </li> + <li> + <a href="https://github.com/blueimp/jQuery-File-Upload/wiki" + >Documentation</a + > + </li> + <li><a href="https://blueimp.net">© Sebastian Tschan</a></li> + </ul> + </div> + </div> + </div> <div class="container"> - <ul class="nav nav-tabs" id="navigation"> - <li> - <a href="https://github.com/blueimp/jQuery-File-Upload">Project</a> - </li> - <li class="active"> - <a href="#">Demo</a> - </li> - <li> - <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Wiki</a> - </li> - <li> - <a href="https://blueimp.net">Author</a> - </li> - </ul> - <h1 id="title">jQuery File Upload Demo</h1> - <blockquote id="description"> + <h1>jQuery File Upload Demo</h1> + <blockquote class="description"> <p> File Upload widget with multiple file selection, drag&drop support, progress bars, validation and preview images, audio and video @@ -137,7 +163,7 @@ > <div class="progress-bar progress-bar-success" - style="width: 0%;" + style="width:0%;" ></div> </div> <!-- The extended global progress state --> @@ -296,8 +322,8 @@ {% } %} </script> <script - src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js" - integrity="sha384-vk5WoKIaW/vJyUAd9n/wmopsmNhiy+L2Z+SBxGYnUkunIxVxAv/UtMOhba/xskxh" + src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" + integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous" ></script> <!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included --> @@ -308,6 +334,12 @@ <script src="https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script> <!-- The Canvas to Blob plugin is included for image resizing functionality --> <script src="https://blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script> + <!-- Bootstrap JS is not required, but included for the responsive demo navigation --> + <script + src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" + integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" + crossorigin="anonymous" + ></script> <!-- blueimp Gallery script --> <script src="https://blueimp.github.io/Gallery/js/jquery.blueimp-gallery.min.js"></script> <!-- The Iframe Transport is required for browsers without support for XHR file uploads --> diff --git a/vendor/blueimp/jquery-file-upload/js/cors/jquery.postmessage-transport.js b/vendor/blueimp/jquery-file-upload/js/cors/jquery.postmessage-transport.js index 5d5cc2f8d..0a3d9fe45 100644 --- a/vendor/blueimp/jquery-file-upload/js/cors/jquery.postmessage-transport.js +++ b/vendor/blueimp/jquery-file-upload/js/cors/jquery.postmessage-transport.js @@ -11,7 +11,7 @@ /* global define, require */ -(function (factory) { +(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: @@ -23,7 +23,7 @@ // Browser globals: factory(window.jQuery); } -})(function ($) { +})(function($) { 'use strict'; var counter = 0, @@ -46,7 +46,7 @@ 'url', 'username' ], - convert = function (p) { + convert = function(p) { return p; }; @@ -58,10 +58,10 @@ } }); - $.ajaxTransport('postmessage', function (options) { + $.ajaxTransport('postmessage', function(options) { if (options.postMessage && window.postMessage) { var iframe, - loc = $('<a></a>').prop('href', options.postMessage)[0], + loc = $('<a>').prop('href', options.postMessage)[0], target = loc.protocol + '//' + loc.host, xhrUpload = options.xhr().upload; // IE always includes the port for the host property of a link @@ -71,7 +71,7 @@ target = target.replace(/:(80|443)$/, ''); } return { - send: function (_, completeCallback) { + send: function(_, completeCallback) { counter += 1; var message = { id: 'postmessage-transport-' + counter @@ -84,12 +84,12 @@ message.id + '"></iframe>' ) - .on('load', function () { - $.each(names, function (i, name) { + .bind('load', function() { + $.each(names, function(i, name) { message[name] = options[name]; }); message.dataType = message.dataType.replace('postmessage ', ''); - $(window).on(eventName, function (event) { + $(window).bind(eventName, function(event) { var e = event.originalEvent; var data = e.data; var ev; @@ -107,7 +107,7 @@ data.headers ); iframe.remove(); - $(window).off(eventName); + $(window).unbind(eventName); } } }); @@ -115,7 +115,7 @@ }) .appendTo(document.body); }, - abort: function () { + abort: function() { if (iframe) { iframe.remove(); } diff --git a/vendor/blueimp/jquery-file-upload/js/cors/jquery.xdr-transport.js b/vendor/blueimp/jquery-file-upload/js/cors/jquery.xdr-transport.js index 9e81860b9..68e36be58 100644 --- a/vendor/blueimp/jquery-file-upload/js/cors/jquery.xdr-transport.js +++ b/vendor/blueimp/jquery-file-upload/js/cors/jquery.xdr-transport.js @@ -14,7 +14,7 @@ /* global define, require, XDomainRequest */ -(function (factory) { +(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: @@ -26,10 +26,10 @@ // Browser globals: factory(window.jQuery); } -})(function ($) { +})(function($) { 'use strict'; if (window.XDomainRequest && !$.support.cors) { - $.ajaxTransport(function (s) { + $.ajaxTransport(function(s) { if (s.crossDomain && s.async) { if (s.timeout) { s.xdrTimeout = s.timeout; @@ -37,7 +37,7 @@ } var xdr; return { - send: function (headers, completeCallback) { + send: function(headers, completeCallback) { var addParamChar = /\?/.test(s.url) ? '&' : '?'; /** * Callback wrapper function @@ -65,7 +65,7 @@ s.type = 'POST'; } xdr.open(s.type, s.url); - xdr.onload = function () { + xdr.onload = function() { callback( 200, 'OK', @@ -73,18 +73,18 @@ 'Content-Type: ' + xdr.contentType ); }; - xdr.onerror = function () { + xdr.onerror = function() { callback(404, 'Not Found'); }; if (s.xdrTimeout) { - xdr.ontimeout = function () { + xdr.ontimeout = function() { callback(0, 'timeout'); }; xdr.timeout = s.xdrTimeout; } xdr.send((s.hasContent && s.data) || null); }, - abort: function () { + abort: function() { if (xdr) { xdr.onerror = $.noop(); xdr.abort(); diff --git a/vendor/blueimp/jquery-file-upload/js/demo.js b/vendor/blueimp/jquery-file-upload/js/demo.js index 0735031b8..bb4eccd6e 100644 --- a/vendor/blueimp/jquery-file-upload/js/demo.js +++ b/vendor/blueimp/jquery-file-upload/js/demo.js @@ -11,7 +11,7 @@ /* global $ */ -$(function () { +$(function() { 'use strict'; // Initialize the jQuery File Upload widget: @@ -46,8 +46,8 @@ $(function () { $.ajax({ url: '//jquery-file-upload.appspot.com/', type: 'HEAD' - }).fail(function () { - $('<div class="alert alert-danger"></div>') + }).fail(function() { + $('<div class="alert alert-danger"/>') .text('Upload server currently unavailable - ' + new Date()) .appendTo('#fileupload'); }); @@ -62,10 +62,10 @@ $(function () { dataType: 'json', context: $('#fileupload')[0] }) - .always(function () { + .always(function() { $(this).removeClass('fileupload-processing'); }) - .done(function (result) { + .done(function(result) { $(this) .fileupload('option', 'done') // eslint-disable-next-line new-cap diff --git a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-audio.js b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-audio.js index e5c9202f9..2992213b9 100644 --- a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-audio.js +++ b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-audio.js @@ -11,7 +11,7 @@ /* global define, require */ -(function (factory) { +(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: @@ -27,7 +27,7 @@ // Browser globals: factory(window.jQuery, window.loadImage); } -})(function ($, loadImage) { +})(function($, loadImage) { 'use strict'; // Prepend to the default processQueue: @@ -63,7 +63,7 @@ // as audio element if the browser supports playing it. // Accepts the options fileTypes (regular expression) // and maxFileSize (integer) to limit the files to load: - loadAudio: function (data, options) { + loadAudio: function(data, options) { if (options.disabled) { return data; } @@ -90,7 +90,7 @@ }, // Sets the audio element as a property of the file object: - setAudio: function (data, options) { + setAudio: function(data, options) { if (data.audio && !options.disabled) { data.files[data.index][options.name || 'preview'] = data.audio; } diff --git a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-image.js b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-image.js index 859846103..8e9b46215 100644 --- a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-image.js +++ b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-image.js @@ -11,7 +11,7 @@ /* global define, require */ -(function (factory) { +(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: @@ -21,7 +21,6 @@ 'load-image-meta', 'load-image-scale', 'load-image-exif', - 'load-image-orientation', 'canvas-to-blob', './jquery.fileupload-process' ], factory); @@ -33,7 +32,6 @@ require('blueimp-load-image/js/load-image-meta'), require('blueimp-load-image/js/load-image-scale'), require('blueimp-load-image/js/load-image-exif'), - require('blueimp-load-image/js/load-image-orientation'), require('blueimp-canvas-to-blob'), require('./jquery.fileupload-process') ); @@ -41,25 +39,18 @@ // Browser globals: factory(window.jQuery, window.loadImage); } -})(function ($, loadImage) { +})(function($, loadImage) { 'use strict'; // Prepend to the default processQueue: $.blueimp.fileupload.prototype.options.processQueue.unshift( { action: 'loadImageMetaData', - maxMetaDataSize: '@', disableImageHead: '@', - disableMetaDataParsers: '@', disableExif: '@', disableExifThumbnail: '@', - disableExifOffsets: '@', - includeExifTags: '@', - excludeExifTags: '@', - disableIptc: '@', - disableIptcOffsets: '@', - includeIptcTags: '@', - excludeIptcTags: '@', + disableExifSub: '@', + disableExifGps: '@', disabled: '@disableImageMetaDataLoad' }, { @@ -134,7 +125,7 @@ imageMaxHeight: 1080, // Defines the image orientation (1-8) or takes the orientation // value from Exif data if set to true: - imageOrientation: true, + imageOrientation: false, // Define if resized images should be cropped or only scaled: imageCrop: false, // Disable the resize image functionality by default: @@ -159,7 +150,7 @@ // as img element, if the browser supports the File API. // Accepts the options fileTypes (regular expression) // and maxFileSize (integer) to limit the files to load: - loadImage: function (data, options) { + loadImage: function(data, options) { if (options.disabled) { return data; } @@ -173,7 +164,7 @@ (options.fileTypes && !options.fileTypes.test(file.type)) || !loadImage( file, - function (img) { + function(img) { if (img.src) { data.img = img; } @@ -192,7 +183,7 @@ // Also stores the resized image as preview property. // Accepts the options maxWidth, maxHeight, minWidth, // minHeight, canvas and crop: - resizeImage: function (data, options) { + resizeImage: function(data, options) { if (options.disabled || !(data.canvas || data.img)) { return data; } @@ -202,7 +193,7 @@ // eslint-disable-next-line new-cap dfd = $.Deferred(), img = (options.canvas && data.canvas) || data.img, - resolve = function (newImg) { + resolve = function(newImg) { if ( newImg && (newImg.width !== img.width || @@ -214,24 +205,18 @@ data.preview = newImg; dfd.resolveWith(that, [data]); }, - thumbnail, - thumbnailBlob; + thumbnail; if (data.exif) { if (options.orientation === true) { options.orientation = data.exif.get('Orientation'); } if (options.thumbnail) { thumbnail = data.exif.get('Thumbnail'); - thumbnailBlob = thumbnail && thumbnail.get('Blob'); - if (thumbnailBlob) { - loadImage(thumbnailBlob, resolve, options); + if (thumbnail) { + loadImage(thumbnail, resolve, options); return dfd.promise(); } } - // Prevent orienting browser oriented images: - if (loadImage.orientation) { - data.orientation = data.orientation || options.orientation; - } // Prevent orienting the same image twice: if (data.orientation) { delete options.orientation; @@ -248,7 +233,7 @@ // Saves the processed image given as data.canvas // inplace at data.index of data.files: - saveImage: function (data, options) { + saveImage: function(data, options) { if (!data.canvas || options.disabled) { return data; } @@ -258,7 +243,7 @@ dfd = $.Deferred(); if (data.canvas.toBlob) { data.canvas.toBlob( - function (blob) { + function(blob) { if (!blob.name) { if (file.type === blob.type) { blob.name = file.name; @@ -287,7 +272,7 @@ return dfd.promise(); }, - loadImageMetaData: function (data, options) { + loadImageMetaData: function(data, options) { if (options.disabled) { return data; } @@ -296,7 +281,7 @@ dfd = $.Deferred(); loadImage.parseMetaData( data.files[data.index], - function (result) { + function(result) { $.extend(data, result); dfd.resolveWith(that, [data]); }, @@ -305,7 +290,7 @@ return dfd.promise(); }, - saveImageMetaData: function (data, options) { + saveImageMetaData: function(data, options) { if ( !( data.imageHead && @@ -316,32 +301,31 @@ ) { return data; } - var that = this, - file = data.files[data.index], - // eslint-disable-next-line new-cap - dfd = $.Deferred(); - if (data.orientation && data.exifOffsets) { - // Reset Exif Orientation data: - loadImage.writeExifData(data.imageHead, data, 'Orientation', 1); - } - loadImage.replaceHead(file, data.imageHead, function (blob) { - blob.name = file.name; - data.files[data.index] = blob; - dfd.resolveWith(that, [data]); - }); - return dfd.promise(); + var file = data.files[data.index], + blob = new Blob( + [ + data.imageHead, + // Resized images always have a head size of 20 bytes, + // including the JPEG marker and a minimal JFIF header: + this._blobSlice.call(file, 20) + ], + { type: file.type } + ); + blob.name = file.name; + data.files[data.index] = blob; + return data; }, // Sets the resized version of the image as a property of the // file object, must be called after "saveImage": - setImage: function (data, options) { + setImage: function(data, options) { if (data.preview && !options.disabled) { data.files[data.index][options.name || 'preview'] = data.preview; } return data; }, - deleteImageReferences: function (data, options) { + deleteImageReferences: function(data, options) { if (!options.disabled) { delete data.img; delete data.canvas; diff --git a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-process.js b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-process.js index 29de8309a..54d216913 100644 --- a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-process.js +++ b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-process.js @@ -11,7 +11,7 @@ /* global define, require */ -(function (factory) { +(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: @@ -23,7 +23,7 @@ // Browser globals: factory(window.jQuery); } -})(function ($) { +})(function($) { 'use strict'; var originalAdd = $.blueimp.fileupload.prototype.options.add; @@ -41,9 +41,9 @@ } */ ], - add: function (e, data) { + add: function(e, data) { var $this = $(this); - data.process(function () { + data.process(function() { return $this.fileupload('process', data); }); originalAdd.call(this, e, data); @@ -60,17 +60,19 @@ */ }, - _processFile: function (data, originalData) { + _processFile: function(data, originalData) { var that = this, // eslint-disable-next-line new-cap dfd = $.Deferred().resolveWith(that, [data]), chain = dfd.promise(); this._trigger('process', null, data); - $.each(data.processQueue, function (i, settings) { - var func = function (data) { + $.each(data.processQueue, function(i, settings) { + var func = function(data) { if (originalData.errorThrown) { // eslint-disable-next-line new-cap - return $.Deferred().rejectWith(that, [originalData]).promise(); + return $.Deferred() + .rejectWith(that, [originalData]) + .promise(); } return that.processActions[settings.action].call( that, @@ -81,11 +83,11 @@ chain = chain.then(func, settings.always && func); }); chain - .done(function () { + .done(function() { that._trigger('processdone', null, data); that._trigger('processalways', null, data); }) - .fail(function () { + .fail(function() { that._trigger('processfail', null, data); that._trigger('processalways', null, data); }); @@ -96,13 +98,13 @@ // are strings starting with an "@", using the remaining // substring as key for the option map, // e.g. "@autoUpload" is replaced with options.autoUpload: - _transformProcessQueue: function (options) { + _transformProcessQueue: function(options) { var processQueue = []; - $.each(options.processQueue, function () { + $.each(options.processQueue, function() { var settings = {}, action = this.action, prefix = this.prefix === true ? action : this.prefix; - $.each(this, function (key, value) { + $.each(this, function(key, value) { if ($.type(value) === 'string' && value.charAt(0) === '@') { settings[key] = options[ @@ -121,13 +123,13 @@ }, // Returns the number of files currently in the processsing queue: - processing: function () { + processing: function() { return this._processing; }, // Processes the files given as files property of the data parameter, // returns a Promise object that allows to bind callbacks: - process: function (data) { + process: function(data) { var that = this, options = $.extend({}, this.options, data); if (options.processQueue && options.processQueue.length) { @@ -135,12 +137,14 @@ if (this._processing === 0) { this._trigger('processstart'); } - $.each(data.files, function (index) { + $.each(data.files, function(index) { var opts = index ? $.extend({}, options) : options, - func = function () { + func = function() { if (data.errorThrown) { // eslint-disable-next-line new-cap - return $.Deferred().rejectWith(that, [data]).promise(); + return $.Deferred() + .rejectWith(that, [data]) + .promise(); } return that._processFile(opts, data); }; @@ -148,7 +152,7 @@ that._processing += 1; that._processingQueue = that._processingQueue .then(func, func) - .always(function () { + .always(function() { that._processing -= 1; if (that._processing === 0) { that._trigger('processstop'); @@ -159,11 +163,13 @@ return this._processingQueue; }, - _create: function () { + _create: function() { this._super(); this._processing = 0; // eslint-disable-next-line new-cap - this._processingQueue = $.Deferred().resolveWith(this).promise(); + this._processingQueue = $.Deferred() + .resolveWith(this) + .promise(); } }); }); diff --git a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-ui.js b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-ui.js index c42b18cc2..ff725cf14 100644 --- a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-ui.js +++ b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-ui.js @@ -11,7 +11,7 @@ /* global define, require */ -(function (factory) { +(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: @@ -37,7 +37,7 @@ // Browser globals: factory(window.jQuery, window.tmpl); } -})(function ($, tmpl) { +})(function($, tmpl) { 'use strict'; $.blueimp.fileupload.prototype._specialOptions.push( @@ -77,12 +77,12 @@ // Function returning the current number of files, // used by the maxNumberOfFiles validation: - getNumberOfFiles: function () { + getNumberOfFiles: function() { return this.filesContainer.children().not('.processing').length; }, // Callback to retrieve the list of files from the server response: - getFilesFromResponse: function (data) { + getFilesFromResponse: function(data) { if (data.result && $.isArray(data.result.files)) { return data.result.files; } @@ -92,7 +92,7 @@ // The add callback is invoked as soon as files are added to the fileupload // widget (via file input selection, drag & drop or add API call). // See the basic file upload widget for more information: - add: function (e, data) { + add: function(e, data) { if (e.isDefaultPrevented()) { return false; } @@ -109,12 +109,12 @@ that._forceReflow(data.context); that._transition(data.context); data - .process(function () { + .process(function() { return $this.fileupload('process', data); }) - .always(function () { + .always(function() { data.context - .each(function (index) { + .each(function(index) { $(this) .find('.size') .text(that._formatFileSize(data.files[index].size)); @@ -122,7 +122,7 @@ .removeClass('processing'); that._renderPreviews(data); }) - .done(function () { + .done(function() { data.context.find('.edit,.start').prop('disabled', false); if ( that._trigger('added', e, data) !== false && @@ -132,19 +132,21 @@ data.submit(); } }) - .fail(function () { + .fail(function() { if (data.files.error) { - data.context.each(function (index) { + data.context.each(function(index) { var error = data.files[index].error; if (error) { - $(this).find('.error').text(error); + $(this) + .find('.error') + .text(error); } }); } }); }, // Callback for the start of each file upload request: - send: function (e, data) { + send: function(e, data) { if (e.isDefaultPrevented()) { return false; } @@ -169,7 +171,7 @@ return that._trigger('sent', e, data); }, // Callback for successful uploads: - done: function (e, data) { + done: function(e, data) { if (e.isDefaultPrevented()) { return false; } @@ -181,14 +183,14 @@ template, deferred; if (data.context) { - data.context.each(function (index) { + data.context.each(function(index) { var file = files[index] || { error: 'Empty file upload result' }; deferred = that._addFinishedDeferreds(); - that._transition($(this)).done(function () { + that._transition($(this)).done(function() { var node = $(this); template = that._renderDownload([file]).replaceAll(node); that._forceReflow(template); - that._transition(template).done(function () { + that._transition(template).done(function() { data.context = $(this); that._trigger('completed', e, data); that._trigger('finished', e, data); @@ -204,7 +206,7 @@ ); that._forceReflow(template); deferred = that._addFinishedDeferreds(); - that._transition(template).done(function () { + that._transition(template).done(function() { data.context = $(this); that._trigger('completed', e, data); that._trigger('finished', e, data); @@ -213,7 +215,7 @@ } }, // Callback for failed (abort or error) uploads: - fail: function (e, data) { + fail: function(e, data) { if (e.isDefaultPrevented()) { return false; } @@ -222,17 +224,17 @@ template, deferred; if (data.context) { - data.context.each(function (index) { + data.context.each(function(index) { if (data.errorThrown !== 'abort') { var file = data.files[index]; file.error = file.error || data.errorThrown || data.i18n('unknownError'); deferred = that._addFinishedDeferreds(); - that._transition($(this)).done(function () { + that._transition($(this)).done(function() { var node = $(this); template = that._renderDownload([file]).replaceAll(node); that._forceReflow(template); - that._transition(template).done(function () { + that._transition(template).done(function() { data.context = $(this); that._trigger('failed', e, data); that._trigger('finished', e, data); @@ -241,7 +243,7 @@ }); } else { deferred = that._addFinishedDeferreds(); - that._transition($(this)).done(function () { + that._transition($(this)).done(function() { $(this).remove(); that._trigger('failed', e, data); that._trigger('finished', e, data); @@ -258,7 +260,7 @@ .data('data', data); that._forceReflow(data.context); deferred = that._addFinishedDeferreds(); - that._transition(data.context).done(function () { + that._transition(data.context).done(function() { data.context = $(this); that._trigger('failed', e, data); that._trigger('finished', e, data); @@ -271,13 +273,13 @@ } }, // Callback for upload progress events: - progress: function (e, data) { + progress: function(e, data) { if (e.isDefaultPrevented()) { return false; } var progress = Math.floor((data.loaded / data.total) * 100); if (data.context) { - data.context.each(function () { + data.context.each(function() { $(this) .find('.progress') .attr('aria-valuenow', progress) @@ -288,7 +290,7 @@ } }, // Callback for global upload progress events: - progressall: function (e, data) { + progressall: function(e, data) { if (e.isDefaultPrevented()) { return false; } @@ -311,64 +313,62 @@ .css('width', progress + '%'); }, // Callback for uploads start, equivalent to the global ajaxStart event: - start: function (e) { + start: function(e) { if (e.isDefaultPrevented()) { return false; } var that = $(this).data('blueimp-fileupload') || $(this).data('fileupload'); that._resetFinishedDeferreds(); - that - ._transition($(this).find('.fileupload-progress')) - .done(function () { - that._trigger('started', e); - }); + that._transition($(this).find('.fileupload-progress')).done(function() { + that._trigger('started', e); + }); }, // Callback for uploads stop, equivalent to the global ajaxStop event: - stop: function (e) { + stop: function(e) { if (e.isDefaultPrevented()) { return false; } var that = $(this).data('blueimp-fileupload') || $(this).data('fileupload'), deferred = that._addFinishedDeferreds(); - $.when.apply($, that._getFinishedDeferreds()).done(function () { + $.when.apply($, that._getFinishedDeferreds()).done(function() { that._trigger('stopped', e); }); - that - ._transition($(this).find('.fileupload-progress')) - .done(function () { - $(this) - .find('.progress') - .attr('aria-valuenow', '0') - .children() - .first() - .css('width', '0%'); - $(this).find('.progress-extended').html(' '); - deferred.resolve(); - }); + that._transition($(this).find('.fileupload-progress')).done(function() { + $(this) + .find('.progress') + .attr('aria-valuenow', '0') + .children() + .first() + .css('width', '0%'); + $(this) + .find('.progress-extended') + .html(' '); + deferred.resolve(); + }); }, - processstart: function (e) { + processstart: function(e) { if (e.isDefaultPrevented()) { return false; } $(this).addClass('fileupload-processing'); }, - processstop: function (e) { + processstop: function(e) { if (e.isDefaultPrevented()) { return false; } $(this).removeClass('fileupload-processing'); }, // Callback for file deletion: - destroy: function (e, data) { + destroy: function(e, data) { if (e.isDefaultPrevented()) { return false; } var that = $(this).data('blueimp-fileupload') || $(this).data('fileupload'), - removeNode = function () { - that._transition(data.context).done(function () { + removeNode = function() { + that._transition(data.context).done(function() { $(this).remove(); that._trigger('destroyed', e, data); }); @@ -377,7 +377,7 @@ data.dataType = data.dataType || that.options.dataType; $.ajax(data) .done(removeNode) - .fail(function () { + .fail(function() { that._trigger('destroyfailed', e, data); }); } else { @@ -386,29 +386,29 @@ } }, - _resetFinishedDeferreds: function () { + _resetFinishedDeferreds: function() { this._finishedUploads = []; }, - _addFinishedDeferreds: function (deferred) { + _addFinishedDeferreds: function(deferred) { // eslint-disable-next-line new-cap var promise = deferred || $.Deferred(); this._finishedUploads.push(promise); return promise; }, - _getFinishedDeferreds: function () { + _getFinishedDeferreds: function() { return this._finishedUploads; }, // Link handler, that allows to download files // by drag & drop of the links to the desktop: - _enableDragToDesktop: function () { + _enableDragToDesktop: function() { var link = $(this), url = link.prop('href'), name = link.prop('download'), type = 'application/octet-stream'; - link.on('dragstart', function (e) { + link.bind('dragstart', function(e) { try { e.originalEvent.dataTransfer.setData( 'DownloadURL', @@ -420,7 +420,7 @@ }); }, - _formatFileSize: function (bytes) { + _formatFileSize: function(bytes) { if (typeof bytes !== 'number') { return ''; } @@ -433,7 +433,7 @@ return (bytes / 1000).toFixed(2) + ' KB'; }, - _formatBitrate: function (bits) { + _formatBitrate: function(bits) { if (typeof bits !== 'number') { return ''; } @@ -449,7 +449,7 @@ return bits.toFixed(2) + ' bit/s'; }, - _formatTime: function (seconds) { + _formatTime: function(seconds) { var date = new Date(seconds * 1000), days = Math.floor(seconds / 86400); days = days ? days + 'd ' : ''; @@ -463,11 +463,11 @@ ); }, - _formatPercentage: function (floatValue) { + _formatPercentage: function(floatValue) { return (floatValue * 100).toFixed(2) + ' %'; }, - _renderExtendedProgress: function (data) { + _renderExtendedProgress: function(data) { return ( this._formatBitrate(data.bitrate) + ' | ' + @@ -481,7 +481,7 @@ ); }, - _renderTemplate: function (func, files) { + _renderTemplate: function(func, files) { if (!func) { return $(); } @@ -493,27 +493,31 @@ if (result instanceof $) { return result; } - return $(this.options.templatesContainer).html(result).children(); + return $(this.options.templatesContainer) + .html(result) + .children(); }, - _renderPreviews: function (data) { - data.context.find('.preview').each(function (index, elm) { - $(elm).empty().append(data.files[index].preview); + _renderPreviews: function(data) { + data.context.find('.preview').each(function(index, elm) { + $(elm) + .empty() + .append(data.files[index].preview); }); }, - _renderUpload: function (files) { + _renderUpload: function(files) { return this._renderTemplate(this.options.uploadTemplate, files); }, - _renderDownload: function (files) { + _renderDownload: function(files) { return this._renderTemplate(this.options.downloadTemplate, files) .find('a[download]') .each(this._enableDragToDesktop) .end(); }, - _editHandler: function (e) { + _editHandler: function(e) { e.preventDefault(); if (!this.options.edit) return; var that = this, @@ -521,24 +525,24 @@ template = button.closest('.template-upload'), data = template.data('data'), index = button.data().index; - this.options.edit(data.files[index]).then(function (file) { + this.options.edit(data.files[index]).then(function(file) { if (!file) return; data.files[index] = file; data.context.addClass('processing'); template.find('.edit,.start').prop('disabled', true); $(that.element) .fileupload('process', data) - .always(function () { + .always(function() { template .find('.size') .text(that._formatFileSize(data.files[index].size)); data.context.removeClass('processing'); that._renderPreviews(data); }) - .done(function () { + .done(function() { template.find('.edit,.start').prop('disabled', false); }) - .fail(function () { + .fail(function() { template.find('.edit').prop('disabled', false); var error = data.files[index].error; if (error) { @@ -548,7 +552,7 @@ }); }, - _startHandler: function (e) { + _startHandler: function(e) { e.preventDefault(); var button = $(e.currentTarget), template = button.closest('.template-upload'), @@ -559,7 +563,7 @@ } }, - _cancelHandler: function (e) { + _cancelHandler: function(e) { e.preventDefault(); var template = $(e.currentTarget).closest( '.template-upload,.template-download' @@ -574,7 +578,7 @@ } }, - _deleteHandler: function (e) { + _deleteHandler: function(e) { e.preventDefault(); var button = $(e.currentTarget); this._trigger( @@ -590,11 +594,11 @@ ); }, - _forceReflow: function (node) { + _forceReflow: function(node) { return $.support.transition && node.length && node[0].offsetWidth; }, - _transition: function (node) { + _transition: function(node) { // eslint-disable-next-line new-cap var dfd = $.Deferred(); if ( @@ -602,16 +606,16 @@ node.hasClass('fade') && node.is(':visible') ) { - var transitionEndHandler = function (e) { + var transitionEndHandler = function(e) { // Make sure we don't respond to other transition events // in the container element, e.g. from button elements: if (e.target === node[0]) { - node.off($.support.transition.end, transitionEndHandler); + node.unbind($.support.transition.end, transitionEndHandler); dfd.resolveWith(node); } }; node - .on($.support.transition.end, transitionEndHandler) + .bind($.support.transition.end, transitionEndHandler) .toggleClass(this.options.showElementClass); } else { node.toggleClass(this.options.showElementClass); @@ -620,23 +624,23 @@ return dfd; }, - _initButtonBarEventHandlers: function () { + _initButtonBarEventHandlers: function() { var fileUploadButtonBar = this.element.find('.fileupload-buttonbar'), filesList = this.options.filesContainer; this._on(fileUploadButtonBar.find('.start'), { - click: function (e) { + click: function(e) { e.preventDefault(); filesList.find('.start').click(); } }); this._on(fileUploadButtonBar.find('.cancel'), { - click: function (e) { + click: function(e) { e.preventDefault(); filesList.find('.cancel').click(); } }); this._on(fileUploadButtonBar.find('.delete'), { - click: function (e) { + click: function(e) { e.preventDefault(); filesList .find('.toggle:checked') @@ -647,7 +651,7 @@ } }); this._on(fileUploadButtonBar.find('.toggle'), { - change: function (e) { + change: function(e) { filesList .find('.toggle') .prop('checked', $(e.currentTarget).is(':checked')); @@ -655,7 +659,7 @@ }); }, - _destroyButtonBarEventHandlers: function () { + _destroyButtonBarEventHandlers: function() { this._off( this.element .find('.fileupload-buttonbar') @@ -665,7 +669,7 @@ this._off(this.element.find('.fileupload-buttonbar .toggle'), 'change.'); }, - _initEventHandlers: function () { + _initEventHandlers: function() { this._super(); this._on(this.options.filesContainer, { 'click .edit': this._editHandler, @@ -676,13 +680,13 @@ this._initButtonBarEventHandlers(); }, - _destroyEventHandlers: function () { + _destroyEventHandlers: function() { this._destroyButtonBarEventHandlers(); this._off(this.options.filesContainer, 'click'); this._super(); }, - _enableFileInputButton: function () { + _enableFileInputButton: function() { this.element .find('.fileinput-button input') .prop('disabled', false) @@ -690,7 +694,7 @@ .removeClass('disabled'); }, - _disableFileInputButton: function () { + _disableFileInputButton: function() { this.element .find('.fileinput-button input') .prop('disabled', true) @@ -698,7 +702,7 @@ .addClass('disabled'); }, - _initTemplates: function () { + _initTemplates: function() { var options = this.options; options.templatesContainer = this.document[0].createElement( options.filesContainer.prop('nodeName') @@ -713,7 +717,7 @@ } }, - _initFilesContainer: function () { + _initFilesContainer: function() { var options = this.options; if (options.filesContainer === undefined) { options.filesContainer = this.element.find('.files'); @@ -722,13 +726,13 @@ } }, - _initSpecialOptions: function () { + _initSpecialOptions: function() { this._super(); this._initFilesContainer(); this._initTemplates(); }, - _create: function () { + _create: function() { this._super(); this._resetFinishedDeferreds(); if (!$.support.fileInput) { @@ -736,7 +740,7 @@ } }, - enable: function () { + enable: function() { var wasDisabled = false; if (this.options.disabled) { wasDisabled = true; @@ -748,7 +752,7 @@ } }, - disable: function () { + disable: function() { if (!this.options.disabled) { this.element.find('input, button').prop('disabled', true); this._disableFileInputButton(); diff --git a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-validate.js b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-validate.js index a277efc46..37b380a00 100644 --- a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-validate.js +++ b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-validate.js @@ -11,7 +11,7 @@ /* global define, require */ -(function (factory) { +(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: @@ -23,7 +23,7 @@ // Browser globals: factory(window.jQuery); } -})(function ($) { +})(function($) { 'use strict'; // Append to the default processQueue: @@ -70,7 +70,7 @@ }, processActions: { - validate: function (data, options) { + validate: function(data, options) { if (options.disabled) { return data; } diff --git a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-video.js b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-video.js index 5dc78f36b..06d5f66cf 100644 --- a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-video.js +++ b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload-video.js @@ -11,7 +11,7 @@ /* global define, require */ -(function (factory) { +(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: @@ -27,7 +27,7 @@ // Browser globals: factory(window.jQuery, window.loadImage); } -})(function ($, loadImage) { +})(function($, loadImage) { 'use strict'; // Prepend to the default processQueue: @@ -63,7 +63,7 @@ // as video element if the browser supports playing it. // Accepts the options fileTypes (regular expression) // and maxFileSize (integer) to limit the files to load: - loadVideo: function (data, options) { + loadVideo: function(data, options) { if (options.disabled) { return data; } @@ -90,7 +90,7 @@ }, // Sets the video element as a property of the file object: - setVideo: function (data, options) { + setVideo: function(data, options) { if (data.video && !options.disabled) { data.files[data.index][options.name || 'preview'] = data.video; } diff --git a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload.js b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload.js index f75cf2b10..d4d32570c 100644 --- a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload.js +++ b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload.js @@ -12,7 +12,7 @@ /* global define, require */ /* eslint-disable new-cap */ -(function (factory) { +(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: @@ -24,7 +24,7 @@ // Browser globals: factory(window.jQuery); } -})(function ($) { +})(function($) { 'use strict'; // Detect file input support, based on @@ -64,7 +64,7 @@ */ function getDragHandler(type) { var isDragOver = type === 'dragover'; - return function (e) { + return function(e) { e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; var dataTransfer = e.dataTransfer; if ( @@ -185,11 +185,11 @@ // Translation function, gets the message key to be translated // and an object with context specific data as arguments: - i18n: function (message, context) { + i18n: function(message, context) { // eslint-disable-next-line no-param-reassign message = this.messages[message] || message.toString(); if (context) { - $.each(context, function (key, value) { + $.each(context, function(key, value) { // eslint-disable-next-line no-param-reassign message = message.replace('{' + key + '}', value); }); @@ -202,7 +202,7 @@ // value properties, a function returning such an array, a FormData // object (for XHR file uploads), or a simple object. // The form of the first fileInput is given as parameter to the function: - formData: function (form) { + formData: function(form) { return form.serializeArray(); }, @@ -217,12 +217,12 @@ // and allows you to override plugin options as well as define ajax settings. // // Listeners for this callback can also be bound the following way: - // .on('fileuploadadd', func); + // .bind('fileuploadadd', func); // // data.submit() returns a Promise object and allows to attach additional // handlers using jQuery's Deferred callbacks: // data.submit().done(func).fail(func).always(func); - add: function (e, data) { + add: function(e, data) { if (e.isDefaultPrevented()) { return false; } @@ -231,7 +231,7 @@ (data.autoUpload !== false && $(this).fileupload('option', 'autoUpload')) ) { - data.process().done(function () { + data.process().done(function() { data.submit(); }); } @@ -240,58 +240,58 @@ // Other callbacks: // Callback for the submit event of each file upload: - // submit: function (e, data) {}, // .on('fileuploadsubmit', func); + // submit: function (e, data) {}, // .bind('fileuploadsubmit', func); // Callback for the start of each file upload request: - // send: function (e, data) {}, // .on('fileuploadsend', func); + // send: function (e, data) {}, // .bind('fileuploadsend', func); // Callback for successful uploads: - // done: function (e, data) {}, // .on('fileuploaddone', func); + // done: function (e, data) {}, // .bind('fileuploaddone', func); // Callback for failed (abort or error) uploads: - // fail: function (e, data) {}, // .on('fileuploadfail', func); + // fail: function (e, data) {}, // .bind('fileuploadfail', func); // Callback for completed (success, abort or error) requests: - // always: function (e, data) {}, // .on('fileuploadalways', func); + // always: function (e, data) {}, // .bind('fileuploadalways', func); // Callback for upload progress events: - // progress: function (e, data) {}, // .on('fileuploadprogress', func); + // progress: function (e, data) {}, // .bind('fileuploadprogress', func); // Callback for global upload progress events: - // progressall: function (e, data) {}, // .on('fileuploadprogressall', func); + // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func); // Callback for uploads start, equivalent to the global ajaxStart event: - // start: function (e) {}, // .on('fileuploadstart', func); + // start: function (e) {}, // .bind('fileuploadstart', func); // Callback for uploads stop, equivalent to the global ajaxStop event: - // stop: function (e) {}, // .on('fileuploadstop', func); + // stop: function (e) {}, // .bind('fileuploadstop', func); // Callback for change events of the fileInput(s): - // change: function (e, data) {}, // .on('fileuploadchange', func); + // change: function (e, data) {}, // .bind('fileuploadchange', func); // Callback for paste events to the pasteZone(s): - // paste: function (e, data) {}, // .on('fileuploadpaste', func); + // paste: function (e, data) {}, // .bind('fileuploadpaste', func); // Callback for drop events of the dropZone(s): - // drop: function (e, data) {}, // .on('fileuploaddrop', func); + // drop: function (e, data) {}, // .bind('fileuploaddrop', func); // Callback for dragover events of the dropZone(s): - // dragover: function (e) {}, // .on('fileuploaddragover', func); + // dragover: function (e) {}, // .bind('fileuploaddragover', func); // Callback before the start of each chunk upload request (before form data initialization): - // chunkbeforesend: function (e, data) {}, // .on('fileuploadchunkbeforesend', func); + // chunkbeforesend: function (e, data) {}, // .bind('fileuploadchunkbeforesend', func); // Callback for the start of each chunk upload request: - // chunksend: function (e, data) {}, // .on('fileuploadchunksend', func); + // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func); // Callback for successful chunk uploads: - // chunkdone: function (e, data) {}, // .on('fileuploadchunkdone', func); + // chunkdone: function (e, data) {}, // .bind('fileuploadchunkdone', func); // Callback for failed (abort or error) chunk uploads: - // chunkfail: function (e, data) {}, // .on('fileuploadchunkfail', func); + // chunkfail: function (e, data) {}, // .bind('fileuploadchunkfail', func); // Callback for completed (success, abort or error) chunk upload requests: - // chunkalways: function (e, data) {}, // .on('fileuploadchunkalways', func); + // chunkalways: function (e, data) {}, // .bind('fileuploadchunkalways', func); // The plugin options are used as settings object for the ajax calls. // The following are jQuery ajax settings required for the file uploads: @@ -313,16 +313,16 @@ _blobSlice: $.support.blobSlice && - function () { + function() { var slice = this.slice || this.webkitSlice || this.mozSlice; return slice.apply(this, arguments); }, - _BitrateTimer: function () { + _BitrateTimer: function() { this.timestamp = Date.now ? Date.now() : new Date().getTime(); this.loaded = 0; this.bitrate = 0; - this.getBitrate = function (now, loaded, interval) { + this.getBitrate = function(now, loaded, interval) { var timeDiff = now - this.timestamp; if (!this.bitrate || !interval || timeDiff > interval) { this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8; @@ -333,7 +333,7 @@ }; }, - _isXHRUpload: function (options) { + _isXHRUpload: function(options) { return ( !options.forceIframeTransport && ((!options.multipart && $.support.xhrFileUpload) || @@ -341,7 +341,7 @@ ); }, - _getFormData: function (options) { + _getFormData: function(options) { var formData; if ($.type(options.formData) === 'function') { return options.formData(options.form); @@ -351,7 +351,7 @@ } if ($.type(options.formData) === 'object') { formData = []; - $.each(options.formData, function (name, value) { + $.each(options.formData, function(name, value) { formData.push({ name: name, value: value }); }); return formData; @@ -359,15 +359,15 @@ return []; }, - _getTotal: function (files) { + _getTotal: function(files) { var total = 0; - $.each(files, function (index, file) { + $.each(files, function(index, file) { total += file.size || 1; }); return total; }, - _initProgressObject: function (obj) { + _initProgressObject: function(obj) { var progress = { loaded: 0, total: 0, @@ -380,7 +380,7 @@ } }, - _initResponseObject: function (obj) { + _initResponseObject: function(obj) { var prop; if (obj._response) { for (prop in obj._response) { @@ -393,7 +393,7 @@ } }, - _onProgress: function (e, data) { + _onProgress: function(e, data) { if (e.lengthComputable) { var now = Date.now ? Date.now() : new Date().getTime(), loaded; @@ -442,13 +442,13 @@ } }, - _initProgressListener: function (options) { + _initProgressListener: function(options) { var that = this, xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); // Accesss to the native XHR object is required to add event listeners // for the upload progress event: if (xhr.upload) { - $(xhr.upload).on('progress', function (e) { + $(xhr.upload).bind('progress', function(e) { var oe = e.originalEvent; // Make sure the progress event properties get copied over: e.lengthComputable = oe.lengthComputable; @@ -456,30 +456,30 @@ e.total = oe.total; that._onProgress(e, options); }); - options.xhr = function () { + options.xhr = function() { return xhr; }; } }, - _deinitProgressListener: function (options) { + _deinitProgressListener: function(options) { var xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); if (xhr.upload) { - $(xhr.upload).off('progress'); + $(xhr.upload).unbind('progress'); } }, - _isInstanceOf: function (type, obj) { + _isInstanceOf: function(type, obj) { // Cross-frame instanceof check return Object.prototype.toString.call(obj) === '[object ' + type + ']'; }, - _getUniqueFilename: function (name, map) { + _getUniqueFilename: function(name, map) { // eslint-disable-next-line no-param-reassign name = String(name); if (map[name]) { // eslint-disable-next-line no-param-reassign - name = name.replace(/(?: \(([\d]+)\))?(\.[^.]+)?$/, function ( + name = name.replace(/(?: \(([\d]+)\))?(\.[^.]+)?$/, function( _, p1, p2 @@ -494,7 +494,7 @@ return name; }, - _initXHRData: function (options) { + _initXHRData: function(options) { var that = this, formData, file = options.files[0], @@ -530,7 +530,7 @@ value: options.blob }); } else { - $.each(options.files, function (index, file) { + $.each(options.files, function(index, file) { formData.push({ name: ($.type(options.paramName) === 'array' && @@ -545,7 +545,7 @@ formData = options.formData; } else { formData = new FormData(); - $.each(this._getFormData(options), function (index, field) { + $.each(this._getFormData(options), function(index, field) { formData.append(field.name, field.value); }); } @@ -556,7 +556,7 @@ file.uploadName || file.name ); } else { - $.each(options.files, function (index, file) { + $.each(options.files, function(index, file) { // This check allows the tests to run with // dummy objects: if ( @@ -587,8 +587,10 @@ options.blob = null; }, - _initIframeSettings: function (options) { - var targetHost = $('<a></a>').prop('href', options.url).prop('host'); + _initIframeSettings: function(options) { + var targetHost = $('<a></a>') + .prop('href', options.url) + .prop('host'); // Setting the dataType to iframe enables the iframe transport: options.dataType = 'iframe ' + (options.dataType || ''); // The iframe transport accepts a serialized array as form data: @@ -602,7 +604,7 @@ } }, - _initDataSettings: function (options) { + _initDataSettings: function(options) { if (this._isXHRUpload(options)) { if (!this._chunkedUpload(options, true)) { if (!options.data) { @@ -620,12 +622,12 @@ } }, - _getParamName: function (options) { + _getParamName: function(options) { var fileInput = $(options.fileInput), paramName = options.paramName; if (!paramName) { paramName = []; - fileInput.each(function () { + fileInput.each(function() { var input = $(this), name = input.prop('name') || 'files[]', i = (input.prop('files') || [1]).length; @@ -643,7 +645,7 @@ return paramName; }, - _initFormSettings: function (options) { + _initFormSettings: function(options) { // Retrieve missing options from the input field and the // associated form, if available: if (!options.form || !options.form.length) { @@ -677,7 +679,7 @@ } }, - _getAJAXSettings: function (data) { + _getAJAXSettings: function(data) { var options = $.extend({}, this.options, data); this._initFormSettings(options); this._initDataSettings(options); @@ -686,7 +688,7 @@ // jQuery 1.6 doesn't provide .state(), // while jQuery 1.8+ removed .isRejected() and .isResolved(): - _getDeferredState: function (deferred) { + _getDeferredState: function(deferred) { if (deferred.state) { return deferred.state(); } @@ -701,7 +703,7 @@ // Maps jqXHR callbacks to the equivalent // methods of the given Promise object: - _enhancePromise: function (promise) { + _enhancePromise: function(promise) { promise.success = promise.done; promise.error = promise.fail; promise.complete = promise.always; @@ -710,7 +712,7 @@ // Creates and returns a Promise object enhanced with // the jqXHR methods abort, success, error and complete: - _getXHRPromise: function (resolveOrReject, context, args) { + _getXHRPromise: function(resolveOrReject, context, args) { var dfd = $.Deferred(), promise = dfd.promise(); // eslint-disable-next-line no-param-reassign @@ -725,19 +727,23 @@ }, // Adds convenience methods to the data callback argument: - _addConvenienceMethods: function (e, data) { + _addConvenienceMethods: function(e, data) { var that = this, - getPromise = function (args) { - return $.Deferred().resolveWith(that, args).promise(); + getPromise = function(args) { + return $.Deferred() + .resolveWith(that, args) + .promise(); }; - data.process = function (resolveFunc, rejectFunc) { + data.process = function(resolveFunc, rejectFunc) { if (resolveFunc || rejectFunc) { data._processQueue = this._processQueue = ( this._processQueue || getPromise([this]) ) - .then(function () { + .then(function() { if (data.errorThrown) { - return $.Deferred().rejectWith(that, [data]).promise(); + return $.Deferred() + .rejectWith(that, [data]) + .promise(); } return getPromise(arguments); }) @@ -745,7 +751,7 @@ } return this._processQueue || getPromise([this]); }; - data.submit = function () { + data.submit = function() { if (this.state() !== 'pending') { data.jqXHR = this.jqXHR = that._trigger( @@ -756,7 +762,7 @@ } return this.jqXHR || that._getXHRPromise(); }; - data.abort = function () { + data.abort = function() { if (this.jqXHR) { return this.jqXHR.abort(); } @@ -764,7 +770,7 @@ that._trigger('fail', null, this); return that._getXHRPromise(false); }; - data.state = function () { + data.state = function() { if (this.jqXHR) { return that._getDeferredState(this.jqXHR); } @@ -772,24 +778,24 @@ return that._getDeferredState(this._processQueue); } }; - data.processing = function () { + data.processing = function() { return ( !this.jqXHR && this._processQueue && that._getDeferredState(this._processQueue) === 'pending' ); }; - data.progress = function () { + data.progress = function() { return this._progress; }; - data.response = function () { + data.response = function() { return this._response; }; }, // Parses the Range header from the server response // and returns the uploaded bytes: - _getUploadedBytes: function (jqXHR) { + _getUploadedBytes: function(jqXHR) { var range = jqXHR.getResponseHeader('Range'), parts = range && range.split('-'), upperBytesPos = parts && parts.length > 1 && parseInt(parts[1], 10); @@ -801,7 +807,7 @@ // If the second parameter is true, only tests if the file // should be uploaded in chunks, but does not invoke any // upload requests: - _chunkedUpload: function (options, testOnly) { + _chunkedUpload: function(options, testOnly) { options.uploadedBytes = options.uploadedBytes || 0; var that = this, file = options.files[0], @@ -835,7 +841,7 @@ ]); } // The chunk upload method: - upload = function () { + upload = function() { // Clone the options object for each chunk upload: var o = $.extend({}, options), currentLoaded = o._progress.loaded; @@ -861,7 +867,7 @@ (that._trigger('chunksend', null, o) !== false && $.ajax(o)) || that._getXHRPromise(false, o.context) ) - .done(function (result, textStatus, jqXHR) { + .done(function(result, textStatus, jqXHR) { ub = that._getUploadedBytes(jqXHR) || ub + o.chunkSize; // Create a progress event if no final progress event // with loaded equaling total has been triggered @@ -890,7 +896,7 @@ dfd.resolveWith(o.context, [result, textStatus, jqXHR]); } }) - .fail(function (jqXHR, textStatus, errorThrown) { + .fail(function(jqXHR, textStatus, errorThrown) { o.jqXHR = jqXHR; o.textStatus = textStatus; o.errorThrown = errorThrown; @@ -898,19 +904,19 @@ that._trigger('chunkalways', null, o); dfd.rejectWith(o.context, [jqXHR, textStatus, errorThrown]); }) - .always(function () { + .always(function() { that._deinitProgressListener(o); }); }; this._enhancePromise(promise); - promise.abort = function () { + promise.abort = function() { return jqXHR.abort(); }; upload(); return promise; }, - _beforeSend: function (e, data) { + _beforeSend: function(e, data) { if (this._active === 0) { // the start callback is triggered when an upload starts // and no other uploads are currently running, @@ -936,7 +942,7 @@ this._progress.total += data.total; }, - _onDone: function (result, textStatus, jqXHR, options) { + _onDone: function(result, textStatus, jqXHR, options) { var total = options._progress.total, response = options._response; if (options._progress.loaded < total) { @@ -957,7 +963,7 @@ this._trigger('done', null, options); }, - _onFail: function (jqXHR, textStatus, errorThrown, options) { + _onFail: function(jqXHR, textStatus, errorThrown, options) { var response = options._response; if (options.recalculateProgress) { // Remove the failed (error or abort) file upload from @@ -971,13 +977,13 @@ this._trigger('fail', null, options); }, - _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) { + _onAlways: function(jqXHRorResult, textStatus, jqXHRorError, options) { // jqXHRorResult, textStatus and jqXHRorError are added to the // options object via done and fail callbacks this._trigger('always', null, options); }, - _onSend: function (e, data) { + _onSend: function(e, data) { if (!data.submit) { this._addConvenienceMethods(e, data); } @@ -987,7 +993,7 @@ slot, pipe, options = that._getAJAXSettings(data), - send = function () { + send = function() { that._sending += 1; // Set timer for bitrate progress calculation: options._bitrateTimer = new that._BitrateTimer(); @@ -1004,13 +1010,13 @@ that._chunkedUpload(options) || $.ajax(options) ) - .done(function (result, textStatus, jqXHR) { + .done(function(result, textStatus, jqXHR) { that._onDone(result, textStatus, jqXHR, options); }) - .fail(function (jqXHR, textStatus, errorThrown) { + .fail(function(jqXHR, textStatus, errorThrown) { that._onFail(jqXHR, textStatus, errorThrown, options); }) - .always(function (jqXHRorResult, textStatus, jqXHRorError) { + .always(function(jqXHRorResult, textStatus, jqXHRorError) { that._deinitProgressListener(options); that._onAlways( jqXHRorResult, @@ -1060,7 +1066,7 @@ // Return the piped Promise object, enhanced with an abort method, // which is delegated to the jqXHR object of the current upload, // and jqXHR callbacks mapped to the equivalent Promise methods: - pipe.abort = function () { + pipe.abort = function() { aborted = [undefined, 'abort', 'abort']; if (!jqXHR) { if (slot) { @@ -1075,7 +1081,7 @@ return send(); }, - _onAdd: function (e, data) { + _onAdd: function(e, data) { var that = this, result = true, options = $.extend({}, this.options, data), @@ -1138,7 +1144,7 @@ paramNameSet = paramName; } data.originalFiles = files; - $.each(fileSet || files, function (index, element) { + $.each(fileSet || files, function(index, element) { var newData = $.extend({}, data); newData.files = fileSet ? element : [element]; newData.paramName = paramNameSet[index]; @@ -1155,13 +1161,15 @@ return result; }, - _replaceFileInput: function (data) { + _replaceFileInput: function(data) { var input = data.fileInput, inputClone = input.clone(true), restoreFocus = input.is(document.activeElement); // Add a reference for the new cloned file input to the data argument: data.fileInputClone = inputClone; - $('<form></form>').append(inputClone)[0].reset(); + $('<form></form>') + .append(inputClone)[0] + .reset(); // Detaching allows to insert the fileInput on another form // without loosing the file input value: input.after(inputClone).detach(); @@ -1171,11 +1179,11 @@ inputClone.focus(); } // Avoid memory leaks with the detached file input: - $.cleanData(input.off('remove')); + $.cleanData(input.unbind('remove')); // Replace the original file input element in the fileInput // elements set with the clone, which has been copied including // event handlers: - this.options.fileInput = this.options.fileInput.map(function (i, el) { + this.options.fileInput = this.options.fileInput.map(function(i, el) { if (el === input[0]) { return inputClone[0]; } @@ -1188,12 +1196,12 @@ } }, - _handleFileTreeEntry: function (entry, path) { + _handleFileTreeEntry: function(entry, path) { var that = this, dfd = $.Deferred(), entries = [], dirReader, - errorHandler = function (e) { + errorHandler = function(e) { if (e && !e.entry) { e.entry = entry; } @@ -1203,16 +1211,16 @@ // to be returned together in one set: dfd.resolve([e]); }, - successHandler = function (entries) { + successHandler = function(entries) { that ._handleFileTreeEntries(entries, path + entry.name + '/') - .done(function (files) { + .done(function(files) { dfd.resolve(files); }) .fail(errorHandler); }, - readEntries = function () { - dirReader.readEntries(function (results) { + readEntries = function() { + dirReader.readEntries(function(results) { if (!results.length) { successHandler(entries); } else { @@ -1229,7 +1237,7 @@ entry._file.relativePath = path; dfd.resolve(entry._file); } else { - entry.file(function (file) { + entry.file(function(file) { file.relativePath = path; dfd.resolve(file); }, errorHandler); @@ -1245,21 +1253,21 @@ return dfd.promise(); }, - _handleFileTreeEntries: function (entries, path) { + _handleFileTreeEntries: function(entries, path) { var that = this; return $.when .apply( $, - $.map(entries, function (entry) { + $.map(entries, function(entry) { return that._handleFileTreeEntry(entry, path); }) ) - .then(function () { + .then(function() { return Array.prototype.concat.apply([], arguments); }); }, - _getDroppedFiles: function (dataTransfer) { + _getDroppedFiles: function(dataTransfer) { // eslint-disable-next-line no-param-reassign dataTransfer = dataTransfer || {}; var items = dataTransfer.items; @@ -1269,7 +1277,7 @@ (items[0].webkitGetAsEntry || items[0].getAsEntry) ) { return this._handleFileTreeEntries( - $.map(items, function (item) { + $.map(items, function(item) { var entry; if (item.webkitGetAsEntry) { entry = item.webkitGetAsEntry(); @@ -1283,10 +1291,12 @@ }) ); } - return $.Deferred().resolve($.makeArray(dataTransfer.files)).promise(); + return $.Deferred() + .resolve($.makeArray(dataTransfer.files)) + .promise(); }, - _getSingleFileInputFiles: function (fileInput) { + _getSingleFileInputFiles: function(fileInput) { // eslint-disable-next-line no-param-reassign fileInput = $(fileInput); var entries = @@ -1300,7 +1310,9 @@ if (!files.length) { value = fileInput.prop('value'); if (!value) { - return $.Deferred().resolve([]).promise(); + return $.Deferred() + .resolve([]) + .promise(); } // If the files property is not available, the browser does not // support the File API and we add a pseudo File object with @@ -1308,32 +1320,34 @@ files = [{ name: value.replace(/^.*\\/, '') }]; } else if (files[0].name === undefined && files[0].fileName) { // File normalization for Safari 4 and Firefox 3: - $.each(files, function (index, file) { + $.each(files, function(index, file) { file.name = file.fileName; file.size = file.fileSize; }); } - return $.Deferred().resolve(files).promise(); + return $.Deferred() + .resolve(files) + .promise(); }, - _getFileInputFiles: function (fileInput) { + _getFileInputFiles: function(fileInput) { if (!(fileInput instanceof $) || fileInput.length === 1) { return this._getSingleFileInputFiles(fileInput); } return $.when .apply($, $.map(fileInput, this._getSingleFileInputFiles)) - .then(function () { + .then(function() { return Array.prototype.concat.apply([], arguments); }); }, - _onChange: function (e) { + _onChange: function(e) { var that = this, data = { fileInput: $(e.target), form: $(e.target.form) }; - this._getFileInputFiles(data.fileInput).always(function (files) { + this._getFileInputFiles(data.fileInput).always(function(files) { data.files = files; if (that.options.replaceFileInput) { that._replaceFileInput(data); @@ -1350,14 +1364,14 @@ }); }, - _onPaste: function (e) { + _onPaste: function(e) { var items = e.originalEvent && e.originalEvent.clipboardData && e.originalEvent.clipboardData.items, data = { files: [] }; if (items && items.length) { - $.each(items, function (index, item) { + $.each(items, function(index, item) { var file = item.getAsFile && item.getAsFile(); if (file) { data.files.push(file); @@ -1375,14 +1389,14 @@ } }, - _onDrop: function (e) { + _onDrop: function(e) { e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; var that = this, dataTransfer = e.dataTransfer, data = {}; if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { e.preventDefault(); - this._getDroppedFiles(dataTransfer).always(function (files) { + this._getDroppedFiles(dataTransfer).always(function(files) { data.files = files; if ( that._trigger( @@ -1403,7 +1417,7 @@ _onDragLeave: getDragHandler('dragleave'), - _initEventHandlers: function () { + _initEventHandlers: function() { if (this._isXHRUpload(this.options)) { this._on(this.options.dropZone, { dragover: this._onDragOver, @@ -1424,17 +1438,17 @@ } }, - _destroyEventHandlers: function () { + _destroyEventHandlers: function() { this._off(this.options.dropZone, 'dragenter dragleave dragover drop'); this._off(this.options.pasteZone, 'paste'); this._off(this.options.fileInput, 'change'); }, - _destroy: function () { + _destroy: function() { this._destroyEventHandlers(); }, - _setOption: function (key, value) { + _setOption: function(key, value) { var reinit = $.inArray(key, this._specialOptions) !== -1; if (reinit) { this._destroyEventHandlers(); @@ -1446,7 +1460,7 @@ } }, - _initSpecialOptions: function () { + _initSpecialOptions: function() { var options = this.options; if (options.fileInput === undefined) { options.fileInput = this.element.is('input[type="file"]') @@ -1463,14 +1477,14 @@ } }, - _getRegExp: function (str) { + _getRegExp: function(str) { var parts = str.split('/'), modifiers = parts.pop(); parts.shift(); return new RegExp(parts.join('/'), modifiers); }, - _isRegExpOption: function (key, value) { + _isRegExpOption: function(key, value) { return ( key !== 'url' && $.type(value) === 'string' && @@ -1478,17 +1492,17 @@ ); }, - _initDataAttributes: function () { + _initDataAttributes: function() { var that = this, options = this.options, data = this.element.data(); // Initialize options set via HTML5 data-attributes: - $.each(this.element[0].attributes, function (index, attr) { + $.each(this.element[0].attributes, function(index, attr) { var key = attr.name.toLowerCase(), value; if (/^data-/.test(key)) { // Convert hyphen-ated key to camelCase: - key = key.slice(5).replace(/-[a-z]/g, function (str) { + key = key.slice(5).replace(/-[a-z]/g, function(str) { return str.charAt(1).toUpperCase(); }); value = data[key]; @@ -1500,7 +1514,7 @@ }); }, - _create: function () { + _create: function() { this._initDataAttributes(); this._initSpecialOptions(); this._slots = []; @@ -1512,7 +1526,7 @@ // This method is exposed to the widget API and allows to query // the number of active uploads: - active: function () { + active: function() { return this._active; }, @@ -1520,7 +1534,7 @@ // the widget upload progress. // It returns an object with loaded, total and bitrate properties // for the running uploads: - progress: function () { + progress: function() { return this._progress; }, @@ -1528,13 +1542,13 @@ // using the fileupload API. The data parameter accepts an object which // must have a files property and can contain additional options: // .fileupload('add', {files: filesList}); - add: function (data) { + add: function(data) { var that = this; if (!data || this.options.disabled) { return; } if (data.fileInput && !data.files) { - this._getFileInputFiles(data.fileInput).always(function (files) { + this._getFileInputFiles(data.fileInput).always(function(files) { data.files = files; that._onAdd(null, data); }); @@ -1549,7 +1563,7 @@ // must have a files or fileInput property and can contain additional options: // .fileupload('send', {files: filesList}); // The method returns a Promise object for the file upload call. - send: function (data) { + send: function(data) { if (data && !this.options.disabled) { if (data.fileInput && !data.files) { var that = this, @@ -1557,7 +1571,7 @@ promise = dfd.promise(), jqXHR, aborted; - promise.abort = function () { + promise.abort = function() { aborted = true; if (jqXHR) { return jqXHR.abort(); @@ -1565,7 +1579,7 @@ dfd.reject(null, 'abort', 'abort'); return promise; }; - this._getFileInputFiles(data.fileInput).always(function (files) { + this._getFileInputFiles(data.fileInput).always(function(files) { if (aborted) { return; } @@ -1576,10 +1590,10 @@ data.files = files; jqXHR = that._onSend(null, data); jqXHR.then( - function (result, textStatus, jqXHR) { + function(result, textStatus, jqXHR) { dfd.resolve(result, textStatus, jqXHR); }, - function (jqXHR, textStatus, errorThrown) { + function(jqXHR, textStatus, errorThrown) { dfd.reject(jqXHR, textStatus, errorThrown); } ); diff --git a/vendor/blueimp/jquery-file-upload/js/jquery.iframe-transport.js b/vendor/blueimp/jquery-file-upload/js/jquery.iframe-transport.js index 3e3b9a93b..b56690bea 100644 --- a/vendor/blueimp/jquery-file-upload/js/jquery.iframe-transport.js +++ b/vendor/blueimp/jquery-file-upload/js/jquery.iframe-transport.js @@ -11,7 +11,7 @@ /* global define, require */ -(function (factory) { +(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: @@ -23,7 +23,7 @@ // Browser globals: factory(window.jQuery); } -})(function ($) { +})(function($) { 'use strict'; // Helper variable to create unique names for the transport iframes: @@ -46,7 +46,7 @@ // [{name: 'a', value: 1}, {name: 'b', value: 2}] // options.initialIframeSrc: the URL of the initial iframe src, // by default set to "javascript:false;" - $.ajaxTransport('iframe', function (options) { + $.ajaxTransport('iframe', function(options) { if (options.async) { // javascript:false as initial iframe src // prevents warning popups on HTTPS in IE6: @@ -56,7 +56,7 @@ iframe, addParamChar; return { - send: function (_, completeCallback) { + send: function(_, completeCallback) { form = $('<form style="display:none;"></form>'); form.attr('accept-charset', options.formAcceptCharset); addParamChar = /\?/.test(options.url) ? '&' : '?'; @@ -81,12 +81,12 @@ '" name="iframe-transport-' + counter + '"></iframe>' - ).on('load', function () { + ).bind('load', function() { var fileInputClones, paramNames = $.isArray(options.paramName) ? options.paramName : [options.paramName]; - iframe.off('load').on('load', function () { + iframe.unbind('load').bind('load', function() { var response; // Wrap in a try/catch block to catch exceptions thrown // when trying to access cross-domain iframe contents: @@ -109,7 +109,7 @@ $('<iframe src="' + initialIframeSrc + '"></iframe>').appendTo( form ); - window.setTimeout(function () { + window.setTimeout(function() { // Removing the form in a setTimeout call // allows Chrome's developer tools to display // the response result @@ -121,7 +121,7 @@ .prop('action', options.url) .prop('method', options.type); if (options.formData) { - $.each(options.formData, function (index, field) { + $.each(options.formData, function(index, field) { $('<input type="hidden"/>') .prop('name', field.name) .val(field.value) @@ -135,11 +135,11 @@ ) { fileInputClones = options.fileInput.clone(); // Insert a clone for each file input field: - options.fileInput.after(function (index) { + options.fileInput.after(function(index) { return fileInputClones[index]; }); if (options.paramName) { - options.fileInput.each(function (index) { + options.fileInput.each(function(index) { $(this).prop('name', paramNames[index] || options.paramName); }); } @@ -153,33 +153,27 @@ // Remove the HTML5 form attribute from the input(s): options.fileInput.removeAttr('form'); } - window.setTimeout(function () { - // Submitting the form in a setTimeout call fixes an issue with - // Safari 13 not triggering the iframe load event after resetting - // the load event handler, see also: - // https://github.com/blueimp/jQuery-File-Upload/issues/3633 - form.submit(); - // Insert the file input fields at their original location - // by replacing the clones with the originals: - if (fileInputClones && fileInputClones.length) { - options.fileInput.each(function (index, input) { - var clone = $(fileInputClones[index]); - // Restore the original name and form properties: - $(input) - .prop('name', clone.prop('name')) - .attr('form', clone.attr('form')); - clone.replaceWith(input); - }); - } - }, 0); + form.submit(); + // Insert the file input fields at their original location + // by replacing the clones with the originals: + if (fileInputClones && fileInputClones.length) { + options.fileInput.each(function(index, input) { + var clone = $(fileInputClones[index]); + // Restore the original name and form properties: + $(input) + .prop('name', clone.prop('name')) + .attr('form', clone.attr('form')); + clone.replaceWith(input); + }); + } }); form.append(iframe).appendTo(document.body); }, - abort: function () { + abort: function() { if (iframe) { // javascript:false as iframe src aborts the request // and prevents warning popups on HTTPS in IE6. - iframe.off('load').prop('src', initialIframeSrc); + iframe.unbind('load').prop('src', initialIframeSrc); } if (form) { form.remove(); @@ -201,16 +195,16 @@ // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation $.ajaxSetup({ converters: { - 'iframe text': function (iframe) { + 'iframe text': function(iframe) { return iframe && $(iframe[0].body).text(); }, - 'iframe json': function (iframe) { + 'iframe json': function(iframe) { return iframe && jsonAPI[jsonParse]($(iframe[0].body).text()); }, - 'iframe html': function (iframe) { + 'iframe html': function(iframe) { return iframe && $(iframe[0].body).html(); }, - 'iframe xml': function (iframe) { + 'iframe xml': function(iframe) { var xmlDoc = iframe && iframe[0]; return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc @@ -219,7 +213,7 @@ $(xmlDoc.body).html() ); }, - 'iframe script': function (iframe) { + 'iframe script': function(iframe) { return iframe && $.globalEval($(iframe[0].body).text()); } } diff --git a/vendor/blueimp/jquery-file-upload/js/vendor/jquery.ui.widget.js b/vendor/blueimp/jquery-file-upload/js/vendor/jquery.ui.widget.js index 69096aaa3..914b8ffb8 100644 --- a/vendor/blueimp/jquery-file-upload/js/vendor/jquery.ui.widget.js +++ b/vendor/blueimp/jquery-file-upload/js/vendor/jquery.ui.widget.js @@ -1,29 +1,28 @@ -/*! jQuery UI - v1.12.1+0b7246b6eeadfa9e2696e22f3230f6452f8129dc - 2020-02-20 +/*! jQuery UI - v1.12.1+CommonJS - 2018-02-10 * http://jqueryui.com * Includes: widget.js * Copyright jQuery Foundation and other contributors; Licensed MIT */ -/* global define, require */ -/* eslint-disable no-param-reassign, new-cap, jsdoc/require-jsdoc */ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { + define([ "jquery" ], factory ); + } else if ( typeof exports === "object" ) { + // Node/CommonJS - factory(require('jquery')); + factory( require( "jquery" ) ); } else { + // Browser globals - factory(window.jQuery); + factory( jQuery ); } -})(function ($) { - ('use strict'); +}(function( $ ) { $.ui = $.ui || {}; - $.ui.version = '1.12.1'; + var version = $.ui.version = "1.12.1"; + /*! * jQuery UI Widget 1.12.1 @@ -40,111 +39,105 @@ //>>docs: http://api.jqueryui.com/jQuery.widget/ //>>demos: http://jqueryui.com/widget/ - // Support: jQuery 1.9.x or older - // $.expr[ ":" ] is deprecated. - if (!$.expr.pseudos) { - $.expr.pseudos = $.expr[':']; - } - // Support: jQuery 1.11.x or older - // $.unique has been renamed to $.uniqueSort - if (!$.uniqueSort) { - $.uniqueSort = $.unique; - } var widgetUuid = 0; - var widgetHasOwnProperty = Array.prototype.hasOwnProperty; var widgetSlice = Array.prototype.slice; - $.cleanData = (function (orig) { - return function (elems) { + $.cleanData = ( function( orig ) { + return function( elems ) { var events, elem, i; - // eslint-disable-next-line eqeqeq - for (i = 0; (elem = elems[i]) != null; i++) { - // Only trigger remove when necessary to save time - events = $._data(elem, 'events'); - if (events && events.remove) { - $(elem).triggerHandler('remove'); - } + for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { + try { + + // Only trigger remove when necessary to save time + events = $._data( elem, "events" ); + if ( events && events.remove ) { + $( elem ).triggerHandler( "remove" ); + } + + // Http://bugs.jquery.com/ticket/8235 + } catch ( e ) {} } - orig(elems); + orig( elems ); }; - })($.cleanData); + } )( $.cleanData ); - $.widget = function (name, base, prototype) { + $.widget = function( name, base, prototype ) { var existingConstructor, constructor, basePrototype; // ProxiedPrototype allows the provided prototype to remain unmodified // so that it can be used as a mixin for multiple widgets (#8876) var proxiedPrototype = {}; - var namespace = name.split('.')[0]; - name = name.split('.')[1]; - var fullName = namespace + '-' + name; + var namespace = name.split( "." )[ 0 ]; + name = name.split( "." )[ 1 ]; + var fullName = namespace + "-" + name; - if (!prototype) { + if ( !prototype ) { prototype = base; base = $.Widget; } - if ($.isArray(prototype)) { - prototype = $.extend.apply(null, [{}].concat(prototype)); + if ( $.isArray( prototype ) ) { + prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); } // Create selector for plugin - $.expr.pseudos[fullName.toLowerCase()] = function (elem) { - return !!$.data(elem, fullName); + $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { + return !!$.data( elem, fullName ); }; - $[namespace] = $[namespace] || {}; - existingConstructor = $[namespace][name]; - constructor = $[namespace][name] = function (options, element) { + $[ namespace ] = $[ namespace ] || {}; + existingConstructor = $[ namespace ][ name ]; + constructor = $[ namespace ][ name ] = function( options, element ) { + // Allow instantiation without "new" keyword - if (!this._createWidget) { - return new constructor(options, element); + if ( !this._createWidget ) { + return new constructor( options, element ); } // Allow instantiation without initializing for simple inheritance // must use "new" keyword (the code above always passes args) - if (arguments.length) { - this._createWidget(options, element); + if ( arguments.length ) { + this._createWidget( options, element ); } }; // Extend with the existing constructor to carry over any static properties - $.extend(constructor, existingConstructor, { + $.extend( constructor, existingConstructor, { version: prototype.version, // Copy the object used to create the prototype in case we need to // redefine the widget later - _proto: $.extend({}, prototype), + _proto: $.extend( {}, prototype ), // Track widgets that inherit from this widget in case this widget is // redefined after a widget inherits from it _childConstructors: [] - }); + } ); basePrototype = new base(); // We need to make the options hash a property directly on the new instance // otherwise we'll modify the options hash on the prototype that we're // inheriting from - basePrototype.options = $.widget.extend({}, basePrototype.options); - $.each(prototype, function (prop, value) { - if (!$.isFunction(value)) { - proxiedPrototype[prop] = value; + basePrototype.options = $.widget.extend( {}, basePrototype.options ); + $.each( prototype, function( prop, value ) { + if ( !$.isFunction( value ) ) { + proxiedPrototype[ prop ] = value; return; } - proxiedPrototype[prop] = (function () { + proxiedPrototype[ prop ] = ( function() { function _super() { - return base.prototype[prop].apply(this, arguments); + return base.prototype[ prop ].apply( this, arguments ); } - function _superApply(args) { - return base.prototype[prop].apply(this, args); + function _superApply( args ) { + return base.prototype[ prop ].apply( this, args ); } - return function () { + return function() { var __super = this._super; var __superApply = this._superApply; var returnValue; @@ -152,87 +145,77 @@ this._super = _super; this._superApply = _superApply; - returnValue = value.apply(this, arguments); + returnValue = value.apply( this, arguments ); this._super = __super; this._superApply = __superApply; return returnValue; }; - })(); - }); - constructor.prototype = $.widget.extend( - basePrototype, - { - // TODO: remove support for widgetEventPrefix - // always use the name + a colon as the prefix, e.g., draggable:start - // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: existingConstructor - ? basePrototype.widgetEventPrefix || name - : name - }, - proxiedPrototype, - { - constructor: constructor, - namespace: namespace, - widgetName: name, - widgetFullName: fullName - } - ); + } )(); + } ); + constructor.prototype = $.widget.extend( basePrototype, { + + // TODO: remove support for widgetEventPrefix + // always use the name + a colon as the prefix, e.g., draggable:start + // don't prefix for widgets that aren't DOM-based + widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name + }, proxiedPrototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + widgetFullName: fullName + } ); // If this widget is being redefined then we need to find all widgets that // are inheriting from it and redefine all of them so that they inherit from // the new version of this widget. We're essentially trying to replace one // level in the prototype chain. - if (existingConstructor) { - $.each(existingConstructor._childConstructors, function (i, child) { + if ( existingConstructor ) { + $.each( existingConstructor._childConstructors, function( i, child ) { var childPrototype = child.prototype; // Redefine the child widget using the same prototype that was // originally used, but inherit from the new version of the base - $.widget( - childPrototype.namespace + '.' + childPrototype.widgetName, - constructor, - child._proto - ); - }); + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, + child._proto ); + } ); // Remove the list of existing child constructors from the old constructor // so the old child constructors can be garbage collected delete existingConstructor._childConstructors; } else { - base._childConstructors.push(constructor); + base._childConstructors.push( constructor ); } - $.widget.bridge(name, constructor); + $.widget.bridge( name, constructor ); return constructor; }; - $.widget.extend = function (target) { - var input = widgetSlice.call(arguments, 1); + $.widget.extend = function( target ) { + var input = widgetSlice.call( arguments, 1 ); var inputIndex = 0; var inputLength = input.length; var key; var value; - for (; inputIndex < inputLength; inputIndex++) { - for (key in input[inputIndex]) { - value = input[inputIndex][key]; - if ( - widgetHasOwnProperty.call(input[inputIndex], key) && - value !== undefined - ) { + for ( ; inputIndex < inputLength; inputIndex++ ) { + for ( key in input[ inputIndex ] ) { + value = input[ inputIndex ][ key ]; + if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { + // Clone objects - if ($.isPlainObject(value)) { - target[key] = $.isPlainObject(target[key]) - ? $.widget.extend({}, target[key], value) - : // Don't extend strings, arrays, etc. with objects - $.widget.extend({}, value); + if ( $.isPlainObject( value ) ) { + target[ key ] = $.isPlainObject( target[ key ] ) ? + $.widget.extend( {}, target[ key ], value ) : + + // Don't extend strings, arrays, etc. with objects + $.widget.extend( {}, value ); // Copy everything else by reference } else { - target[key] = value; + target[ key ] = value; } } } @@ -240,90 +223,81 @@ return target; }; - $.widget.bridge = function (name, object) { + $.widget.bridge = function( name, object ) { var fullName = object.prototype.widgetFullName || name; - $.fn[name] = function (options) { - var isMethodCall = typeof options === 'string'; - var args = widgetSlice.call(arguments, 1); + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string"; + var args = widgetSlice.call( arguments, 1 ); var returnValue = this; - if (isMethodCall) { + if ( isMethodCall ) { + // If this is an empty collection, we need to have the instance method // return undefined instead of the jQuery instance - if (!this.length && options === 'instance') { + if ( !this.length && options === "instance" ) { returnValue = undefined; } else { - this.each(function () { + this.each( function() { var methodValue; - var instance = $.data(this, fullName); + var instance = $.data( this, fullName ); - if (options === 'instance') { + if ( options === "instance" ) { returnValue = instance; return false; } - if (!instance) { - return $.error( - 'cannot call methods on ' + - name + - ' prior to initialization; ' + - "attempted to call method '" + - options + - "'" - ); + if ( !instance ) { + return $.error( "cannot call methods on " + name + + " prior to initialization; " + + "attempted to call method '" + options + "'" ); } - if (!$.isFunction(instance[options]) || options.charAt(0) === '_') { - return $.error( - "no such method '" + - options + - "' for " + - name + - ' widget instance' - ); + if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + + " widget instance" ); } - methodValue = instance[options].apply(instance, args); + methodValue = instance[ options ].apply( instance, args ); - if (methodValue !== instance && methodValue !== undefined) { - returnValue = - methodValue && methodValue.jquery - ? returnValue.pushStack(methodValue.get()) - : methodValue; + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; return false; } - }); + } ); } } else { + // Allow multiple hashes to be passed on init - if (args.length) { - options = $.widget.extend.apply(null, [options].concat(args)); + if ( args.length ) { + options = $.widget.extend.apply( null, [ options ].concat( args ) ); } - this.each(function () { - var instance = $.data(this, fullName); - if (instance) { - instance.option(options || {}); - if (instance._init) { + this.each( function() { + var instance = $.data( this, fullName ); + if ( instance ) { + instance.option( options || {} ); + if ( instance._init ) { instance._init(); } } else { - $.data(this, fullName, new object(options, this)); + $.data( this, fullName, new object( options, this ) ); } - }); + } ); } return returnValue; }; }; - $.Widget = function (/* options, element */) {}; + $.Widget = function( /* options, element */ ) {}; $.Widget._childConstructors = []; $.Widget.prototype = { - widgetName: 'widget', - widgetEventPrefix: '', - defaultElement: '<div>', + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "<div>", options: { classes: {}, @@ -333,56 +307,52 @@ create: null }, - _createWidget: function (options, element) { - element = $(element || this.defaultElement || this)[0]; - this.element = $(element); + _createWidget: function( options, element ) { + element = $( element || this.defaultElement || this )[ 0 ]; + this.element = $( element ); this.uuid = widgetUuid++; - this.eventNamespace = '.' + this.widgetName + this.uuid; + this.eventNamespace = "." + this.widgetName + this.uuid; this.bindings = $(); this.hoverable = $(); this.focusable = $(); this.classesElementLookup = {}; - if (element !== this) { - $.data(element, this.widgetFullName, this); - this._on(true, this.element, { - remove: function (event) { - if (event.target === element) { + if ( element !== this ) { + $.data( element, this.widgetFullName, this ); + this._on( true, this.element, { + remove: function( event ) { + if ( event.target === element ) { this.destroy(); } } - }); - this.document = $( - element.style - ? // Element within the document - element.ownerDocument - : // Element is window or document - element.document || element - ); - this.window = $( - this.document[0].defaultView || this.document[0].parentWindow - ); + } ); + this.document = $( element.style ? + + // Element within the document + element.ownerDocument : + + // Element is window or document + element.document || element ); + this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); } - this.options = $.widget.extend( - {}, + this.options = $.widget.extend( {}, this.options, this._getCreateOptions(), - options - ); + options ); this._create(); - if (this.options.disabled) { - this._setOptionDisabled(this.options.disabled); + if ( this.options.disabled ) { + this._setOptionDisabled( this.options.disabled ); } - this._trigger('create', null, this._getCreateEventData()); + this._trigger( "create", null, this._getCreateEventData() ); this._init(); }, - _getCreateOptions: function () { + _getCreateOptions: function() { return {}; }, @@ -392,103 +362,107 @@ _init: $.noop, - destroy: function () { + destroy: function() { var that = this; this._destroy(); - $.each(this.classesElementLookup, function (key, value) { - that._removeClass(value, key); - }); + $.each( this.classesElementLookup, function( key, value ) { + that._removeClass( value, key ); + } ); // We can probably remove the unbind calls in 2.0 // all event bindings should go through this._on() - this.element.off(this.eventNamespace).removeData(this.widgetFullName); - this.widget().off(this.eventNamespace).removeAttr('aria-disabled'); + this.element + .off( this.eventNamespace ) + .removeData( this.widgetFullName ); + this.widget() + .off( this.eventNamespace ) + .removeAttr( "aria-disabled" ); // Clean up events and states - this.bindings.off(this.eventNamespace); + this.bindings.off( this.eventNamespace ); }, _destroy: $.noop, - widget: function () { + widget: function() { return this.element; }, - option: function (key, value) { + option: function( key, value ) { var options = key; var parts; var curOption; var i; - if (arguments.length === 0) { + if ( arguments.length === 0 ) { + // Don't return a reference to the internal hash - return $.widget.extend({}, this.options); + return $.widget.extend( {}, this.options ); } - if (typeof key === 'string') { + if ( typeof key === "string" ) { + // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } options = {}; - parts = key.split('.'); + parts = key.split( "." ); key = parts.shift(); - if (parts.length) { - curOption = options[key] = $.widget.extend({}, this.options[key]); - for (i = 0; i < parts.length - 1; i++) { - curOption[parts[i]] = curOption[parts[i]] || {}; - curOption = curOption[parts[i]]; + if ( parts.length ) { + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); + for ( i = 0; i < parts.length - 1; i++ ) { + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; + curOption = curOption[ parts[ i ] ]; } key = parts.pop(); - if (arguments.length === 1) { - return curOption[key] === undefined ? null : curOption[key]; + if ( arguments.length === 1 ) { + return curOption[ key ] === undefined ? null : curOption[ key ]; } - curOption[key] = value; + curOption[ key ] = value; } else { - if (arguments.length === 1) { - return this.options[key] === undefined ? null : this.options[key]; + if ( arguments.length === 1 ) { + return this.options[ key ] === undefined ? null : this.options[ key ]; } - options[key] = value; + options[ key ] = value; } } - this._setOptions(options); + this._setOptions( options ); return this; }, - _setOptions: function (options) { + _setOptions: function( options ) { var key; - for (key in options) { - this._setOption(key, options[key]); + for ( key in options ) { + this._setOption( key, options[ key ] ); } return this; }, - _setOption: function (key, value) { - if (key === 'classes') { - this._setOptionClasses(value); + _setOption: function( key, value ) { + if ( key === "classes" ) { + this._setOptionClasses( value ); } - this.options[key] = value; + this.options[ key ] = value; - if (key === 'disabled') { - this._setOptionDisabled(value); + if ( key === "disabled" ) { + this._setOptionDisabled( value ); } return this; }, - _setOptionClasses: function (value) { + _setOptionClasses: function( value ) { var classKey, elements, currentElements; - for (classKey in value) { - currentElements = this.classesElementLookup[classKey]; - if ( - value[classKey] === this.options.classes[classKey] || + for ( classKey in value ) { + currentElements = this.classesElementLookup[ classKey ]; + if ( value[ classKey ] === this.options.classes[ classKey ] || !currentElements || - !currentElements.length - ) { + !currentElements.length ) { continue; } @@ -496,313 +470,283 @@ // on the next line is going to destroy the reference to the current elements being // tracked. We need to save a copy of this collection so that we can add the new classes // below. - elements = $(currentElements.get()); - this._removeClass(currentElements, classKey); + elements = $( currentElements.get() ); + this._removeClass( currentElements, classKey ); // We don't use _addClass() here, because that uses this.options.classes // for generating the string of classes. We want to use the value passed in from // _setOption(), this is the new value of the classes option which was passed to // _setOption(). We pass this value directly to _classes(). - elements.addClass( - this._classes({ - element: elements, - keys: classKey, - classes: value, - add: true - }) - ); + elements.addClass( this._classes( { + element: elements, + keys: classKey, + classes: value, + add: true + } ) ); } }, - _setOptionDisabled: function (value) { - this._toggleClass( - this.widget(), - this.widgetFullName + '-disabled', - null, - !!value - ); + _setOptionDisabled: function( value ) { + this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); // If the widget is becoming disabled, then nothing is interactive - if (value) { - this._removeClass(this.hoverable, null, 'ui-state-hover'); - this._removeClass(this.focusable, null, 'ui-state-focus'); + if ( value ) { + this._removeClass( this.hoverable, null, "ui-state-hover" ); + this._removeClass( this.focusable, null, "ui-state-focus" ); } }, - enable: function () { - return this._setOptions({ disabled: false }); + enable: function() { + return this._setOptions( { disabled: false } ); }, - disable: function () { - return this._setOptions({ disabled: true }); + disable: function() { + return this._setOptions( { disabled: true } ); }, - _classes: function (options) { + _classes: function( options ) { var full = []; var that = this; - options = $.extend( - { - element: this.element, - classes: this.options.classes || {} - }, - options - ); - - function bindRemoveEvent() { - options.element.each(function (_, element) { - var isTracked = $.map(that.classesElementLookup, function (elements) { - return elements; - }).some(function (elements) { - return elements.is(element); - }); - - if (!isTracked) { - that._on($(element), { - remove: '_untrackClassesElement' - }); - } - }); - } + options = $.extend( { + element: this.element, + classes: this.options.classes || {} + }, options ); - function processClassString(classes, checkOption) { + function processClassString( classes, checkOption ) { var current, i; - for (i = 0; i < classes.length; i++) { - current = that.classesElementLookup[classes[i]] || $(); - if (options.add) { - bindRemoveEvent(); - current = $( - $.uniqueSort(current.get().concat(options.element.get())) - ); + for ( i = 0; i < classes.length; i++ ) { + current = that.classesElementLookup[ classes[ i ] ] || $(); + if ( options.add ) { + current = $( $.unique( current.get().concat( options.element.get() ) ) ); } else { - current = $(current.not(options.element).get()); + current = $( current.not( options.element ).get() ); } - that.classesElementLookup[classes[i]] = current; - full.push(classes[i]); - if (checkOption && options.classes[classes[i]]) { - full.push(options.classes[classes[i]]); + that.classesElementLookup[ classes[ i ] ] = current; + full.push( classes[ i ] ); + if ( checkOption && options.classes[ classes[ i ] ] ) { + full.push( options.classes[ classes[ i ] ] ); } } } - if (options.keys) { - processClassString(options.keys.match(/\S+/g) || [], true); + this._on( options.element, { + "remove": "_untrackClassesElement" + } ); + + if ( options.keys ) { + processClassString( options.keys.match( /\S+/g ) || [], true ); } - if (options.extra) { - processClassString(options.extra.match(/\S+/g) || []); + if ( options.extra ) { + processClassString( options.extra.match( /\S+/g ) || [] ); } - return full.join(' '); + return full.join( " " ); }, - _untrackClassesElement: function (event) { + _untrackClassesElement: function( event ) { var that = this; - $.each(that.classesElementLookup, function (key, value) { - if ($.inArray(event.target, value) !== -1) { - that.classesElementLookup[key] = $(value.not(event.target).get()); + $.each( that.classesElementLookup, function( key, value ) { + if ( $.inArray( event.target, value ) !== -1 ) { + that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); } - }); - - this._off($(event.target)); + } ); }, - _removeClass: function (element, keys, extra) { - return this._toggleClass(element, keys, extra, false); + _removeClass: function( element, keys, extra ) { + return this._toggleClass( element, keys, extra, false ); }, - _addClass: function (element, keys, extra) { - return this._toggleClass(element, keys, extra, true); + _addClass: function( element, keys, extra ) { + return this._toggleClass( element, keys, extra, true ); }, - _toggleClass: function (element, keys, extra, add) { - add = typeof add === 'boolean' ? add : extra; - var shift = typeof element === 'string' || element === null, + _toggleClass: function( element, keys, extra, add ) { + add = ( typeof add === "boolean" ) ? add : extra; + var shift = ( typeof element === "string" || element === null ), options = { extra: shift ? keys : extra, keys: shift ? element : keys, element: shift ? this.element : element, add: add }; - options.element.toggleClass(this._classes(options), add); + options.element.toggleClass( this._classes( options ), add ); return this; }, - _on: function (suppressDisabledCheck, element, handlers) { + _on: function( suppressDisabledCheck, element, handlers ) { var delegateElement; var instance = this; // No suppressDisabledCheck flag, shuffle arguments - if (typeof suppressDisabledCheck !== 'boolean') { + if ( typeof suppressDisabledCheck !== "boolean" ) { handlers = element; element = suppressDisabledCheck; suppressDisabledCheck = false; } // No element argument, shuffle and use this.element - if (!handlers) { + if ( !handlers ) { handlers = element; element = this.element; delegateElement = this.widget(); } else { - element = delegateElement = $(element); - this.bindings = this.bindings.add(element); + element = delegateElement = $( element ); + this.bindings = this.bindings.add( element ); } - $.each(handlers, function (event, handler) { + $.each( handlers, function( event, handler ) { function handlerProxy() { + // Allow widgets to customize the disabled handling // - disabled as an array instead of boolean // - disabled class as method for disabling individual parts - if ( - !suppressDisabledCheck && - (instance.options.disabled === true || - $(this).hasClass('ui-state-disabled')) - ) { + if ( !suppressDisabledCheck && + ( instance.options.disabled === true || + $( this ).hasClass( "ui-state-disabled" ) ) ) { return; } - return (typeof handler === 'string' - ? instance[handler] - : handler - ).apply(instance, arguments); + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); } // Copy the guid so direct unbinding works - if (typeof handler !== 'string') { + if ( typeof handler !== "string" ) { handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++; } - var match = event.match(/^([\w:-]*)\s*(.*)$/); - var eventName = match[1] + instance.eventNamespace; - var selector = match[2]; + var match = event.match( /^([\w:-]*)\s*(.*)$/ ); + var eventName = match[ 1 ] + instance.eventNamespace; + var selector = match[ 2 ]; - if (selector) { - delegateElement.on(eventName, selector, handlerProxy); + if ( selector ) { + delegateElement.on( eventName, selector, handlerProxy ); } else { - element.on(eventName, handlerProxy); + element.on( eventName, handlerProxy ); } - }); + } ); }, - _off: function (element, eventName) { - eventName = - (eventName || '').split(' ').join(this.eventNamespace + ' ') + + _off: function( element, eventName ) { + eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; - element.off(eventName); + element.off( eventName ).off( eventName ); // Clear the stack to avoid memory leaks (#10056) - this.bindings = $(this.bindings.not(element).get()); - this.focusable = $(this.focusable.not(element).get()); - this.hoverable = $(this.hoverable.not(element).get()); + this.bindings = $( this.bindings.not( element ).get() ); + this.focusable = $( this.focusable.not( element ).get() ); + this.hoverable = $( this.hoverable.not( element ).get() ); }, - _delay: function (handler, delay) { - var instance = this; + _delay: function( handler, delay ) { function handlerProxy() { - return (typeof handler === 'string' - ? instance[handler] - : handler - ).apply(instance, arguments); + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); } - return setTimeout(handlerProxy, delay || 0); + var instance = this; + return setTimeout( handlerProxy, delay || 0 ); }, - _hoverable: function (element) { - this.hoverable = this.hoverable.add(element); - this._on(element, { - mouseenter: function (event) { - this._addClass($(event.currentTarget), null, 'ui-state-hover'); + _hoverable: function( element ) { + this.hoverable = this.hoverable.add( element ); + this._on( element, { + mouseenter: function( event ) { + this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); }, - mouseleave: function (event) { - this._removeClass($(event.currentTarget), null, 'ui-state-hover'); + mouseleave: function( event ) { + this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); } - }); + } ); }, - _focusable: function (element) { - this.focusable = this.focusable.add(element); - this._on(element, { - focusin: function (event) { - this._addClass($(event.currentTarget), null, 'ui-state-focus'); + _focusable: function( element ) { + this.focusable = this.focusable.add( element ); + this._on( element, { + focusin: function( event ) { + this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); }, - focusout: function (event) { - this._removeClass($(event.currentTarget), null, 'ui-state-focus'); + focusout: function( event ) { + this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); } - }); + } ); }, - _trigger: function (type, event, data) { + _trigger: function( type, event, data ) { var prop, orig; - var callback = this.options[type]; + var callback = this.options[ type ]; data = data || {}; - event = $.Event(event); - event.type = (type === this.widgetEventPrefix - ? type - : this.widgetEventPrefix + type - ).toLowerCase(); + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); // The original event may come from any element // so we need to reset the target on the new event - event.target = this.element[0]; + event.target = this.element[ 0 ]; // Copy original event properties over to the new event orig = event.originalEvent; - if (orig) { - for (prop in orig) { - if (!(prop in event)) { - event[prop] = orig[prop]; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; } } } - this.element.trigger(event, data); - return !( - ($.isFunction(callback) && - callback.apply(this.element[0], [event].concat(data)) === false) || - event.isDefaultPrevented() - ); + this.element.trigger( event, data ); + return !( $.isFunction( callback ) && + callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || + event.isDefaultPrevented() ); } }; - $.each({ show: 'fadeIn', hide: 'fadeOut' }, function (method, defaultEffect) { - $.Widget.prototype['_' + method] = function (element, options, callback) { - if (typeof options === 'string') { + $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + if ( typeof options === "string" ) { options = { effect: options }; } var hasOptions; - var effectName = !options - ? method - : options === true || typeof options === 'number' - ? defaultEffect - : options.effect || defaultEffect; + var effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; options = options || {}; - if (typeof options === 'number') { + if ( typeof options === "number" ) { options = { duration: options }; } - hasOptions = !$.isEmptyObject(options); + hasOptions = !$.isEmptyObject( options ); options.complete = callback; - if (options.delay) { - element.delay(options.delay); + if ( options.delay ) { + element.delay( options.delay ); } - if (hasOptions && $.effects && $.effects.effect[effectName]) { - element[method](options); - } else if (effectName !== method && element[effectName]) { - element[effectName](options.duration, options.easing, callback); + if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { + element[ method ]( options ); + } else if ( effectName !== method && element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); } else { - element.queue(function (next) { - $(this)[method](); - if (callback) { - callback.call(element[0]); + element.queue( function( next ) { + $( this )[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); } next(); - }); + } ); } }; - }); -}); + } ); + + var widget = $.widget; + + + + +})); diff --git a/vendor/blueimp/jquery-file-upload/package-lock.json b/vendor/blueimp/jquery-file-upload/package-lock.json index 7d00a91d9..aaa4293bb 100644 --- a/vendor/blueimp/jquery-file-upload/package-lock.json +++ b/vendor/blueimp/jquery-file-upload/package-lock.json @@ -1,36 +1,34 @@ { "name": "blueimp-file-upload", - "version": "10.21.0", + "version": "10.7.0", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.0.0" } }, "@babel/core": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", - "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.6", - "@babel/parser": "^7.9.6", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.6", - "@babel/types": "^7.9.6", - "convert-source-map": "^1.7.0", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz", + "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.5.5", + "@babel/helpers": "^7.5.5", + "@babel/parser": "^7.5.5", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5", + "convert-source-map": "^1.1.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", + "json5": "^2.1.0", "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", @@ -42,271 +40,175 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, "@babel/generator": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", - "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", + "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", "dev": true, "requires": { - "@babel/types": "^7.9.6", + "@babel/types": "^7.5.5", "jsesc": "^2.5.1", "lodash": "^4.17.13", - "source-map": "^0.5.0" + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-replace-supers": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz", - "integrity": "sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.9.6", - "@babel/types": "^7.9.6" - } - }, - "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.0.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.4.4" } }, - "@babel/helper-validator-identifier": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", - "dev": true - }, "@babel/helpers": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.6.tgz", - "integrity": "sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz", + "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.6", - "@babel/types": "^7.9.6" + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", + "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz", - "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz", + "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==", "dev": true }, - "@babel/runtime": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", - "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/traverse": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.6.tgz", - "integrity": "sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", + "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.5.5", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.5.5", + "@babel/types": "^7.5.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } } }, "@babel/types": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz", - "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.9.5", + "esutils": "^2.0.2", "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } }, - "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" } }, "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, - "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" - } - }, - "@stylelint/postcss-css-in-js": { - "version": "0.37.1", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.1.tgz", - "integrity": "sha512-UMf2Rni3JGKi3ZwYRGMYJ5ipOA5ENJSKMtYA/pE1ZLURwdh7B5+z2r73RmWvub+N0UuH1Lo+TGfCgYwPvqpXNw==", - "dev": true, - "requires": { - "@babel/core": ">=7.9.0" - } + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true }, - "@stylelint/postcss-markdown": { - "version": "0.36.1", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.1.tgz", - "integrity": "sha512-iDxMBWk9nB2BPi1VFQ+Dc5+XpvODBHw2n3tYpaBZuEAFQlbtF9If0Qh5LTTwSi/XwdbJ2jt+0dis3i8omyggpw==", + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", "dev": true, "requires": { - "remark": "^12.0.0", - "unist-util-find-all-after": "^3.0.1" + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "@types/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", "dev": true }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "@types/node": { + "version": "12.7.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.2.tgz", + "integrity": "sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg==", "dev": true }, "@types/unist": { @@ -315,51 +217,61 @@ "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", "dev": true }, + "@types/vfile": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/vfile/-/vfile-3.0.2.tgz", + "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/unist": "*", + "@types/vfile-message": "*" + } + }, + "@types/vfile-message": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-1.0.1.tgz", + "integrity": "sha512-mlGER3Aqmq7bqR1tTTIVHq8KSAFFRyGbrxuM8C/H82g6k7r2fS+IMEkIu3D7JHzG10NvPdR8DNx0jr0pwpp4dA==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/unist": "*" + } + }, "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", + "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", "dev": true }, "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", + "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", "dev": true }, "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "dev": true, "requires": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - }, - "dependencies": { - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true - } - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "ansi-styles": { @@ -380,10 +292,49 @@ "sprintf-js": "~1.0.2" } }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "arrify": { @@ -392,31 +343,51 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, "autoprefixer": { - "version": "9.7.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.6.tgz", - "integrity": "sha512-F7cYpbN7uVVhACZTeeIeealwdGM6wMtfWARVLTy5xmKtgVdBNJvbDRoCK3YO1orcs7gv/KwYlb3iXwu9Ug9BkQ==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", + "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", "dev": true, "requires": { - "browserslist": "^4.11.1", - "caniuse-lite": "^1.0.30001039", + "browserslist": "^4.6.3", + "caniuse-lite": "^1.0.30000980", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.27", - "postcss-value-parser": "^4.0.3" + "postcss": "^7.0.17", + "postcss-value-parser": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "dev": true + } } }, "bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz", + "integrity": "sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww==", "dev": true }, "balanced-match": { @@ -425,22 +396,77 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, "blueimp-canvas-to-blob": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.24.0.tgz", - "integrity": "sha512-HnHPjn/3QOqQpKCrd+2FVZaUXKygz3alozRdA2E8DGSjngQujM7QPXhowqc3BajJr2OT+tJSs1L4LPL1OyXhSw==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.16.0.tgz", + "integrity": "sha512-r5TRlxH5Y0iKrRajCfiW1K4o2U1JniarjLXuNJrC5nnlWV/UopieF8sysw9pAYBauxg2I3Ah1hUp3NEuinwmkA==", "optional": true }, "blueimp-load-image": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/blueimp-load-image/-/blueimp-load-image-5.6.0.tgz", - "integrity": "sha512-3fcMbfyFJGZWEyl+xaLuA28skNLC4yWOLriy3HW+TeuaSqsSKh4CZ6i1vdwSw40IvlkWqFIBU5EuNarPWRVsAQ==", + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/blueimp-load-image/-/blueimp-load-image-2.24.0.tgz", + "integrity": "sha512-fR/CNGEOqbcgbQC7+6hJKcxjD5updapWECbptrHrYpkacP1eXCOoA+92D0v49Sc+gwtxTDzu8nxNmYYd7AXzUg==", "optional": true }, "blueimp-tmpl": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/blueimp-tmpl/-/blueimp-tmpl-3.15.0.tgz", - "integrity": "sha512-m+zf9NJ7xzPJJeSxzoMLTfgFGGGz/jySoPDcDBJuahPWMJFc7C1nNaXo5LjcmskOl0vCVX4ke2zZQ9fQIP6sVw==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/blueimp-tmpl/-/blueimp-tmpl-3.13.0.tgz", + "integrity": "sha512-TC5eLXhPGGgBJG1gGxKRORB5DMxSVSTS/GsqsQuJ+shv0Ez5wc9bjoXVhPqtdbzVZAzFvveasAMrjqEYY/18Og==", "optional": true }, "brace-expansion": { @@ -454,24 +480,92 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browserslist": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", + "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "caniuse-lite": "^1.0.30000984", + "electron-to-chromium": "^1.3.191", + "node-releases": "^1.1.25" } }, - "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" } }, "callsites": { @@ -481,32 +575,32 @@ "dev": true }, "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", "dev": true, "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" } }, "caniuse-lite": { - "version": "1.0.30001051", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001051.tgz", - "integrity": "sha512-sw8UUnTlRevawTMZKN7vpfwSjCBVoiMPlYd8oT2VwNylyPCBdMAUmLGUApnYYTtIm5JXsQegUAY7GPHqgfDzjw==", + "version": "1.0.30000989", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", + "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", "dev": true }, "ccount": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz", - "integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.4.tgz", + "integrity": "sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==", "dev": true }, "chalk": { @@ -521,27 +615,27 @@ } }, "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.3.tgz", + "integrity": "sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w==", "dev": true }, "character-entities-html4": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.3.tgz", + "integrity": "sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg==", "dev": true }, "character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz", + "integrity": "sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww==", "dev": true }, "character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz", + "integrity": "sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg==", "dev": true }, "chardet": { @@ -550,19 +644,42 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^2.0.0" } }, "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, "clone-regexp": { @@ -575,11 +692,21 @@ } }, "collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.5.tgz", + "integrity": "sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ==", "dev": true }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -596,9 +723,15 @@ "dev": true }, "comment-parser": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.2.tgz", - "integrity": "sha512-4Rjb1FnxtOcv9qsfuaNuVsmmVn4ooVoBHzYfyKteiXwIU84PClyGA5jASoFMwPV93+FPh9spwueXauxFJZkGAg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.6.2.tgz", + "integrity": "sha512-Wdms0Q8d4vvb2Yk72OwZjwNWtMklbC5Re7lD9cjCP/AG1fhocmc0TrxGBBAXPLy8fZQPrfHGgyygwI0lA7pbzA==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "concat-map": { @@ -608,25 +741,56 @@ "dev": true }, "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", "dev": true, "requires": { "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } } }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, "cross-spawn": { @@ -650,11 +814,14 @@ } } }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } }, "debug": { "version": "4.1.1", @@ -689,19 +856,66 @@ } } }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", "dev": true, "requires": { - "path-type": "^4.0.0" + "path-type": "^3.0.0" } }, "doctrine": { @@ -714,9 +928,9 @@ } }, "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz", + "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==", "dev": true, "requires": { "domelementtype": "^2.0.1", @@ -762,16 +976,25 @@ "domelementtype": "1" } }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, "electron-to-chromium": { - "version": "1.3.428", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.428.tgz", - "integrity": "sha512-u3+5jEfgLKq/hGO96YfAoOAM1tgFnRDTCD5mLuev44tttcXix+INtVegAkmGzUcfDsnzkPt51XXurXZLLwXt0w==", + "version": "1.3.241", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.241.tgz", + "integrity": "sha512-Gb9E6nWZlbgjDDNe5cAvMJixtn79krNJ70EDpq/M10lkGo7PGtBUe7Y0CYVHsBScRwi6ybCS+YetXAN9ysAHDg==", "dev": true }, "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, "entities": { @@ -796,9 +1019,9 @@ "dev": true }, "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.2.2.tgz", + "integrity": "sha512-mf0elOkxHbdyGX1IJEUsNBzCDdyoUgljF3rRlgfyYh0pwGnreLc0jjD6ZuleOibjmnUWZLY2eXwSooeOgGJ2jw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -808,19 +1031,19 @@ "debug": "^4.0.1", "doctrine": "^3.0.0", "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", + "eslint-utils": "^1.4.2", "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", + "espree": "^6.1.1", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^11.7.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", + "inquirer": "^6.4.1", "is-glob": "^4.0.0", "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", @@ -829,7 +1052,7 @@ "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.3", + "optionator": "^0.8.2", "progress": "^2.0.0", "regexpp": "^2.0.1", "semver": "^6.1.2", @@ -841,39 +1064,38 @@ } }, "eslint-config-blueimp": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/eslint-config-blueimp/-/eslint-config-blueimp-1.9.0.tgz", - "integrity": "sha512-30uqxKoc3/AAn7H2lzISh77SRAecZ3D52RBwLdrV5G/ZorWcPNX0ZnlTz68AnaXoIXFu6irkMs1Zi/KJaA5ZJQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-config-blueimp/-/eslint-config-blueimp-1.4.0.tgz", + "integrity": "sha512-OWTLOSmsjDglgNvKKtb0t3iRPpyzFvXszXJkSS1w5oqkgVmFaKiNeoU6qOyZF2Q78rIog77RgIhzyA387b+7qA==", "dev": true }, "eslint-config-prettier": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", - "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.1.0.tgz", + "integrity": "sha512-k9fny9sPjIBQ2ftFTesJV21Rg4R/7a7t7LCtZVrYQiHEp8Nnuk3EGaDmsKSAnsPj0BYcgB2zxzHa2NTkIxcOLg==", "dev": true, "requires": { "get-stdin": "^6.0.0" } }, "eslint-plugin-jsdoc": { - "version": "24.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-24.0.2.tgz", - "integrity": "sha512-tvk/jPpIP6MBVZETYnurKL/VGKzSinSbhpz1x+CzDOX20bmhRnCiexrgre4xF0WD/feg7ARKTVLCygVB3pfG5Q==", + "version": "15.8.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-15.8.3.tgz", + "integrity": "sha512-p2O6SYetuSD5gWV04HHevIfp2WfimXReYwINuB4iC33hm1jrYoP+t2XbJtCBYvjhoRjjw8w4NfnyZKixte1fug==", "dev": true, "requires": { - "comment-parser": "^0.7.2", + "comment-parser": "^0.6.2", "debug": "^4.1.1", - "jsdoctypeparser": "^6.1.0", + "jsdoctypeparser": "5.0.1", "lodash": "^4.17.15", - "regextras": "^0.7.0", - "semver": "^6.3.0", - "spdx-expression-parse": "^3.0.0" + "object.entries-ponyfill": "^1.0.1", + "regextras": "^0.6.1" } }, "eslint-plugin-prettier": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz", - "integrity": "sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz", + "integrity": "sha512-XWX2yVuwVNLOUhQijAkXz+rMPPoCr7WFiAl8ig6I7Xn+pPVhDhzg4DxHpmbeb0iqjO9UronEA3Tb09ChnFVHHA==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -890,12 +1112,12 @@ } }, "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", + "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^1.0.0" } }, "eslint-visitor-keys": { @@ -905,13 +1127,13 @@ "dev": true }, "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz", + "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==", "dev": true, "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", + "acorn": "^7.0.0", + "acorn-jsx": "^5.0.2", "eslint-visitor-keys": "^1.1.0" } }, @@ -922,20 +1144,12 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", - "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", - "dev": true - } + "estraverse": "^4.0.0" } }, "esrecurse": { @@ -968,12 +1182,83 @@ "clone-regexp": "^2.1.0" } }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -985,10 +1270,75 @@ "tmp": "^0.0.33" } }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "fast-diff": { @@ -998,23 +1348,67 @@ "dev": true }, "fast-glob": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", - "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", "dev": true, "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } } }, "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, "fast-levenshtein": { @@ -1023,19 +1417,10 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fastq": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.7.0.tgz", - "integrity": "sha512-YOadQRnHd5q6PogvAR/x62BGituF2ufiEA6s8aavQANw5YKHERI4AREboX6KotzP8oX2klxYF2wcV/7bn1clfQ==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -1051,21 +1436,26 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "locate-path": "^2.0.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "flat-cache": { @@ -1080,11 +1470,26 @@ } }, "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1097,22 +1502,22 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true - }, "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "dev": true }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1124,14 +1529,20 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", + "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", "dev": true, "requires": { "is-glob": "^4.0.1" } }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, "global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -1153,32 +1564,37 @@ } }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true }, "globby": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", - "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" }, "dependencies": { - "ignore": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true } } @@ -1190,18 +1606,26 @@ "dev": true }, "gonzales-pe": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", - "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.4.tgz", + "integrity": "sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ==", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "1.1.x" + }, + "dependencies": { + "minimist": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", + "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", + "dev": true + } } }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", "dev": true }, "has-flag": { @@ -1210,10 +1634,42 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz", + "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==", "dev": true }, "html-tags": { @@ -1252,9 +1708,9 @@ "dev": true }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -1274,9 +1730,9 @@ "dev": true }, "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", "dev": true }, "indexes-of": { @@ -1308,91 +1764,50 @@ "dev": true }, "inquirer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", - "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", - "cli-cursor": "^3.1.0", + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", "through": "^2.3.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" }, "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" + "is-buffer": "^1.1.5" } } } }, "is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.3.tgz", + "integrity": "sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==", "dev": true }, "is-alphanumeric": { @@ -1402,9 +1817,9 @@ "dev": true }, "is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz", + "integrity": "sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==", "dev": true, "requires": { "is-alphabetical": "^1.0.0", @@ -1418,15 +1833,66 @@ "dev": true }, "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz", + "integrity": "sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { @@ -1436,9 +1902,9 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-glob": { @@ -1451,21 +1917,56 @@ } }, "is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz", + "integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==", "dev": true }, "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, "is-regexp": { @@ -1474,22 +1975,28 @@ "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", "dev": true }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "is-whitespace-character": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz", + "integrity": "sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==", "dev": true }, - "is-whitespace-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", - "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, "is-word-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", - "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.3.tgz", + "integrity": "sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { @@ -1498,6 +2005,12 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -1515,9 +2028,9 @@ } }, "jsdoctypeparser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-6.1.0.tgz", - "integrity": "sha512-UCQBZ3xCUBv/PLfwKAJhp6jmGOSLFNKzrotXGNgbKhWvz27wPsCsVeP7gIcHPElQw2agBmynAitXqhxR58XAmA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-5.0.1.tgz", + "integrity": "sha512-dYwcK6TKzvq+ZKtbp4sbQSW9JMo6s+4YFfUs5D/K7bZsn3s1NhEhZ+jmIPzby0HbkbECBe+hNPEa6a+E21o94w==", "dev": true }, "jsesc": { @@ -1545,24 +2058,32 @@ "dev": true }, "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, "known-css-properties": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.18.0.tgz", - "integrity": "sha512-69AgJ1rQa7VvUsd2kpvVq+VeObDuo3zrj0CzM5Slmf6yduQFAI2kXPDQJR2IE/u6MSAUOJrwSzjg5vlz8qcMiw==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.14.0.tgz", + "integrity": "sha512-P+0a/gBzLgVlCnK8I7VcD0yuYJscmWn66wH9tlKsQnmVdg689tLEmziwB9PuazZYLkcm07fvWOKCJJqI55sD5Q==", "dev": true }, "leven": { @@ -1581,20 +2102,16 @@ "type-check": "~0.3.2" } }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, "lodash": { @@ -1613,78 +2130,90 @@ } }, "longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.3.tgz", + "integrity": "sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==", "dev": true }, - "map-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", - "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", - "dev": true + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } }, - "markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "markdown-table": { + "map-obj": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "repeat-string": "^1.0.0" + "object-visit": "^1.0.0" } }, + "markdown-escapes": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.3.tgz", + "integrity": "sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw==", + "dev": true + }, + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true + }, "mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz", + "integrity": "sha512-pWB896KPGSGkp1XtyzRBftpTzwSOL0Gfk0wLvxt4f2mgzjY19o0LxJ3U25vNWTzsh7da+KTbuXQoQ3lOJZ8WHw==", "dev": true }, "mdast-util-compact": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", - "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.3.tgz", + "integrity": "sha512-nRiU5GpNy62rZppDKbLwhhtw5DXoFMqw9UNZFmlPsNaQCZ//WLjGKUwWMdJrUH+Se7UvtO2gXtAMe0g/N+eI5w==", "dev": true, "requires": { - "unist-util-visit": "^2.0.0" + "unist-util-visit": "^1.1.0" } }, "meow": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", - "integrity": "sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "^4.0.2", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - }, - "dependencies": { - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" } }, "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.4.tgz", + "integrity": "sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==", "dev": true }, "micromatch": { @@ -1695,18 +2224,47 @@ "requires": { "braces": "^3.0.1", "picomatch": "^2.0.5" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } } }, "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "min-indent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", - "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "minimatch": { @@ -1719,36 +2277,49 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "minimist-options": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.0.2.tgz", - "integrity": "sha512-seq4hpWkYSUh1y7NXxzucwAN9yVlBc3Upgdjz8vLCP97jG8kaOmzYrVH/m7tQ1NYD1wdtZbSLfdy4zFmRWuc/w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", "dev": true, "requires": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } } } }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "0.0.8" } }, "ms": { @@ -1758,11 +2329,30 @@ "dev": true }, "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -1776,10 +2366,21 @@ "dev": true }, "node-releases": { - "version": "1.1.54", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.54.tgz", - "integrity": "sha512-tLzytKpgwKQr37yw9CEODjNM9lnmsNxzlv575GzOZ16AgMvPcJis/DgrJX4UEV1KIYoXk6XoVfY6YaMOPJESAQ==", - "dev": true + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.28.tgz", + "integrity": "sha512-AQw4emh6iSXnCpDiFe0phYcThiccmkNWMZnFZ+lDJjAP8J0m2fVd59duvUUyuTirQOhIAajTFkzG6FHCLBO59g==", + "dev": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } }, "normalize-package-data": { "version": "2.5.0", @@ -1819,6 +2420,61 @@ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.entries-ponyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.entries-ponyfill/-/object.entries-ponyfill-1.0.1.tgz", + "integrity": "sha1-Kavfd8v70mVm3RqiTp2I9lQz0lY=", + "dev": true + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1829,26 +2485,26 @@ } }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "^2.1.0" + "mimic-fn": "^1.0.0" } }, "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", + "fast-levenshtein": "~2.0.4", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "wordwrap": "~1.0.0" } }, "os-tmpdir": { @@ -1857,30 +2513,6 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1891,9 +2523,9 @@ } }, "parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", "dev": true, "requires": { "character-entities": "^1.0.0", @@ -1905,17 +2537,27 @@ } }, "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" + "json-parse-better-errors": "^1.0.1" } }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -1941,30 +2583,36 @@ "dev": true }, "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", + "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", "dev": true }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true }, "postcss": { - "version": "7.0.29", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.29.tgz", - "integrity": "sha512-ba0ApvR3LxGvRMMiUa9n0WR4HjzcYm7tS+ht4/2Nd0NLtHpPIH77fuB9Xh1/yJVz9O/E/95Y/dn8ygWsyffXtw==", + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", + "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -1972,12 +2620,6 @@ "supports-color": "^6.1.0" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -1998,6 +2640,15 @@ "htmlparser2": "^3.10.0" } }, + "postcss-jsx": { + "version": "0.36.3", + "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.3.tgz", + "integrity": "sha512-yV8Ndo6KzU8eho5mCn7LoLUGPkXrRXRjhMpX4AaYJ9wLJPv099xbtpbRQ8FrPnzVxb/cuMebbPR7LweSt+hTfA==", + "dev": true, + "requires": { + "@babel/core": ">=7.2.2" + } + }, "postcss-less": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", @@ -2007,6 +2658,16 @@ "postcss": "^7.0.14" } }, + "postcss-markdown": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-markdown/-/postcss-markdown-0.36.0.tgz", + "integrity": "sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ==", + "dev": true, + "requires": { + "remark": "^10.0.1", + "unist-util-find-all-after": "^1.0.2" + } + }, "postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", @@ -2043,22 +2704,22 @@ "dev": true }, "postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz", + "integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==", "dev": true, "requires": { - "postcss": "^7.0.26" + "postcss": "^7.0.0" } }, "postcss-sass": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", - "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.3.5.tgz", + "integrity": "sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==", "dev": true, "requires": { - "gonzales-pe": "^4.3.0", - "postcss": "^7.0.21" + "gonzales-pe": "^4.2.3", + "postcss": "^7.0.1" } }, "postcss-scss": { @@ -2071,12 +2732,12 @@ } }, "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", "dev": true, "requires": { - "cssesc": "^3.0.0", + "dot-prop": "^4.1.1", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -2088,9 +2749,9 @@ "dev": true }, "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true }, "prelude-ls": { @@ -2100,9 +2761,9 @@ "dev": true }, "prettier": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", + "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", "dev": true }, "prettier-linter-helpers": { @@ -2127,97 +2788,81 @@ "dev": true }, "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", "dev": true }, "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" } }, "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dev": true, "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" }, "dependencies": { "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "^2.0.0" } }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-try": "^1.0.0" } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^1.1.0" } }, "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true } } }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -2226,20 +2871,24 @@ } }, "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", "dev": true, "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" } }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } }, "regexpp": { "version": "2.0.1", @@ -2248,50 +2897,49 @@ "dev": true }, "regextras": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.0.tgz", - "integrity": "sha512-ds+fL+Vhl918gbAUb0k2gVKbTZLsg84Re3DI6p85Et0U0tYME3hyW4nMK8Px4dtDaBA2qNjvG5uWyW7eK5gfmw==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.6.1.tgz", + "integrity": "sha512-EzIHww9xV2Kpqx+corS/I7OBmf2rZ0pKKJPsw5Dc+l6Zq1TslDmtRIP9maVn3UH+72MIXmn8zzDgP07ihQogUA==", "dev": true }, "remark": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.0.tgz", - "integrity": "sha512-oX4lMIS0csgk8AEbzY0h2jdR0ngiCHOpwwpxjmRa5TqAkeknY+tkhjRJGZqnCmvyuWh55/0SW5WY3R3nn3PH9A==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz", + "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==", "dev": true, "requires": { - "remark-parse": "^8.0.0", - "remark-stringify": "^8.0.0", - "unified": "^9.0.0" + "remark-parse": "^6.0.0", + "remark-stringify": "^6.0.0", + "unified": "^7.0.0" } }, "remark-parse": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.2.tgz", - "integrity": "sha512-eMI6kMRjsAGpMXXBAywJwiwAse+KNpmt+BK55Oofy4KvBZEqUDj6mWbGLJZrujoPIPPxDXzn3T9baRlpsm2jnQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz", + "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==", "dev": true, "requires": { - "ccount": "^1.0.0", "collapse-white-space": "^1.0.2", "is-alphabetical": "^1.0.0", "is-decimal": "^1.0.0", "is-whitespace-character": "^1.0.0", "is-word-character": "^1.0.0", "markdown-escapes": "^1.0.0", - "parse-entities": "^2.0.0", + "parse-entities": "^1.1.0", "repeat-string": "^1.5.4", "state-toggle": "^1.0.0", "trim": "0.0.1", "trim-trailing-lines": "^1.0.0", "unherit": "^1.0.4", - "unist-util-remove-position": "^2.0.0", - "vfile-location": "^3.0.0", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", "xtend": "^4.0.1" } }, "remark-stringify": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.0.0.tgz", - "integrity": "sha512-cABVYVloFH+2ZI5bdqzoOmemcz/ZuhQSH6W6ZNYnLojAUUn3xtX7u+6BpnYp35qHoGr2NFBsERV14t4vCIeW8w==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", + "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", "dev": true, "requires": { "ccount": "^1.0.0", @@ -2300,16 +2948,22 @@ "is-whitespace-character": "^1.0.0", "longest-streak": "^2.0.1", "markdown-escapes": "^1.0.0", - "markdown-table": "^2.0.0", - "mdast-util-compact": "^2.0.0", - "parse-entities": "^2.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", "repeat-string": "^1.5.4", "state-toggle": "^1.0.0", - "stringify-entities": "^3.0.0", + "stringify-entities": "^1.0.1", "unherit": "^1.0.4", "xtend": "^4.0.1" } }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -2323,9 +2977,9 @@ "dev": true }, "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -2337,20 +2991,26 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "^5.1.0", + "onetime": "^2.0.0", "signal-exit": "^3.0.2" } }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, "rimraf": { @@ -2363,32 +3023,38 @@ } }, "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", - "dev": true + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } }, "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", "dev": true }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -2401,6 +3067,29 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -2417,9 +3106,9 @@ "dev": true }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "slash": { @@ -2437,20 +3126,159 @@ "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { - "is-fullwidth-code-point": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true } } }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, "spdx-correct": { @@ -2464,9 +3292,9 @@ } }, "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", "dev": true }, "spdx-expression-parse": { @@ -2491,6 +3319,15 @@ "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", "dev": true }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -2498,29 +3335,49 @@ "dev": true }, "state-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", - "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.2.tgz", + "integrity": "sha512-8LpelPGR0qQM4PnfLiplOQNJcIN1/r2Gy0xKB2zKnIW2YzPMt2sR4I/+gtPjhN7Svh9kw+zqEg2SFwpBO9iNiw==", "dev": true }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^3.0.0" } } } @@ -2532,26 +3389,17 @@ "dev": true, "requires": { "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", - "dev": true - } } }, "stringify-entities": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.0.0.tgz", - "integrity": "sha512-h7NJJIssprqlyjHT2eQt2W1F+MCcNmwPGlKb0bWEdET/3N44QN3QbUF/ueKCgAssyKRZ3Br9rQ7FcXjHr0qLHw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", + "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", "dev": true, "requires": { "character-entities-html4": "^1.0.0", "character-entities-legacy": "^1.0.0", "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.2", "is-hexadecimal": "^1.0.0" } }, @@ -2572,19 +3420,22 @@ } } }, - "strip-indent": { + "strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true }, "strip-json-comments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", - "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", "dev": true }, "style-search": { @@ -2594,94 +3445,65 @@ "dev": true }, "stylelint": { - "version": "13.3.3", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.3.3.tgz", - "integrity": "sha512-j8Oio2T1YNiJc6iXDaPYd74Jg4zOa1bByNm/g9/Nvnq4tDPsIjMi46jhRZyPPktGPwjJ5FwcmCqIRlH6PVP8mA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-10.1.0.tgz", + "integrity": "sha512-OmlUXrgzEMLQYj1JPTpyZPR9G4bl0StidfHnGJEMpdiQ0JyTq0MPg1xkHk1/xVJ2rTPESyJCDWjG8Kbpoo7Kuw==", "dev": true, "requires": { - "@stylelint/postcss-css-in-js": "^0.37.1", - "@stylelint/postcss-markdown": "^0.36.1", - "autoprefixer": "^9.7.6", + "autoprefixer": "^9.5.1", "balanced-match": "^1.0.0", - "chalk": "^4.0.0", - "cosmiconfig": "^6.0.0", + "chalk": "^2.4.2", + "cosmiconfig": "^5.2.0", "debug": "^4.1.1", "execall": "^2.0.0", "file-entry-cache": "^5.0.1", "get-stdin": "^7.0.0", "global-modules": "^2.0.0", - "globby": "^11.0.0", + "globby": "^9.2.0", "globjoin": "^0.1.4", - "html-tags": "^3.1.0", - "ignore": "^5.1.4", + "html-tags": "^3.0.0", + "ignore": "^5.0.6", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", - "known-css-properties": "^0.18.0", + "known-css-properties": "^0.14.0", "leven": "^3.1.0", - "lodash": "^4.17.15", + "lodash": "^4.17.11", "log-symbols": "^3.0.0", - "mathml-tag-names": "^2.1.3", - "meow": "^6.1.0", - "micromatch": "^4.0.2", + "mathml-tag-names": "^2.1.0", + "meow": "^5.0.0", + "micromatch": "^4.0.0", "normalize-selector": "^0.2.0", - "postcss": "^7.0.27", + "pify": "^4.0.1", + "postcss": "^7.0.14", "postcss-html": "^0.36.0", + "postcss-jsx": "^0.36.1", "postcss-less": "^3.1.4", + "postcss-markdown": "^0.36.0", "postcss-media-query-parser": "^0.2.3", "postcss-reporter": "^6.0.1", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.2", - "postcss-sass": "^0.4.4", + "postcss-safe-parser": "^4.0.1", + "postcss-sass": "^0.3.5", "postcss-scss": "^2.0.0", - "postcss-selector-parser": "^6.0.2", + "postcss-selector-parser": "^3.1.0", "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^4.0.3", + "postcss-value-parser": "^3.3.1", "resolve-from": "^5.0.0", + "signal-exit": "^3.0.2", "slash": "^3.0.0", "specificity": "^0.4.1", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^5.2.0", "style-search": "^0.1.0", "sugarss": "^2.0.0", "svg-tags": "^1.0.0", - "table": "^5.4.6", - "v8-compile-cache": "^2.1.0", - "write-file-atomic": "^3.0.3" + "table": "^5.2.3" }, "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", - "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "get-stdin": { @@ -2690,54 +3512,53 @@ "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "ignore": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "string-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", + "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^5.2.0" } } } }, "stylelint-config-prettier": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-8.0.1.tgz", - "integrity": "sha512-RcjNW7MUaNVqONhJH4+rtlAE3ow/9SsAM0YWV0Lgu3dbTKdWTa/pQXRdFWgoHWpzUKn+9oBKR5x8JdH+20wmgw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-5.2.0.tgz", + "integrity": "sha512-ehrG/mBi9CTKkOBi0wlStX58+g9eGJhJW/jFEcCm/dUVHg9I2+T90k4tlyratvhlz876dyrTlor7gvDEaohVnA==", "dev": true }, "stylelint-config-recommended": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz", - "integrity": "sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-2.2.0.tgz", + "integrity": "sha512-bZ+d4RiNEfmoR74KZtCKmsABdBJr4iXRiCso+6LtMJPw5rd/KnxUWTxht7TbafrTJK1YRjNgnN0iVZaJfc3xJA==", "dev": true }, "sugarss": { @@ -2776,18 +3597,6 @@ "string-width": "^3.0.0" }, "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -2828,13 +3637,46 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "is-number": "^7.0.0" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, "trim": { @@ -2844,27 +3686,33 @@ "dev": true }, "trim-newlines": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", - "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "trim-trailing-lines": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz", - "integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz", + "integrity": "sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==", "dev": true }, "trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.4.tgz", + "integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==", "dev": true }, "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", "dev": true }, "type-check": { @@ -2876,43 +3724,42 @@ "prelude-ls": "~1.1.2" } }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "unherit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", - "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz", + "integrity": "sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==", "dev": true, "requires": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" + "inherits": "^2.0.1", + "xtend": "^4.0.1" } }, "unified": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.0.0.tgz", - "integrity": "sha512-ssFo33gljU3PdlWLjNp15Inqb77d6JnJSfyplGJPT/a+fNRNyCBeveBAYJdO5khKdF6WVHa/yYCC7Xl6BDwZUQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", + "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", "dev": true, "requires": { + "@types/unist": "^2.0.0", + "@types/vfile": "^3.0.0", "bail": "^1.0.0", "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", + "is-plain-obj": "^1.1.0", "trough": "^1.0.0", - "vfile": "^4.0.0" + "vfile": "^3.0.0", + "x-is-string": "^0.1.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" } }, "uniq": { @@ -2922,57 +3769,91 @@ "dev": true }, "unist-util-find-all-after": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.1.tgz", - "integrity": "sha512-0GICgc++sRJesLwEYDjFVJPJttBpVQaTNgc6Jw0Jhzvfs+jtKePEMu+uD+PqkRUrAvGQqwhpDwLGWo1PK8PDEw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.4.tgz", + "integrity": "sha512-CaxvMjTd+yF93BKLJvZnEfqdM7fgEACsIpQqz8vIj9CJnUb9VpyymFS3tg6TCtgrF7vfCJBF5jbT2Ox9CBRYRQ==", "dev": true, "requires": { - "unist-util-is": "^4.0.0" + "unist-util-is": "^3.0.0" } }, "unist-util-is": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz", - "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", "dev": true }, "unist-util-remove-position": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", - "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.3.tgz", + "integrity": "sha512-CtszTlOjP2sBGYc2zcKA/CvNdTdEs3ozbiJ63IPBxh8iZg42SCCb8m04f8z2+V1aSk5a7BxbZKEdoDjadmBkWA==", "dev": true, "requires": { - "unist-util-visit": "^2.0.0" + "unist-util-visit": "^1.1.0" } }, "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", + "dev": true + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", "dev": true, "requires": { - "@types/unist": "^2.0.2" + "unist-util-visit-parents": "^2.0.0" } }, - "unist-util-visit": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz", - "integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==", + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", "dev": true, "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "unist-util-is": "^3.0.0" } }, - "unist-util-visit-parents": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz", - "integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==", + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } } }, "uri-js": { @@ -2984,6 +3865,18 @@ "punycode": "^2.1.0" } }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -3007,32 +3900,38 @@ } }, "vfile": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.0.tgz", - "integrity": "sha512-BaTPalregj++64xbGK6uIlsurN3BCRNM/P2Pg8HezlGzKd1O9PrwIac6bd9Pdx2uTb0QHoioZ+rXKolbVXEgJg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", + "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", "dev": true, "requires": { - "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", "replace-ext": "1.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", + "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "dev": true + } } }, "vfile-location": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.0.1.tgz", - "integrity": "sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.5.tgz", + "integrity": "sha512-Pa1ey0OzYBkLPxPZI3d9E+S4BmvfVwNAAXrrqGbwTVXWaX2p9kM1zZ+n35UtVM06shmWKH4RPRN8KI80qE3wNQ==", "dev": true }, "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", + "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", "dev": true, "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "unist-util-stringify-position": "^1.1.1" } }, "which": { @@ -3044,10 +3943,10 @@ "isexe": "^2.0.0" } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, "wrappy": { @@ -3065,17 +3964,11 @@ "mkdirp": "^0.5.1" } }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } + "x-is-string": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", + "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=", + "dev": true }, "xtend": { "version": "4.0.2", @@ -3083,23 +3976,13 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, - "yaml": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.9.2.tgz", - "integrity": "sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.9.2" - } - }, "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "^4.1.0" } } } diff --git a/vendor/blueimp/jquery-file-upload/package.json b/vendor/blueimp/jquery-file-upload/package.json index 6270c65b1..9a6159619 100644 --- a/vendor/blueimp/jquery-file-upload/package.json +++ b/vendor/blueimp/jquery-file-upload/package.json @@ -1,6 +1,6 @@ { "name": "blueimp-file-upload", - "version": "10.21.0", + "version": "10.7.0", "title": "jQuery File Upload", "description": "File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.", "keywords": [ @@ -35,23 +35,23 @@ }, "license": "MIT", "peerDependencies": { - "jquery": ">=1.7" + "jquery": ">=1.6" }, "optionalDependencies": { "blueimp-canvas-to-blob": "3", - "blueimp-load-image": "5", + "blueimp-load-image": "2", "blueimp-tmpl": "3" }, "devDependencies": { "eslint": "6", "eslint-config-blueimp": "1", "eslint-config-prettier": "6", - "eslint-plugin-jsdoc": "24", + "eslint-plugin-jsdoc": "15", "eslint-plugin-prettier": "3", - "prettier": "2", - "stylelint": "13", - "stylelint-config-prettier": "8", - "stylelint-config-recommended": "3" + "prettier": "1", + "stylelint": "10", + "stylelint-config-prettier": "5", + "stylelint-config-recommended": "2" }, "stylelint": { "extends": [ @@ -76,19 +76,18 @@ }, "eslintIgnore": [ "js/*.min.js", + "js/vendor", "test/vendor" ], "prettier": { - "arrowParens": "avoid", "proseWrap": "always", - "singleQuote": true, - "trailingComma": "none" + "singleQuote": true }, "scripts": { "lint": "stylelint '**/*.css' && eslint .", "unit": "docker-compose run --rm mocha", "wdio": "docker-compose run --rm wdio", - "test": "npm run lint && npm run unit && npm run wdio && npm run wdio -- conf/firefox.js", + "test": "npm run lint && npm run unit && npm run wdio && npm run wdio -- firefox.js", "posttest": "docker-compose down -v", "preversion": "npm test", "postversion": "git push --tags origin master && npm publish" diff --git a/vendor/blueimp/jquery-file-upload/server/php/UploadHandler.php b/vendor/blueimp/jquery-file-upload/server/php/UploadHandler.php index 856e81b11..62f65a51f 100644 --- a/vendor/blueimp/jquery-file-upload/server/php/UploadHandler.php +++ b/vendor/blueimp/jquery-file-upload/server/php/UploadHandler.php @@ -30,7 +30,6 @@ class UploadHandler 'min_file_size' => 'File is too small', 'accept_file_types' => 'Filetype not allowed', 'max_number_of_files' => 'Maximum number of files exceeded', - 'invalid_file_type' => 'Invalid file type', 'max_width' => 'Image exceeds maximum width', 'min_width' => 'Image requires a minimum width', 'max_height' => 'Image exceeds maximum height', @@ -39,9 +38,9 @@ class UploadHandler 'image_resize' => 'Failed to resize image' ); - const IMAGETYPE_GIF = 'image/gif'; - const IMAGETYPE_JPEG = 'image/jpeg'; - const IMAGETYPE_PNG = 'image/png'; + const IMAGETYPE_GIF = 1; + const IMAGETYPE_JPEG = 2; + const IMAGETYPE_PNG = 3; protected $image_objects = array(); protected $response = array(); @@ -394,53 +393,7 @@ class UploadHandler return $this->fix_integer_overflow($val); } - protected function validate_image_file($uploaded_file, $file, $error, $index) { - if ($this->imagetype($uploaded_file) !== $this->get_file_type($file->name)) { - $file->error = $this->get_error_message('invalid_file_type'); - return false; - } - $max_width = @$this->options['max_width']; - $max_height = @$this->options['max_height']; - $min_width = @$this->options['min_width']; - $min_height = @$this->options['min_height']; - if ($max_width || $max_height || $min_width || $min_height) { - list($img_width, $img_height) = $this->get_image_size($uploaded_file); - // If we are auto rotating the image by default, do the checks on - // the correct orientation - if ( - @$this->options['image_versions']['']['auto_orient'] && - function_exists('exif_read_data') && - ($exif = @exif_read_data($uploaded_file)) && - (((int) @$exif['Orientation']) >= 5) - ) { - $tmp = $img_width; - $img_width = $img_height; - $img_height = $tmp; - unset($tmp); - } - if (!empty($img_width) && !empty($img_height)) { - if ($max_width && $img_width > $max_width) { - $file->error = $this->get_error_message('max_width'); - return false; - } - if ($max_height && $img_height > $max_height) { - $file->error = $this->get_error_message('max_height'); - return false; - } - if ($min_width && $img_width < $min_width) { - $file->error = $this->get_error_message('min_width'); - return false; - } - if ($min_height && $img_height < $min_height) { - $file->error = $this->get_error_message('min_height'); - return false; - } - } - } - return true; - } - - protected function validate($uploaded_file, $file, $error, $index, $content_range) { + protected function validate($uploaded_file, $file, $error, $index) { if ($error) { $file->error = $this->get_error_message($error); return false; @@ -481,8 +434,44 @@ class UploadHandler $file->error = $this->get_error_message('max_number_of_files'); return false; } - if (!$content_range && $this->has_image_file_extension($file->name)) { - return $this->validate_image_file($uploaded_file, $file, $error, $index); + $max_width = @$this->options['max_width']; + $max_height = @$this->options['max_height']; + $min_width = @$this->options['min_width']; + $min_height = @$this->options['min_height']; + if (($max_width || $max_height || $min_width || $min_height) + && $this->is_valid_image_file($uploaded_file)) { + list($img_width, $img_height) = $this->get_image_size($uploaded_file); + // If we are auto rotating the image by default, do the checks on + // the correct orientation + if ( + @$this->options['image_versions']['']['auto_orient'] && + function_exists('exif_read_data') && + ($exif = @exif_read_data($uploaded_file)) && + (((int) @$exif['Orientation']) >= 5) + ) { + $tmp = $img_width; + $img_width = $img_height; + $img_height = $tmp; + unset($tmp); + } + } + if (!empty($img_width) && !empty($img_height)) { + if ($max_width && $img_width > $max_width) { + $file->error = $this->get_error_message('max_width'); + return false; + } + if ($max_height && $img_height > $max_height) { + $file->error = $this->get_error_message('max_height'); + return false; + } + if ($min_width && $img_width < $min_width) { + $file->error = $this->get_error_message('min_width'); + return false; + } + if ($min_height && $img_height < $min_height) { + $file->error = $this->get_error_message('min_height'); + return false; + } } return true; } @@ -519,17 +508,6 @@ class UploadHandler return $name; } - protected function get_valid_image_extensions($file_path) { - switch ($this->imagetype($file_path)) { - case self::IMAGETYPE_JPEG: - return array('jpg', 'jpeg'); - case self::IMAGETYPE_PNG: - return array('png'); - case self::IMAGETYPE_GIF: - return array('gif'); - } - } - protected function fix_file_extension($file_path, $name, $size, $type, $error, $index, $content_range) { // Add missing file extension for known image types: @@ -538,7 +516,17 @@ class UploadHandler $name .= '.'.$matches[1]; } if ($this->options['correct_image_extensions']) { - $extensions = $this->get_valid_image_extensions($file_path); + switch ($this->imagetype($file_path)) { + case self::IMAGETYPE_JPEG: + $extensions = array('jpg', 'jpeg'); + break; + case self::IMAGETYPE_PNG: + $extensions = array('png'); + break; + case self::IMAGETYPE_GIF: + $extensions = array('gif'); + break; + } // Adjust incorrect image file extensions: if (!empty($extensions)) { $parts = explode('.', $name); @@ -1106,13 +1094,12 @@ class UploadHandler } protected function is_valid_image_file($file_path) { + if (!preg_match('/\.(gif|jpe?g|png)$/i', $file_path)) { + return false; + } return !!$this->imagetype($file_path); } - protected function has_image_file_extension($file_path) { - return !!preg_match('/\.(gif|jpe?g|png)$/i', $file_path); - } - protected function handle_image_file($file_path, $file) { $failed_versions = array(); foreach ($this->options['image_versions'] as $version => $options) { @@ -1144,7 +1131,7 @@ class UploadHandler $index, $content_range); $file->size = $this->fix_integer_overflow((int)$size); $file->type = $type; - if ($this->validate($uploaded_file, $file, $error, $index, $content_range)) { + if ($this->validate($uploaded_file, $file, $error, $index)) { $this->handle_form_data($file, $index); $upload_dir = $this->get_upload_path(); if (!is_dir($upload_dir)) { @@ -1175,12 +1162,8 @@ class UploadHandler $file_size = $this->get_file_size($file_path, $append_file); if ($file_size === $file->size) { $file->url = $this->get_download_url($file->name); - if ($this->has_image_file_extension($file->name)) { - if ($content_range && !$this->validate_image_file($file_path, $file, $error, $index)) { - unlink($file_path); - } else { - $this->handle_image_file($file_path, $file); - } + if ($this->is_valid_image_file($file_path)) { + $this->handle_image_file($file_path, $file); } } else { $file->size = $file_size; @@ -1266,11 +1249,11 @@ class UploadHandler switch (strtolower(pathinfo($file_path, PATHINFO_EXTENSION))) { case 'jpeg': case 'jpg': - return self::IMAGETYPE_JPEG; + return 'image/jpeg'; case 'png': - return self::IMAGETYPE_PNG; + return 'image/png'; case 'gif': - return self::IMAGETYPE_GIF; + return 'image/gif'; default: return ''; } diff --git a/vendor/blueimp/jquery-file-upload/test/unit.js b/vendor/blueimp/jquery-file-upload/test/unit.js index d9d9fffb9..c70d35dd6 100644 --- a/vendor/blueimp/jquery-file-upload/test/unit.js +++ b/vendor/blueimp/jquery-file-upload/test/unit.js @@ -12,7 +12,7 @@ /* global beforeEach, afterEach, describe, it */ /* eslint-disable new-cap */ -(function (expect, $) { +(function(expect, $) { 'use strict'; var canCreateBlob = !!window.dataURLtoBlob; @@ -73,29 +73,29 @@ */ function deleteFiles(files, callback) { $.when( - files.map(function (file) { + files.map(function(file) { return $.ajax({ type: file.deleteType, url: file.deleteUrl }); }) - ).always(function () { + ).always(function() { callback(); }); } - beforeEach(function () { + beforeEach(function() { fileGIF = new File([blobGIF], 'example.gif', { type: 'image/gif' }); fileJPEG = new File([blobJPEG], 'example.jpg', { type: 'image/jpeg' }); files = [fileGIF, fileJPEG]; items = [ { - getAsFile: function () { + getAsFile: function() { return files[0]; } }, { - getAsFile: function () { + getAsFile: function() { return files[1]; } } @@ -108,71 +108,71 @@ }; }); - afterEach(function (done) { - $.getJSON(uploadURL).then(function (result) { + afterEach(function(done) { + $.getJSON(uploadURL).then(function(result) { deleteFiles(result.files, done); }); }); - describe('Initialization', function () { + describe('Initialization', function() { var form; - beforeEach(function () { + beforeEach(function() { form = createFileuploadForm(); }); - afterEach(function () { + afterEach(function() { form.remove(); }); - it('widget', function () { + it('widget', function() { form.fileupload(); expect(form.data('blueimp-fileupload')).to.be.an('object'); }); - it('file input', function () { + it('file input', function() { form.fileupload(); expect(form.fileupload('option', 'fileInput').length).to.equal(1); }); - it('drop zone', function () { + it('drop zone', function() { form.fileupload(); expect(form.fileupload('option', 'dropZone').length).to.equal(1); }); - it('paste zone', function () { + it('paste zone', function() { form.fileupload({ pasteZone: document }); expect(form.fileupload('option', 'pasteZone').length).to.equal(1); }); - it('data attributes', function () { + it('data attributes', function() { form.attr('data-url', 'https://example.org'); form.fileupload(); expect(form.fileupload('option', 'url')).to.equal('https://example.org'); expect(form.data('blueimp-fileupload')).to.be.an('object'); }); - it('event listeners', function () { + it('event listeners', function() { var eventsData = {}; form.fileupload({ autoUpload: false, pasteZone: document, - dragover: function () { + dragover: function() { eventsData.dragover = true; }, - dragenter: function () { + dragenter: function() { eventsData.dragenter = true; }, - dragleave: function () { + dragleave: function() { eventsData.dragleave = true; }, - drop: function (e, data) { + drop: function(e, data) { eventsData.drop = data; }, - paste: function (e, data) { + paste: function(e, data) { eventsData.paste = data; }, - change: function () { + change: function() { eventsData.change = true; } }); @@ -197,40 +197,40 @@ }); }); - describe('API', function () { + describe('API', function() { var form; - beforeEach(function () { + beforeEach(function() { form = createFileuploadForm().fileupload({ dataType: 'json', autoUpload: false }); }); - afterEach(function () { + afterEach(function() { form.remove(); }); - it('destroy', function () { + it('destroy', function() { var eventsData = {}; form.fileupload('option', { pasteZone: document, - dragover: function () { + dragover: function() { eventsData.dragover = true; }, - dragenter: function () { + dragenter: function() { eventsData.dragenter = true; }, - dragleave: function () { + dragleave: function() { eventsData.dragleave = true; }, - drop: function (e, data) { + drop: function(e, data) { eventsData.drop = data; }, - paste: function (e, data) { + paste: function(e, data) { eventsData.paste = data; }, - change: function () { + change: function() { eventsData.change = true; } }); @@ -254,26 +254,26 @@ expect(eventsData.paste).to.equal(); }); - it('disable', function () { + it('disable', function() { var eventsData = {}; form.fileupload('option', { pasteZone: document, - dragover: function () { + dragover: function() { eventsData.dragover = true; }, - dragenter: function () { + dragenter: function() { eventsData.dragenter = true; }, - dragleave: function () { + dragleave: function() { eventsData.dragleave = true; }, - drop: function (e, data) { + drop: function(e, data) { eventsData.drop = data; }, - paste: function (e, data) { + paste: function(e, data) { eventsData.paste = data; }, - change: function () { + change: function() { eventsData.change = true; } }); @@ -298,26 +298,26 @@ expect(eventsData.paste).to.equal(); }); - it('enable', function () { + it('enable', function() { var eventsData = {}; form.fileupload('option', { pasteZone: document, - dragover: function () { + dragover: function() { eventsData.dragover = true; }, - dragenter: function () { + dragenter: function() { eventsData.dragenter = true; }, - dragleave: function () { + dragleave: function() { eventsData.dragleave = true; }, - drop: function (e, data) { + drop: function(e, data) { eventsData.drop = data; }, - paste: function (e, data) { + paste: function(e, data) { eventsData.paste = data; }, - change: function () { + change: function() { eventsData.change = true; } }); @@ -343,9 +343,9 @@ expect(eventsData.paste.files).to.deep.equal(files); }); - it('option', function () { + it('option', function() { var eventsData = {}; - form.fileupload('option', 'drop', function (e, data) { + form.fileupload('option', 'drop', function(e, data) { eventsData.drop = data; }); var dropZone = form @@ -363,9 +363,9 @@ expect(eventsData.drop.files).to.deep.equal(files); }); - it('add', function () { + it('add', function() { var eventData = []; - form.fileupload('option', 'add', function (e, data) { + form.fileupload('option', 'add', function(e, data) { eventData.push(data); }); form.fileupload('add', { files: files }); @@ -374,9 +374,9 @@ expect(eventData[1].files[0]).to.equal(files[1]); }); - it('send', function (done) { + it('send', function(done) { this.slow(200); - form.fileupload('send', { files: files }).complete(function (result) { + form.fileupload('send', { files: files }).complete(function(result) { var uploadedFiles = result.responseJSON.files; expect(uploadedFiles.length).to.equal(2); expect(uploadedFiles[0].type).to.equal(files[0].type); @@ -388,20 +388,20 @@ }); }); - describe('Callbacks', function () { + describe('Callbacks', function() { var form; - beforeEach(function () { + beforeEach(function() { form = createFileuploadForm().fileupload({ dataType: 'json' }); }); - afterEach(function () { + afterEach(function() { form.remove(); }); - it('add', function () { + it('add', function() { var eventData = []; - form.fileupload('option', 'add', function (e, data) { + form.fileupload('option', 'add', function(e, data) { eventData.push(data); }); form.fileupload('add', { files: files }); @@ -410,14 +410,14 @@ expect(eventData[1].files[0]).to.equal(files[1]); }); - it('submit', function (done) { + it('submit', function(done) { this.slow(200); var eventData = []; form.fileupload('option', { - submit: function (e, data) { + submit: function(e, data) { eventData.push(data); }, - stop: function () { + stop: function() { if (eventData.length < 2) return; expect(eventData[0].files[0]).to.equal(files[0]); expect(eventData[1].files[0]).to.equal(files[1]); @@ -427,14 +427,14 @@ form.fileupload('add', { files: files }); }); - it('send', function (done) { + it('send', function(done) { this.slow(200); var eventData = []; form.fileupload('option', { - send: function (e, data) { + send: function(e, data) { eventData.push(data); }, - stop: function () { + stop: function() { expect(eventData.length).to.equal(1); expect(eventData[0].files).to.deep.equal(files); done(); @@ -443,14 +443,14 @@ form.fileupload('send', { files: files }); }); - it('done', function (done) { + it('done', function(done) { this.slow(200); var eventData = []; form.fileupload('option', { - done: function (e, data) { + done: function(e, data) { eventData.push(data); }, - stop: function () { + stop: function() { if (eventData.length < 2) return; expect(eventData[0].result.files.length).to.equal(1); expect(eventData[1].result.files.length).to.equal(1); @@ -460,15 +460,15 @@ form.fileupload('add', { files: files }); }); - it('fail', function (done) { + it('fail', function(done) { this.slow(200); var eventData = []; form.fileupload('option', { url: uploadURL + '404', - fail: function (e, data) { + fail: function(e, data) { eventData.push(data); }, - stop: function () { + stop: function() { if (eventData.length < 2) return; expect(eventData[0].result).to.equal(); expect(eventData[1].result).to.equal(); @@ -478,14 +478,14 @@ form.fileupload('add', { files: files }); }); - it('always', function (done) { + it('always', function(done) { this.slow(200); var eventData = []; form.fileupload('option', { - always: function (e, data) { + always: function(e, data) { eventData.push(data); }, - stop: function () { + stop: function() { if (eventData.length < 2) { expect(eventData[0].result).to.equal(); form.fileupload('add', { files: [fileGIF] }); @@ -498,17 +498,17 @@ form.fileupload('add', { files: [fileGIF], url: uploadURL + '404' }); }); - it('progress', function (done) { + it('progress', function(done) { this.slow(200); var loaded; var total; form.fileupload('option', { - progress: function (e, data) { + progress: function(e, data) { loaded = data.loaded; total = data.total; expect(loaded).to.be.at.most(total); }, - stop: function () { + stop: function() { expect(loaded).to.equal(total); done(); } @@ -516,21 +516,21 @@ form.fileupload('add', { files: [fileGIF] }); }); - it('progressall', function (done) { + it('progressall', function(done) { this.slow(200); var loaded; var total; var completed = 0; form.fileupload('option', { - progressall: function (e, data) { + progressall: function(e, data) { loaded = data.loaded; total = data.total; expect(loaded).to.be.at.most(total); }, - always: function () { + always: function() { completed++; }, - stop: function () { + stop: function() { if (completed < 2) return; expect(loaded).to.equal(total); done(); @@ -539,14 +539,14 @@ form.fileupload('add', { files: files }); }); - it('start', function (done) { + it('start', function(done) { this.slow(200); var started; form.fileupload('option', { - start: function () { + start: function() { started = true; }, - stop: function () { + stop: function() { expect(started).to.equal(true); done(); } @@ -554,21 +554,21 @@ form.fileupload('add', { files: [fileGIF] }); }); - it('stop', function (done) { + it('stop', function(done) { this.slow(200); form.fileupload('option', { - stop: function () { + stop: function() { done(); } }); form.fileupload('add', { files: [fileGIF] }); }); - it('dragover', function () { + it('dragover', function() { var eventsData = {}; form.fileupload('option', { autoUpload: false, - dragover: function () { + dragover: function() { eventsData.dragover = true; } }); @@ -578,11 +578,11 @@ expect(eventsData.dragover).to.equal(true); }); - it('dragenter', function () { + it('dragenter', function() { var eventsData = {}; form.fileupload('option', { autoUpload: false, - dragenter: function () { + dragenter: function() { eventsData.dragenter = true; } }); @@ -592,11 +592,11 @@ expect(eventsData.dragenter).to.equal(true); }); - it('dragleave', function () { + it('dragleave', function() { var eventsData = {}; form.fileupload('option', { autoUpload: false, - dragleave: function () { + dragleave: function() { eventsData.dragleave = true; } }); @@ -606,11 +606,11 @@ expect(eventsData.dragleave).to.equal(true); }); - it('drop', function () { + it('drop', function() { var eventsData = {}; form.fileupload('option', { autoUpload: false, - drop: function (e, data) { + drop: function(e, data) { eventsData.drop = data; } }); @@ -620,12 +620,12 @@ expect(eventsData.drop.files).to.deep.equal(files); }); - it('paste', function () { + it('paste', function() { var eventsData = {}; form.fileupload('option', { autoUpload: false, pasteZone: document, - paste: function (e, data) { + paste: function(e, data) { eventsData.paste = data; } }); @@ -635,11 +635,11 @@ expect(eventsData.paste.files).to.deep.equal(files); }); - it('change', function () { + it('change', function() { var eventsData = {}; form.fileupload('option', { autoUpload: false, - change: function () { + change: function() { eventsData.change = true; } }); @@ -650,20 +650,20 @@ }); }); - describe('Options', function () { + describe('Options', function() { var form; - beforeEach(function () { + beforeEach(function() { form = createFileuploadForm(); }); - afterEach(function () { + afterEach(function() { form.remove(); }); - it('paramName', function (done) { + it('paramName', function(done) { form.fileupload({ - send: function (e, data) { + send: function(e, data) { expect(data.paramName[0]).to.equal( form.fileupload('option', 'fileInput').prop('name') ); @@ -674,9 +674,9 @@ form.fileupload('add', { files: [fileGIF] }); }); - it('url', function (done) { + it('url', function(done) { form.fileupload({ - send: function (e, data) { + send: function(e, data) { expect(data.url).to.equal(form.prop('action')); done(); return false; @@ -685,10 +685,10 @@ form.fileupload('add', { files: [fileGIF] }); }); - it('type', function (done) { + it('type', function(done) { form.fileupload({ type: 'PUT', - send: function (e, data) { + send: function(e, data) { expect(data.type).to.equal('PUT'); done(); return false; @@ -697,7 +697,7 @@ form.fileupload('add', { files: [fileGIF] }); }); - it('replaceFileInput', function () { + it('replaceFileInput', function() { form.fileupload(); var fileInput = form.fileupload('option', 'fileInput'); fileInput.trigger($.Event('change', eventObject)); @@ -710,10 +710,10 @@ expect(form.fileupload('option', 'fileInput')[0]).to.equal(fileInput[0]); }); - it('forceIframeTransport', function (done) { + it('forceIframeTransport', function(done) { form.fileupload({ forceIframeTransport: 'PUT', - send: function (e, data) { + send: function(e, data) { expect(data.dataType.substr(0, 6)).to.equal('iframe'); done(); return false; @@ -722,10 +722,10 @@ form.fileupload('add', { files: [fileGIF] }); }); - it('singleFileUploads', function (done) { + it('singleFileUploads', function(done) { form.fileupload({ singleFileUploads: false, - send: function (e, data) { + send: function(e, data) { expect(data.files).to.deep.equal(files); done(); return false; @@ -734,12 +734,12 @@ form.fileupload('add', { files: files }); }); - it('limitMultiFileUploads', function (done) { + it('limitMultiFileUploads', function(done) { var completed = 0; form.fileupload({ singleFileUploads: false, limitMultiFileUploads: 2, - send: function (e, data) { + send: function(e, data) { expect(data.files).to.deep.equal(files); completed++; if (completed < 2) return; @@ -750,13 +750,13 @@ form.fileupload('add', { files: files.concat(files) }); }); - it('limitMultiFileUploadSize', function (done) { + it('limitMultiFileUploadSize', function(done) { var completed = 0; form.fileupload({ singleFileUploads: false, limitMultiFileUploadSize: files[0].size + files[1].size, limitMultiFileUploadSizeOverhead: 0, - send: function (e, data) { + send: function(e, data) { expect(data.files).to.deep.equal(files); completed++; if (completed < 2) return; @@ -767,21 +767,21 @@ form.fileupload('add', { files: files.concat(files) }); }); - it('sequentialUploads', function (done) { + it('sequentialUploads', function(done) { this.slow(400); var completed = 0; var events = []; form.fileupload({ sequentialUploads: true, dataType: 'json', - send: function () { + send: function() { events.push('send'); }, - always: function () { + always: function() { events.push('complete'); completed++; }, - stop: function () { + stop: function() { if (completed === 4) { expect(events.join(',')).to.equal( [ @@ -802,36 +802,39 @@ form.fileupload('add', { files: files.concat(files) }); }); - it('limitConcurrentUploads', function (done) { + it('limitConcurrentUploads', function(done) { this.slow(800); var completed = 0; var loadCount = 0; form.fileupload({ limitConcurrentUploads: 2, dataType: 'json', - send: function () { + send: function() { loadCount++; expect(loadCount).to.be.at.most(2); }, - always: function () { + always: function() { completed++; loadCount--; }, - stop: function () { + stop: function() { if (completed === 8) { done(); } } }); form.fileupload('add', { - files: files.concat(files).concat(files).concat(files) + files: files + .concat(files) + .concat(files) + .concat(files) }); }); - it('multipart', function (done) { + it('multipart', function(done) { form.fileupload({ multipart: false, - send: function (e, data) { + send: function(e, data) { expect(data.contentType).to.equal(fileGIF.type); expect(data.headers['Content-Disposition']).to.equal( 'attachment; filename="' + fileGIF.name + '"' @@ -843,10 +846,10 @@ form.fileupload('add', { files: [fileGIF] }); }); - it('uniqueFilenames', function (done) { + it('uniqueFilenames', function(done) { form.fileupload({ uniqueFilenames: {}, - send: function (e, data) { + send: function(e, data) { var formFiles = data.data.getAll('files[]'); expect(formFiles[0].name).to.equal(fileGIF.name); expect(formFiles[1].name).to.equal( @@ -862,27 +865,27 @@ form.fileupload('send', { files: [fileGIF, fileGIF, fileGIF] }); }); - it('maxChunkSize', function (done) { + it('maxChunkSize', function(done) { this.slow(400); var events = []; form.fileupload({ maxChunkSize: 32, dataType: 'json', - chunkbeforesend: function () { + chunkbeforesend: function() { events.push('chunkbeforesend'); }, - chunksend: function () { + chunksend: function() { events.push('chunksend'); }, - chunkdone: function () { + chunkdone: function() { events.push('chunkdone'); }, - done: function (e, data) { + done: function(e, data) { var uploadedFile = data.result.files[0]; expect(uploadedFile.type).to.equal(fileGIF.type); expect(uploadedFile.size).to.equal(fileGIF.size); }, - stop: function () { + stop: function() { expect(events.join(',')).to.equal( [ 'chunkbeforesend', @@ -905,15 +908,15 @@ form.fileupload('send', { files: [fileGIF] }); }); - it('acceptFileTypes', function (done) { + it('acceptFileTypes', function(done) { var processData; form.fileupload({ acceptFileTypes: /^image\/gif$/, singleFileUploads: false, - processalways: function (e, data) { + processalways: function(e, data) { processData = data; }, - processstop: function () { + processstop: function() { expect(processData.files[0].error).to.equal(); expect(processData.files[1].error).to.equal( form.fileupload('option').i18n('acceptFileTypes') @@ -924,15 +927,15 @@ form.fileupload('add', { files: files }); }); - it('maxFileSize', function (done) { + it('maxFileSize', function(done) { var processData; form.fileupload({ maxFileSize: 200, singleFileUploads: false, - processalways: function (e, data) { + processalways: function(e, data) { processData = data; }, - processstop: function () { + processstop: function() { expect(processData.files[0].error).to.equal(); expect(processData.files[1].error).to.equal( form.fileupload('option').i18n('maxFileSize') @@ -943,15 +946,15 @@ form.fileupload('add', { files: files }); }); - it('minFileSize', function (done) { + it('minFileSize', function(done) { var processData; form.fileupload({ minFileSize: 200, singleFileUploads: false, - processalways: function (e, data) { + processalways: function(e, data) { processData = data; }, - processstop: function () { + processstop: function() { expect(processData.files[0].error).to.equal( form.fileupload('option').i18n('minFileSize') ); @@ -962,18 +965,18 @@ form.fileupload('add', { files: files }); }); - it('maxNumberOfFiles', function (done) { + it('maxNumberOfFiles', function(done) { var processData; form.fileupload({ maxNumberOfFiles: 2, - getNumberOfFiles: function () { + getNumberOfFiles: function() { return 2; }, singleFileUploads: false, - processalways: function (e, data) { + processalways: function(e, data) { processData = data; }, - processstop: function () { + processstop: function() { expect(processData.files[0].error).to.equal( form.fileupload('option').i18n('maxNumberOfFiles') ); diff --git a/vendor/blueimp/jquery-file-upload/test/vendor/mocha.css b/vendor/blueimp/jquery-file-upload/test/vendor/mocha.css index 4ca8fcb89..ec96b003c 100644 --- a/vendor/blueimp/jquery-file-upload/test/vendor/mocha.css +++ b/vendor/blueimp/jquery-file-upload/test/vendor/mocha.css @@ -139,6 +139,7 @@ body { #mocha .test .html-error { overflow: auto; color: black; + line-height: 1.5; display: block; float: left; clear: left; diff --git a/vendor/blueimp/jquery-file-upload/test/vendor/mocha.js b/vendor/blueimp/jquery-file-upload/test/vendor/mocha.js index 5be2b9eef..508a306db 100644 --- a/vendor/blueimp/jquery-file-upload/test/vendor/mocha.js +++ b/vendor/blueimp/jquery-file-upload/test/vendor/mocha.js @@ -62,7 +62,7 @@ process.on = function(e, fn) { if (e === 'uncaughtException') { global.onerror = function(err, url, line) { fn(new Error(err + ' (' + url + ':' + line + ')')); - return !mocha.options.allowUncaught; + return !mocha.allowUncaught; }; uncaughtExceptionHandlers.push(fn); } @@ -131,7 +131,7 @@ mocha.setup = function(opts) { opts = {ui: opts}; } for (var opt in opts) { - if (Object.prototype.hasOwnProperty.call(opts, opt)) { + if (opts.hasOwnProperty(opt)) { this[opt](opts[opt]); } } @@ -1408,7 +1408,6 @@ var utils = require('./utils'); var mocharc = require('./mocharc.json'); var errors = require('./errors'); var Suite = require('./suite'); -var esmUtils = utils.supportsEsModules() ? require('./esm-utils') : undefined; var createStatsCollector = require('./stats-collector'); var createInvalidReporterError = errors.createInvalidReporterError; var createInvalidInterfaceError = errors.createInvalidInterfaceError; @@ -1464,26 +1463,28 @@ exports.Test = require('./test'); * @param {boolean} [options.allowUncaught] - Propagate uncaught errors? * @param {boolean} [options.asyncOnly] - Force `done` callback or promise? * @param {boolean} [options.bail] - Bail after first test failure? - * @param {boolean} [options.checkLeaks] - Check for global variable leaks? - * @param {boolean} [options.color] - Color TTY output from reporter? + * @param {boolean} [options.checkLeaks] - If true, check leaks. * @param {boolean} [options.delay] - Delay root suite execution? - * @param {boolean} [options.diff] - Show diff on failure? + * @param {boolean} [options.enableTimeouts] - Enable timeouts? * @param {string} [options.fgrep] - Test filter given string. * @param {boolean} [options.forbidOnly] - Tests marked `only` fail the suite? * @param {boolean} [options.forbidPending] - Pending tests fail the suite? - * @param {boolean} [options.fullTrace] - Full stacktrace upon failure? + * @param {boolean} [options.fullStackTrace] - Full stacktrace upon failure? * @param {string[]} [options.global] - Variables expected in global scope. * @param {RegExp|string} [options.grep] - Test filter given regular expression. * @param {boolean} [options.growl] - Enable desktop notifications? - * @param {boolean} [options.inlineDiffs] - Display inline diffs? + * @param {boolean} [options.hideDiff] - Suppress diffs from failures? + * @param {boolean} [options.ignoreLeaks] - Ignore global leaks? * @param {boolean} [options.invert] - Invert test filter matches? * @param {boolean} [options.noHighlighting] - Disable syntax highlighting? - * @param {string|constructor} [options.reporter] - Reporter name or constructor. + * @param {string} [options.reporter] - Reporter name. * @param {Object} [options.reporterOption] - Reporter settings object. * @param {number} [options.retries] - Number of times to retry failed tests. * @param {number} [options.slow] - Slow threshold value. * @param {number|string} [options.timeout] - Timeout threshold value. * @param {string} [options.ui] - Interface name. + * @param {boolean} [options.color] - Color TTY output from reporter? + * @param {boolean} [options.useInlineDiffs] - Use inline diffs? */ function Mocha(options) { options = utils.assign({}, mocharc, options || {}); @@ -1492,15 +1493,31 @@ function Mocha(options) { // root suite this.suite = new exports.Suite('', new exports.Context(), true); + if ('useColors' in options) { + utils.deprecate( + 'useColors is DEPRECATED and will be removed from a future version of Mocha. Instead, use the "color" option' + ); + options.color = 'color' in options ? options.color : options.useColors; + } + this.grep(options.grep) .fgrep(options.fgrep) .ui(options.ui) - .reporter( - options.reporter, - options.reporterOption || options.reporterOptions // reporterOptions was previously the only way to specify options to reporter - ) + .bail(options.bail) + .reporter(options.reporter, options.reporterOptions) + .useColors(options.color) .slow(options.slow) - .global(options.global); + .useInlineDiffs(options.inlineDiffs) + .globals(options.globals); + + if ('enableTimeouts' in options) { + utils.deprecate( + 'enableTimeouts is DEPRECATED and will be removed from a future version of Mocha. Instead, use "timeout: false" to disable timeouts.' + ); + if (options.enableTimeouts === false) { + this.timeout(0); + } + } // this guard exists because Suite#timeout does not consider `undefined` to be valid input if (typeof options.timeout !== 'undefined') { @@ -1511,19 +1528,19 @@ function Mocha(options) { this.retries(options.retries); } + if ('diff' in options) { + this.hideDiff(!options.diff); + } + [ 'allowUncaught', 'asyncOnly', - 'bail', 'checkLeaks', - 'color', 'delay', - 'diff', 'forbidOnly', 'forbidPending', 'fullTrace', 'growl', - 'inlineDiffs', 'invert' ].forEach(function(opt) { if (options[opt]) { @@ -1536,13 +1553,16 @@ function Mocha(options) { * Enables or disables bailing on the first failure. * * @public - * @see [CLI option](../#-bail-b) + * @see {@link https://mochajs.org/#-b---bail|CLI option} * @param {boolean} [bail=true] - Whether to bail on first error. * @returns {Mocha} this * @chainable */ Mocha.prototype.bail = function(bail) { - this.suite.bail(bail !== false); + if (!arguments.length) { + bail = true; + } + this.suite.bail(bail); return this; }; @@ -1554,7 +1574,7 @@ Mocha.prototype.bail = function(bail) { * Useful for generic setup code that must be included within test suite. * * @public - * @see [CLI option](../#-file-filedirectoryglob) + * @see {@link https://mochajs.org/#--file-file|CLI option} * @param {string} file - Pathname of file to be loaded. * @returns {Mocha} this * @chainable @@ -1568,8 +1588,8 @@ Mocha.prototype.addFile = function(file) { * Sets reporter to `reporter`, defaults to "spec". * * @public - * @see [CLI option](../#-reporter-name-r-name) - * @see [Reporters](../#reporters) + * @see {@link https://mochajs.org/#-r---reporter-name|CLI option} + * @see {@link https://mochajs.org/#reporters|Reporters} * @param {String|Function} reporter - Reporter name or constructor. * @param {Object} [reporterOptions] - Options used to configure the reporter. * @returns {Mocha} this @@ -1627,8 +1647,6 @@ Mocha.prototype.reporter = function(reporter, reporterOptions) { } this._reporter = _reporter; } - this.options.reporterOption = reporterOptions; - // alias option name is used in public reporters xunit/tap/progress this.options.reporterOptions = reporterOptions; return this; }; @@ -1637,8 +1655,8 @@ Mocha.prototype.reporter = function(reporter, reporterOptions) { * Sets test UI `name`, defaults to "bdd". * * @public - * @see [CLI option](../#-ui-name-u-name) - * @see [Interface DSLs](../#interfaces) + * @see {@link https://mochajs.org/#-u---ui-name|CLI option} + * @see {@link https://mochajs.org/#interfaces|Interface DSLs} * @param {string|Function} [ui=bdd] - Interface name or class. * @returns {Mocha} this * @chainable @@ -1685,18 +1703,16 @@ Mocha.prototype.ui = function(ui) { }; /** - * Loads `files` prior to execution. Does not support ES Modules. + * Loads `files` prior to execution. * * @description * The implementation relies on Node's `require` to execute * the test interface functions and will be subject to its cache. - * Supports only CommonJS modules. To load ES modules, use Mocha#loadFilesAsync. * * @private * @see {@link Mocha#addFile} * @see {@link Mocha#run} * @see {@link Mocha#unloadFiles} - * @see {@link Mocha#loadFilesAsync} * @param {Function} [fn] - Callback invoked upon completion. */ Mocha.prototype.loadFiles = function(fn) { @@ -1712,49 +1728,6 @@ Mocha.prototype.loadFiles = function(fn) { }; /** - * Loads `files` prior to execution. Supports Node ES Modules. - * - * @description - * The implementation relies on Node's `require` and `import` to execute - * the test interface functions and will be subject to its cache. - * Supports both CJS and ESM modules. - * - * @public - * @see {@link Mocha#addFile} - * @see {@link Mocha#run} - * @see {@link Mocha#unloadFiles} - * @returns {Promise} - * @example - * - * // loads ESM (and CJS) test files asynchronously, then runs root suite - * mocha.loadFilesAsync() - * .then(() => mocha.run(failures => process.exitCode = failures ? 1 : 0)) - * .catch(() => process.exitCode = 1); - */ -Mocha.prototype.loadFilesAsync = function() { - var self = this; - var suite = this.suite; - this.loadAsync = true; - - if (!esmUtils) { - return new Promise(function(resolve) { - self.loadFiles(resolve); - }); - } - - return esmUtils.loadFilesAsync( - this.files, - function(file) { - suite.emit(EVENT_FILE_PRE_REQUIRE, global, file, self); - }, - function(file, resultModule) { - suite.emit(EVENT_FILE_REQUIRE, resultModule, file, self); - suite.emit(EVENT_FILE_POST_REQUIRE, global, file, self); - } - ); -}; - -/** * Removes a previously loaded file from Node's `require` cache. * * @private @@ -1770,13 +1743,14 @@ Mocha.unloadFile = function(file) { * Unloads `files` from Node's `require` cache. * * @description - * This allows required files to be "freshly" reloaded, providing the ability + * This allows files to be "freshly" reloaded, providing the ability * to reuse a Mocha instance programmatically. - * Note: does not clear ESM module files from the cache * * <strong>Intended for consumers — not used internally</strong> * * @public + * @see {@link Mocha.unloadFile} + * @see {@link Mocha#loadFiles} * @see {@link Mocha#run} * @returns {Mocha} this * @chainable @@ -1820,7 +1794,7 @@ Mocha.prototype.fgrep = function(str) { * <strong>Previous filter value will be overwritten on each call!</strong> * * @public - * @see [CLI option](../#-grep-regexp-g-regexp) + * @see {@link https://mochajs.org/#-g---grep-pattern|CLI option} * @see {@link Mocha#fgrep} * @see {@link Mocha#invert} * @param {RegExp|String} re - Regular expression used to select tests. @@ -1871,32 +1845,32 @@ Mocha.prototype.invert = function() { /** * Enables or disables ignoring global leaks. * - * @deprecated since v7.0.0 * @public * @see {@link Mocha#checkLeaks} - * @param {boolean} [ignoreLeaks=false] - Whether to ignore global leaks. + * @param {boolean} ignoreLeaks - Whether to ignore global leaks. * @return {Mocha} this * @chainable + * @example + * + * // Ignore global leaks + * mocha.ignoreLeaks(true); */ Mocha.prototype.ignoreLeaks = function(ignoreLeaks) { - utils.deprecate( - '"ignoreLeaks()" is DEPRECATED, please use "checkLeaks()" instead.' - ); - this.options.checkLeaks = !ignoreLeaks; + this.options.ignoreLeaks = Boolean(ignoreLeaks); return this; }; /** - * Enables or disables checking for global variables leaked while running tests. + * Enables checking for global variables leaked while running tests. * * @public - * @see [CLI option](../#-check-leaks) - * @param {boolean} [checkLeaks=true] - Whether to check for global variable leaks. + * @see {@link https://mochajs.org/#--check-leaks|CLI option} + * @see {@link Mocha#ignoreLeaks} * @return {Mocha} this * @chainable */ -Mocha.prototype.checkLeaks = function(checkLeaks) { - this.options.checkLeaks = checkLeaks !== false; +Mocha.prototype.checkLeaks = function() { + this.options.ignoreLeaks = false; return this; }; @@ -1904,13 +1878,11 @@ Mocha.prototype.checkLeaks = function(checkLeaks) { * Displays full stack trace upon test failure. * * @public - * @see [CLI option](../#-full-trace) - * @param {boolean} [fullTrace=true] - Whether to print full stacktrace upon failure. * @return {Mocha} this * @chainable */ -Mocha.prototype.fullTrace = function(fullTrace) { - this.options.fullTrace = fullTrace !== false; +Mocha.prototype.fullTrace = function() { + this.options.fullStackTrace = true; return this; }; @@ -1918,7 +1890,8 @@ Mocha.prototype.fullTrace = function(fullTrace) { * Enables desktop notification support if prerequisite software installed. * * @public - * @see [CLI option](../#-growl-g) + * @see {@link Mocha#isGrowlCapable} + * @see {@link Mocha#_growl} * @return {Mocha} this * @chainable */ @@ -1961,121 +1934,62 @@ Mocha.prototype._growl = growl.notify; * Specifies whitelist of variable names to be expected in global scope. * * @public - * @see [CLI option](../#-global-variable-name) + * @see {@link https://mochajs.org/#--globals-names|CLI option} * @see {@link Mocha#checkLeaks} - * @param {String[]|String} global - Accepted global variable name(s). + * @param {String[]|String} globals - Accepted global variable name(s). * @return {Mocha} this * @chainable * @example * * // Specify variables to be expected in global scope - * mocha.global(['jQuery', 'MyLib']); - */ -Mocha.prototype.global = function(global) { - this.options.global = (this.options.global || []) - .concat(global) - .filter(Boolean) - .filter(function(elt, idx, arr) { - return arr.indexOf(elt) === idx; - }); + * mocha.globals(['jQuery', 'MyLib']); + */ +Mocha.prototype.globals = function(globals) { + this.options.globals = (this.options.globals || []) + .concat(globals) + .filter(Boolean); return this; }; -// for backwards compability, 'globals' is an alias of 'global' -Mocha.prototype.globals = Mocha.prototype.global; /** * Enables or disables TTY color output by screen-oriented reporters. * - * @deprecated since v7.0.0 * @public - * @see {@link Mocha#color} * @param {boolean} colors - Whether to enable color output. * @return {Mocha} this * @chainable */ Mocha.prototype.useColors = function(colors) { - utils.deprecate('"useColors()" is DEPRECATED, please use "color()" instead.'); if (colors !== undefined) { - this.options.color = colors; + this.options.useColors = colors; } return this; }; /** - * Enables or disables TTY color output by screen-oriented reporters. - * - * @public - * @see [CLI option](../#-color-c-colors) - * @param {boolean} [color=true] - Whether to enable color output. - * @return {Mocha} this - * @chainable - */ -Mocha.prototype.color = function(color) { - this.options.color = color !== false; - return this; -}; - -/** * Determines if reporter should use inline diffs (rather than +/-) * in test failure output. * - * @deprecated since v7.0.0 * @public - * @see {@link Mocha#inlineDiffs} - * @param {boolean} [inlineDiffs=false] - Whether to use inline diffs. + * @param {boolean} inlineDiffs - Whether to use inline diffs. * @return {Mocha} this * @chainable */ Mocha.prototype.useInlineDiffs = function(inlineDiffs) { - utils.deprecate( - '"useInlineDiffs()" is DEPRECATED, please use "inlineDiffs()" instead.' - ); - this.options.inlineDiffs = inlineDiffs !== undefined && inlineDiffs; - return this; -}; - -/** - * Enables or disables reporter to use inline diffs (rather than +/-) - * in test failure output. - * - * @public - * @see [CLI option](../#-inline-diffs) - * @param {boolean} [inlineDiffs=true] - Whether to use inline diffs. - * @return {Mocha} this - * @chainable - */ -Mocha.prototype.inlineDiffs = function(inlineDiffs) { - this.options.inlineDiffs = inlineDiffs !== false; + this.options.useInlineDiffs = inlineDiffs !== undefined && inlineDiffs; return this; }; /** * Determines if reporter should include diffs in test failure output. * - * @deprecated since v7.0.0 * @public - * @see {@link Mocha#diff} - * @param {boolean} [hideDiff=false] - Whether to hide diffs. + * @param {boolean} hideDiff - Whether to hide diffs. * @return {Mocha} this * @chainable */ Mocha.prototype.hideDiff = function(hideDiff) { - utils.deprecate('"hideDiff()" is DEPRECATED, please use "diff()" instead.'); - this.options.diff = !(hideDiff === true); - return this; -}; - -/** - * Enables or disables reporter to include diff in test failure output. - * - * @public - * @see [CLI option](../#-diff) - * @param {boolean} [diff=true] - Whether to show diff on failure. - * @return {Mocha} this - * @chainable - */ -Mocha.prototype.diff = function(diff) { - this.options.diff = diff !== false; + this.options.hideDiff = hideDiff !== undefined && hideDiff; return this; }; @@ -2088,8 +2002,9 @@ Mocha.prototype.diff = function(diff) { * If the value is `0`, timeouts will be disabled. * * @public - * @see [CLI option](../#-timeout-ms-t-ms) - * @see [Timeouts](../#timeouts) + * @see {@link https://mochajs.org/#-t---timeout-ms|CLI option} + * @see {@link https://mochajs.org/#--no-timeouts|CLI option} + * @see {@link https://mochajs.org/#timeouts|Timeouts} * @see {@link Mocha#enableTimeouts} * @param {number|string} msecs - Timeout threshold value. * @return {Mocha} this @@ -2112,8 +2027,7 @@ Mocha.prototype.timeout = function(msecs) { * Sets the number of times to retry failed tests. * * @public - * @see [CLI option](../#-retries-n) - * @see [Retry Tests](../#retry-tests) + * @see {@link https://mochajs.org/#retry-tests|Retry Tests} * @param {number} retry - Number of times to retry failed tests. * @return {Mocha} this * @chainable @@ -2131,7 +2045,7 @@ Mocha.prototype.retries = function(n) { * Sets slowness threshold value. * * @public - * @see [CLI option](../#-slow-ms-s-ms) + * @see {@link https://mochajs.org/#-s---slow-ms|CLI option} * @param {number} msecs - Slowness threshold value. * @return {Mocha} this * @chainable @@ -2153,7 +2067,8 @@ Mocha.prototype.slow = function(msecs) { * Enables or disables timeouts. * * @public - * @see [CLI option](../#-timeout-ms-t-ms) + * @see {@link https://mochajs.org/#-t---timeout-ms|CLI option} + * @see {@link https://mochajs.org/#--no-timeouts|CLI option} * @param {boolean} enableTimeouts - Whether to enable timeouts. * @return {Mocha} this * @chainable @@ -2169,13 +2084,11 @@ Mocha.prototype.enableTimeouts = function(enableTimeouts) { * Forces all tests to either accept a `done` callback or return a promise. * * @public - * @see [CLI option](../#-async-only-a) - * @param {boolean} [asyncOnly=true] - Wether to force `done` callback or promise. * @return {Mocha} this * @chainable */ -Mocha.prototype.asyncOnly = function(asyncOnly) { - this.options.asyncOnly = asyncOnly !== false; +Mocha.prototype.asyncOnly = function() { + this.options.asyncOnly = true; return this; }; @@ -2192,16 +2105,14 @@ Mocha.prototype.noHighlighting = function() { }; /** - * Enables or disables uncaught errors to propagate. + * Enables uncaught errors to propagate (in browser). * * @public - * @see [CLI option](../#-allow-uncaught) - * @param {boolean} [allowUncaught=true] - Whether to propagate uncaught errors. * @return {Mocha} this * @chainable */ -Mocha.prototype.allowUncaught = function(allowUncaught) { - this.options.allowUncaught = allowUncaught !== false; +Mocha.prototype.allowUncaught = function() { + this.options.allowUncaught = true; return this; }; @@ -2213,7 +2124,7 @@ Mocha.prototype.allowUncaught = function(allowUncaught) { * Used to perform asynch operations before any suites are run. * * @public - * @see [delayed root suite](../#delayed-root-suite) + * @see {@link https://mochajs.org/#delayed-root-suite|delayed root suite} * @returns {Mocha} this * @chainable */ @@ -2226,13 +2137,11 @@ Mocha.prototype.delay = function delay() { * Causes tests marked `only` to fail the suite. * * @public - * @see [CLI option](../#-forbid-only) - * @param {boolean} [forbidOnly=true] - Whether tests marked `only` fail the suite. * @returns {Mocha} this * @chainable */ -Mocha.prototype.forbidOnly = function(forbidOnly) { - this.options.forbidOnly = forbidOnly !== false; +Mocha.prototype.forbidOnly = function() { + this.options.forbidOnly = true; return this; }; @@ -2240,13 +2149,11 @@ Mocha.prototype.forbidOnly = function(forbidOnly) { * Causes pending tests and tests marked `skip` to fail the suite. * * @public - * @see [CLI option](../#-forbid-pending) - * @param {boolean} [forbidPending=true] - Whether pending tests fail the suite. * @returns {Mocha} this * @chainable */ -Mocha.prototype.forbidPending = function(forbidPending) { - this.options.forbidPending = forbidPending !== false; +Mocha.prototype.forbidPending = function() { + this.options.forbidPending = true; return this; }; @@ -2280,17 +2187,14 @@ Object.defineProperty(Mocha.prototype, 'version', { * the cache first! * * @public + * @see {@link Mocha#loadFiles} * @see {@link Mocha#unloadFiles} * @see {@link Runner#run} * @param {DoneCB} [fn] - Callback invoked when test execution completed. - * @returns {Runner} runner instance - * @example - * - * // exit with non-zero status if there were test failures - * mocha.run(failures => process.exitCode = failures ? 1 : 0); + * @return {Runner} runner instance */ Mocha.prototype.run = function(fn) { - if (this.files.length && !this.loadAsync) { + if (this.files.length) { this.loadFiles(); } var suite = this.suite; @@ -2299,8 +2203,8 @@ Mocha.prototype.run = function(fn) { var runner = new exports.Runner(suite, options.delay); createStatsCollector(runner); var reporter = new this._reporter(runner, options); - runner.checkLeaks = options.checkLeaks === true; - runner.fullStackTrace = options.fullTrace; + runner.ignoreLeaks = options.ignoreLeaks !== false; + runner.fullStackTrace = options.fullStackTrace; runner.asyncOnly = options.asyncOnly; runner.allowUncaught = options.allowUncaught; runner.forbidOnly = options.forbidOnly; @@ -2308,17 +2212,17 @@ Mocha.prototype.run = function(fn) { if (options.grep) { runner.grep(options.grep, options.invert); } - if (options.global) { - runner.globals(options.global); + if (options.globals) { + runner.globals(options.globals); } if (options.growl) { this._growl(runner); } - if (options.color !== undefined) { - exports.reporters.Base.useColors = options.color; + if (options.useColors !== undefined) { + exports.reporters.Base.useColors = options.useColors; } - exports.reporters.Base.inlineDiffs = options.inlineDiffs; - exports.reporters.Base.hideDiff = !options.diff; + exports.reporters.Base.inlineDiffs = options.useInlineDiffs; + exports.reporters.Base.hideDiff = options.hideDiff; function done(failures) { fn = fn || utils.noop; @@ -2333,17 +2237,16 @@ Mocha.prototype.run = function(fn) { }; }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"../package.json":90,"./context":5,"./errors":6,"./esm-utils":42,"./growl":2,"./hook":7,"./interfaces":11,"./mocharc.json":15,"./reporters":21,"./runnable":33,"./runner":34,"./stats-collector":35,"./suite":36,"./test":37,"./utils":38,"_process":69,"escape-string-regexp":49,"path":42}],15:[function(require,module,exports){ +},{"../package.json":90,"./context":5,"./errors":6,"./growl":2,"./hook":7,"./interfaces":11,"./mocharc.json":15,"./reporters":21,"./runnable":33,"./runner":34,"./stats-collector":35,"./suite":36,"./test":37,"./utils":38,"_process":69,"escape-string-regexp":49,"path":42}],15:[function(require,module,exports){ module.exports={ "diff": true, - "extension": ["js", "cjs", "mjs"], + "extension": ["js"], "opts": "./test/mocha.opts", "package": "./package.json", "reporter": "spec", "slow": 75, "timeout": 2000, - "ui": "bdd", - "watch-ignore": ["node_modules", ".git"] + "ui": "bdd" } },{}],16:[function(require,module,exports){ @@ -2389,12 +2292,7 @@ exports = module.exports = Base; * Check if both stdio streams are associated with a tty. */ -var isatty = process.stdout.isTTY && process.stderr.isTTY; - -/** - * Save log references to avoid tests interfering (see GH-3604). - */ -var consoleLog = console.log; +var isatty = tty.isatty(1) && tty.isatty(2); /** * Enable coloring by default, except in the browser interface. @@ -2518,14 +2416,14 @@ exports.cursor = { } }; -var showDiff = (exports.showDiff = function(err) { +function showDiff(err) { return ( err && err.showDiff !== false && sameType(err.actual, err.expected) && err.expected !== undefined ); -}); +} function stringifyDiffObjs(err) { if (!utils.isString(err.actual) || !utils.isString(err.expected)) { @@ -2546,19 +2444,9 @@ function stringifyDiffObjs(err) { * @return {string} Diff */ var generateDiff = (exports.generateDiff = function(actual, expected) { - try { - return exports.inlineDiffs - ? inlineDiff(actual, expected) - : unifiedDiff(actual, expected); - } catch (err) { - var msg = - '\n ' + - color('diff added', '+ expected') + - ' ' + - color('diff removed', '- actual: failed to generate Mocha diff') + - '\n'; - return msg; - } + return exports.inlineDiffs + ? inlineDiff(actual, expected) + : unifiedDiff(actual, expected); }); /** @@ -2571,8 +2459,7 @@ var generateDiff = (exports.generateDiff = function(actual, expected) { * Error property */ exports.list = function(failures) { - var multipleErr, multipleTest; - Base.consoleLog(); + console.log(); failures.forEach(function(test, i) { // format var fmt = @@ -2582,16 +2469,7 @@ exports.list = function(failures) { // msg var msg; - var err; - if (test.err && test.err.multiple) { - if (multipleTest !== test) { - multipleTest = test; - multipleErr = [test.err].concat(test.err.multiple); - } - err = multipleErr.shift(); - } else { - err = test.err; - } + var err = test.err; var message; if (err.message && typeof err.message.toString === 'function') { message = err.message + ''; @@ -2642,7 +2520,7 @@ exports.list = function(failures) { testTitle += str; }); - Base.consoleLog(fmt, i + 1, testTitle, msg, stack); + console.log(fmt, i + 1, testTitle, msg, stack); }); }; @@ -2682,12 +2560,7 @@ function Base(runner, options) { if (showDiff(err)) { stringifyDiffObjs(err); } - // more than one error per test - if (test.err && err instanceof Error) { - test.err.multiple = (test.err.multiple || []).concat(err); - } else { - test.err = err; - } + test.err = err; failures.push(test); }); } @@ -2696,13 +2569,13 @@ function Base(runner, options) { * Outputs common epilogue used by many of the bundled reporters. * * @public - * @memberof Mocha.reporters + * @memberof Mocha.reporters.Base */ Base.prototype.epilogue = function() { var stats = this.stats; var fmt; - Base.consoleLog(); + console.log(); // passes fmt = @@ -2710,26 +2583,26 @@ Base.prototype.epilogue = function() { color('green', ' %d passing') + color('light', ' (%s)'); - Base.consoleLog(fmt, stats.passes || 0, milliseconds(stats.duration)); + console.log(fmt, stats.passes || 0, milliseconds(stats.duration)); // pending if (stats.pending) { fmt = color('pending', ' ') + color('pending', ' %d pending'); - Base.consoleLog(fmt, stats.pending); + console.log(fmt, stats.pending); } // failures if (stats.failures) { fmt = color('fail', ' %d failing'); - Base.consoleLog(fmt, stats.failures); + console.log(fmt, stats.failures); Base.list(this.failures); - Base.consoleLog(); + console.log(); } - Base.consoleLog(); + console.log(); }; /** @@ -2882,8 +2755,6 @@ function sameType(a, b) { return objToString.call(a) === objToString.call(b); } -Base.consoleLog = consoleLog; - Base.abstract = true; }).call(this,require('_process')) @@ -2934,45 +2805,41 @@ function Doc(runner, options) { return; } ++indents; - Base.consoleLog('%s<section class="suite">', indent()); + console.log('%s<section class="suite">', indent()); ++indents; - Base.consoleLog('%s<h1>%s</h1>', indent(), utils.escape(suite.title)); - Base.consoleLog('%s<dl>', indent()); + console.log('%s<h1>%s</h1>', indent(), utils.escape(suite.title)); + console.log('%s<dl>', indent()); }); runner.on(EVENT_SUITE_END, function(suite) { if (suite.root) { return; } - Base.consoleLog('%s</dl>', indent()); + console.log('%s</dl>', indent()); --indents; - Base.consoleLog('%s</section>', indent()); + console.log('%s</section>', indent()); --indents; }); runner.on(EVENT_TEST_PASS, function(test) { - Base.consoleLog('%s <dt>%s</dt>', indent(), utils.escape(test.title)); + console.log('%s <dt>%s</dt>', indent(), utils.escape(test.title)); var code = utils.escape(utils.clean(test.body)); - Base.consoleLog('%s <dd><pre><code>%s</code></pre></dd>', indent(), code); + console.log('%s <dd><pre><code>%s</code></pre></dd>', indent(), code); }); runner.on(EVENT_TEST_FAIL, function(test, err) { - Base.consoleLog( + console.log( '%s <dt class="error">%s</dt>', indent(), utils.escape(test.title) ); var code = utils.escape(utils.clean(test.body)); - Base.consoleLog( + console.log( '%s <dd class="error"><pre><code>%s</code></pre></dd>', indent(), code ); - Base.consoleLog( - '%s <dd class="error">%s</dd>', - indent(), - utils.escape(err) - ); + console.log('%s <dd class="error">%s</dd>', indent(), utils.escape(err)); }); } @@ -3050,7 +2917,7 @@ function Dot(runner, options) { }); runner.once(EVENT_RUN_END, function() { - process.stdout.write('\n'); + console.log(); self.epilogue(); }); } @@ -3424,8 +3291,8 @@ function hideSuitesWithout(classname) { */ function unhide() { var els = document.getElementsByClassName('suite hidden'); - while (els.length > 0) { - els[0].className = els[0].className.replace('suite hidden', 'suite'); + for (var i = 0; i < els.length; ++i) { + els[i].className = els[i].className.replace('suite hidden', 'suite'); } } @@ -3810,7 +3677,7 @@ function Landing(runner, options) { runner.once(EVENT_RUN_END, function() { cursor.show(); - process.stdout.write('\n'); + console.log(); self.epilogue(); }); } @@ -3868,7 +3735,7 @@ function List(runner, options) { var n = 0; runner.on(EVENT_RUN_BEGIN, function() { - Base.consoleLog(); + console.log(); }); runner.on(EVENT_TEST_BEGIN, function(test) { @@ -3877,7 +3744,7 @@ function List(runner, options) { runner.on(EVENT_TEST_PENDING, function(test) { var fmt = color('checkmark', ' -') + color('pending', ' %s'); - Base.consoleLog(fmt, test.fullTitle()); + console.log(fmt, test.fullTitle()); }); runner.on(EVENT_TEST_PASS, function(test) { @@ -3886,12 +3753,12 @@ function List(runner, options) { color('pass', ' %s: ') + color(test.speed, '%dms'); cursor.CR(); - Base.consoleLog(fmt, test.fullTitle(), test.duration); + console.log(fmt, test.fullTitle(), test.duration); }); runner.on(EVENT_TEST_FAIL, function(test) { cursor.CR(); - Base.consoleLog(color('fail', ' %d) %s'), ++n, test.fullTitle()); + console.log(color('fail', ' %d) %s'), ++n, test.fullTitle()); }); runner.once(EVENT_RUN_END, self.epilogue.bind(self)); @@ -4419,7 +4286,7 @@ function Progress(runner, options) { // tests started runner.on(EVENT_RUN_BEGIN, function() { - process.stdout.write('\n'); + console.log(); cursor.hide(); }); @@ -4452,7 +4319,7 @@ function Progress(runner, options) { // and the failures if any runner.once(EVENT_RUN_END, function() { cursor.show(); - process.stdout.write('\n'); + console.log(); self.epilogue(); }); } @@ -4514,24 +4381,24 @@ function Spec(runner, options) { } runner.on(EVENT_RUN_BEGIN, function() { - Base.consoleLog(); + console.log(); }); runner.on(EVENT_SUITE_BEGIN, function(suite) { ++indents; - Base.consoleLog(color('suite', '%s%s'), indent(), suite.title); + console.log(color('suite', '%s%s'), indent(), suite.title); }); runner.on(EVENT_SUITE_END, function() { --indents; if (indents === 1) { - Base.consoleLog(); + console.log(); } }); runner.on(EVENT_TEST_PENDING, function(test) { var fmt = indent() + color('pending', ' - %s'); - Base.consoleLog(fmt, test.title); + console.log(fmt, test.title); }); runner.on(EVENT_TEST_PASS, function(test) { @@ -4541,19 +4408,19 @@ function Spec(runner, options) { indent() + color('checkmark', ' ' + Base.symbols.ok) + color('pass', ' %s'); - Base.consoleLog(fmt, test.title); + console.log(fmt, test.title); } else { fmt = indent() + color('checkmark', ' ' + Base.symbols.ok) + color('pass', ' %s') + color(test.speed, ' (%dms)'); - Base.consoleLog(fmt, test.title, test.duration); + console.log(fmt, test.title, test.duration); } }); runner.on(EVENT_TEST_FAIL, function(test) { - Base.consoleLog(indent() + color('fail', ' %d) %s'), ++n, test.title); + console.log(indent() + color('fail', ' %d) %s'), ++n, test.title); }); runner.once(EVENT_RUN_END, self.epilogue.bind(self)); @@ -5010,7 +4877,7 @@ XUnit.prototype.write = function(line) { } else if (typeof process === 'object' && process.stdout) { process.stdout.write(line + '\n'); } else { - Base.consoleLog(line); + console.log(line); } }; @@ -5031,9 +4898,9 @@ XUnit.prototype.test = function(test) { if (test.state === STATE_FAILED) { var err = test.err; var diff = - !Base.hideDiff && Base.showDiff(err) - ? '\n' + Base.generateDiff(err.actual, err.expected) - : ''; + Base.hideDiff || !err.actual || !err.expected + ? '' + : '\n' + Base.generateDiff(err.actual, err.expected); this.write( tag( 'testcase', @@ -5223,8 +5090,7 @@ Runnable.prototype.enableTimeouts = function(enabled) { * @public */ Runnable.prototype.skip = function() { - this.pending = true; - throw new Pending('sync skip; aborting execution'); + throw new Pending('sync skip'); }; /** @@ -5423,45 +5289,43 @@ Runnable.prototype.run = function(fn) { fn(err); } - // for .resetTimeout() and Runner#uncaught() + // for .resetTimeout() this.callback = done; - if (this.fn && typeof this.fn.call !== 'function') { - done( - new TypeError( - 'A runnable must be passed a function as its second argument.' - ) - ); - return; - } - // explicit async with `done` argument if (this.async) { this.resetTimeout(); // allows skip() to be used in an explicit async context this.skip = function asyncSkip() { - this.pending = true; - done(); - // halt execution, the uncaught handler will ignore the failure. + done(new Pending('async skip call')); + // halt execution. the Runnable will be marked pending + // by the previous call, and the uncaught handler will ignore + // the failure. throw new Pending('async skip; aborting execution'); }; + if (this.allowUncaught) { + return callFnAsync(this.fn); + } try { callFnAsync(this.fn); } catch (err) { - // handles async runnables which actually run synchronously emitted = true; - if (err instanceof Pending) { - return; // done() is already called in this.skip() - } else if (this.allowUncaught) { - throw err; - } done(Runnable.toValueOrError(err)); } return; } + if (this.allowUncaught) { + if (this.isPending()) { + done(); + } else { + callFn(this.fn); + } + return; + } + // sync or promise-returning try { if (this.isPending()) { @@ -5471,11 +5335,6 @@ Runnable.prototype.run = function(fn) { } } catch (err) { emitted = true; - if (err instanceof Pending) { - return done(); - } else if (this.allowUncaught) { - throw err; - } done(Runnable.toValueOrError(err)); } @@ -5620,9 +5479,8 @@ var sQuote = utils.sQuote; var stackFilter = utils.stackTraceFilter(); var stringify = utils.stringify; var type = utils.type; -var errors = require('./errors'); -var createInvalidExceptionError = errors.createInvalidExceptionError; -var createUnsupportedError = errors.createUnsupportedError; +var createInvalidExceptionError = require('./errors') + .createInvalidExceptionError; /** * Non-enumerable globals. @@ -5731,11 +5589,6 @@ function Runner(suite, delay) { this.total = suite.total(); this.failures = 0; this.on(constants.EVENT_TEST_END, function(test) { - if (test.retriedTest() && test.parent) { - var idx = - test.parent.tests && test.parent.tests.indexOf(test.retriedTest()); - if (idx > -1) test.parent.tests[idx] = test; - } self.checkGlobals(test); }); this.on(constants.EVENT_HOOK_END, function(hook) { @@ -5743,7 +5596,7 @@ function Runner(suite, delay) { }); this._defaultGrep = /.*/; this.grep(this._defaultGrep); - this.globals(this.globalProps()); + this.globals(this.globalProps().concat(extraGlobals())); } /** @@ -5846,7 +5699,7 @@ Runner.prototype.globals = function(arr) { * @private */ Runner.prototype.checkGlobals = function(test) { - if (!this.checkLeaks) { + if (this.ignoreLeaks) { return; } var ok = this._globals; @@ -5917,7 +5770,8 @@ Runner.prototype.fail = function(test, err) { * - Failed `before each` hook skips remaining tests in a * suite and jumps to corresponding `after each` hook, * which is run only once - * - Failed `after` hook does not alter execution order + * - Failed `after` hook does not alter + * execution order * - Failed `after each` hook skips remaining tests in a * suite and subsuites, but executes other `after each` * hooks @@ -5987,37 +5841,34 @@ Runner.prototype.hook = function(name, fn) { if (testError) { self.fail(self.test, testError); } - // conditional skip - if (hook.pending) { - if (name === HOOK_TYPE_AFTER_EACH) { - // TODO define and implement use case - if (self.test) { - self.test.pending = true; + if (err) { + if (err instanceof Pending) { + if (name === HOOK_TYPE_AFTER_ALL) { + utils.deprecate( + 'Skipping a test within an "after all" hook is DEPRECATED and will throw an exception in a future version of Mocha. ' + + 'Use a return statement or other means to abort hook execution.' + ); } - } else if (name === HOOK_TYPE_BEFORE_EACH) { - if (self.test) { - self.test.pending = true; + if (name === HOOK_TYPE_BEFORE_EACH || name === HOOK_TYPE_AFTER_EACH) { + if (self.test) { + self.test.pending = true; + } + } else { + suite.tests.forEach(function(test) { + test.pending = true; + }); + suite.suites.forEach(function(suite) { + suite.pending = true; + }); + // a pending hook won't be executed twice. + hook.pending = true; } - self.emit(constants.EVENT_HOOK_END, hook); - hook.pending = false; // activates hook for next test - return fn(new Error('abort hookDown')); - } else if (name === HOOK_TYPE_BEFORE_ALL) { - suite.tests.forEach(function(test) { - test.pending = true; - }); - suite.suites.forEach(function(suite) { - suite.pending = true; - }); } else { - hook.pending = false; - var errForbid = createUnsupportedError('`this.skip` forbidden'); - self.failHook(hook, errForbid); - return fn(errForbid); + self.failHook(hook, err); + + // stop executing hooks, notify callee of hook err + return fn(err); } - } else if (err) { - self.failHook(hook, err); - // stop executing hooks, notify callee of hook err - return fn(err); } self.emit(constants.EVENT_HOOK_END, hook); delete hook.ctx.currentTest; @@ -6129,9 +5980,6 @@ Runner.prototype.runTest = function(fn) { test.asyncOnly = true; } test.on('error', function(err) { - if (err instanceof Pending) { - return; - } self.fail(test, err); }); if (this.allowUncaught) { @@ -6227,7 +6075,6 @@ Runner.prototype.runTests = function(suite, fn) { return; } - // static skip, no hooks are executed if (test.isPending()) { if (self.forbidPending) { test.isPending = alwaysFalse; @@ -6243,7 +6090,6 @@ Runner.prototype.runTests = function(suite, fn) { // execute test and hook(s) self.emit(constants.EVENT_TEST_BEGIN, (self.test = test)); self.hookDown(HOOK_TYPE_BEFORE_EACH, function(err, errSuite) { - // conditional skip within beforeEach if (test.isPending()) { if (self.forbidPending) { test.isPending = alwaysFalse; @@ -6253,13 +6099,7 @@ Runner.prototype.runTests = function(suite, fn) { self.emit(constants.EVENT_TEST_PENDING, test); } self.emit(constants.EVENT_TEST_END, test); - // skip inner afterEach hooks below errSuite level - var origSuite = self.suite; - self.suite = errSuite || self.suite; - return self.hookUp(HOOK_TYPE_AFTER_EACH, function(e, eSuite) { - self.suite = origSuite; - next(e, eSuite); - }); + return next(); } if (err) { return hookErr(err, errSuite, false); @@ -6267,20 +6107,14 @@ Runner.prototype.runTests = function(suite, fn) { self.currentRunnable = self.test; self.runTest(function(err) { test = self.test; - // conditional skip within it - if (test.pending) { - if (self.forbidPending) { - test.isPending = alwaysFalse; + if (err) { + var retry = test.currentRetry(); + if (err instanceof Pending && self.forbidPending) { self.fail(test, new Error('Pending test forbidden')); - delete test.isPending; - } else { + } else if (err instanceof Pending) { + test.pending = true; self.emit(constants.EVENT_TEST_PENDING, test); - } - self.emit(constants.EVENT_TEST_END, test); - return self.hookUp(HOOK_TYPE_AFTER_EACH, next); - } else if (err) { - var retry = test.currentRetry(); - if (retry < test.retries()) { + } else if (retry < test.retries()) { var clonedTest = test.clone(); clonedTest.currentRetry(retry + 1); tests.unshift(clonedTest); @@ -6294,6 +6128,11 @@ Runner.prototype.runTests = function(suite, fn) { self.fail(test, err); } self.emit(constants.EVENT_TEST_END, test); + + if (err instanceof Pending) { + return next(); + } + return self.hookUp(HOOK_TYPE_AFTER_EACH, next); } @@ -6325,6 +6164,7 @@ Runner.prototype.runSuite = function(suite, fn) { var i = 0; var self = this; var total = this.grepTotal(suite); + var afterAllHookCalled = false; debug('run suite %s', suite.fullTitle()); @@ -6372,13 +6212,21 @@ Runner.prototype.runSuite = function(suite, fn) { self.suite = suite; self.nextSuite = next; - // remove reference to test - delete self.test; - - self.hook(HOOK_TYPE_AFTER_ALL, function() { - self.emit(constants.EVENT_SUITE_END, suite); + if (afterAllHookCalled) { fn(errSuite); - }); + } else { + // mark that the afterAll block has been called once + // and so can be skipped if there is an error in it. + afterAllHookCalled = true; + + // remove reference to test + delete self.test; + + self.hook(HOOK_TYPE_AFTER_ALL, function() { + self.emit(constants.EVENT_SUITE_END, suite); + fn(errSuite); + }); + } } this.nextSuite = next; @@ -6392,7 +6240,7 @@ Runner.prototype.runSuite = function(suite, fn) { }; /** - * Handle uncaught exceptions within runner. + * Handle uncaught exceptions. * * @param {Error} err * @private @@ -6401,11 +6249,6 @@ Runner.prototype.uncaught = function(err) { if (err instanceof Pending) { return; } - // browser does not exit script when throwing in global.onerror() - if (this.allowUncaught && !process.browser) { - throw err; - } - if (err) { debug('uncaught exception %O', err); } else { @@ -6441,37 +6284,43 @@ Runner.prototype.uncaught = function(err) { runnable.clearTimeout(); - if (runnable.isFailed()) { - // Ignore error if already failed - return; - } else if (runnable.isPending()) { - // report 'pending test' retrospectively as failed - runnable.isPending = alwaysFalse; - this.fail(runnable, err); - delete runnable.isPending; + // Ignore errors if already failed or pending + // See #3226 + if (runnable.isFailed() || runnable.isPending()) { return; } - // we cannot recover gracefully if a Runnable has already passed // then fails asynchronously - if (runnable.isPassed()) { - this.fail(runnable, err); - this.abort(); - } else { + var alreadyPassed = runnable.isPassed(); + // this will change the state to "failed" regardless of the current value + this.fail(runnable, err); + if (!alreadyPassed) { + // recover from test + if (runnable.type === constants.EVENT_TEST_BEGIN) { + this.emit(constants.EVENT_TEST_END, runnable); + this.hookUp(HOOK_TYPE_AFTER_EACH, this.next); + return; + } debug(runnable); - return runnable.callback(err); + + // recover from hooks + var errSuite = this.suite; + + // XXX how about a less awful way to determine this? + // if hook failure is in afterEach block + if (runnable.fullTitle().indexOf('after each') > -1) { + return this.hookErr(err, errSuite, true); + } + // if hook failure is in beforeEach block + if (runnable.fullTitle().indexOf('before each') > -1) { + return this.hookErr(err, errSuite, false); + } + // if hook failure is in after or before blocks + return this.nextSuite(errSuite); } -}; -/** - * Handle uncaught exceptions after runner's end event. - * - * @param {Error} err - * @private - */ -Runner.prototype.uncaughtEnd = function uncaughtEnd(err) { - if (err instanceof Pending) return; - throw err; + // bail + this.emit(constants.EVENT_RUN_END); }; /** @@ -6521,12 +6370,10 @@ Runner.prototype.run = function(fn) { this.on(constants.EVENT_RUN_END, function() { debug(constants.EVENT_RUN_END); process.removeListener('uncaughtException', uncaught); - process.on('uncaughtException', self.uncaughtEnd); fn(self.failures); }); // uncaught exception - process.removeListener('uncaughtException', self.uncaughtEnd); process.on('uncaughtException', uncaught); if (this._delay) { @@ -6535,9 +6382,7 @@ Runner.prototype.run = function(fn) { this.emit(constants.EVENT_DELAY_BEGIN, rootSuite); rootSuite.once(EVENT_ROOT_SUITE_RUN, start); } else { - Runner.immediately(function() { - start(); - }); + start(); } return this; @@ -6626,6 +6471,30 @@ function thrown2Error(err) { ); } +/** + * Array of globals dependent on the environment. + * + * @return {Array} + * @deprecated + * @todo remove; long since unsupported + * @private + */ +function extraGlobals() { + if (typeof process === 'object' && typeof process.version === 'string') { + var parts = process.version.split('.'); + var nodeVersion = parts.reduce(function(a, v) { + return (a << 8) | v; + }); + + // 'errno' was renamed to process._errno in v0.9.11. + if (nodeVersion < 0x00090b) { + return ['errno']; + } + } + + return []; +} + Runner.constants = constants; /** @@ -7405,18 +7274,6 @@ function Test(title, fn) { */ utils.inherits(Test, Runnable); -/** - * Set or get retried test - * - * @private - */ -Test.prototype.retriedTest = function(n) { - if (!arguments.length) { - return this._retriedTest; - } - this._retriedTest = n; -}; - Test.prototype.clone = function() { var test = new Test(this.title, this.fn); test.timeout(this.timeout()); @@ -7424,7 +7281,6 @@ Test.prototype.clone = function() { test.enableTimeouts(this.enableTimeouts()); test.retries(this.retries()); test.currentRetry(this.currentRetry()); - test.retriedTest(this.retriedTest() || this); test.globals(this.globals()); test.parent = this.parent; test.file = this.file; @@ -7490,6 +7346,80 @@ exports.isString = function(obj) { }; /** + * Watch the given `files` for changes + * and invoke `fn(file)` on modification. + * + * @private + * @param {Array} files + * @param {Function} fn + */ +exports.watch = function(files, fn) { + var options = {interval: 100}; + var debug = require('debug')('mocha:watch'); + files.forEach(function(file) { + debug('file %s', file); + fs.watchFile(file, options, function(curr, prev) { + if (prev.mtime < curr.mtime) { + fn(file); + } + }); + }); +}; + +/** + * Predicate to screen `pathname` for further consideration. + * + * @description + * Returns <code>false</code> for pathname referencing: + * <ul> + * <li>'npm' package installation directory + * <li>'git' version control directory + * </ul> + * + * @private + * @param {string} pathname - File or directory name to screen + * @return {boolean} whether pathname should be further considered + * @example + * ['node_modules', 'test.js'].filter(considerFurther); // => ['test.js'] + */ +function considerFurther(pathname) { + var ignore = ['node_modules', '.git']; + + return !~ignore.indexOf(pathname); +} + +/** + * Lookup files in the given `dir`. + * + * @description + * Filenames are returned in _traversal_ order by the OS/filesystem. + * **Make no assumption that the names will be sorted in any fashion.** + * + * @private + * @param {string} dir + * @param {string[]} [exts=['js']] + * @param {Array} [ret=[]] + * @return {Array} + */ +exports.files = function(dir, exts, ret) { + ret = ret || []; + exts = exts || ['js']; + + fs.readdirSync(dir) + .filter(considerFurther) + .forEach(function(dirent) { + var pathname = path.join(dir, dirent); + if (fs.lstatSync(pathname).isDirectory()) { + exports.files(pathname, exts, ret); + } else if (hasMatchingExtname(pathname, exts)) { + ret.push(pathname); + } + }); + + return ret; +}; + +/** * Compute a slug from the given `str`. * * @private @@ -7924,41 +7854,32 @@ function isHiddenOnUnix(pathname) { * * @public * @memberof Mocha.utils + * @todo Fix extension handling * @param {string} filepath - Base path to start searching from. - * @param {string[]} [extensions=[]] - File extensions to look for. - * @param {boolean} [recursive=false] - Whether to recurse into subdirectories. + * @param {string[]} extensions - File extensions to look for. + * @param {boolean} recursive - Whether to recurse into subdirectories. * @return {string[]} An array of paths. * @throws {Error} if no files match pattern. * @throws {TypeError} if `filepath` is directory and `extensions` not provided. */ exports.lookupFiles = function lookupFiles(filepath, extensions, recursive) { - extensions = extensions || []; - recursive = recursive || false; var files = []; var stat; if (!fs.existsSync(filepath)) { - var pattern; - if (glob.hasMagic(filepath)) { - // Handle glob as is without extensions - pattern = filepath; + if (fs.existsSync(filepath + '.js')) { + filepath += '.js'; } else { - // glob pattern e.g. 'filepath+(.js|.ts)' - var strExtensions = extensions - .map(function(v) { - return '.' + v; - }) - .join('|'); - pattern = filepath + '+(' + strExtensions + ')'; - } - files = glob.sync(pattern, {nodir: true}); - if (!files.length) { - throw createNoFilesMatchPatternError( - 'Cannot find any files matching pattern ' + exports.dQuote(filepath), - filepath - ); + // Handle glob + files = glob.sync(filepath); + if (!files.length) { + throw createNoFilesMatchPatternError( + 'Cannot find any files matching pattern ' + exports.dQuote(filepath), + filepath + ); + } + return files; } - return files; } // Handle file @@ -7989,7 +7910,7 @@ exports.lookupFiles = function lookupFiles(filepath, extensions, recursive) { // ignore error return; } - if (!extensions.length) { + if (!extensions) { throw createMissingArgumentError( util.format( 'Argument %s required when argument %s is a directory', @@ -8085,8 +8006,7 @@ exports.stackTraceFilter = function() { function isMochaInternal(line) { return ( ~line.indexOf('node_modules' + slash + 'mocha' + slash) || - ~line.indexOf(slash + 'mocha.js') || - ~line.indexOf(slash + 'mocha.min.js') + ~line.indexOf(slash + 'mocha.js') ); } @@ -8268,30 +8188,8 @@ exports.defineConstants = function(obj) { return Object.freeze(exports.createMap(obj)); }; -/** - * Whether current version of Node support ES modules - * - * @description - * Versions prior to 10 did not support ES Modules, and version 10 has an old incompatibile version of ESM. - * This function returns whether Node.JS has ES Module supports that is compatible with Mocha's needs, - * which is version >=12.11. - * - * @returns {Boolean} whether the current version of Node.JS supports ES Modules in a way that is compatible with Mocha - */ -exports.supportsEsModules = function() { - if (!process.browser && process.versions && process.versions.node) { - var versionFields = process.versions.node.split('.'); - var major = +versionFields[0]; - var minor = +versionFields[1]; - - if (major >= 13 || (major === 12 && minor >= 11)) { - return true; - } - } -}; - }).call(this,require('_process'),require("buffer").Buffer) -},{"./errors":6,"_process":69,"buffer":43,"fs":42,"glob":42,"he":54,"object.assign":65,"path":42,"util":89}],39:[function(require,module,exports){ +},{"./errors":6,"_process":69,"buffer":43,"debug":45,"fs":42,"glob":42,"he":54,"object.assign":65,"path":42,"util":89}],39:[function(require,module,exports){ 'use strict' exports.byteLength = byteLength @@ -18171,7 +18069,7 @@ function hasOwnProperty(obj, prop) { },{"./support/isBuffer":88,"_process":69,"inherits":56}],90:[function(require,module,exports){ module.exports={ "name": "mocha", - "version": "7.1.1", + "version": "6.1.4", "homepage": "https://mochajs.org/", "notifyLogo": "https://ibin.co/4QuRuGjXvl36.png" } diff --git a/vendor/blueimp/jquery-file-upload/wdio/.prettierrc.js b/vendor/blueimp/jquery-file-upload/wdio/.prettierrc.js index 049fe84a3..24237736e 100644 --- a/vendor/blueimp/jquery-file-upload/wdio/.prettierrc.js +++ b/vendor/blueimp/jquery-file-upload/wdio/.prettierrc.js @@ -1,9 +1,7 @@ 'use strict' module.exports = { - arrowParens: 'avoid', proseWrap: 'always', semi: false, - singleQuote: true, - trailingComma: 'none' + singleQuote: true } diff --git a/vendor/blueimp/jquery-file-upload/wdio/assets/black-80x60.gif b/vendor/blueimp/jquery-file-upload/wdio/assets/black-80x60.gif Binary files differnew file mode 100644 index 000000000..5814bdaa5 --- /dev/null +++ b/vendor/blueimp/jquery-file-upload/wdio/assets/black-80x60.gif diff --git a/vendor/blueimp/jquery-file-upload/wdio/assets/white-1x2.jpg b/vendor/blueimp/jquery-file-upload/wdio/assets/white-1x2.jpg Binary files differnew file mode 100644 index 000000000..10a3d5492 --- /dev/null +++ b/vendor/blueimp/jquery-file-upload/wdio/assets/white-1x2.jpg diff --git a/vendor/blueimp/jquery-file-upload/wdio/bin/safaridriver.sh b/vendor/blueimp/jquery-file-upload/wdio/bin/safaridriver.sh index d6bee1da7..ed9c63e70 100644 --- a/vendor/blueimp/jquery-file-upload/wdio/bin/safaridriver.sh +++ b/vendor/blueimp/jquery-file-upload/wdio/bin/safaridriver.sh @@ -1,12 +1,5 @@ #!/bin/sh -if [ "$1" = -t ]; then - BIN='/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver' - shift -else - BIN=safaridriver -fi - SCREEN='Capture screen' if [ -z "$1" ]; then @@ -21,7 +14,7 @@ else fi echo 'Starting safaridriver on 127.0.0.1:4444 ...' >&2 -"$BIN" -p 4444 & pid=$! +safaridriver -p 4444 & pid=$! # shellcheck disable=SC2064 trap "kill $pid; exit" INT TERM diff --git a/vendor/blueimp/jquery-file-upload/wdio/chrome.js b/vendor/blueimp/jquery-file-upload/wdio/chrome.js new file mode 100644 index 000000000..fc7264417 --- /dev/null +++ b/vendor/blueimp/jquery-file-upload/wdio/chrome.js @@ -0,0 +1,40 @@ +'use strict' + +/* eslint-disable jsdoc/valid-types */ +/** @type WebdriverIO.Config */ +const config = { + hostname: 'chromedriver', + path: '/', + capabilities: [ + { + // Set maxInstances to 1 if screen recordings are enabled: + // maxInstances: 1, + browserName: 'chrome', + 'goog:chromeOptions': { + // Disable headless mode if screen recordings are enabled: + args: ['--headless', '--window-size=1440,900'] + } + } + ], + logLevel: 'warn', + reporters: ['spec'], + framework: 'mocha', + mochaOpts: { + timeout: 60000 + }, + specs: ['test/specs/**/*.js'], + maximizeWindow: true, + screenshots: { + saveOnFail: true + }, + videos: { + enabled: false, + resolution: '1440x900', + startDelay: 500, + stopDelay: 500 + }, + assetsDir: '/home/webdriver/assets/', + baseUrl: 'http://example' +} + +exports.config = Object.assign({}, require('./hooks'), config) diff --git a/vendor/blueimp/jquery-file-upload/wdio/firefox.js b/vendor/blueimp/jquery-file-upload/wdio/firefox.js new file mode 100644 index 000000000..a4403de9e --- /dev/null +++ b/vendor/blueimp/jquery-file-upload/wdio/firefox.js @@ -0,0 +1,25 @@ +'use strict' + +/* eslint-disable jsdoc/valid-types */ +/** @type WebdriverIO.Config */ +const config = { + hostname: 'geckodriver', + capabilities: [ + { + // geckodriver supports no parallel sessions: + maxInstances: 1, + browserName: 'firefox', + 'moz:firefoxOptions': { + //args: ['-headless', '--window-size=1440,900'] + } + } + ], + videos: { + enabled: true, + resolution: '1440x900', + startDelay: 500, + stopDelay: 500 + } +} + +exports.config = Object.assign({}, require('./chrome').config, config) diff --git a/vendor/blueimp/jquery-file-upload/wdio/hooks/index.js b/vendor/blueimp/jquery-file-upload/wdio/hooks/index.js index f369f5614..2f0dcd3f6 100644 --- a/vendor/blueimp/jquery-file-upload/wdio/hooks/index.js +++ b/vendor/blueimp/jquery-file-upload/wdio/hooks/index.js @@ -5,9 +5,10 @@ const cmds = require('wdio-screen-commands') /* eslint-disable jsdoc/valid-types */ -/** @type WebdriverIO.HookFunctions */ +/** @type WebdriverIO.Config */ const config = { before: async () => { + global.Should = require('chai').should() browser.addCommand('saveScreenshotByName', cmds.saveScreenshotByName) browser.addCommand('saveAndDiffScreenshot', cmds.saveAndDiffScreenshot) if (browser.config.maximizeWindow) await browser.maximizeWindow() @@ -15,10 +16,10 @@ const config = { beforeTest: async test => { await cmds.startScreenRecording(test) }, - afterTest: async (test, context, result) => { + afterTest: async test => { await Promise.all([ - cmds.stopScreenRecording(test, result), - cmds.saveScreenshotByTest(test, result) + cmds.stopScreenRecording(test), + cmds.saveScreenshotByTest(test) ]) } } diff --git a/vendor/blueimp/jquery-file-upload/wdio/ie.js b/vendor/blueimp/jquery-file-upload/wdio/ie.js new file mode 100644 index 000000000..223a50190 --- /dev/null +++ b/vendor/blueimp/jquery-file-upload/wdio/ie.js @@ -0,0 +1,24 @@ +'use strict' + +/* eslint-disable jsdoc/valid-types */ +/** @type WebdriverIO.Config */ +const config = { + hostname: process.env.WINDOWS_HOST || 'host.docker.internal', + port: 4445, + capabilities: [ + { + // IEDriverServer supports no parallel sessions: + maxInstances: 1, + browserName: 'internet explorer' + } + ], + videos: { + enabled: true, + inputFormat: 'mjpeg', + startDelay: 500, + stopDelay: 500 + }, + assetsDir: process.env.WINDOWS_ASSETS_DIR +} + +exports.config = Object.assign({}, require('./chrome').config, config) diff --git a/vendor/blueimp/jquery-file-upload/wdio/safari.js b/vendor/blueimp/jquery-file-upload/wdio/safari.js new file mode 100644 index 000000000..d252d0d5d --- /dev/null +++ b/vendor/blueimp/jquery-file-upload/wdio/safari.js @@ -0,0 +1,24 @@ +'use strict' + +/* eslint-disable jsdoc/valid-types */ +/** @type WebdriverIO.Config */ +const config = { + // Docker for Mac host address: + hostname: 'host.docker.internal', + capabilities: [ + { + // safaridriver supports no parallel sessions: + maxInstances: 1, + browserName: 'safari' + } + ], + videos: { + enabled: true, + inputFormat: 'mjpeg', + startDelay: 500, + stopDelay: 500 + }, + assetsDir: process.env.MACOS_ASSETS_DIR +} + +exports.config = Object.assign({}, require('./chrome').config, config) diff --git a/vendor/blueimp/jquery-file-upload/wdio/test/pages/file-upload.js b/vendor/blueimp/jquery-file-upload/wdio/test/pages/file-upload.js index eccb6feb4..dfef36394 100644 --- a/vendor/blueimp/jquery-file-upload/wdio/test/pages/file-upload.js +++ b/vendor/blueimp/jquery-file-upload/wdio/test/pages/file-upload.js @@ -36,7 +36,7 @@ class FileUpload { */ open(timeout) { browser.url('/') - this.fileinput.waitForExist({ timeout }) + this.fileinput.waitForExist(timeout) return this } /** @@ -48,10 +48,10 @@ class FileUpload { */ upload(files, timeout) { this.fileinput.addValue(files.join('\n')) - browser.waitUntil(() => !this.processing.length, { timeout }) + browser.waitUntil(() => !this.processing.length, timeout) this.start.click() - browser.waitUntil(() => !!this.downloads.length, { timeout }) - browser.waitUntil(() => !this.uploads.length, { timeout }) + browser.waitUntil(() => !!this.downloads.length, timeout) + browser.waitUntil(() => !this.uploads.length, timeout) return this } /** @@ -62,11 +62,12 @@ class FileUpload { */ delete(timeout) { this.toggle.click() - browser.waitUntil(() => this.downloads.length === this.checked.length, { + browser.waitUntil( + () => this.downloads.length === this.checked.length, timeout - }) + ) this.remove.click() - browser.waitUntil(() => !this.downloads.length, { timeout }) + browser.waitUntil(() => !this.downloads.length, timeout) return this } } diff --git a/vendor/blueimp/jquery-file-upload/wdio/test/specs/01-file-upload.js b/vendor/blueimp/jquery-file-upload/wdio/test/specs/01-file-upload.js index 95e77e7d8..156dcc718 100644 --- a/vendor/blueimp/jquery-file-upload/wdio/test/specs/01-file-upload.js +++ b/vendor/blueimp/jquery-file-upload/wdio/test/specs/01-file-upload.js @@ -10,8 +10,8 @@ describe('File Upload', () => { it('uploads files', () => { FileUpload.open().upload([ - assetsDir + 'black+white-60x40.gif', - assetsDir + 'black+white-3x2.jpg' + assetsDir + 'black-80x60.gif', + assetsDir + 'white-1x2.jpg' ]) browser.saveAndDiffScreenshot('Files uploaded') }) diff --git a/vendor/blueimp/jquery-file-upload/wdio/wdio.conf.js b/vendor/blueimp/jquery-file-upload/wdio/wdio.conf.js index b19783d1a..eb078d844 100644 --- a/vendor/blueimp/jquery-file-upload/wdio/wdio.conf.js +++ b/vendor/blueimp/jquery-file-upload/wdio/wdio.conf.js @@ -1,4 +1 @@ -'use strict' - -// Default to the Chrome config: -exports.config = require('./conf/chrome').config +chrome.js
\ No newline at end of file diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index a0ec32622..3cea719e1 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -372,9 +372,6 @@ return array( 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php', 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php', 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php', - 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.php', - 'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', - 'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php', 'Ramsey\\Uuid\\BinaryUtils' => $vendorDir . '/ramsey/uuid/src/BinaryUtils.php', 'Ramsey\\Uuid\\Builder\\DefaultUuidBuilder' => $vendorDir . '/ramsey/uuid/src/Builder/DefaultUuidBuilder.php', 'Ramsey\\Uuid\\Builder\\DegradedUuidBuilder' => $vendorDir . '/ramsey/uuid/src/Builder/DegradedUuidBuilder.php', @@ -730,7 +727,6 @@ return array( 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime' => $vendorDir . '/sabre/vobject/lib/Property/VCard/DateAndOrTime.php', 'Sabre\\VObject\\Property\\VCard\\DateTime' => $vendorDir . '/sabre/vobject/lib/Property/VCard/DateTime.php', 'Sabre\\VObject\\Property\\VCard\\LanguageTag' => $vendorDir . '/sabre/vobject/lib/Property/VCard/LanguageTag.php', - 'Sabre\\VObject\\Property\\VCard\\PhoneNumber' => $vendorDir . '/sabre/vobject/lib/Property/VCard/PhoneNumber.php', 'Sabre\\VObject\\Property\\VCard\\TimeStamp' => $vendorDir . '/sabre/vobject/lib/Property/VCard/TimeStamp.php', 'Sabre\\VObject\\Reader' => $vendorDir . '/sabre/vobject/lib/Reader.php', 'Sabre\\VObject\\Recur\\EventIterator' => $vendorDir . '/sabre/vobject/lib/Recur/EventIterator.php', @@ -1016,7 +1012,6 @@ return array( 'Zotlabs\\Identity\\ProfilePhoto\\ProfilePhoto' => $baseDir . '/Zotlabs/Identity/ProfilePhoto.php', 'Zotlabs\\Lib\\AConfig' => $baseDir . '/Zotlabs/Lib/AConfig.php', 'Zotlabs\\Lib\\AbConfig' => $baseDir . '/Zotlabs/Lib/AbConfig.php', - 'Zotlabs\\Lib\\AccessList' => $baseDir . '/Zotlabs/Lib/AccessList.php', 'Zotlabs\\Lib\\Activity' => $baseDir . '/Zotlabs/Lib/Activity.php', 'Zotlabs\\Lib\\ActivityStreams' => $baseDir . '/Zotlabs/Lib/ActivityStreams.php', 'Zotlabs\\Lib\\Api_router' => $baseDir . '/Zotlabs/Lib/Api_router.php', @@ -1024,7 +1019,6 @@ return array( 'Zotlabs\\Lib\\Cache' => $baseDir . '/Zotlabs/Lib/Cache.php', 'Zotlabs\\Lib\\Chatroom' => $baseDir . '/Zotlabs/Lib/Chatroom.php', 'Zotlabs\\Lib\\Config' => $baseDir . '/Zotlabs/Lib/Config.php', - 'Zotlabs\\Lib\\Connect' => $baseDir . '/Zotlabs/Lib/Connect.php', 'Zotlabs\\Lib\\DB_Upgrade' => $baseDir . '/Zotlabs/Lib/DB_Upgrade.php', 'Zotlabs\\Lib\\DReport' => $baseDir . '/Zotlabs/Lib/DReport.php', 'Zotlabs\\Lib\\Enotify' => $baseDir . '/Zotlabs/Lib/Enotify.php', @@ -1061,7 +1055,6 @@ return array( 'Zotlabs\\Lib\\Zotfinger' => $baseDir . '/Zotlabs/Lib/Zotfinger.php', 'Zotlabs\\Module\\Achievements' => $baseDir . '/Zotlabs/Module/Achievements.php', 'Zotlabs\\Module\\Acl' => $baseDir . '/Zotlabs/Module/Acl.php', - 'Zotlabs\\Module\\Activity' => $baseDir . '/Zotlabs/Module/Activity.php', 'Zotlabs\\Module\\Admin' => $baseDir . '/Zotlabs/Module/Admin.php', 'Zotlabs\\Module\\Admin\\Account_edit' => $baseDir . '/Zotlabs/Module/Admin/Account_edit.php', 'Zotlabs\\Module\\Admin\\Accounts' => $baseDir . '/Zotlabs/Module/Admin/Accounts.php', @@ -1123,7 +1116,6 @@ return array( 'Zotlabs\\Module\\Email_validation' => $baseDir . '/Zotlabs/Module/Email_validation.php', 'Zotlabs\\Module\\Embed' => $baseDir . '/Zotlabs/Module/Embed.php', 'Zotlabs\\Module\\Embedphotos' => $baseDir . '/Zotlabs/Module/Embedphotos.php', - 'Zotlabs\\Module\\Event' => $baseDir . '/Zotlabs/Module/Event.php', 'Zotlabs\\Module\\Events' => $baseDir . '/Zotlabs/Module/Events.php', 'Zotlabs\\Module\\Fbrowser' => $baseDir . '/Zotlabs/Module/Fbrowser.php', 'Zotlabs\\Module\\Feed' => $baseDir . '/Zotlabs/Module/Feed.php', @@ -1158,6 +1150,7 @@ return array( 'Zotlabs\\Module\\Logout' => $baseDir . '/Zotlabs/Module/Logout.php', 'Zotlabs\\Module\\Lostpass' => $baseDir . '/Zotlabs/Module/Lostpass.php', 'Zotlabs\\Module\\Magic' => $baseDir . '/Zotlabs/Module/Magic.php', + 'Zotlabs\\Module\\Mail' => $baseDir . '/Zotlabs/Module/Mail.php', 'Zotlabs\\Module\\Manage' => $baseDir . '/Zotlabs/Module/Manage.php', 'Zotlabs\\Module\\Menu' => $baseDir . '/Zotlabs/Module/Menu.php', 'Zotlabs\\Module\\Message' => $baseDir . '/Zotlabs/Module/Message.php', @@ -1265,7 +1258,6 @@ return array( 'Zotlabs\\Module\\View' => $baseDir . '/Zotlabs/Module/View.php', 'Zotlabs\\Module\\Viewconnections' => $baseDir . '/Zotlabs/Module/Viewconnections.php', 'Zotlabs\\Module\\Viewsrc' => $baseDir . '/Zotlabs/Module/Viewsrc.php', - 'Zotlabs\\Module\\Vote' => $baseDir . '/Zotlabs/Module/Vote.php', 'Zotlabs\\Module\\Wall_attach' => $baseDir . '/Zotlabs/Module/Wall_attach.php', 'Zotlabs\\Module\\Wall_upload' => $baseDir . '/Zotlabs/Module/Wall_upload.php', 'Zotlabs\\Module\\Webfinger' => $baseDir . '/Zotlabs/Module/Webfinger.php', @@ -1277,7 +1269,6 @@ return array( 'Zotlabs\\Module\\Xpoco' => $baseDir . '/Zotlabs/Module/Xpoco.php', 'Zotlabs\\Module\\Xrd' => $baseDir . '/Zotlabs/Module/Xrd.php', 'Zotlabs\\Module\\Xref' => $baseDir . '/Zotlabs/Module/Xref.php', - 'Zotlabs\\Module\\Z6trans' => $baseDir . '/Zotlabs/Module/Z6trans.php', 'Zotlabs\\Module\\Zfinger' => $baseDir . '/Zotlabs/Module/Zfinger.php', 'Zotlabs\\Module\\Zot' => $baseDir . '/Zotlabs/Module/Zot.php', 'Zotlabs\\Module\\Zot_probe' => $baseDir . '/Zotlabs/Module/Zot_probe.php', @@ -1540,9 +1531,6 @@ return array( 'Zotlabs\\Update\\_1232' => $baseDir . '/Zotlabs/Update/_1232.php', 'Zotlabs\\Update\\_1233' => $baseDir . '/Zotlabs/Update/_1233.php', 'Zotlabs\\Update\\_1234' => $baseDir . '/Zotlabs/Update/_1234.php', - 'Zotlabs\\Update\\_1235' => $baseDir . '/Zotlabs/Update/_1235.php', - 'Zotlabs\\Update\\_1236' => $baseDir . '/Zotlabs/Update/_1236.php', - 'Zotlabs\\Update\\_1237' => $baseDir . '/Zotlabs/Update/_1237.php', 'Zotlabs\\Web\\Controller' => $baseDir . '/Zotlabs/Web/Controller.php', 'Zotlabs\\Web\\HTTPHeaders' => $baseDir . '/Zotlabs/Web/HTTPHeaders.php', 'Zotlabs\\Web\\HTTPSig' => $baseDir . '/Zotlabs/Web/HTTPSig.php', diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index de682b90d..b310f60f2 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -13,9 +13,6 @@ class ComposerAutoloaderInit7b34d7e50a62201ec5d5e526a5b8b35d } } - /** - * @return \Composer\Autoload\ClassLoader - */ public static function getLoader() { if (null !== self::$loader) { diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 3e79682c2..76a23da4f 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -540,9 +540,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php', 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php', 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php', - 'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.php', - 'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', - 'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php', 'Ramsey\\Uuid\\BinaryUtils' => __DIR__ . '/..' . '/ramsey/uuid/src/BinaryUtils.php', 'Ramsey\\Uuid\\Builder\\DefaultUuidBuilder' => __DIR__ . '/..' . '/ramsey/uuid/src/Builder/DefaultUuidBuilder.php', 'Ramsey\\Uuid\\Builder\\DegradedUuidBuilder' => __DIR__ . '/..' . '/ramsey/uuid/src/Builder/DegradedUuidBuilder.php', @@ -898,7 +895,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/VCard/DateAndOrTime.php', 'Sabre\\VObject\\Property\\VCard\\DateTime' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/VCard/DateTime.php', 'Sabre\\VObject\\Property\\VCard\\LanguageTag' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/VCard/LanguageTag.php', - 'Sabre\\VObject\\Property\\VCard\\PhoneNumber' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/VCard/PhoneNumber.php', 'Sabre\\VObject\\Property\\VCard\\TimeStamp' => __DIR__ . '/..' . '/sabre/vobject/lib/Property/VCard/TimeStamp.php', 'Sabre\\VObject\\Reader' => __DIR__ . '/..' . '/sabre/vobject/lib/Reader.php', 'Sabre\\VObject\\Recur\\EventIterator' => __DIR__ . '/..' . '/sabre/vobject/lib/Recur/EventIterator.php', @@ -1184,7 +1180,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Identity\\ProfilePhoto\\ProfilePhoto' => __DIR__ . '/../..' . '/Zotlabs/Identity/ProfilePhoto.php', 'Zotlabs\\Lib\\AConfig' => __DIR__ . '/../..' . '/Zotlabs/Lib/AConfig.php', 'Zotlabs\\Lib\\AbConfig' => __DIR__ . '/../..' . '/Zotlabs/Lib/AbConfig.php', - 'Zotlabs\\Lib\\AccessList' => __DIR__ . '/../..' . '/Zotlabs/Lib/AccessList.php', 'Zotlabs\\Lib\\Activity' => __DIR__ . '/../..' . '/Zotlabs/Lib/Activity.php', 'Zotlabs\\Lib\\ActivityStreams' => __DIR__ . '/../..' . '/Zotlabs/Lib/ActivityStreams.php', 'Zotlabs\\Lib\\Api_router' => __DIR__ . '/../..' . '/Zotlabs/Lib/Api_router.php', @@ -1192,7 +1187,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Lib\\Cache' => __DIR__ . '/../..' . '/Zotlabs/Lib/Cache.php', 'Zotlabs\\Lib\\Chatroom' => __DIR__ . '/../..' . '/Zotlabs/Lib/Chatroom.php', 'Zotlabs\\Lib\\Config' => __DIR__ . '/../..' . '/Zotlabs/Lib/Config.php', - 'Zotlabs\\Lib\\Connect' => __DIR__ . '/../..' . '/Zotlabs/Lib/Connect.php', 'Zotlabs\\Lib\\DB_Upgrade' => __DIR__ . '/../..' . '/Zotlabs/Lib/DB_Upgrade.php', 'Zotlabs\\Lib\\DReport' => __DIR__ . '/../..' . '/Zotlabs/Lib/DReport.php', 'Zotlabs\\Lib\\Enotify' => __DIR__ . '/../..' . '/Zotlabs/Lib/Enotify.php', @@ -1229,7 +1223,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Lib\\Zotfinger' => __DIR__ . '/../..' . '/Zotlabs/Lib/Zotfinger.php', 'Zotlabs\\Module\\Achievements' => __DIR__ . '/../..' . '/Zotlabs/Module/Achievements.php', 'Zotlabs\\Module\\Acl' => __DIR__ . '/../..' . '/Zotlabs/Module/Acl.php', - 'Zotlabs\\Module\\Activity' => __DIR__ . '/../..' . '/Zotlabs/Module/Activity.php', 'Zotlabs\\Module\\Admin' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin.php', 'Zotlabs\\Module\\Admin\\Account_edit' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Account_edit.php', 'Zotlabs\\Module\\Admin\\Accounts' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Accounts.php', @@ -1291,7 +1284,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Module\\Email_validation' => __DIR__ . '/../..' . '/Zotlabs/Module/Email_validation.php', 'Zotlabs\\Module\\Embed' => __DIR__ . '/../..' . '/Zotlabs/Module/Embed.php', 'Zotlabs\\Module\\Embedphotos' => __DIR__ . '/../..' . '/Zotlabs/Module/Embedphotos.php', - 'Zotlabs\\Module\\Event' => __DIR__ . '/../..' . '/Zotlabs/Module/Event.php', 'Zotlabs\\Module\\Events' => __DIR__ . '/../..' . '/Zotlabs/Module/Events.php', 'Zotlabs\\Module\\Fbrowser' => __DIR__ . '/../..' . '/Zotlabs/Module/Fbrowser.php', 'Zotlabs\\Module\\Feed' => __DIR__ . '/../..' . '/Zotlabs/Module/Feed.php', @@ -1326,6 +1318,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Module\\Logout' => __DIR__ . '/../..' . '/Zotlabs/Module/Logout.php', 'Zotlabs\\Module\\Lostpass' => __DIR__ . '/../..' . '/Zotlabs/Module/Lostpass.php', 'Zotlabs\\Module\\Magic' => __DIR__ . '/../..' . '/Zotlabs/Module/Magic.php', + 'Zotlabs\\Module\\Mail' => __DIR__ . '/../..' . '/Zotlabs/Module/Mail.php', 'Zotlabs\\Module\\Manage' => __DIR__ . '/../..' . '/Zotlabs/Module/Manage.php', 'Zotlabs\\Module\\Menu' => __DIR__ . '/../..' . '/Zotlabs/Module/Menu.php', 'Zotlabs\\Module\\Message' => __DIR__ . '/../..' . '/Zotlabs/Module/Message.php', @@ -1433,7 +1426,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Module\\View' => __DIR__ . '/../..' . '/Zotlabs/Module/View.php', 'Zotlabs\\Module\\Viewconnections' => __DIR__ . '/../..' . '/Zotlabs/Module/Viewconnections.php', 'Zotlabs\\Module\\Viewsrc' => __DIR__ . '/../..' . '/Zotlabs/Module/Viewsrc.php', - 'Zotlabs\\Module\\Vote' => __DIR__ . '/../..' . '/Zotlabs/Module/Vote.php', 'Zotlabs\\Module\\Wall_attach' => __DIR__ . '/../..' . '/Zotlabs/Module/Wall_attach.php', 'Zotlabs\\Module\\Wall_upload' => __DIR__ . '/../..' . '/Zotlabs/Module/Wall_upload.php', 'Zotlabs\\Module\\Webfinger' => __DIR__ . '/../..' . '/Zotlabs/Module/Webfinger.php', @@ -1445,7 +1437,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Module\\Xpoco' => __DIR__ . '/../..' . '/Zotlabs/Module/Xpoco.php', 'Zotlabs\\Module\\Xrd' => __DIR__ . '/../..' . '/Zotlabs/Module/Xrd.php', 'Zotlabs\\Module\\Xref' => __DIR__ . '/../..' . '/Zotlabs/Module/Xref.php', - 'Zotlabs\\Module\\Z6trans' => __DIR__ . '/../..' . '/Zotlabs/Module/Z6trans.php', 'Zotlabs\\Module\\Zfinger' => __DIR__ . '/../..' . '/Zotlabs/Module/Zfinger.php', 'Zotlabs\\Module\\Zot' => __DIR__ . '/../..' . '/Zotlabs/Module/Zot.php', 'Zotlabs\\Module\\Zot_probe' => __DIR__ . '/../..' . '/Zotlabs/Module/Zot_probe.php', @@ -1708,9 +1699,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Update\\_1232' => __DIR__ . '/../..' . '/Zotlabs/Update/_1232.php', 'Zotlabs\\Update\\_1233' => __DIR__ . '/../..' . '/Zotlabs/Update/_1233.php', 'Zotlabs\\Update\\_1234' => __DIR__ . '/../..' . '/Zotlabs/Update/_1234.php', - 'Zotlabs\\Update\\_1235' => __DIR__ . '/../..' . '/Zotlabs/Update/_1235.php', - 'Zotlabs\\Update\\_1236' => __DIR__ . '/../..' . '/Zotlabs/Update/_1236.php', - 'Zotlabs\\Update\\_1237' => __DIR__ . '/../..' . '/Zotlabs/Update/_1237.php', 'Zotlabs\\Web\\Controller' => __DIR__ . '/../..' . '/Zotlabs/Web/Controller.php', 'Zotlabs\\Web\\HTTPHeaders' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPHeaders.php', 'Zotlabs\\Web\\HTTPSig' => __DIR__ . '/../..' . '/Zotlabs/Web/HTTPSig.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 13da20c88..7f0e466d5 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1,20 +1,20 @@ [ { "name": "blueimp/jquery-file-upload", - "version": "v10.21.0", - "version_normalized": "10.21.0.0", + "version": "v10.7.0", + "version_normalized": "10.7.0.0", "source": { "type": "git", "url": "https://github.com/vkhramtsov/jQuery-File-Upload.git", - "reference": "74462f4b06e0f3b006d43cb101226f9d0e1219b7" + "reference": "4677050d31be2da817e1d23d0bacb81fb4b37cb3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/74462f4b06e0f3b006d43cb101226f9d0e1219b7", - "reference": "74462f4b06e0f3b006d43cb101226f9d0e1219b7", + "url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/4677050d31be2da817e1d23d0bacb81fb4b37cb3", + "reference": "4677050d31be2da817e1d23d0bacb81fb4b37cb3", "shasum": "" }, - "time": "2020-05-06T06:34:07+00:00", + "time": "2020-01-04T05:46:30+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -54,12 +54,6 @@ "selection", "upload", "widget" - ], - "funding": [ - { - "url": "https://github.com/blueimp", - "type": "github" - } ] }, { @@ -359,8 +353,7 @@ "codecs", "php", "tags" - ], - "abandoned": true + ] }, { "name": "michelf/php-markdown", @@ -508,23 +501,23 @@ }, { "name": "psr/log", - "version": "1.1.3", - "version_normalized": "1.1.3.0", + "version": "1.1.2", + "version_normalized": "1.1.2.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", "shasum": "" }, "require": { "php": ">=5.3.0" }, - "time": "2020-03-23T09:12:05+00:00", + "time": "2019-11-01T11:05:21+00:00", "type": "library", "extra": { "branch-alias": { @@ -557,17 +550,17 @@ }, { "name": "ramsey/uuid", - "version": "3.9.3", - "version_normalized": "3.9.3.0", + "version": "3.9.2", + "version_normalized": "3.9.2.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92" + "reference": "7779489a47d443f845271badbdcedfe4df8e06fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92", - "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/7779489a47d443f845271badbdcedfe4df8e06fb", + "reference": "7779489a47d443f845271badbdcedfe4df8e06fb", "shasum": "" }, "require": { @@ -601,7 +594,7 @@ "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, - "time": "2020-02-21T04:36:14+00:00", + "time": "2019-12-17T08:18:51+00:00", "type": "library", "extra": { "branch-alias": { @@ -646,17 +639,17 @@ }, { "name": "sabre/dav", - "version": "4.1.0", - "version_normalized": "4.1.0.0", + "version": "4.0.3", + "version_normalized": "4.0.3.0", "source": { "type": "git", "url": "https://github.com/sabre-io/dav.git", - "reference": "8f6f4d272504ee8424e1d0a47d6efc7772de2270" + "reference": "b793fb4ce27cf0f981b540ad771281c430ffe818" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/dav/zipball/8f6f4d272504ee8424e1d0a47d6efc7772de2270", - "reference": "8f6f4d272504ee8424e1d0a47d6efc7772de2270", + "url": "https://api.github.com/repos/sabre-io/dav/zipball/b793fb4ce27cf0f981b540ad771281c430ffe818", + "reference": "b793fb4ce27cf0f981b540ad771281c430ffe818", "shasum": "" }, "require": { @@ -670,27 +663,25 @@ "ext-simplexml": "*", "ext-spl": "*", "lib-libxml": ">=2.7.0", - "php": "^7.1.0", + "php": ">=7.0.0", "psr/log": "^1.0", "sabre/event": "^5.0", - "sabre/http": "^5.0.5", + "sabre/http": "^5.0", "sabre/uri": "^2.0", - "sabre/vobject": "^4.2.1", + "sabre/vobject": "^4.2.0-alpha1", "sabre/xml": "^2.0.1" }, "require-dev": { "evert/phpdoc-md": "~0.1.0", - "friendsofphp/php-cs-fixer": "~2.16.1", "monolog/monolog": "^1.18", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0" + "phpunit/phpunit": "^6" }, "suggest": { "ext-curl": "*", "ext-imap": "*", "ext-pdo": "*" }, - "time": "2020-03-20T08:55:46+00:00", + "time": "2020-01-10T07:52:45+00:00", "bin": [ "bin/sabredav", "bin/naturalselection" @@ -729,27 +720,27 @@ }, { "name": "sabre/event", - "version": "5.1.0", - "version_normalized": "5.1.0.0", + "version": "5.0.3", + "version_normalized": "5.0.3.0", "source": { "type": "git", "url": "https://github.com/sabre-io/event.git", - "reference": "d00a17507af0e7544cfe17096372f5d733e3b276" + "reference": "f5cf802d240df1257866d8813282b98aee3bc548" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/event/zipball/d00a17507af0e7544cfe17096372f5d733e3b276", - "reference": "d00a17507af0e7544cfe17096372f5d733e3b276", + "url": "https://api.github.com/repos/sabre-io/event/zipball/f5cf802d240df1257866d8813282b98aee3bc548", + "reference": "f5cf802d240df1257866d8813282b98aee3bc548", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.16.1", - "phpunit/phpunit": "^7 || ^8" + "phpunit/phpunit": ">=6", + "sabre/cs": "~1.0.0" }, - "time": "2020-01-31T18:52:29+00:00", + "time": "2018-03-05T13:55:47+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -791,35 +782,34 @@ }, { "name": "sabre/http", - "version": "5.1.0", - "version_normalized": "5.1.0.0", + "version": "5.0.5", + "version_normalized": "5.0.5.0", "source": { "type": "git", "url": "https://github.com/sabre-io/http.git", - "reference": "23446999f1f6e62892bbd89745070aa902dd3539" + "reference": "85962a2ed867e7e5beb9f9d3a15cd53cd521a09b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/http/zipball/23446999f1f6e62892bbd89745070aa902dd3539", - "reference": "23446999f1f6e62892bbd89745070aa902dd3539", + "url": "https://api.github.com/repos/sabre-io/http/zipball/85962a2ed867e7e5beb9f9d3a15cd53cd521a09b", + "reference": "85962a2ed867e7e5beb9f9d3a15cd53cd521a09b", "shasum": "" }, "require": { "ext-ctype": "*", "ext-curl": "*", "ext-mbstring": "*", - "php": "^7.1", + "php": "^7.0", "sabre/event": ">=4.0 <6.0", "sabre/uri": "^2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.16.1", - "phpunit/phpunit": "^7.0 || ^8.0" + "phpunit/phpunit": "^6.0 || ^7.0" }, "suggest": { "ext-curl": " to make http requests with the Client class" }, - "time": "2020-01-31T20:07:09+00:00", + "time": "2019-11-28T19:35:25+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -850,27 +840,26 @@ }, { "name": "sabre/uri", - "version": "2.2.0", - "version_normalized": "2.2.0.0", + "version": "2.1.3", + "version_normalized": "2.1.3.0", "source": { "type": "git", "url": "https://github.com/sabre-io/uri.git", - "reference": "059d11012603be2e32ddb7543602965563ddbb09" + "reference": "18f454324f371cbcabdad3d0d3755b4b0182095d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/uri/zipball/059d11012603be2e32ddb7543602965563ddbb09", - "reference": "059d11012603be2e32ddb7543602965563ddbb09", + "url": "https://api.github.com/repos/sabre-io/uri/zipball/18f454324f371cbcabdad3d0d3755b4b0182095d", + "reference": "18f454324f371cbcabdad3d0d3755b4b0182095d", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.16.1", - "phpunit/phpunit": "^7 || ^8" + "phpunit/phpunit": "^6" }, - "time": "2020-01-31T18:53:43+00:00", + "time": "2019-09-09T23:00:25+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -903,32 +892,31 @@ }, { "name": "sabre/vobject", - "version": "4.3.0", - "version_normalized": "4.3.0.0", + "version": "4.2.1", + "version_normalized": "4.2.1.0", "source": { "type": "git", "url": "https://github.com/sabre-io/vobject.git", - "reference": "5b2248d965160f93053f3a24704794a13a22a1bb" + "reference": "6d7476fbd227ae285029c19ad518cd451336038c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/vobject/zipball/5b2248d965160f93053f3a24704794a13a22a1bb", - "reference": "5b2248d965160f93053f3a24704794a13a22a1bb", + "url": "https://api.github.com/repos/sabre-io/vobject/zipball/6d7476fbd227ae285029c19ad518cd451336038c", + "reference": "6d7476fbd227ae285029c19ad518cd451336038c", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^7.1", - "sabre/xml": "^2.1" + "php": ">=5.5", + "sabre/xml": ">=1.5 <3.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.16.1", - "phpunit/phpunit": "^7 || ^8" + "phpunit/phpunit": "> 4.8.35, <6.0.0" }, "suggest": { "hoa/bench": "If you would like to run the benchmark scripts" }, - "time": "2020-01-31T18:50:58+00:00", + "time": "2019-12-18T19:29:43+00:00", "bin": [ "bin/vobject", "bin/generate_vcards" @@ -1002,17 +990,17 @@ }, { "name": "sabre/xml", - "version": "2.2.0", - "version_normalized": "2.2.0.0", + "version": "2.1.3", + "version_normalized": "2.1.3.0", "source": { "type": "git", "url": "https://github.com/sabre-io/xml.git", - "reference": "705f5cbf7f4fb1e3dd47173e3f026892818c8d46" + "reference": "f08a58f57e2b0d7df769a432756aa371417ab9eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/xml/zipball/705f5cbf7f4fb1e3dd47173e3f026892818c8d46", - "reference": "705f5cbf7f4fb1e3dd47173e3f026892818c8d46", + "url": "https://api.github.com/repos/sabre-io/xml/zipball/f08a58f57e2b0d7df769a432756aa371417ab9eb", + "reference": "f08a58f57e2b0d7df769a432756aa371417ab9eb", "shasum": "" }, "require": { @@ -1020,14 +1008,13 @@ "ext-xmlreader": "*", "ext-xmlwriter": "*", "lib-libxml": ">=2.6.20", - "php": "^7.1", + "php": ">=7.0", "sabre/uri": ">=1.0,<3.0.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.16.1", - "phpunit/phpunit": "^7 || ^8" + "phpunit/phpunit": "^6" }, - "time": "2020-01-31T18:52:58+00:00", + "time": "2019-08-14T15:41:34+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1067,17 +1054,17 @@ }, { "name": "simplepie/simplepie", - "version": "1.5.5", - "version_normalized": "1.5.5.0", + "version": "1.5.4", + "version_normalized": "1.5.4.0", "source": { "type": "git", "url": "https://github.com/simplepie/simplepie.git", - "reference": "ae49e2201b6da9c808e5dac437aca356a11831b4" + "reference": "f4c8246511a38fc9d99a59fb42f61eeeafb31663" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplepie/simplepie/zipball/ae49e2201b6da9c808e5dac437aca356a11831b4", - "reference": "ae49e2201b6da9c808e5dac437aca356a11831b4", + "url": "https://api.github.com/repos/simplepie/simplepie/zipball/f4c8246511a38fc9d99a59fb42f61eeeafb31663", + "reference": "f4c8246511a38fc9d99a59fb42f61eeeafb31663", "shasum": "" }, "require": { @@ -1096,7 +1083,7 @@ "ext-mbstring": "", "mf2/mf2": "Microformat module that allows for parsing HTML for microformats" }, - "time": "2020-05-01T12:23:14+00:00", + "time": "2019-11-23T07:05:15+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1119,8 +1106,8 @@ "role": "Creator, alumnus developer" }, { - "name": "Sam Sneddon", - "homepage": "https://gsnedders.com/", + "name": "Geoffrey Sneddon", + "homepage": "http://gsnedders.com/", "role": "Alumnus developer" }, { @@ -1138,33 +1125,32 @@ "rss" ], "support": { - "source": "https://github.com/simplepie/simplepie/tree/1.5.5", + "source": "https://github.com/simplepie/simplepie/tree/master", "issues": "https://github.com/simplepie/simplepie/issues" } }, { "name": "smarty/smarty", - "version": "v3.1.36", - "version_normalized": "3.1.36.0", + "version": "v3.1.34", + "version_normalized": "3.1.34.0", "source": { "type": "git", "url": "https://github.com/smarty-php/smarty.git", - "reference": "fd148f7ade295014fff77f89ee3d5b20d9d55451" + "reference": "c9f0de05f41b9e52798b268ab1e625fac3b8578c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/smarty-php/smarty/zipball/fd148f7ade295014fff77f89ee3d5b20d9d55451", - "reference": "fd148f7ade295014fff77f89ee3d5b20d9d55451", + "url": "https://api.github.com/repos/smarty-php/smarty/zipball/c9f0de05f41b9e52798b268ab1e625fac3b8578c", + "reference": "c9f0de05f41b9e52798b268ab1e625fac3b8578c", "shasum": "" }, "require": { "php": ">=5.2" }, "require-dev": { - "phpunit/phpunit": "6.4.1", - "smarty/smarty-lexer": "^3.1" + "phpunit/phpunit": "6.4.1" }, - "time": "2020-04-14T14:44:26+00:00", + "time": "2019-02-28T06:42:20+00:00", "type": "library", "extra": { "branch-alias": { @@ -1203,17 +1189,17 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.15.0", - "version_normalized": "1.15.0.0", + "version": "v1.13.1", + "version_normalized": "1.13.1.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14" + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/4719fa9c18b0464d399f1a63bf624b42b6fa8d14", - "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", "shasum": "" }, "require": { @@ -1222,11 +1208,11 @@ "suggest": { "ext-ctype": "For best performance" }, - "time": "2020-02-27T09:26:54+00:00", + "time": "2019-11-27T13:56:44+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.13-dev" } }, "installation-source": "dist", @@ -1259,20 +1245,6 @@ "ctype", "polyfill", "portable" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } ] }, { diff --git a/vendor/psr/log/.gitignore b/vendor/psr/log/.gitignore new file mode 100644 index 000000000..22d0d82f8 --- /dev/null +++ b/vendor/psr/log/.gitignore @@ -0,0 +1 @@ +vendor diff --git a/vendor/psr/log/Psr/Log/LoggerInterface.php b/vendor/psr/log/Psr/Log/LoggerInterface.php index 2206cfde4..e695046e3 100644 --- a/vendor/psr/log/Psr/Log/LoggerInterface.php +++ b/vendor/psr/log/Psr/Log/LoggerInterface.php @@ -22,8 +22,8 @@ interface LoggerInterface /** * System is unusable. * - * @param string $message - * @param mixed[] $context + * @param string $message + * @param array $context * * @return void */ @@ -35,8 +35,8 @@ interface LoggerInterface * Example: Entire website down, database unavailable, etc. This should * trigger the SMS alerts and wake you up. * - * @param string $message - * @param mixed[] $context + * @param string $message + * @param array $context * * @return void */ @@ -47,8 +47,8 @@ interface LoggerInterface * * Example: Application component unavailable, unexpected exception. * - * @param string $message - * @param mixed[] $context + * @param string $message + * @param array $context * * @return void */ @@ -58,8 +58,8 @@ interface LoggerInterface * Runtime errors that do not require immediate action but should typically * be logged and monitored. * - * @param string $message - * @param mixed[] $context + * @param string $message + * @param array $context * * @return void */ @@ -71,8 +71,8 @@ interface LoggerInterface * Example: Use of deprecated APIs, poor use of an API, undesirable things * that are not necessarily wrong. * - * @param string $message - * @param mixed[] $context + * @param string $message + * @param array $context * * @return void */ @@ -81,8 +81,8 @@ interface LoggerInterface /** * Normal but significant events. * - * @param string $message - * @param mixed[] $context + * @param string $message + * @param array $context * * @return void */ @@ -93,8 +93,8 @@ interface LoggerInterface * * Example: User logs in, SQL logs. * - * @param string $message - * @param mixed[] $context + * @param string $message + * @param array $context * * @return void */ @@ -103,8 +103,8 @@ interface LoggerInterface /** * Detailed debug information. * - * @param string $message - * @param mixed[] $context + * @param string $message + * @param array $context * * @return void */ @@ -113,9 +113,9 @@ interface LoggerInterface /** * Logs with an arbitrary level. * - * @param mixed $level - * @param string $message - * @param mixed[] $context + * @param mixed $level + * @param string $message + * @param array $context * * @return void * diff --git a/vendor/ramsey/uuid/CHANGELOG.md b/vendor/ramsey/uuid/CHANGELOG.md index 57b7f5ea7..f2f1548e2 100644 --- a/vendor/ramsey/uuid/CHANGELOG.md +++ b/vendor/ramsey/uuid/CHANGELOG.md @@ -21,23 +21,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Security -## [3.9.3] - 2020-02-20 - -### Fixed - -* For v1 UUIDs, round down for timestamps so that microseconds do not bump the - timestamp to the next second. - - As an example, consider the case of timestamp `1` with `600000` microseconds - (`1.600000`). This is the first second after midnight on January 1, 1970, UTC. - Previous versions of this library had a bug that would round this to `2`, so - the rendered time was `1970-01-01 00:00:02`. This was incorrect. Despite - having `600000` microseconds, the time should not round up to the next second. - Rather, the time should be `1970-01-01 00:00:01.600000`. Since this version of - ramsey/uuid does not support microseconds, the microseconds are dropped, and - the time is `1970-01-01 00:00:01`. No rounding should occur. - - ## [3.9.2] - 2019-12-17 ### Fixed @@ -608,8 +591,7 @@ versions leading up to this release.* [ramsey/uuid-doctrine]: https://github.com/ramsey/uuid-doctrine [ramsey/uuid-console]: https://github.com/ramsey/uuid-console -[unreleased]: https://github.com/ramsey/uuid/compare/3.9.3...HEAD -[3.9.3]: https://github.com/ramsey/uuid/compare/3.9.2...3.9.3 +[unreleased]: https://github.com/ramsey/uuid/compare/3.9.2...HEAD [3.9.2]: https://github.com/ramsey/uuid/compare/3.9.1...3.9.2 [3.9.1]: https://github.com/ramsey/uuid/compare/3.9.0...3.9.1 [3.9.0]: https://github.com/ramsey/uuid/compare/3.8.0...3.9.0 diff --git a/vendor/ramsey/uuid/LICENSE b/vendor/ramsey/uuid/LICENSE index b2aa4b587..f6f7e8043 100644 --- a/vendor/ramsey/uuid/LICENSE +++ b/vendor/ramsey/uuid/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2012-2020 Ben Ramsey <ben@benramsey.com> +Copyright (c) 2012-2019 Ben Ramsey <ben@benramsey.com> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php b/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php index 9d13af70c..270a1e75b 100644 --- a/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php +++ b/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php @@ -17,7 +17,7 @@ use Ramsey\Uuid\Exception\InvalidUuidStringException; use Ramsey\Uuid\UuidInterface; /** - * TimestampFirstCombCodec encodes and decodes COMB UUIDs which have the timestamp as the first 48 bits. + * TimestampLastCombCodec encodes and decodes COMB UUIDs which have the timestamp as the first 48 bits. * To be used with MySQL, PostgreSQL, Oracle. */ class TimestampFirstCombCodec extends StringCodec diff --git a/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php b/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php index 23cf1640b..c851792f3 100644 --- a/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php +++ b/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php @@ -28,7 +28,7 @@ interface TimeConverterInterface * * @param string $seconds * @param string $microSeconds - * @return string[] An array guaranteed to contain `low`, `mid`, and `hi` keys + * @return string[] An array guaranteed to contain `low`, `mid`, and `high` keys * @throws UnsatisfiedDependencyException if called on a 32-bit system and * `Moontoast\Math\BigNumber` is not present * @link http://tools.ietf.org/html/rfc4122#section-4.2.2 diff --git a/vendor/ramsey/uuid/src/DegradedUuid.php b/vendor/ramsey/uuid/src/DegradedUuid.php index 4e11272d0..26697615c 100644 --- a/vendor/ramsey/uuid/src/DegradedUuid.php +++ b/vendor/ramsey/uuid/src/DegradedUuid.php @@ -40,7 +40,7 @@ class DegradedUuid extends Uuid $ts = new BigNumber($time, 20); $ts->subtract('122192928000000000'); $ts->divide('10000000.0'); - $ts->floor(); + $ts->round(); $unixTime = $ts->getValue(); return new DateTime("@{$unixTime}"); diff --git a/vendor/ramsey/uuid/src/Uuid.php b/vendor/ramsey/uuid/src/Uuid.php index f2912b48a..38fbd5ed6 100644 --- a/vendor/ramsey/uuid/src/Uuid.php +++ b/vendor/ramsey/uuid/src/Uuid.php @@ -350,8 +350,8 @@ class Uuid implements UuidInterface throw new UnsupportedOperationException('Not a time-based UUID'); } - $unixTimeNanoseconds = $this->getTimestamp() - 0x01b21dd213814000; - $unixTime = ($unixTimeNanoseconds - $unixTimeNanoseconds % 1e7) / 1e7; + $unixTime = ($this->getTimestamp() - 0x01b21dd213814000) / 1e7; + $unixTime = number_format($unixTime, 0, '', ''); return new DateTime("@{$unixTime}"); } @@ -676,7 +676,7 @@ class Uuid implements UuidInterface */ public static function isValid($uuid) { - $uuid = str_replace(['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}'], '', $uuid); + $uuid = str_replace(['urn:', 'uuid:', '{', '}'], '', $uuid); if ($uuid == self::NIL) { return true; diff --git a/vendor/sabre/dav/.gitignore b/vendor/sabre/dav/.gitignore index f287cca1a..499f7b689 100644 --- a/vendor/sabre/dav/.gitignore +++ b/vendor/sabre/dav/.gitignore @@ -6,9 +6,6 @@ tests/cov # Custom settings for tests tests/config.user.php -# PHPUnit test Cache -.phpunit.result.cache - # ViM *.swp @@ -17,9 +14,14 @@ composer.lock vendor # Composer binaries +bin/phing +bin/phpunit bin/vobject bin/generate_vcards bin/phpdocmd +bin/phpunit +bin/php-cs-fixer +bin/sabre-cs-fixer # Assuming every .php file in the root is for testing /*.php @@ -37,4 +39,7 @@ build.properties docs/api docs/wikidocs +# Mac +.DS_Store + .php_cs.cache diff --git a/vendor/sabre/dav/.php_cs.dist b/vendor/sabre/dav/.php_cs.dist index c5c78a971..8d61ee259 100644 --- a/vendor/sabre/dav/.php_cs.dist +++ b/vendor/sabre/dav/.php_cs.dist @@ -6,7 +6,7 @@ $config->getFinder() ->in(__DIR__); $config->setRules([ '@PSR1' => true, - '@Symfony' => true + '@Symfony' =>true ]); return $config;
\ No newline at end of file diff --git a/vendor/sabre/dav/.travis.yml b/vendor/sabre/dav/.travis.yml index 03d18de2f..84a04423e 100644 --- a/vendor/sabre/dav/.travis.yml +++ b/vendor/sabre/dav/.travis.yml @@ -1,15 +1,10 @@ language: php sudo: required - -branches: - only: - - master - php: + - 7.0 - 7.1 - 7.2 - 7.3 - - 7.4 env: global: @@ -18,44 +13,42 @@ env: - SABRE_MYSQLDSN="mysql:host=127.0.0.1;dbname=sabredav_test" - RUN_PHPSTAN="FALSE" matrix: - - PREFER_LOWEST="" TEST_DEPS="" REPORT_COVERAGE="TRUE" WITH_COVERAGE="--coverage-clover=coverage.xml" - - PREFER_LOWEST="--prefer-lowest" TEST_DEPS="tests/Sabre/" REPORT_COVERAGE="FALSE" WITH_COVERAGE="" + - LOWEST_DEPS="" TEST_DEPS="" WITH_COVERAGE="--coverage-clover=coverage.xml" + - LOWEST_DEPS="--prefer-lowest" TEST_DEPS="tests/Sabre/" $WITH_COVERAGE="" matrix: include: - name: 'PHPStan' - php: 7.4 - env: - - RUN_PHPSTAN="TRUE" - - REPORT_COVERAGE="FALSE" + php: 7.2 + env: RUN_PHPSTAN="TRUE" - name: 'Test with streaming propfind' php: 7.2 - env: - - RUN_TEST_WITH_STREAMING_PROPFIND="TRUE" - - REPORT_COVERAGE="FALSE" - fast_finish: true + env: RUN_TEST_WITH_STREAMING_PROPFIND="TRUE" services: - mysql - postgresql +install: + - if [ $RUN_PHPSTAN == "TRUE" ]; then wget https://github.com/phpstan/phpstan/releases/download/0.11.8/phpstan.phar; fi + before_script: - - mysql -u root -h 127.0.0.1 -e 'create database sabredav_test' +# - mysql -u root -h 127.0.0.1 sabredav_test -e 'SELECT VERSION();' +#- mysql -u root -h 127.0.0.1 -e 'create database sabredav_test' - psql -c "create database sabredav_test" -U postgres - psql -c "create user sabredav with PASSWORD 'sabredav';GRANT ALL PRIVILEGES ON DATABASE sabredav_test TO sabredav" -U postgres - - composer update $PREFER_LOWEST + - composer update --prefer-dist $LOWEST_DEPS addons: postgresql: "9.5" script: - - if [ $RUN_PHPSTAN == "FALSE" ]; then php vendor/bin/php-cs-fixer fix --dry-run --diff; fi - - if [ $RUN_PHPSTAN == "FALSE" ]; then php vendor/bin/phpunit --configuration tests/phpunit.xml $WITH_COVERAGE $TEST_DEPS; fi + - if [ $RUN_PHPSTAN == "FALSE" ]; then ./bin/phpunit --verbose --configuration tests/phpunit.xml.dist $WITH_COVERAGE $TEST_DEPS; fi - if [ $RUN_PHPSTAN == "FALSE" ]; then rm -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini; fi - - if [ $RUN_PHPSTAN == "TRUE" ]; then composer phpstan; fi + - if [ $RUN_PHPSTAN == "TRUE" ]; then php phpstan.phar analyse -c phpstan.neon lib; fi after_success: - - if [ $REPORT_COVERAGE == "TRUE" ]; then bash <(curl -s https://codecov.io/bash); fi + - bash <(curl -s https://codecov.io/bash) cache: directories: diff --git a/vendor/sabre/dav/CHANGELOG.md b/vendor/sabre/dav/CHANGELOG.md index 932827a72..5867bd3ce 100644 --- a/vendor/sabre/dav/CHANGELOG.md +++ b/vendor/sabre/dav/CHANGELOG.md @@ -1,12 +1,6 @@ ChangeLog ========= -4.1.0 (2020-03-20) -------------------------- -* Support PHP 7.4 -* Drop support for PHP 7.0 -* CalDAV: send MIME-Version header in scheduling emails - 4.0.3 (2020-01-10) ------------------------- * DAV: Streaming PROPFIND server implementation diff --git a/vendor/sabre/dav/README.md b/vendor/sabre/dav/README.md index acdb1e03c..a06805443 100644 --- a/vendor/sabre/dav/README.md +++ b/vendor/sabre/dav/README.md @@ -16,7 +16,7 @@ Build status | branch | status | minimum PHP version | | ------------ | ------ | ------------------- | -| master | [![Build Status](https://travis-ci.org/sabre-io/dav.svg?branch=master)](https://travis-ci.org/sabre-io/dav) | PHP 7.1 | +| master | [![Build Status](https://travis-ci.org/sabre-io/dav.svg?branch=master)](https://travis-ci.org/sabre-io/dav) | PHP 7.0 | | 3.1 | [![Build Status](https://travis-ci.org/sabre-io/dav.svg?branch=3.0)](https://travis-ci.org/sabre-io/dav) | PHP 5.5 | | 3.0 | [![Build Status](https://travis-ci.org/sabre-io/dav.svg?branch=3.0)](https://travis-ci.org/sabre-io/dav) | PHP 5.4 | | 2.1 | [![Build Status](https://travis-ci.org/sabre-io/dav.svg?branch=2.1)](https://travis-ci.org/sabre-io/dav) | PHP 5.4 | diff --git a/vendor/sabre/dav/composer.json b/vendor/sabre/dav/composer.json index f0fbf7af7..226b2cb30 100644 --- a/vendor/sabre/dav/composer.json +++ b/vendor/sabre/dav/composer.json @@ -14,11 +14,11 @@ } ], "require": { - "php": "^7.1.0", - "sabre/vobject": "^4.2.1", + "php": ">=7.0.0", + "sabre/vobject": "^4.2.0-alpha1", "sabre/event" : "^5.0", "sabre/xml" : "^2.0.1", - "sabre/http" : "^5.0.5", + "sabre/http" : "^5.0", "sabre/uri" : "^2.0", "ext-dom": "*", "ext-pcre": "*", @@ -33,9 +33,7 @@ "ext-json": "*" }, "require-dev" : { - "friendsofphp/php-cs-fixer": "~2.16.1", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit" : "^7.5 || ^8.5 || ^9.0", + "phpunit/phpunit" : "^6", "evert/phpdoc-md" : "~0.1.0", "monolog/monolog": "^1.18" }, @@ -52,17 +50,6 @@ "Sabre\\CardDAV\\" : "lib/CardDAV/" } }, - "autoload-dev" : { - "psr-4" : { - "Sabre\\" : "tests/Sabre/", - "Sabre\\CalDAV\\" : "tests/Sabre/CalDAV", - "Sabre\\CardDAV\\" : "tests/Sabre/CardDAV", - "Sabre\\DAV\\" : "tests/Sabre/DAV", - "Sabre\\DAV\\Property\\" : "tests/Sabre/DAV/Xml/Property", - "Sabre\\DAVACL\\" : "tests/Sabre/DAVACL", - "Sabre\\HTTP\\" : "tests/Sabre/HTTP" - } - }, "support" : { "forum" : "https://groups.google.com/group/sabredav-discuss", "source" : "https://github.com/fruux/sabre-dav" @@ -71,20 +58,7 @@ "bin/sabredav", "bin/naturalselection" ], - "scripts": { - "phpstan": [ - "phpstan analyse lib tests" - ], - "cs-fixer": [ - "php-cs-fixer fix" - ], - "phpunit": [ - "phpunit --configuration tests/phpunit.xml" - ], - "test": [ - "composer phpstan", - "composer cs-fixer", - "composer phpunit" - ] + "config" : { + "bin-dir" : "./bin" } } diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php b/vendor/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php index c32c86489..336e104c8 100644 --- a/vendor/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php +++ b/vendor/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php @@ -30,7 +30,8 @@ abstract class AbstractBackend implements BackendInterface * * Read the PropPatch documentation for more info and examples. * - * @param mixed $calendarId + * @param mixed $calendarId + * @param \Sabre\DAV\PropPatch $propPatch */ public function updateCalendar($calendarId, \Sabre\DAV\PropPatch $propPatch) { @@ -45,6 +46,7 @@ abstract class AbstractBackend implements BackendInterface * If the backend supports this, it may allow for some speed-ups. * * @param mixed $calendarId + * @param array $uris * * @return array */ @@ -101,6 +103,7 @@ abstract class AbstractBackend implements BackendInterface * to think of. * * @param mixed $calendarId + * @param array $filters * * @return array */ @@ -122,6 +125,9 @@ abstract class AbstractBackend implements BackendInterface * This method validates if a filter (as passed to calendarQuery) matches * the given object. * + * @param array $object + * @param array $filters + * * @return bool */ protected function validateFilterForObject(array $object, array $filters) diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php b/vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php index 8bfa7446a..7d125cf89 100644 --- a/vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php +++ b/vendor/sabre/dav/lib/CalDAV/Backend/BackendInterface.php @@ -51,6 +51,7 @@ interface BackendInterface * * @param string $principalUri * @param string $calendarUri + * @param array $properties * * @return mixed */ @@ -68,7 +69,8 @@ interface BackendInterface * * Read the PropPatch documentation for more info and examples. * - * @param mixed $calendarId + * @param mixed $calendarId + * @param \Sabre\DAV\PropPatch $propPatch */ public function updateCalendar($calendarId, \Sabre\DAV\PropPatch $propPatch); @@ -141,6 +143,7 @@ interface BackendInterface * If the backend supports this, it may allow for some speed-ups. * * @param mixed $calendarId + * @param array $uris * * @return array */ @@ -244,6 +247,7 @@ interface BackendInterface * to think of. * * @param mixed $calendarId + * @param array $filters * * @return array */ diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php b/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php index 6e48d5454..0ba493305 100644 --- a/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php +++ b/vendor/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php @@ -40,7 +40,8 @@ interface NotificationSupport extends BackendInterface * * This may be called by a client once it deems a notification handled. * - * @param string $principalUri + * @param string $principalUri + * @param NotificationInterface $notification */ public function deleteNotification($principalUri, NotificationInterface $notification); diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php b/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php index 7a07724b3..da601fad8 100644 --- a/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php +++ b/vendor/sabre/dav/lib/CalDAV/Backend/PDO.php @@ -117,6 +117,8 @@ class PDO extends AbstractBackend implements SyncSupport, SubscriptionSupport, S /** * Creates the backend. + * + * @param \PDO $pdo */ public function __construct(\PDO $pdo) { @@ -218,6 +220,7 @@ SQL * * @param string $principalUri * @param string $calendarUri + * @param array $properties * * @return string */ @@ -287,7 +290,8 @@ SQL * * Read the PropPatch documentation for more info and examples. * - * @param mixed $calendarId + * @param mixed $calendarId + * @param \Sabre\DAV\PropPatch $propPatch */ public function updateCalendar($calendarId, \Sabre\DAV\PropPatch $propPatch) { @@ -479,6 +483,7 @@ SQL * If the backend supports this, it may allow for some speed-ups. * * @param mixed $calendarId + * @param array $uris * * @return array */ @@ -755,6 +760,7 @@ SQL * specific components, and VEVENT time-ranges. * * @param mixed $calendarId + * @param array $filters * * @return array */ @@ -1103,6 +1109,7 @@ SQL; * * @param string $principalUri * @param string $uri + * @param array $properties * * @return mixed */ diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/SimplePDO.php b/vendor/sabre/dav/lib/CalDAV/Backend/SimplePDO.php index 8f42072c9..b6f3c8bef 100644 --- a/vendor/sabre/dav/lib/CalDAV/Backend/SimplePDO.php +++ b/vendor/sabre/dav/lib/CalDAV/Backend/SimplePDO.php @@ -44,6 +44,8 @@ class SimplePDO extends AbstractBackend /** * Creates the backend. + * + * @param \PDO $pdo */ public function __construct(\PDO $pdo) { @@ -101,6 +103,7 @@ class SimplePDO extends AbstractBackend * * @param string $principalUri * @param string $calendarUri + * @param array $properties * * @return string */ diff --git a/vendor/sabre/dav/lib/CalDAV/Backend/SubscriptionSupport.php b/vendor/sabre/dav/lib/CalDAV/Backend/SubscriptionSupport.php index 7655c2e11..2aaf95cdb 100644 --- a/vendor/sabre/dav/lib/CalDAV/Backend/SubscriptionSupport.php +++ b/vendor/sabre/dav/lib/CalDAV/Backend/SubscriptionSupport.php @@ -58,6 +58,7 @@ interface SubscriptionSupport extends BackendInterface * * @param string $principalUri * @param string $uri + * @param array $properties * * @return mixed */ diff --git a/vendor/sabre/dav/lib/CalDAV/Calendar.php b/vendor/sabre/dav/lib/CalDAV/Calendar.php index 9f32e702a..717f04f94 100644 --- a/vendor/sabre/dav/lib/CalDAV/Calendar.php +++ b/vendor/sabre/dav/lib/CalDAV/Calendar.php @@ -39,7 +39,8 @@ class Calendar implements ICalendar, DAV\IProperties, DAV\Sync\ISyncCollection, /** * Constructor. * - * @param array $calendarInfo + * @param Backend\BackendInterface $caldavBackend + * @param array $calendarInfo */ public function __construct(Backend\BackendInterface $caldavBackend, $calendarInfo) { @@ -65,6 +66,8 @@ class Calendar implements ICalendar, DAV\IProperties, DAV\Sync\ISyncCollection, * * To update specific properties, call the 'handle' method on this object. * Read the PropPatch documentation for more information. + * + * @param PropPatch $propPatch */ public function propPatch(PropPatch $propPatch) { @@ -347,6 +350,8 @@ class Calendar implements ICalendar, DAV\IProperties, DAV\Sync\ISyncCollection, * The list of filters are specified as an array. The exact array is * documented by Sabre\CalDAV\CalendarQueryParser. * + * @param array $filters + * * @return array */ public function calendarQuery(array $filters) diff --git a/vendor/sabre/dav/lib/CalDAV/CalendarHome.php b/vendor/sabre/dav/lib/CalDAV/CalendarHome.php index 159ddcc67..663d449bf 100644 --- a/vendor/sabre/dav/lib/CalDAV/CalendarHome.php +++ b/vendor/sabre/dav/lib/CalDAV/CalendarHome.php @@ -43,7 +43,8 @@ class CalendarHome implements DAV\IExtendedCollection, DAVACL\IACL /** * Constructor. * - * @param array $principalInfo + * @param Backend\BackendInterface $caldavBackend + * @param array $principalInfo */ public function __construct(Backend\BackendInterface $caldavBackend, $principalInfo) { @@ -215,6 +216,7 @@ class CalendarHome implements DAV\IExtendedCollection, DAVACL\IACL * Creates a new calendar or subscription. * * @param string $name + * @param MkCol $mkCol * * @throws DAV\Exception\InvalidResourceType */ diff --git a/vendor/sabre/dav/lib/CalDAV/CalendarObject.php b/vendor/sabre/dav/lib/CalDAV/CalendarObject.php index 671f4b5db..3f28ee7f7 100644 --- a/vendor/sabre/dav/lib/CalDAV/CalendarObject.php +++ b/vendor/sabre/dav/lib/CalDAV/CalendarObject.php @@ -49,6 +49,10 @@ class CalendarObject extends \Sabre\DAV\File implements ICalendarObject, \Sabre\ * * size - (optional) The size of the data in bytes. * * lastmodified - (optional) format as a unix timestamp. * * acl - (optional) Use this to override the default ACL for the node. + * + * @param Backend\BackendInterface $caldavBackend + * @param array $calendarInfo + * @param array $objectData */ public function __construct(Backend\BackendInterface $caldavBackend, array $calendarInfo, array $objectData) { diff --git a/vendor/sabre/dav/lib/CalDAV/CalendarQueryValidator.php b/vendor/sabre/dav/lib/CalDAV/CalendarQueryValidator.php index 7ce1c05b7..0e7f1307d 100644 --- a/vendor/sabre/dav/lib/CalDAV/CalendarQueryValidator.php +++ b/vendor/sabre/dav/lib/CalDAV/CalendarQueryValidator.php @@ -27,6 +27,9 @@ class CalendarQueryValidator * * The list of filters must be formatted as parsed by \Sabre\CalDAV\CalendarQueryParser * + * @param VObject\Component\VCalendar $vObject + * @param array $filters + * * @return bool */ public function validate(VObject\Component\VCalendar $vObject, array $filters) @@ -49,6 +52,9 @@ class CalendarQueryValidator * component we're checking should be specified, not the component to check * itself. * + * @param VObject\Component $parent + * @param array $filters + * * @return bool */ protected function validateCompFilters(VObject\Component $parent, array $filters) @@ -110,6 +116,9 @@ class CalendarQueryValidator * property we're checking should be specified, not the property to check * itself. * + * @param VObject\Component $parent + * @param array $filters + * * @return bool */ protected function validatePropFilters(VObject\Component $parent, array $filters) @@ -172,6 +181,9 @@ class CalendarQueryValidator * parameter we're checking should be specified, not the parameter to check * itself. * + * @param VObject\Property $parent + * @param array $filters + * * @return bool */ protected function validateParamFilters(VObject\Property $parent, array $filters) @@ -219,7 +231,8 @@ class CalendarQueryValidator * A single text-match should be specified as well as the specific property * or parameter we need to validate. * - * @param VObject\Node|string $check value to check against + * @param VObject\Node|string $check value to check against + * @param array $textMatch * * @return bool */ @@ -240,8 +253,9 @@ class CalendarQueryValidator * This is all based on the rules specified in rfc4791, which are quite * complex. * - * @param DateTime $start - * @param DateTime $end + * @param VObject\Node $component + * @param DateTime $start + * @param DateTime $end * * @return bool */ diff --git a/vendor/sabre/dav/lib/CalDAV/CalendarRoot.php b/vendor/sabre/dav/lib/CalDAV/CalendarRoot.php index 3038d218f..42f1a44d5 100644 --- a/vendor/sabre/dav/lib/CalDAV/CalendarRoot.php +++ b/vendor/sabre/dav/lib/CalDAV/CalendarRoot.php @@ -38,7 +38,9 @@ class CalendarRoot extends \Sabre\DAVACL\AbstractPrincipalCollection * actually located in a different path, use the $principalPrefix argument * to override this. * - * @param string $principalPrefix + * @param PrincipalBackend\BackendInterface $principalBackend + * @param Backend\BackendInterface $caldavBackend + * @param string $principalPrefix */ public function __construct(PrincipalBackend\BackendInterface $principalBackend, Backend\BackendInterface $caldavBackend, $principalPrefix = 'principals') { @@ -66,6 +68,8 @@ class CalendarRoot extends \Sabre\DAVACL\AbstractPrincipalCollection * at least contain a uri item. Other properties may or may not be * supplied by the authentication backend. * + * @param array $principal + * * @return \Sabre\DAV\INode */ public function getChildForPrincipal(array $principal) diff --git a/vendor/sabre/dav/lib/CalDAV/Exception/InvalidComponentType.php b/vendor/sabre/dav/lib/CalDAV/Exception/InvalidComponentType.php index e94378a68..3385ad8fe 100644 --- a/vendor/sabre/dav/lib/CalDAV/Exception/InvalidComponentType.php +++ b/vendor/sabre/dav/lib/CalDAV/Exception/InvalidComponentType.php @@ -20,6 +20,9 @@ class InvalidComponentType extends DAV\Exception\Forbidden * Adds in extra information in the xml response. * * This method adds the {CALDAV:}supported-calendar-component as defined in rfc4791 + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/CalDAV/ICSExportPlugin.php b/vendor/sabre/dav/lib/CalDAV/ICSExportPlugin.php index 9171e36e7..717d3a9c9 100644 --- a/vendor/sabre/dav/lib/CalDAV/ICSExportPlugin.php +++ b/vendor/sabre/dav/lib/CalDAV/ICSExportPlugin.php @@ -74,6 +74,9 @@ class ICSExportPlugin extends DAV\ServerPlugin /** * Intercepts GET requests on calendar urls ending with ?export. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @throws BadRequest * @throws DAV\Exception\NotFound * @throws VObject\InvalidDataException @@ -161,13 +164,14 @@ class ICSExportPlugin extends DAV\ServerPlugin /** * This method is responsible for generating the actual, full response. * - * @param string $path - * @param DateTime|null $start - * @param DateTime|null $end - * @param bool $expand - * @param string $componentType - * @param string $format - * @param array $properties + * @param string $path + * @param DateTime|null $start + * @param DateTime|null $end + * @param bool $expand + * @param string $componentType + * @param string $format + * @param array $properties + * @param ResponseInterface $response * * @throws DAV\Exception\NotFound * @throws VObject\InvalidDataException @@ -279,7 +283,8 @@ class ICSExportPlugin extends DAV\ServerPlugin /** * Merges all calendar objects, and builds one big iCalendar blob. * - * @param array $properties Some CalDAV properties + * @param array $properties Some CalDAV properties + * @param array $inputObjects * * @return VObject\Component\VCalendar */ diff --git a/vendor/sabre/dav/lib/CalDAV/ICalendarObjectContainer.php b/vendor/sabre/dav/lib/CalDAV/ICalendarObjectContainer.php index c08a05a8f..d9346f311 100644 --- a/vendor/sabre/dav/lib/CalDAV/ICalendarObjectContainer.php +++ b/vendor/sabre/dav/lib/CalDAV/ICalendarObjectContainer.php @@ -33,6 +33,8 @@ interface ICalendarObjectContainer extends \Sabre\DAV\ICollection * The list of filters are specified as an array. The exact array is * documented by \Sabre\CalDAV\CalendarQueryParser. * + * @param array $filters + * * @return array */ public function calendarQuery(array $filters); diff --git a/vendor/sabre/dav/lib/CalDAV/Notifications/Collection.php b/vendor/sabre/dav/lib/CalDAV/Notifications/Collection.php index e2e899683..884f205e4 100644 --- a/vendor/sabre/dav/lib/CalDAV/Notifications/Collection.php +++ b/vendor/sabre/dav/lib/CalDAV/Notifications/Collection.php @@ -43,7 +43,8 @@ class Collection extends DAV\Collection implements ICollection, DAVACL\IACL /** * Constructor. * - * @param string $principalUri + * @param CalDAV\Backend\NotificationSupport $caldavBackend + * @param string $principalUri */ public function __construct(CalDAV\Backend\NotificationSupport $caldavBackend, $principalUri) { diff --git a/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php b/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php index 7d3a3f46b..b1ec13ff4 100644 --- a/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php +++ b/vendor/sabre/dav/lib/CalDAV/Notifications/Node.php @@ -48,7 +48,9 @@ class Node extends DAV\File implements INode, DAVACL\IACL /** * Constructor. * - * @param string $principalUri + * @param CalDAV\Backend\NotificationSupport $caldavBackend + * @param string $principalUri + * @param NotificationInterface $notification */ public function __construct(CalDAV\Backend\NotificationSupport $caldavBackend, $principalUri, NotificationInterface $notification) { diff --git a/vendor/sabre/dav/lib/CalDAV/Notifications/Plugin.php b/vendor/sabre/dav/lib/CalDAV/Notifications/Plugin.php index 56b2fe938..182b70c8e 100644 --- a/vendor/sabre/dav/lib/CalDAV/Notifications/Plugin.php +++ b/vendor/sabre/dav/lib/CalDAV/Notifications/Plugin.php @@ -60,6 +60,8 @@ class Plugin extends ServerPlugin * addPlugin is called. * * This method should set up the required event subscriptions. + * + * @param Server $server */ public function initialize(Server $server) { @@ -78,6 +80,9 @@ class Plugin extends ServerPlugin /** * PropFind. + * + * @param PropFind $propFind + * @param BaseINode $node */ public function propFind(PropFind $propFind, BaseINode $node) { @@ -107,6 +112,9 @@ class Plugin extends ServerPlugin * * We use this to intercept GET calls to notification nodes, and return the * proper response. + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function httpGet(RequestInterface $request, ResponseInterface $response) { diff --git a/vendor/sabre/dav/lib/CalDAV/Plugin.php b/vendor/sabre/dav/lib/CalDAV/Plugin.php index da172049e..04eaedf73 100644 --- a/vendor/sabre/dav/lib/CalDAV/Plugin.php +++ b/vendor/sabre/dav/lib/CalDAV/Plugin.php @@ -183,6 +183,8 @@ class Plugin extends DAV\ServerPlugin /** * Initializes the plugin. + * + * @param DAV\Server $server */ public function initialize(DAV\Server $server) { @@ -270,6 +272,9 @@ class Plugin extends DAV\ServerPlugin * This function handles the MKCALENDAR HTTP method, which creates * a new calendar. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpMkCalendar(RequestInterface $request, ResponseInterface $response) @@ -318,6 +323,9 @@ class Plugin extends DAV\ServerPlugin * This method handler is invoked before any after properties for a * resource are fetched. This allows us to add in any CalDAV specific * properties. + * + * @param DAV\PropFind $propFind + * @param DAV\INode $node */ public function propFind(DAV\PropFind $propFind, DAV\INode $node) { @@ -633,6 +641,8 @@ class Plugin extends DAV\ServerPlugin /** * This method is responsible for parsing the request and generating the * response for the CALDAV:free-busy-query REPORT. + * + * @param Xml\Request\FreeBusyQueryReport $report */ protected function freeBusyQueryReport(Xml\Request\FreeBusyQueryReport $report) { @@ -709,10 +719,11 @@ class Plugin extends DAV\ServerPlugin * This plugin uses this method to ensure that CalDAV objects receive * valid calendar data. * - * @param string $path - * @param resource $data - * @param bool $modified should be set to true, if this event handler - * changed &$data + * @param string $path + * @param DAV\IFile $node + * @param resource $data + * @param bool $modified should be set to true, if this event handler + * changed &$data */ public function beforeWriteContent($path, DAV\IFile $node, &$data, &$modified) { @@ -746,10 +757,11 @@ class Plugin extends DAV\ServerPlugin * This plugin uses this method to ensure that newly created calendar * objects contain valid calendar data. * - * @param string $path - * @param resource $data - * @param bool $modified should be set to true, if this event handler - * changed &$data + * @param string $path + * @param resource $data + * @param DAV\ICollection $parentNode + * @param bool $modified should be set to true, if this event handler + * changed &$data */ public function beforeCreateFile($path, &$data, DAV\ICollection $parentNode, &$modified) { @@ -915,6 +927,9 @@ class Plugin extends DAV\ServerPlugin /** * This method is triggered whenever a subsystem reqeuests the privileges * that are supported on a particular node. + * + * @param INode $node + * @param array $supportedPrivilegeSet */ public function getSupportedPrivilegeSet(INode $node, array &$supportedPrivilegeSet) { @@ -931,7 +946,8 @@ class Plugin extends DAV\ServerPlugin * DAV\Browser\Plugin. This allows us to generate an interface users * can use to create new calendars. * - * @param string $output + * @param DAV\INode $node + * @param string $output * * @return bool */ @@ -958,6 +974,9 @@ class Plugin extends DAV\ServerPlugin * This event is triggered after GET requests. * * This is used to transform data into jCal, if this was requested. + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function httpAfterGet(RequestInterface $request, ResponseInterface $response) { diff --git a/vendor/sabre/dav/lib/CalDAV/Principal/Collection.php b/vendor/sabre/dav/lib/CalDAV/Principal/Collection.php index 6d0230331..cae29c752 100644 --- a/vendor/sabre/dav/lib/CalDAV/Principal/Collection.php +++ b/vendor/sabre/dav/lib/CalDAV/Principal/Collection.php @@ -23,6 +23,8 @@ class Collection extends DAVACL\PrincipalCollection /** * Returns a child object based on principal information. * + * @param array $principalInfo + * * @return User */ public function getChildForPrincipal(array $principalInfo) diff --git a/vendor/sabre/dav/lib/CalDAV/Principal/ProxyRead.php b/vendor/sabre/dav/lib/CalDAV/Principal/ProxyRead.php index 7cf70268e..1b24984bd 100644 --- a/vendor/sabre/dav/lib/CalDAV/Principal/ProxyRead.php +++ b/vendor/sabre/dav/lib/CalDAV/Principal/ProxyRead.php @@ -38,6 +38,9 @@ class ProxyRead implements IProxyRead * Creates the object. * * Note that you MUST supply the parent principal information. + * + * @param DAVACL\PrincipalBackend\BackendInterface $principalBackend + * @param array $principalInfo */ public function __construct(DAVACL\PrincipalBackend\BackendInterface $principalBackend, array $principalInfo) { @@ -140,6 +143,8 @@ class ProxyRead implements IProxyRead * The list of members is always overwritten, never appended to. * * This method should throw an exception if the members could not be set. + * + * @param array $principals */ public function setGroupMemberSet(array $principals) { diff --git a/vendor/sabre/dav/lib/CalDAV/Principal/ProxyWrite.php b/vendor/sabre/dav/lib/CalDAV/Principal/ProxyWrite.php index 2d1ce7c46..7b9c78e0a 100644 --- a/vendor/sabre/dav/lib/CalDAV/Principal/ProxyWrite.php +++ b/vendor/sabre/dav/lib/CalDAV/Principal/ProxyWrite.php @@ -38,6 +38,9 @@ class ProxyWrite implements IProxyWrite * Creates the object. * * Note that you MUST supply the parent principal information. + * + * @param DAVACL\PrincipalBackend\BackendInterface $principalBackend + * @param array $principalInfo */ public function __construct(DAVACL\PrincipalBackend\BackendInterface $principalBackend, array $principalInfo) { @@ -140,6 +143,8 @@ class ProxyWrite implements IProxyWrite * The list of members is always overwritten, never appended to. * * This method should throw an exception if the members could not be set. + * + * @param array $principals */ public function setGroupMemberSet(array $principals) { diff --git a/vendor/sabre/dav/lib/CalDAV/Schedule/IMipPlugin.php b/vendor/sabre/dav/lib/CalDAV/Schedule/IMipPlugin.php index e050ac273..d71b3c0f8 100644 --- a/vendor/sabre/dav/lib/CalDAV/Schedule/IMipPlugin.php +++ b/vendor/sabre/dav/lib/CalDAV/Schedule/IMipPlugin.php @@ -81,6 +81,8 @@ class IMipPlugin extends DAV\ServerPlugin /** * Event handler for the 'schedule' event. + * + * @param ITip\Message $iTipMessage */ public function schedule(ITip\Message $iTipMessage) { @@ -130,7 +132,6 @@ class IMipPlugin extends DAV\ServerPlugin $headers = [ 'Reply-To: '.$sender, 'From: '.$iTipMessage->senderName.' <'.$this->senderEmail.'>', - 'MIME-Version: 1.0', 'Content-Type: text/calendar; charset=UTF-8; method='.$iTipMessage->method, ]; if (DAV\Server::$exposeVersion) { diff --git a/vendor/sabre/dav/lib/CalDAV/Schedule/Inbox.php b/vendor/sabre/dav/lib/CalDAV/Schedule/Inbox.php index 462069096..d92f1dd4c 100644 --- a/vendor/sabre/dav/lib/CalDAV/Schedule/Inbox.php +++ b/vendor/sabre/dav/lib/CalDAV/Schedule/Inbox.php @@ -38,7 +38,8 @@ class Inbox extends DAV\Collection implements IInbox /** * Constructor. * - * @param string $principalUri + * @param Backend\SchedulingSupport $caldavBackend + * @param string $principalUri */ public function __construct(Backend\SchedulingSupport $caldavBackend, $principalUri) { @@ -175,6 +176,8 @@ class Inbox extends DAV\Collection implements IInbox * The list of filters are specified as an array. The exact array is * documented by \Sabre\CalDAV\CalendarQueryParser. * + * @param array $filters + * * @return array */ public function calendarQuery(array $filters) diff --git a/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php b/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php index 6f8f68432..d2c9b68e9 100644 --- a/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php +++ b/vendor/sabre/dav/lib/CalDAV/Schedule/Plugin.php @@ -94,6 +94,8 @@ class Plugin extends ServerPlugin /** * Initializes the plugin. + * + * @param Server $server */ public function initialize(Server $server) { @@ -156,6 +158,9 @@ class Plugin extends ServerPlugin /** * This method handles POST request for the outbox. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpPost(RequestInterface $request, ResponseInterface $response) @@ -190,6 +195,9 @@ class Plugin extends ServerPlugin * This method handler is invoked during fetching of properties. * * We use this event to add calendar-auto-schedule-specific properties. + * + * @param PropFind $propFind + * @param INode $node */ public function propFind(PropFind $propFind, INode $node) { @@ -289,7 +297,8 @@ class Plugin extends ServerPlugin /** * This method is called during property updates. * - * @param string $path + * @param string $path + * @param PropPatch $propPatch */ public function propPatch($path, PropPatch $propPatch) { @@ -344,6 +353,8 @@ class Plugin extends ServerPlugin /** * This method is responsible for delivering the ITip message. + * + * @param ITip\Message $iTipMessage */ public function deliver(ITip\Message $iTipMessage) { @@ -402,6 +413,8 @@ class Plugin extends ServerPlugin * * This handler attempts to look at local accounts to deliver the * scheduling object. + * + * @param ITip\Message $iTipMessage */ public function scheduleLocalDelivery(ITip\Message $iTipMessage) { @@ -544,6 +557,9 @@ class Plugin extends ServerPlugin * that are supported on a particular node. * * We need to add a number of privileges for scheduling purposes. + * + * @param INode $node + * @param array $supportedPrivilegeSet */ public function getSupportedPrivilegeSet(INode $node, array &$supportedPrivilegeSet) { @@ -605,6 +621,8 @@ class Plugin extends ServerPlugin * This method may update $newObject to add any status changes. * * @param VCalendar|string $oldObject + * @param VCalendar $newObject + * @param array $addresses * @param array $ignore any addresses to not send messages to * @param bool $modified a marker to indicate that the original object * modified by this process @@ -682,6 +700,10 @@ class Plugin extends ServerPlugin * The latter is from an expired early draft of the CalDAV scheduling * extensions, but iCal depends on a feature from that spec, so we * implement it. + * + * @param IOutbox $outboxNode + * @param RequestInterface $request + * @param ResponseInterface $response */ public function outboxRequest(IOutbox $outboxNode, RequestInterface $request, ResponseInterface $response) { @@ -736,6 +758,11 @@ class Plugin extends ServerPlugin * This method is responsible for parsing a free-busy query request and * returning it's result. * + * @param IOutbox $outbox + * @param VObject\Component $vObject + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return string */ protected function handleFreeBusyRequest(IOutbox $outbox, VObject\Component $vObject, RequestInterface $request, ResponseInterface $response) @@ -825,7 +852,10 @@ class Plugin extends ServerPlugin * * 2.0;description * * 3.7;description * - * @param string $email address + * @param string $email address + * @param \DateTimeInterface $start + * @param \DateTimeInterface $end + * @param VObject\Component $request * * @return array */ @@ -968,6 +998,8 @@ class Plugin extends ServerPlugin * This method checks the 'Schedule-Reply' header * and returns false if it's 'F', otherwise true. * + * @param RequestInterface $request + * * @return bool */ private function scheduleReply(RequestInterface $request) diff --git a/vendor/sabre/dav/lib/CalDAV/Schedule/SchedulingObject.php b/vendor/sabre/dav/lib/CalDAV/Schedule/SchedulingObject.php index b40f28a94..d34c92327 100644 --- a/vendor/sabre/dav/lib/CalDAV/Schedule/SchedulingObject.php +++ b/vendor/sabre/dav/lib/CalDAV/Schedule/SchedulingObject.php @@ -29,6 +29,9 @@ class SchedulingObject extends \Sabre\CalDAV\CalendarObject implements IScheduli * * size - (optional) The size of the data in bytes. * * lastmodified - (optional) format as a unix timestamp. * * acl - (optional) Use this to override the default ACL for the node. + * + * @param Backend\SchedulingSupport $caldavBackend + * @param array $objectData */ public function __construct(Backend\SchedulingSupport $caldavBackend, array $objectData) { diff --git a/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php b/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php index 090cc34bf..be8c46a9e 100644 --- a/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php +++ b/vendor/sabre/dav/lib/CalDAV/SharingPlugin.php @@ -67,6 +67,8 @@ class SharingPlugin extends DAV\ServerPlugin * addPlugin is called. * * This method should set up the required event subscriptions. + * + * @param DAV\Server $server */ public function initialize(DAV\Server $server) { @@ -97,6 +99,9 @@ class SharingPlugin extends DAV\ServerPlugin * node. * * This allows us to inject any properties early. + * + * @param DAV\PropFind $propFind + * @param DAV\INode $node */ public function propFindEarly(DAV\PropFind $propFind, DAV\INode $node) { @@ -113,6 +118,9 @@ class SharingPlugin extends DAV\ServerPlugin * This method is triggered *after* all properties have been retrieved. * This allows us to inject the correct resourcetype for calendars that * have been shared. + * + * @param DAV\PropFind $propFind + * @param DAV\INode $node */ public function propFindLate(DAV\PropFind $propFind, DAV\INode $node) { @@ -146,7 +154,8 @@ class SharingPlugin extends DAV\ServerPlugin * Even though this is no longer in the current spec, we keep this around * because OS X 10.7 may still make use of this feature. * - * @param string $path + * @param string $path + * @param DAV\PropPatch $propPatch */ public function propPatch($path, DAV\PropPatch $propPatch) { @@ -174,6 +183,9 @@ class SharingPlugin extends DAV\ServerPlugin /** * We intercept this to handle POST requests on calendars. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool|null */ public function httpPost(RequestInterface $request, ResponseInterface $response) diff --git a/vendor/sabre/dav/lib/CalDAV/Subscriptions/Plugin.php b/vendor/sabre/dav/lib/CalDAV/Subscriptions/Plugin.php index 6cfcc1a7b..238866894 100644 --- a/vendor/sabre/dav/lib/CalDAV/Subscriptions/Plugin.php +++ b/vendor/sabre/dav/lib/CalDAV/Subscriptions/Plugin.php @@ -28,6 +28,8 @@ class Plugin extends ServerPlugin * addPlugin is called. * * This method should set up the required event subscriptions. + * + * @param Server $server */ public function initialize(Server $server) { @@ -55,6 +57,9 @@ class Plugin extends ServerPlugin /** * Triggered after properties have been fetched. + * + * @param PropFind $propFind + * @param INode $node */ public function propFind(PropFind $propFind, INode $node) { diff --git a/vendor/sabre/dav/lib/CalDAV/Subscriptions/Subscription.php b/vendor/sabre/dav/lib/CalDAV/Subscriptions/Subscription.php index 3be1b609e..0b0282abe 100644 --- a/vendor/sabre/dav/lib/CalDAV/Subscriptions/Subscription.php +++ b/vendor/sabre/dav/lib/CalDAV/Subscriptions/Subscription.php @@ -40,6 +40,9 @@ class Subscription extends Collection implements ISubscription, IACL /** * Constructor. + * + * @param SubscriptionSupport $caldavBackend + * @param array $subscriptionInfo */ public function __construct(SubscriptionSupport $caldavBackend, array $subscriptionInfo) { @@ -112,6 +115,8 @@ class Subscription extends Collection implements ISubscription, IACL * * To update specific properties, call the 'handle' method on this object. * Read the PropPatch documentation for more information. + * + * @param PropPatch $propPatch */ public function propPatch(PropPatch $propPatch) { diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CalendarData.php b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CalendarData.php index baa4250ab..0d53aeda3 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CalendarData.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CalendarData.php @@ -47,6 +47,8 @@ class CalendarData implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CompFilter.php b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CompFilter.php index 929000bb8..832346eea 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CompFilter.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/CompFilter.php @@ -44,6 +44,8 @@ class CompFilter implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/ParamFilter.php b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/ParamFilter.php index 1e6dd5946..ec9ff753c 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/ParamFilter.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/ParamFilter.php @@ -42,6 +42,8 @@ class ParamFilter implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/PropFilter.php b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/PropFilter.php index c9a3cb5ac..f4600574e 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Filter/PropFilter.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Filter/PropFilter.php @@ -44,6 +44,8 @@ class PropFilter implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/Invite.php b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/Invite.php index 2dbb0f498..926656674 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/Invite.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/Invite.php @@ -181,6 +181,8 @@ class Invite implements NotificationInterface * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -190,6 +192,8 @@ class Invite implements NotificationInterface /** * This method serializes the entire notification, as it is used in the * response body. + * + * @param Writer $writer */ public function xmlSerializeFull(Writer $writer) { diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/InviteReply.php b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/InviteReply.php index dbdba3b02..abcbde151 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/InviteReply.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/InviteReply.php @@ -89,6 +89,8 @@ class InviteReply implements NotificationInterface * * hostUrl - A url to the shared calendar. * * summary - Description of the share, can be the same as the * calendar, but may also be modified (optional). + * + * @param array $values */ public function __construct(array $values) { @@ -130,6 +132,8 @@ class InviteReply implements NotificationInterface * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -139,6 +143,8 @@ class InviteReply implements NotificationInterface /** * This method serializes the entire notification, as it is used in the * response body. + * + * @param Writer $writer */ public function xmlSerializeFull(Writer $writer) { diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/NotificationInterface.php b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/NotificationInterface.php index e1b393f8b..be7490533 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/NotificationInterface.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/NotificationInterface.php @@ -19,6 +19,8 @@ interface NotificationInterface extends XmlSerializable /** * This method serializes the entire notification, as it is used in the * response body. + * + * @param Writer $writer */ public function xmlSerializeFull(Writer $writer); diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/SystemStatus.php b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/SystemStatus.php index 6d196b30c..3c656df34 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Notification/SystemStatus.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Notification/SystemStatus.php @@ -90,6 +90,8 @@ class SystemStatus implements NotificationInterface * * Important note 2: If you are writing any new elements, you are also * responsible for closing them. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -114,6 +116,8 @@ class SystemStatus implements NotificationInterface /** * This method serializes the entire notification, as it is used in the * response body. + * + * @param Writer $writer */ public function xmlSerializeFull(Writer $writer) { diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/AllowedSharingModes.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/AllowedSharingModes.php index 58acb6d54..224f52c96 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/AllowedSharingModes.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/AllowedSharingModes.php @@ -68,6 +68,8 @@ class AllowedSharingModes implements XmlSerializable * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/EmailAddressSet.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/EmailAddressSet.php index 84f7ae02f..6b28d5df2 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/EmailAddressSet.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/EmailAddressSet.php @@ -30,6 +30,8 @@ class EmailAddressSet implements XmlSerializable /** * __construct. + * + * @param array $emails */ public function __construct(array $emails) { @@ -61,6 +63,8 @@ class EmailAddressSet implements XmlSerializable * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/Invite.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/Invite.php index c389ca827..db456617c 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/Invite.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/Invite.php @@ -67,6 +67,8 @@ class Invite implements XmlSerializable * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/ScheduleCalendarTransp.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/ScheduleCalendarTransp.php index 159522025..780907169 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/ScheduleCalendarTransp.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/ScheduleCalendarTransp.php @@ -76,6 +76,8 @@ class ScheduleCalendarTransp implements Element * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -107,6 +109,8 @@ class ScheduleCalendarTransp implements Element * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarComponentSet.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarComponentSet.php index d86e7b77c..56fa61b13 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarComponentSet.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarComponentSet.php @@ -36,6 +36,8 @@ class SupportedCalendarComponentSet implements Element /** * Creates the property. + * + * @param array $components */ public function __construct(array $components) { @@ -67,6 +69,8 @@ class SupportedCalendarComponentSet implements Element * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -95,6 +99,8 @@ class SupportedCalendarComponentSet implements Element * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarData.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarData.php index 5b0893305..1c9c4779f 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarData.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCalendarData.php @@ -39,6 +39,8 @@ class SupportedCalendarData implements XmlSerializable * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCollationSet.php b/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCollationSet.php index c5ffeee38..b88cd0d92 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCollationSet.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Property/SupportedCollationSet.php @@ -38,6 +38,8 @@ class SupportedCollationSet implements XmlSerializable * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php index 3b3a94b26..8231de6bd 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarMultiGetReport.php @@ -81,6 +81,8 @@ class CalendarMultiGetReport implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php index b3cc299d3..e85eccd2d 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/CalendarQueryReport.php @@ -81,6 +81,8 @@ class CalendarQueryReport implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/FreeBusyQueryReport.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/FreeBusyQueryReport.php index 17df05a78..a4d98a8d4 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/FreeBusyQueryReport.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/FreeBusyQueryReport.php @@ -55,6 +55,8 @@ class FreeBusyQueryReport implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/InviteReply.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/InviteReply.php index 166721eb3..710095bb2 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/InviteReply.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/InviteReply.php @@ -98,6 +98,8 @@ class InviteReply implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/MkCalendar.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/MkCalendar.php index b5701e2ea..7cad98da5 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/MkCalendar.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/MkCalendar.php @@ -55,6 +55,8 @@ class MkCalendar implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CalDAV/Xml/Request/Share.php b/vendor/sabre/dav/lib/CalDAV/Xml/Request/Share.php index d597b76f1..60bd579d5 100644 --- a/vendor/sabre/dav/lib/CalDAV/Xml/Request/Share.php +++ b/vendor/sabre/dav/lib/CalDAV/Xml/Request/Share.php @@ -57,6 +57,8 @@ class Share implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CardDAV/AddressBook.php b/vendor/sabre/dav/lib/CardDAV/AddressBook.php index 86994f2d5..434801554 100644 --- a/vendor/sabre/dav/lib/CardDAV/AddressBook.php +++ b/vendor/sabre/dav/lib/CardDAV/AddressBook.php @@ -36,6 +36,9 @@ class AddressBook extends DAV\Collection implements IAddressBook, DAV\IPropertie /** * Constructor. + * + * @param Backend\BackendInterface $carddavBackend + * @param array $addressBookInfo */ public function __construct(Backend\BackendInterface $carddavBackend, array $addressBookInfo) { @@ -178,6 +181,8 @@ class AddressBook extends DAV\Collection implements IAddressBook, DAV\IPropertie * * To update specific properties, call the 'handle' method on this object. * Read the PropPatch documentation for more information. + * + * @param DAV\PropPatch $propPatch */ public function propPatch(DAV\PropPatch $propPatch) { diff --git a/vendor/sabre/dav/lib/CardDAV/AddressBookHome.php b/vendor/sabre/dav/lib/CardDAV/AddressBookHome.php index 884e9b24e..fb03000aa 100644 --- a/vendor/sabre/dav/lib/CardDAV/AddressBookHome.php +++ b/vendor/sabre/dav/lib/CardDAV/AddressBookHome.php @@ -39,7 +39,8 @@ class AddressBookHome extends DAV\Collection implements DAV\IExtendedCollection, /** * Constructor. * - * @param string $principalUri + * @param Backend\BackendInterface $carddavBackend + * @param string $principalUri */ public function __construct(Backend\BackendInterface $carddavBackend, $principalUri) { @@ -151,6 +152,7 @@ class AddressBookHome extends DAV\Collection implements DAV\IExtendedCollection, * Creates a new address book. * * @param string $name + * @param MkCol $mkCol * * @throws DAV\Exception\InvalidResourceType */ diff --git a/vendor/sabre/dav/lib/CardDAV/AddressBookRoot.php b/vendor/sabre/dav/lib/CardDAV/AddressBookRoot.php index ee1721a45..219f98906 100644 --- a/vendor/sabre/dav/lib/CardDAV/AddressBookRoot.php +++ b/vendor/sabre/dav/lib/CardDAV/AddressBookRoot.php @@ -41,7 +41,9 @@ class AddressBookRoot extends DAVACL\AbstractPrincipalCollection * actually located in a different path, use the $principalPrefix argument * to override this. * - * @param string $principalPrefix + * @param DAVACL\PrincipalBackend\BackendInterface $principalBackend + * @param Backend\BackendInterface $carddavBackend + * @param string $principalPrefix */ public function __construct(DAVACL\PrincipalBackend\BackendInterface $principalBackend, Backend\BackendInterface $carddavBackend, $principalPrefix = 'principals') { @@ -66,6 +68,8 @@ class AddressBookRoot extends DAVACL\AbstractPrincipalCollection * at least contain a uri item. Other properties may or may not be * supplied by the authentication backend. * + * @param array $principal + * * @return \Sabre\DAV\INode */ public function getChildForPrincipal(array $principal) diff --git a/vendor/sabre/dav/lib/CardDAV/Backend/AbstractBackend.php b/vendor/sabre/dav/lib/CardDAV/Backend/AbstractBackend.php index a900c6256..6b041ade4 100644 --- a/vendor/sabre/dav/lib/CardDAV/Backend/AbstractBackend.php +++ b/vendor/sabre/dav/lib/CardDAV/Backend/AbstractBackend.php @@ -26,6 +26,7 @@ abstract class AbstractBackend implements BackendInterface * If the backend supports this, it may allow for some speed-ups. * * @param mixed $addressBookId + * @param array $uris * * @return array */ diff --git a/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php b/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php index 6ef34d173..804f09a36 100644 --- a/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php +++ b/vendor/sabre/dav/lib/CardDAV/Backend/BackendInterface.php @@ -51,7 +51,8 @@ interface BackendInterface * * Read the PropPatch documentation for more info and examples. * - * @param string $addressBookId + * @param string $addressBookId + * @param \Sabre\DAV\PropPatch $propPatch */ public function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch); @@ -63,6 +64,7 @@ interface BackendInterface * * @param string $principalUri * @param string $url just the 'basename' of the url + * @param array $properties * * @return mixed */ @@ -121,6 +123,7 @@ interface BackendInterface * If the backend supports this, it may allow for some speed-ups. * * @param mixed $addressBookId + * @param array $uris * * @return array */ diff --git a/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php b/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php index a33de48de..0659455e5 100644 --- a/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php +++ b/vendor/sabre/dav/lib/CardDAV/Backend/PDO.php @@ -44,6 +44,8 @@ class PDO extends AbstractBackend implements SyncSupport /** * Sets up the object. + * + * @param \PDO $pdo */ public function __construct(\PDO $pdo) { @@ -91,7 +93,8 @@ class PDO extends AbstractBackend implements SyncSupport * * Read the PropPatch documentation for more info and examples. * - * @param string $addressBookId + * @param string $addressBookId + * @param \Sabre\DAV\PropPatch $propPatch */ public function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch) { @@ -140,6 +143,7 @@ class PDO extends AbstractBackend implements SyncSupport * * @param string $principalUri * @param string $url just the 'basename' of the url + * @param array $properties * * @return int Last insert id */ @@ -265,6 +269,7 @@ class PDO extends AbstractBackend implements SyncSupport * If the backend supports this, it may allow for some speed-ups. * * @param mixed $addressBookId + * @param array $uris * * @return array */ diff --git a/vendor/sabre/dav/lib/CardDAV/Card.php b/vendor/sabre/dav/lib/CardDAV/Card.php index c9cd2bbf6..1d544f4aa 100644 --- a/vendor/sabre/dav/lib/CardDAV/Card.php +++ b/vendor/sabre/dav/lib/CardDAV/Card.php @@ -41,6 +41,10 @@ class Card extends DAV\File implements ICard, DAVACL\IACL /** * Constructor. + * + * @param Backend\BackendInterface $carddavBackend + * @param array $addressBookInfo + * @param array $cardData */ public function __construct(Backend\BackendInterface $carddavBackend, array $addressBookInfo, array $cardData) { diff --git a/vendor/sabre/dav/lib/CardDAV/Plugin.php b/vendor/sabre/dav/lib/CardDAV/Plugin.php index 09d1f593d..10398a4d2 100644 --- a/vendor/sabre/dav/lib/CardDAV/Plugin.php +++ b/vendor/sabre/dav/lib/CardDAV/Plugin.php @@ -59,6 +59,8 @@ class Plugin extends DAV\ServerPlugin /** * Initializes the plugin. + * + * @param DAV\Server $server */ public function initialize(DAV\Server $server) { @@ -129,6 +131,9 @@ class Plugin extends DAV\ServerPlugin /** * Adds all CardDAV-specific properties. + * + * @param DAV\PropFind $propFind + * @param DAV\INode $node */ public function propFindEarly(DAV\PropFind $propFind, DAV\INode $node) { @@ -262,10 +267,11 @@ class Plugin extends DAV\ServerPlugin * This plugin uses this method to ensure that Card nodes receive valid * vcard data. * - * @param string $path - * @param resource $data - * @param bool $modified should be set to true, if this event handler - * changed &$data + * @param string $path + * @param DAV\IFile $node + * @param resource $data + * @param bool $modified should be set to true, if this event handler + * changed &$data */ public function beforeWriteContent($path, DAV\IFile $node, &$data, &$modified) { @@ -282,10 +288,11 @@ class Plugin extends DAV\ServerPlugin * This plugin uses this method to ensure that Card nodes receive valid * vcard data. * - * @param string $path - * @param resource $data - * @param bool $modified should be set to true, if this event handler - * changed &$data + * @param string $path + * @param resource $data + * @param DAV\ICollection $parentNode + * @param bool $modified should be set to true, if this event handler + * changed &$data */ public function beforeCreateFile($path, &$data, DAV\ICollection $parentNode, &$modified) { @@ -474,6 +481,7 @@ class Plugin extends DAV\ServerPlugin * Validates if a vcard makes it throught a list of filters. * * @param string $vcardData + * @param array $filters * @param string $test anyof or allof (which means OR or AND) * * @return bool @@ -557,6 +565,8 @@ class Plugin extends DAV\ServerPlugin * property. Any subsequence parameters with the same name are * ignored. * + * @param array $vProperties + * @param array $filters * @param string $test * * @return bool @@ -618,6 +628,8 @@ class Plugin extends DAV\ServerPlugin /** * Validates if a text-filter can be applied to a specific property. * + * @param array $texts + * @param array $filters * @param string $test * * @return bool @@ -660,6 +672,9 @@ class Plugin extends DAV\ServerPlugin * * This event is scheduled late in the process, after most work for * propfind has been done. + * + * @param DAV\PropFind $propFind + * @param DAV\INode $node */ public function propFindLate(DAV\PropFind $propFind, DAV\INode $node) { @@ -684,7 +699,8 @@ class Plugin extends DAV\ServerPlugin * Sabre\DAV\Browser\Plugin. This allows us to generate an interface users * can use to create new addressbooks. * - * @param string $output + * @param DAV\INode $node + * @param string $output * * @return bool */ @@ -711,6 +727,9 @@ class Plugin extends DAV\ServerPlugin * This event is triggered after GET requests. * * This is used to transform data into jCal, if this was requested. + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function httpAfterGet(RequestInterface $request, ResponseInterface $response) { diff --git a/vendor/sabre/dav/lib/CardDAV/VCFExportPlugin.php b/vendor/sabre/dav/lib/CardDAV/VCFExportPlugin.php index 431391e04..194927c53 100644 --- a/vendor/sabre/dav/lib/CardDAV/VCFExportPlugin.php +++ b/vendor/sabre/dav/lib/CardDAV/VCFExportPlugin.php @@ -32,6 +32,8 @@ class VCFExportPlugin extends DAV\ServerPlugin /** * Initializes the plugin and registers event handlers. + * + * @param DAV\Server $server */ public function initialize(DAV\Server $server) { @@ -47,6 +49,9 @@ class VCFExportPlugin extends DAV\ServerPlugin /** * Intercepts GET requests on addressbook urls ending with ?export. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpGet(RequestInterface $request, ResponseInterface $response) @@ -107,6 +112,8 @@ class VCFExportPlugin extends DAV\ServerPlugin /** * Merges all vcard objects, and builds one big vcf export. * + * @param array $nodes + * * @return string */ public function generateVCF(array $nodes) diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Filter/AddressData.php b/vendor/sabre/dav/lib/CardDAV/Xml/Filter/AddressData.php index b60fcebb6..f1b651e76 100644 --- a/vendor/sabre/dav/lib/CardDAV/Xml/Filter/AddressData.php +++ b/vendor/sabre/dav/lib/CardDAV/Xml/Filter/AddressData.php @@ -43,6 +43,8 @@ class AddressData implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Filter/ParamFilter.php b/vendor/sabre/dav/lib/CardDAV/Xml/Filter/ParamFilter.php index 0a7ec0659..2d39dea7f 100644 --- a/vendor/sabre/dav/lib/CardDAV/Xml/Filter/ParamFilter.php +++ b/vendor/sabre/dav/lib/CardDAV/Xml/Filter/ParamFilter.php @@ -43,6 +43,8 @@ abstract class ParamFilter implements Element * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Filter/PropFilter.php b/vendor/sabre/dav/lib/CardDAV/Xml/Filter/PropFilter.php index 5dedac800..a22a577c9 100644 --- a/vendor/sabre/dav/lib/CardDAV/Xml/Filter/PropFilter.php +++ b/vendor/sabre/dav/lib/CardDAV/Xml/Filter/PropFilter.php @@ -43,6 +43,8 @@ class PropFilter implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php b/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php index fe5f976a0..9d0051698 100644 --- a/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php +++ b/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php @@ -33,6 +33,8 @@ class SupportedAddressData implements XmlSerializable /** * Creates the property. + * + * @param array|null $supportedData */ public function __construct(array $supportedData = null) { @@ -62,6 +64,8 @@ class SupportedAddressData implements XmlSerializable * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedCollationSet.php b/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedCollationSet.php index b19eddd9c..66e451a91 100644 --- a/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedCollationSet.php +++ b/vendor/sabre/dav/lib/CardDAV/Xml/Property/SupportedCollationSet.php @@ -34,6 +34,8 @@ class SupportedCollationSet implements XmlSerializable * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookMultiGetReport.php b/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookMultiGetReport.php index c11d2dd73..845796760 100644 --- a/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookMultiGetReport.php +++ b/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookMultiGetReport.php @@ -71,6 +71,8 @@ class AddressBookMultiGetReport implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php b/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php index d3651ae61..0e6f26d38 100644 --- a/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php +++ b/vendor/sabre/dav/lib/CardDAV/Xml/Request/AddressBookQueryReport.php @@ -115,6 +115,8 @@ class AddressBookQueryReport implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractBasic.php b/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractBasic.php index 3132333b7..aa8b1f573 100644 --- a/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractBasic.php +++ b/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractBasic.php @@ -86,6 +86,9 @@ abstract class AbstractBasic implements BackendInterface * * principals/users/[username] * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return array */ public function check(RequestInterface $request, ResponseInterface $response) @@ -123,6 +126,9 @@ abstract class AbstractBasic implements BackendInterface * WWW-Authenticate headers may already have been set, and you'll want to * append your own WWW-Authenticate header instead of overwriting the * existing one. + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function challenge(RequestInterface $request, ResponseInterface $response) { diff --git a/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractBearer.php b/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractBearer.php index b6817479f..a2653b2b0 100644 --- a/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractBearer.php +++ b/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractBearer.php @@ -79,6 +79,9 @@ abstract class AbstractBearer implements BackendInterface * * principals/users/[username] * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return array */ public function check(RequestInterface $request, ResponseInterface $response) @@ -117,6 +120,9 @@ abstract class AbstractBearer implements BackendInterface * WWW-Authenticate headers may already have been set, and you'll want to * append your own WWW-Authenticate header instead of overwriting the * existing one. + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function challenge(RequestInterface $request, ResponseInterface $response) { diff --git a/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractDigest.php b/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractDigest.php index 297655da3..06c9ed3a4 100644 --- a/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractDigest.php +++ b/vendor/sabre/dav/lib/DAV/Auth/Backend/AbstractDigest.php @@ -89,6 +89,9 @@ abstract class AbstractDigest implements BackendInterface * * principals/users/[username] * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return array */ public function check(RequestInterface $request, ResponseInterface $response) @@ -140,6 +143,9 @@ abstract class AbstractDigest implements BackendInterface * WWW-Authenticate headers may already have been set, and you'll want to * append your own WWW-Authenticate header instead of overwriting the * existing one. + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function challenge(RequestInterface $request, ResponseInterface $response) { diff --git a/vendor/sabre/dav/lib/DAV/Auth/Backend/Apache.php b/vendor/sabre/dav/lib/DAV/Auth/Backend/Apache.php index ebf67cab2..201fe615c 100644 --- a/vendor/sabre/dav/lib/DAV/Auth/Backend/Apache.php +++ b/vendor/sabre/dav/lib/DAV/Auth/Backend/Apache.php @@ -52,6 +52,9 @@ class Apache implements BackendInterface * * principals/users/[username] * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return array */ public function check(RequestInterface $request, ResponseInterface $response) @@ -86,6 +89,9 @@ class Apache implements BackendInterface * WWW-Authenticate headers may already have been set, and you'll want to * append your own WWW-Authenticate header instead of overwriting the * existing one. + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function challenge(RequestInterface $request, ResponseInterface $response) { diff --git a/vendor/sabre/dav/lib/DAV/Auth/Backend/BackendInterface.php b/vendor/sabre/dav/lib/DAV/Auth/Backend/BackendInterface.php index 133eac926..8598791fb 100644 --- a/vendor/sabre/dav/lib/DAV/Auth/Backend/BackendInterface.php +++ b/vendor/sabre/dav/lib/DAV/Auth/Backend/BackendInterface.php @@ -40,6 +40,9 @@ interface BackendInterface * * principals/users/[username] * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return array */ public function check(RequestInterface $request, ResponseInterface $response); @@ -60,6 +63,9 @@ interface BackendInterface * WWW-Authenticate headers may already have been set, and you'll want to * append your own WWW-Authenticate header instead of overwriting the * existing one. + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function challenge(RequestInterface $request, ResponseInterface $response); } diff --git a/vendor/sabre/dav/lib/DAV/Auth/Backend/BasicCallBack.php b/vendor/sabre/dav/lib/DAV/Auth/Backend/BasicCallBack.php index 5a8bb98ce..aab3c5e1c 100644 --- a/vendor/sabre/dav/lib/DAV/Auth/Backend/BasicCallBack.php +++ b/vendor/sabre/dav/lib/DAV/Auth/Backend/BasicCallBack.php @@ -30,6 +30,8 @@ class BasicCallBack extends AbstractBasic * * A callback must be provided to handle checking the username and * password. + * + * @param callable $callBack */ public function __construct(callable $callBack) { diff --git a/vendor/sabre/dav/lib/DAV/Auth/Backend/PDO.php b/vendor/sabre/dav/lib/DAV/Auth/Backend/PDO.php index 9a06912d1..87ead6fcd 100644 --- a/vendor/sabre/dav/lib/DAV/Auth/Backend/PDO.php +++ b/vendor/sabre/dav/lib/DAV/Auth/Backend/PDO.php @@ -31,6 +31,8 @@ class PDO extends AbstractDigest * Creates the backend object. * * If the filename argument is passed in, it will parse out the specified file fist. + * + * @param \PDO $pdo */ public function __construct(\PDO $pdo) { diff --git a/vendor/sabre/dav/lib/DAV/Auth/Plugin.php b/vendor/sabre/dav/lib/DAV/Auth/Plugin.php index 68adbede5..9be90283f 100644 --- a/vendor/sabre/dav/lib/DAV/Auth/Plugin.php +++ b/vendor/sabre/dav/lib/DAV/Auth/Plugin.php @@ -67,6 +67,8 @@ class Plugin extends ServerPlugin /** * Adds an authentication backend to the plugin. + * + * @param Backend\BackendInterface $authBackend */ public function addBackend(Backend\BackendInterface $authBackend) { @@ -75,6 +77,8 @@ class Plugin extends ServerPlugin /** * Initializes the plugin. This function is automatically called by the server. + * + * @param Server $server */ public function initialize(Server $server) { @@ -114,6 +118,9 @@ class Plugin extends ServerPlugin /** * This method is called before any HTTP method and forces users to be authenticated. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function beforeMethod(RequestInterface $request, ResponseInterface $response) @@ -169,6 +176,9 @@ class Plugin extends ServerPlugin * unsuccessful. For every auth backend there will be one reason, so usually * there's just one. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return array */ public function check(RequestInterface $request, ResponseInterface $response) @@ -205,6 +215,9 @@ class Plugin extends ServerPlugin * WWW-Authorization header, indicating to the client that it should * authenticate. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return array */ public function challenge(RequestInterface $request, ResponseInterface $response) diff --git a/vendor/sabre/dav/lib/DAV/Browser/GuessContentType.php b/vendor/sabre/dav/lib/DAV/Browser/GuessContentType.php index 5cda0b842..b07103db9 100644 --- a/vendor/sabre/dav/lib/DAV/Browser/GuessContentType.php +++ b/vendor/sabre/dav/lib/DAV/Browser/GuessContentType.php @@ -49,6 +49,8 @@ class GuessContentType extends DAV\ServerPlugin /** * Initializes the plugin. + * + * @param DAV\Server $server */ public function initialize(DAV\Server $server) { @@ -61,6 +63,9 @@ class GuessContentType extends DAV\ServerPlugin * Our PROPFIND handler. * * Here we set a contenttype, if the node didn't already have one. + * + * @param PropFind $propFind + * @param INode $node */ public function propFind(PropFind $propFind, INode $node) { diff --git a/vendor/sabre/dav/lib/DAV/Browser/HtmlOutput.php b/vendor/sabre/dav/lib/DAV/Browser/HtmlOutput.php index be5a28456..59b3f5604 100644 --- a/vendor/sabre/dav/lib/DAV/Browser/HtmlOutput.php +++ b/vendor/sabre/dav/lib/DAV/Browser/HtmlOutput.php @@ -28,6 +28,8 @@ interface HtmlOutput * The baseUri parameter is a url to the root of the application, and can * be used to construct local links. * + * @param HtmlOutputHelper $html + * * @return string */ public function toHtml(HtmlOutputHelper $html); diff --git a/vendor/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php b/vendor/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php index 0a881abad..a7c747437 100644 --- a/vendor/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php +++ b/vendor/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php @@ -42,6 +42,7 @@ class HtmlOutputHelper * that can be used to make output a lot shorter. * * @param string $baseUri + * @param array $namespaceMap */ public function __construct($baseUri, array $namespaceMap) { diff --git a/vendor/sabre/dav/lib/DAV/Browser/MapGetToPropFind.php b/vendor/sabre/dav/lib/DAV/Browser/MapGetToPropFind.php index 0bbe70c66..25e061128 100644 --- a/vendor/sabre/dav/lib/DAV/Browser/MapGetToPropFind.php +++ b/vendor/sabre/dav/lib/DAV/Browser/MapGetToPropFind.php @@ -29,6 +29,8 @@ class MapGetToPropFind extends DAV\ServerPlugin /** * Initializes the plugin and subscribes to events. + * + * @param DAV\Server $server */ public function initialize(DAV\Server $server) { @@ -39,6 +41,9 @@ class MapGetToPropFind extends DAV\ServerPlugin /** * This method intercepts GET requests to non-files, and changes it into an HTTP PROPFIND request. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpGet(RequestInterface $request, ResponseInterface $response) diff --git a/vendor/sabre/dav/lib/DAV/Browser/Plugin.php b/vendor/sabre/dav/lib/DAV/Browser/Plugin.php index 915f2895b..e2fab4b79 100644 --- a/vendor/sabre/dav/lib/DAV/Browser/Plugin.php +++ b/vendor/sabre/dav/lib/DAV/Browser/Plugin.php @@ -70,6 +70,8 @@ class Plugin extends DAV\ServerPlugin /** * Initializes the plugin and subscribes to events. + * + * @param DAV\Server $server */ public function initialize(DAV\Server $server) { @@ -86,6 +88,9 @@ class Plugin extends DAV\ServerPlugin * This method intercepts GET requests that have ?sabreAction=info * appended to the URL. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpGetEarly(RequestInterface $request, ResponseInterface $response) @@ -99,6 +104,9 @@ class Plugin extends DAV\ServerPlugin /** * This method intercepts GET requests to collections and returns the html. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpGet(RequestInterface $request, ResponseInterface $response) @@ -152,6 +160,9 @@ class Plugin extends DAV\ServerPlugin /** * Handles POST requests for tree operations. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpPOST(RequestInterface $request, ResponseInterface $response) @@ -488,8 +499,9 @@ HTML; * This specifically generates the interfaces for creating new files, and * creating new directories. * - * @param mixed $output - * @param string $path + * @param DAV\INode $node + * @param mixed $output + * @param string $path */ public function htmlActionsPanel(DAV\INode $node, &$output, $path) { @@ -618,6 +630,7 @@ HTML; /** * Maps a resource type to a human-readable string and icon. * + * @param array $resourceTypes * @param DAV\INode $node * * @return array diff --git a/vendor/sabre/dav/lib/DAV/Client.php b/vendor/sabre/dav/lib/DAV/Client.php index a9de71cdb..cfa24cd29 100644 --- a/vendor/sabre/dav/lib/DAV/Client.php +++ b/vendor/sabre/dav/lib/DAV/Client.php @@ -112,6 +112,8 @@ class Client extends HTTP\Client * requests to 'discover' this information. * * Encoding is a bitmap with one of the ENCODING constants. + * + * @param array $settings */ public function __construct(array $settings) { @@ -190,6 +192,7 @@ class Client extends HTTP\Client * made to the server to also return all child resources. * * @param string $url + * @param array $properties * @param int $depth * * @return array @@ -258,6 +261,7 @@ class Client extends HTTP\Client * attempt is made to delete the property. * * @param string $url + * @param array $properties * * @return bool */ @@ -355,6 +359,7 @@ class Client extends HTTP\Client * @param string $method * @param string $url * @param string|resource|null $body + * @param array $headers * * @throws clientException, in case a curl error occurred * @@ -410,6 +415,7 @@ class Client extends HTTP\Client * ] * ] * + * * @param string $body xml body * * @return array diff --git a/vendor/sabre/dav/lib/DAV/CorePlugin.php b/vendor/sabre/dav/lib/DAV/CorePlugin.php index 74350c28d..ef1dfceb6 100644 --- a/vendor/sabre/dav/lib/DAV/CorePlugin.php +++ b/vendor/sabre/dav/lib/DAV/CorePlugin.php @@ -27,6 +27,8 @@ class CorePlugin extends ServerPlugin /** * Sets up the plugin. + * + * @param Server $server */ public function initialize(Server $server) { @@ -68,6 +70,9 @@ class CorePlugin extends ServerPlugin /** * This is the default implementation for the GET method. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpGet(RequestInterface $request, ResponseInterface $response) @@ -205,6 +210,9 @@ class CorePlugin extends ServerPlugin /** * HTTP OPTIONS. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpOptions(RequestInterface $request, ResponseInterface $response) @@ -237,6 +245,9 @@ class CorePlugin extends ServerPlugin * determine if a remote file was changed, so they can use a local cached * version, instead of downloading it again * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpHead(RequestInterface $request, ResponseInterface $response) @@ -270,6 +281,9 @@ class CorePlugin extends ServerPlugin * HTTP Delete. * * The HTTP delete method, deletes a given uri + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function httpDelete(RequestInterface $request, ResponseInterface $response) { @@ -300,6 +314,9 @@ class CorePlugin extends ServerPlugin * The response body is also an xml document, containing information about every uri resource and the requested properties * * It has to return a HTTP 207 Multi-status status code + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function httpPropFind(RequestInterface $request, ResponseInterface $response) { @@ -357,6 +374,9 @@ class CorePlugin extends ServerPlugin * This method is called to update properties on a Node. The request is an XML body with all the mutations. * In this XML body it is specified which properties should be set/updated and/or deleted * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpPropPatch(RequestInterface $request, ResponseInterface $response) @@ -423,6 +443,9 @@ class CorePlugin extends ServerPlugin * * If a new resource was created, a 201 Created status code should be returned. If an existing resource is updated, it's a 204 No Content * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpPut(RequestInterface $request, ResponseInterface $response) @@ -523,6 +546,9 @@ class CorePlugin extends ServerPlugin * * The MKCOL method is used to create a new collection (directory) on the server * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpMkcol(RequestInterface $request, ResponseInterface $response) @@ -581,6 +607,9 @@ class CorePlugin extends ServerPlugin * * This method moves one uri to a different uri. A lot of the actual request processing is done in getCopyMoveInfo * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpMove(RequestInterface $request, ResponseInterface $response) @@ -634,6 +663,9 @@ class CorePlugin extends ServerPlugin * This method copies one uri to a different uri, and works much like the MOVE request * A lot of the actual request processing is done in getCopyMoveInfo * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpCopy(RequestInterface $request, ResponseInterface $response) @@ -670,6 +702,9 @@ class CorePlugin extends ServerPlugin * Although the REPORT method is not part of the standard WebDAV spec (it's from rfc3253) * It's used in a lot of extensions, so it made sense to implement it into the core. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpReport(RequestInterface $request, ResponseInterface $response) @@ -698,7 +733,8 @@ class CorePlugin extends ServerPlugin * Here we check if a user attempted to update a protected property and * ensure that the process fails if this is the case. * - * @param string $path + * @param string $path + * @param PropPatch $propPatch */ public function propPatchProtectedPropertyCheck($path, PropPatch $propPatch) { @@ -721,7 +757,8 @@ class CorePlugin extends ServerPlugin * Here we check if a node implements IProperties and let the node handle * updating of (some) properties. * - * @param string $path + * @param string $path + * @param PropPatch $propPatch */ public function propPatchNodeUpdate($path, PropPatch $propPatch) { @@ -737,6 +774,9 @@ class CorePlugin extends ServerPlugin * This method is called when properties are retrieved. * * Here we add all the default properties. + * + * @param PropFind $propFind + * @param INode $node */ public function propFind(PropFind $propFind, INode $node) { @@ -792,6 +832,9 @@ class CorePlugin extends ServerPlugin * * This event is called a bit later, so plugins have a chance first to * populate the result. + * + * @param PropFind $propFind + * @param INode $node */ public function propFindNode(PropFind $propFind, INode $node) { @@ -808,6 +851,9 @@ class CorePlugin extends ServerPlugin * * This specific handler is called very late in the process, because we * want other systems to first have a chance to handle the properties. + * + * @param PropFind $propFind + * @param INode $node */ public function propFindLate(PropFind $propFind, INode $node) { diff --git a/vendor/sabre/dav/lib/DAV/Exception.php b/vendor/sabre/dav/lib/DAV/Exception.php index 9fc1d16bb..e1d990623 100644 --- a/vendor/sabre/dav/lib/DAV/Exception.php +++ b/vendor/sabre/dav/lib/DAV/Exception.php @@ -31,6 +31,9 @@ class Exception extends \Exception /** * This method allows the exception to include additional information into the WebDAV error response. + * + * @param Server $server + * @param \DOMElement $errorNode */ public function serialize(Server $server, \DOMElement $errorNode) { @@ -41,6 +44,8 @@ class Exception extends \Exception * * The headers must be returned as an array. * + * @param Server $server + * * @return array */ public function getHTTPHeaders(Server $server) diff --git a/vendor/sabre/dav/lib/DAV/Exception/ConflictingLock.php b/vendor/sabre/dav/lib/DAV/Exception/ConflictingLock.php index 7ceed266f..c1a4914ed 100644 --- a/vendor/sabre/dav/lib/DAV/Exception/ConflictingLock.php +++ b/vendor/sabre/dav/lib/DAV/Exception/ConflictingLock.php @@ -20,6 +20,9 @@ class ConflictingLock extends Locked { /** * This method allows the exception to include additional information into the WebDAV error response. + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAV/Exception/InvalidResourceType.php b/vendor/sabre/dav/lib/DAV/Exception/InvalidResourceType.php index 4fabd24ad..99baeb8bc 100644 --- a/vendor/sabre/dav/lib/DAV/Exception/InvalidResourceType.php +++ b/vendor/sabre/dav/lib/DAV/Exception/InvalidResourceType.php @@ -20,6 +20,9 @@ class InvalidResourceType extends Forbidden { /** * This method allows the exception to include additional information into the WebDAV error response. + * + * @param \Sabre\DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(\Sabre\DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php b/vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php index 37b28ca54..6c5f1c435 100644 --- a/vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php +++ b/vendor/sabre/dav/lib/DAV/Exception/InvalidSyncToken.php @@ -25,6 +25,9 @@ class InvalidSyncToken extends Forbidden { /** * This method allows the exception to include additional information into the WebDAV error response. + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAV/Exception/LockTokenMatchesRequestUri.php b/vendor/sabre/dav/lib/DAV/Exception/LockTokenMatchesRequestUri.php index a813b1a38..1c7402384 100644 --- a/vendor/sabre/dav/lib/DAV/Exception/LockTokenMatchesRequestUri.php +++ b/vendor/sabre/dav/lib/DAV/Exception/LockTokenMatchesRequestUri.php @@ -27,6 +27,9 @@ class LockTokenMatchesRequestUri extends Conflict /** * This method allows the exception to include additional information into the WebDAV error response. + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAV/Exception/Locked.php b/vendor/sabre/dav/lib/DAV/Exception/Locked.php index 28263cf13..632bafc60 100644 --- a/vendor/sabre/dav/lib/DAV/Exception/Locked.php +++ b/vendor/sabre/dav/lib/DAV/Exception/Locked.php @@ -51,6 +51,9 @@ class Locked extends DAV\Exception /** * This method allows the exception to include additional information into the WebDAV error response. + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAV/Exception/MethodNotAllowed.php b/vendor/sabre/dav/lib/DAV/Exception/MethodNotAllowed.php index d1ac349bd..a3d9c56f2 100644 --- a/vendor/sabre/dav/lib/DAV/Exception/MethodNotAllowed.php +++ b/vendor/sabre/dav/lib/DAV/Exception/MethodNotAllowed.php @@ -32,6 +32,8 @@ class MethodNotAllowed extends DAV\Exception * * The headers must be returned as an array. * + * @param \Sabre\DAV\Server $server + * * @return array */ public function getHTTPHeaders(\Sabre\DAV\Server $server) diff --git a/vendor/sabre/dav/lib/DAV/Exception/PreconditionFailed.php b/vendor/sabre/dav/lib/DAV/Exception/PreconditionFailed.php index 7240f3696..20d8a2a30 100644 --- a/vendor/sabre/dav/lib/DAV/Exception/PreconditionFailed.php +++ b/vendor/sabre/dav/lib/DAV/Exception/PreconditionFailed.php @@ -53,6 +53,9 @@ class PreconditionFailed extends DAV\Exception /** * This method allows the exception to include additional information into the WebDAV error response. + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAV/Exception/ReportNotSupported.php b/vendor/sabre/dav/lib/DAV/Exception/ReportNotSupported.php index a483838e6..cecfec12d 100644 --- a/vendor/sabre/dav/lib/DAV/Exception/ReportNotSupported.php +++ b/vendor/sabre/dav/lib/DAV/Exception/ReportNotSupported.php @@ -19,6 +19,9 @@ class ReportNotSupported extends UnsupportedMediaType { /** * This method allows the exception to include additional information into the WebDAV error response. + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php b/vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php index 3f7d2d5fb..7dbe878b9 100644 --- a/vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php +++ b/vendor/sabre/dav/lib/DAV/Exception/TooManyMatches.php @@ -25,6 +25,9 @@ class TooManyMatches extends Forbidden { /** * This method allows the exception to include additional information into the WebDAV error response. + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAV/IExtendedCollection.php b/vendor/sabre/dav/lib/DAV/IExtendedCollection.php index fcf12a27e..d43b44bcb 100644 --- a/vendor/sabre/dav/lib/DAV/IExtendedCollection.php +++ b/vendor/sabre/dav/lib/DAV/IExtendedCollection.php @@ -36,6 +36,7 @@ interface IExtendedCollection extends ICollection * property for you. * * @param string $name + * @param MkCol $mkCol * * @throws Exception\InvalidResourceType */ diff --git a/vendor/sabre/dav/lib/DAV/IProperties.php b/vendor/sabre/dav/lib/DAV/IProperties.php index a69c178c0..d50fdff20 100644 --- a/vendor/sabre/dav/lib/DAV/IProperties.php +++ b/vendor/sabre/dav/lib/DAV/IProperties.php @@ -23,6 +23,8 @@ interface IProperties extends INode * * To update specific properties, call the 'handle' method on this object. * Read the PropPatch documentation for more information. + * + * @param PropPatch $propPatch */ public function propPatch(PropPatch $propPatch); diff --git a/vendor/sabre/dav/lib/DAV/Locks/Backend/BackendInterface.php b/vendor/sabre/dav/lib/DAV/Locks/Backend/BackendInterface.php index 4d21beb2e..9a6919f50 100644 --- a/vendor/sabre/dav/lib/DAV/Locks/Backend/BackendInterface.php +++ b/vendor/sabre/dav/lib/DAV/Locks/Backend/BackendInterface.php @@ -35,7 +35,8 @@ interface BackendInterface /** * Locks a uri. * - * @param string $uri + * @param string $uri + * @param Locks\LockInfo $lockInfo * * @return bool */ @@ -44,7 +45,8 @@ interface BackendInterface /** * Removes a lock from a uri. * - * @param string $uri + * @param string $uri + * @param Locks\LockInfo $lockInfo * * @return bool */ diff --git a/vendor/sabre/dav/lib/DAV/Locks/Backend/File.php b/vendor/sabre/dav/lib/DAV/Locks/Backend/File.php index b38189499..5957f35dd 100644 --- a/vendor/sabre/dav/lib/DAV/Locks/Backend/File.php +++ b/vendor/sabre/dav/lib/DAV/Locks/Backend/File.php @@ -82,7 +82,8 @@ class File extends AbstractBackend /** * Locks a uri. * - * @param string $uri + * @param string $uri + * @param LockInfo $lockInfo * * @return bool */ @@ -112,7 +113,8 @@ class File extends AbstractBackend /** * Removes a lock from a uri. * - * @param string $uri + * @param string $uri + * @param LockInfo $lockInfo * * @return bool */ @@ -164,6 +166,8 @@ class File extends AbstractBackend /** * Saves the lockdata. + * + * @param array $newData */ protected function putData(array $newData) { diff --git a/vendor/sabre/dav/lib/DAV/Locks/Backend/PDO.php b/vendor/sabre/dav/lib/DAV/Locks/Backend/PDO.php index 3f425f98d..36a12d1ab 100644 --- a/vendor/sabre/dav/lib/DAV/Locks/Backend/PDO.php +++ b/vendor/sabre/dav/lib/DAV/Locks/Backend/PDO.php @@ -34,6 +34,8 @@ class PDO extends AbstractBackend /** * Constructor. + * + * @param \PDO $pdo */ public function __construct(\PDO $pdo) { @@ -109,7 +111,8 @@ class PDO extends AbstractBackend /** * Locks a uri. * - * @param string $uri + * @param string $uri + * @param LockInfo $lockInfo * * @return bool */ @@ -158,7 +161,8 @@ class PDO extends AbstractBackend /** * Removes a lock from a uri. * - * @param string $uri + * @param string $uri + * @param LockInfo $lockInfo * * @return bool */ diff --git a/vendor/sabre/dav/lib/DAV/Locks/Plugin.php b/vendor/sabre/dav/lib/DAV/Locks/Plugin.php index 1e9b6839e..6d3e9b883 100644 --- a/vendor/sabre/dav/lib/DAV/Locks/Plugin.php +++ b/vendor/sabre/dav/lib/DAV/Locks/Plugin.php @@ -40,6 +40,8 @@ class Plugin extends DAV\ServerPlugin /** * __construct. + * + * @param Backend\BackendInterface $locksBackend */ public function __construct(Backend\BackendInterface $locksBackend) { @@ -50,6 +52,8 @@ class Plugin extends DAV\ServerPlugin * Initializes the plugin. * * This method is automatically called by the Server class after addPlugin. + * + * @param DAV\Server $server */ public function initialize(DAV\Server $server) { @@ -80,6 +84,9 @@ class Plugin extends DAV\ServerPlugin /** * This method is called after most properties have been found * it allows us to add in any Lock-related properties. + * + * @param DAV\PropFind $propFind + * @param DAV\INode $node */ public function propFind(DAV\PropFind $propFind, DAV\INode $node) { @@ -152,6 +159,9 @@ class Plugin extends DAV\ServerPlugin * * Additionally, a lock can be requested for a non-existent file. In these case we're obligated to create an empty file as per RFC4918:S7.3 * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpLock(RequestInterface $request, ResponseInterface $response) @@ -250,6 +260,9 @@ class Plugin extends DAV\ServerPlugin * * This WebDAV method allows you to remove a lock from a node. The client should provide a valid locktoken through the Lock-token http header * The server should return 204 (No content) on success + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function httpUnlock(RequestInterface $request, ResponseInterface $response) { @@ -305,7 +318,8 @@ class Plugin extends DAV\ServerPlugin * All the locking information is supplied in the lockInfo object. The object has a suggested timeout, but this can be safely ignored * It is important that if the existing timeout is ignored, the property is overwritten, as this needs to be sent back to the client * - * @param string $uri + * @param string $uri + * @param LockInfo $lockInfo * * @return bool */ @@ -323,7 +337,8 @@ class Plugin extends DAV\ServerPlugin * * This method removes a lock from a uri. It is assumed all the supplied information is correct and verified * - * @param string $uri + * @param string $uri + * @param LockInfo $lockInfo * * @return bool */ @@ -365,6 +380,8 @@ class Plugin extends DAV\ServerPlugin /** * Generates the response for successful LOCK requests. * + * @param LockInfo $lockInfo + * * @return string */ protected function generateLockResponse(LockInfo $lockInfo) @@ -384,7 +401,8 @@ class Plugin extends DAV\ServerPlugin * must be present in the request, and reject requests without the proper * tokens. * - * @param mixed $conditions + * @param RequestInterface $request + * @param mixed $conditions */ public function validateTokens(RequestInterface $request, &$conditions) { diff --git a/vendor/sabre/dav/lib/DAV/Mount/Plugin.php b/vendor/sabre/dav/lib/DAV/Mount/Plugin.php index b7f4851f6..5eaa4d462 100644 --- a/vendor/sabre/dav/lib/DAV/Mount/Plugin.php +++ b/vendor/sabre/dav/lib/DAV/Mount/Plugin.php @@ -28,6 +28,8 @@ class Plugin extends DAV\ServerPlugin /** * Initializes the plugin and registers event handles. + * + * @param DAV\Server $server */ public function initialize(DAV\Server $server) { @@ -39,6 +41,9 @@ class Plugin extends DAV\ServerPlugin * 'beforeMethod' event handles. This event handles intercepts GET requests ending * with ?mount. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpGet(RequestInterface $request, ResponseInterface $response) @@ -62,7 +67,8 @@ class Plugin extends DAV\ServerPlugin /** * Generates the davmount response. * - * @param string $uri absolute uri + * @param ResponseInterface $response + * @param string $uri absolute uri */ public function davMount(ResponseInterface $response, $uri) { diff --git a/vendor/sabre/dav/lib/DAV/PartialUpdate/Plugin.php b/vendor/sabre/dav/lib/DAV/PartialUpdate/Plugin.php index d6f4d32bd..f8ffc3706 100644 --- a/vendor/sabre/dav/lib/DAV/PartialUpdate/Plugin.php +++ b/vendor/sabre/dav/lib/DAV/PartialUpdate/Plugin.php @@ -39,6 +39,8 @@ class Plugin extends DAV\ServerPlugin * Initializes the plugin. * * This method is automatically called by the Server class after addPlugin. + * + * @param DAV\Server $server */ public function initialize(DAV\Server $server) { @@ -104,6 +106,9 @@ class Plugin extends DAV\ServerPlugin * The WebDAV patch request can be used to modify only a part of an * existing resource. If the resource does not exist yet and the first * offset is not 0, the request fails + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function httpPatch(RequestInterface $request, ResponseInterface $response) { @@ -186,6 +191,8 @@ class Plugin extends DAV\ServerPlugin * [2,10,null] - update bytes 10 until the end of the patch body * [3,-5] - update from 5 bytes from the end of the file. * + * @param RequestInterface $request + * * @return array|null */ public function getHTTPUpdateRange(RequestInterface $request) diff --git a/vendor/sabre/dav/lib/DAV/PropFind.php b/vendor/sabre/dav/lib/DAV/PropFind.php index e9ffb07cb..4b6fe28eb 100644 --- a/vendor/sabre/dav/lib/DAV/PropFind.php +++ b/vendor/sabre/dav/lib/DAV/PropFind.php @@ -38,6 +38,7 @@ class PropFind * Creates the PROPFIND object. * * @param string $path + * @param array $properties * @param int $depth * @param int $requestType */ diff --git a/vendor/sabre/dav/lib/DAV/PropPatch.php b/vendor/sabre/dav/lib/DAV/PropPatch.php index 092909dea..160bdb1a8 100644 --- a/vendor/sabre/dav/lib/DAV/PropPatch.php +++ b/vendor/sabre/dav/lib/DAV/PropPatch.php @@ -82,6 +82,7 @@ class PropPatch * code associated with the operation. * * @param string|string[] $properties + * @param callable $callback */ public function handle($properties, callable $callback) { @@ -111,6 +112,8 @@ class PropPatch * Call this function if you wish to handle _all_ properties that haven't * been handled by anything else yet. Note that you effectively claim with * this that you promise to process _all_ properties that are coming in. + * + * @param callable $callback */ public function handleRemaining(callable $callback) { @@ -247,7 +250,8 @@ class PropPatch /** * Executes a property callback with the single-property syntax. * - * @param string $propertyName + * @param string $propertyName + * @param callable $callback */ private function doCallBackSingleProp($propertyName, callable $callback) { @@ -277,6 +281,9 @@ class PropPatch /** * Executes a property callback with the multi-property syntax. + * + * @param array $propertyList + * @param callable $callback */ private function doCallBackMultiProp(array $propertyList, callable $callback) { diff --git a/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/BackendInterface.php b/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/BackendInterface.php index 64a8825cb..4bdc44775 100644 --- a/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/BackendInterface.php +++ b/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/BackendInterface.php @@ -32,7 +32,8 @@ interface BackendInterface * However, you can also support the 'allprops' property here. In that * case, you should check for $propFind->isAllProps(). * - * @param string $path + * @param string $path + * @param PropFind $propFind */ public function propFind($path, PropFind $propFind); @@ -45,7 +46,8 @@ interface BackendInterface * Usually you would want to call 'handleRemaining' on this object, to get; * a list of all properties that need to be stored. * - * @param string $path + * @param string $path + * @param PropPatch $propPatch */ public function propPatch($path, PropPatch $propPatch); diff --git a/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/PDO.php b/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/PDO.php index 896033192..e640f420e 100644 --- a/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/PDO.php +++ b/vendor/sabre/dav/lib/DAV/PropertyStorage/Backend/PDO.php @@ -53,6 +53,8 @@ class PDO implements BackendInterface /** * Creates the PDO property storage engine. + * + * @param \PDO $pdo */ public function __construct(\PDO $pdo) { @@ -72,7 +74,8 @@ class PDO implements BackendInterface * However, you can also support the 'allprops' property here. In that * case, you should check for $propFind->isAllProps(). * - * @param string $path + * @param string $path + * @param PropFind $propFind */ public function propFind($path, PropFind $propFind) { @@ -112,7 +115,8 @@ class PDO implements BackendInterface * Usually you would want to call 'handleRemaining' on this object, to get; * a list of all properties that need to be stored. * - * @param string $path + * @param string $path + * @param PropPatch $propPatch */ public function propPatch($path, PropPatch $propPatch) { diff --git a/vendor/sabre/dav/lib/DAV/PropertyStorage/Plugin.php b/vendor/sabre/dav/lib/DAV/PropertyStorage/Plugin.php index da47ec9a9..aa8610eb8 100644 --- a/vendor/sabre/dav/lib/DAV/PropertyStorage/Plugin.php +++ b/vendor/sabre/dav/lib/DAV/PropertyStorage/Plugin.php @@ -46,6 +46,8 @@ class Plugin extends ServerPlugin /** * Creates the plugin. + * + * @param Backend\BackendInterface $backend */ public function __construct(Backend\BackendInterface $backend) { @@ -59,6 +61,8 @@ class Plugin extends ServerPlugin * addPlugin is called. * * This method should set up the required event subscriptions. + * + * @param Server $server */ public function initialize(Server $server) { @@ -73,6 +77,9 @@ class Plugin extends ServerPlugin * * If there's any requested properties that don't have a value yet, this * plugin will look in the property storage backend to find them. + * + * @param PropFind $propFind + * @param INode $node */ public function propFind(PropFind $propFind, INode $node) { @@ -90,7 +97,8 @@ class Plugin extends ServerPlugin * If there's any updated properties that haven't been stored, the * propertystorage backend can handle it. * - * @param string $path + * @param string $path + * @param PropPatch $propPatch */ public function propPatch($path, PropPatch $propPatch) { diff --git a/vendor/sabre/dav/lib/DAV/Server.php b/vendor/sabre/dav/lib/DAV/Server.php index 3c237500a..69b3bb3f2 100644 --- a/vendor/sabre/dav/lib/DAV/Server.php +++ b/vendor/sabre/dav/lib/DAV/Server.php @@ -393,6 +393,8 @@ class Server implements LoggerAwareInterface, EmitterInterface * Adds a plugin to the server. * * For more information, console the documentation of Sabre\DAV\ServerPlugin + * + * @param ServerPlugin $plugin */ public function addPlugin(ServerPlugin $plugin) { @@ -445,7 +447,9 @@ class Server implements LoggerAwareInterface, EmitterInterface /** * Handles a http request, and execute a method based on its name. * - * @param bool $sendResponse whether to send the HTTP response to the DAV client + * @param RequestInterface $request + * @param ResponseInterface $response + * @param bool $sendResponse whether to send the HTTP response to the DAV client */ public function invokeMethod(RequestInterface $request, ResponseInterface $response, $sendResponse = true) { @@ -704,6 +708,8 @@ class Server implements LoggerAwareInterface, EmitterInterface * * destination - Destination path * * destinationExists - Whether or not the destination is an existing url (and should therefore be overwritten) * + * @param RequestInterface $request + * * @throws Exception\BadRequest upon missing or broken request headers * @throws Exception\UnsupportedMediaType when trying to copy into a * non-collection @@ -876,7 +882,8 @@ class Server implements LoggerAwareInterface, EmitterInterface /** * Small helper to support PROPFIND with DEPTH_INFINITY. * - * @param array $yieldFirst + * @param PropFind $propFind + * @param array $yieldFirst * * @return \Traversable */ @@ -1007,6 +1014,9 @@ class Server implements LoggerAwareInterface, EmitterInterface * The result is returned as an array, with paths for it's keys. * The result may be returned out of order. * + * @param array $paths + * @param array $propertyNames + * * @return array */ public function getPropertiesForMultiplePaths(array $paths, array $propertyNames = []) @@ -1043,6 +1053,9 @@ class Server implements LoggerAwareInterface, EmitterInterface * target node and simply want to run through the system to get a correct * list of properties. * + * @param PropFind $propFind + * @param INode $node + * * @return bool */ public function getPropertiesByNode(PropFind $propFind, INode $node) @@ -1149,7 +1162,8 @@ class Server implements LoggerAwareInterface, EmitterInterface /** * Use this method to create a new collection. * - * @param string $uri The new uri + * @param string $uri The new uri + * @param MkCol $mkCol * * @return array|null */ @@ -1246,6 +1260,7 @@ class Server implements LoggerAwareInterface, EmitterInterface * as their values. * * @param string $path + * @param array $properties * * @return array */ @@ -1276,6 +1291,9 @@ class Server implements LoggerAwareInterface, EmitterInterface * related to If-None-Match, If-Match and If-Unmodified Since. It will * set the status to 304 Not Modified for If-Modified_since. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function checkPreconditions(RequestInterface $request, ResponseInterface $response) @@ -1546,6 +1564,8 @@ class Server implements LoggerAwareInterface, EmitterInterface * ], * ] * + * @param RequestInterface $request + * * @return array */ public function getIfConditions(RequestInterface $request) @@ -1598,6 +1618,8 @@ class Server implements LoggerAwareInterface, EmitterInterface /** * Returns an array with resourcetypes for a node. * + * @param INode $node + * * @return array */ public function getResourceTypeForNode(INode $node) @@ -1642,7 +1664,9 @@ class Server implements LoggerAwareInterface, EmitterInterface } /** + * @param Writer $w * @param $fileProperties + * @param bool $strip404s */ private function writeMultiStatus(Writer $w, $fileProperties, bool $strip404s) { diff --git a/vendor/sabre/dav/lib/DAV/ServerPlugin.php b/vendor/sabre/dav/lib/DAV/ServerPlugin.php index 70acb01eb..9aefa7f72 100644 --- a/vendor/sabre/dav/lib/DAV/ServerPlugin.php +++ b/vendor/sabre/dav/lib/DAV/ServerPlugin.php @@ -22,6 +22,8 @@ abstract class ServerPlugin * addPlugin is called. * * This method should set up the required event subscriptions. + * + * @param Server $server */ abstract public function initialize(Server $server); diff --git a/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php b/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php index 3a41e67b4..5706fabf1 100644 --- a/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php +++ b/vendor/sabre/dav/lib/DAV/Sharing/Plugin.php @@ -79,6 +79,8 @@ class Plugin extends ServerPlugin * addPlugin is called. * * This method should set up the required event subscriptions. + * + * @param Server $server */ public function initialize(Server $server) { @@ -137,6 +139,9 @@ class Plugin extends ServerPlugin * This event is triggered when properties are requested for nodes. * * This allows us to inject any sharings-specific properties. + * + * @param PropFind $propFind + * @param INode $node */ public function propFind(PropFind $propFind, INode $node) { @@ -156,6 +161,9 @@ class Plugin extends ServerPlugin /** * We intercept this to handle POST requests on shared resources. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool|null */ public function httpPost(RequestInterface $request, ResponseInterface $response) @@ -199,6 +207,9 @@ class Plugin extends ServerPlugin * hat are supported on a particular node. * * We need to add a number of privileges for scheduling purposes. + * + * @param INode $node + * @param array $supportedPrivilegeSet */ public function getSupportedPrivilegeSet(INode $node, array &$supportedPrivilegeSet) { @@ -234,6 +245,7 @@ class Plugin extends ServerPlugin * This method is used to generate HTML output for the * DAV\Browser\Plugin. * + * @param INode $node * @param string $output * @param string $path * diff --git a/vendor/sabre/dav/lib/DAV/SimpleCollection.php b/vendor/sabre/dav/lib/DAV/SimpleCollection.php index 3cd14d9ba..1fbb6982d 100644 --- a/vendor/sabre/dav/lib/DAV/SimpleCollection.php +++ b/vendor/sabre/dav/lib/DAV/SimpleCollection.php @@ -58,6 +58,8 @@ class SimpleCollection extends Collection /** * Adds a new childnode to this collection. + * + * @param INode $child */ public function addChild(INode $child) { diff --git a/vendor/sabre/dav/lib/DAV/Sync/Plugin.php b/vendor/sabre/dav/lib/DAV/Sync/Plugin.php index 32106abb3..f76827fe3 100644 --- a/vendor/sabre/dav/lib/DAV/Sync/Plugin.php +++ b/vendor/sabre/dav/lib/DAV/Sync/Plugin.php @@ -48,6 +48,8 @@ class Plugin extends DAV\ServerPlugin * Initializes the plugin. * * This is when the plugin registers it's hooks. + * + * @param DAV\Server $server */ public function initialize(DAV\Server $server) { @@ -95,7 +97,8 @@ class Plugin extends DAV\ServerPlugin /** * This method handles the {DAV:}sync-collection HTTP REPORT. * - * @param string $uri + * @param string $uri + * @param SyncCollectionReport $report */ public function syncCollection($uri, SyncCollectionReport $report) { @@ -140,6 +143,10 @@ class Plugin extends DAV\ServerPlugin * * @param string $syncToken * @param string $collectionUrl + * @param array $added + * @param array $modified + * @param array $deleted + * @param array $properties */ protected function sendSyncCollectionResponse($syncToken, $collectionUrl, array $added, array $modified, array $deleted, array $properties) { @@ -176,6 +183,9 @@ class Plugin extends DAV\ServerPlugin /** * This method is triggered whenever properties are requested for a node. * We intercept this to see if we must return a {DAV:}sync-token. + * + * @param DAV\PropFind $propFind + * @param DAV\INode $node */ public function propFind(DAV\PropFind $propFind, DAV\INode $node) { @@ -194,7 +204,8 @@ class Plugin extends DAV\ServerPlugin * It's a moment where this plugin can check all the supplied lock tokens * in the If: header, and check if they are valid. * - * @param array $conditions + * @param RequestInterface $request + * @param array $conditions */ public function validateTokens(RequestInterface $request, &$conditions) { diff --git a/vendor/sabre/dav/lib/DAV/TemporaryFileFilterPlugin.php b/vendor/sabre/dav/lib/DAV/TemporaryFileFilterPlugin.php index 9f8ec5b54..6cf772f44 100644 --- a/vendor/sabre/dav/lib/DAV/TemporaryFileFilterPlugin.php +++ b/vendor/sabre/dav/lib/DAV/TemporaryFileFilterPlugin.php @@ -90,6 +90,8 @@ class TemporaryFileFilterPlugin extends ServerPlugin * * This is called automatically be the Server class after this plugin is * added with Sabre\DAV\Server::addPlugin() + * + * @param Server $server */ public function initialize(Server $server) { @@ -104,6 +106,9 @@ class TemporaryFileFilterPlugin extends ServerPlugin * This method intercepts any GET, DELETE, PUT and PROPFIND calls to * filenames that are known to match the 'temporary file' regex. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function beforeMethod(RequestInterface $request, ResponseInterface $response) @@ -132,10 +137,11 @@ class TemporaryFileFilterPlugin extends ServerPlugin * This is used to deal with HTTP LOCK requests which create a new * file. * - * @param string $uri - * @param resource $data - * @param bool $modified should be set to true, if this event handler - * changed &$data + * @param string $uri + * @param resource $data + * @param ICollection $parent + * @param bool $modified should be set to true, if this event handler + * changed &$data * * @return bool */ @@ -184,7 +190,9 @@ class TemporaryFileFilterPlugin extends ServerPlugin * If the file doesn't exist, it will return false which will kick in * the regular system for the GET method. * - * @param string $tempLocation + * @param RequestInterface $request + * @param ResponseInterface $hR + * @param string $tempLocation * * @return bool */ @@ -206,7 +214,9 @@ class TemporaryFileFilterPlugin extends ServerPlugin /** * This method handles the PUT method. * - * @param string $tempLocation + * @param RequestInterface $request + * @param ResponseInterface $hR + * @param string $tempLocation * * @return bool */ @@ -232,7 +242,9 @@ class TemporaryFileFilterPlugin extends ServerPlugin * If the file didn't exist, it will return false, which will make the * standard HTTP DELETE handler kick in. * - * @param string $tempLocation + * @param RequestInterface $request + * @param ResponseInterface $hR + * @param string $tempLocation * * @return bool */ @@ -256,7 +268,9 @@ class TemporaryFileFilterPlugin extends ServerPlugin * for which properties were requested, and just sends back a default * set of properties. * - * @param string $tempLocation + * @param RequestInterface $request + * @param ResponseInterface $hR + * @param string $tempLocation * * @return bool */ diff --git a/vendor/sabre/dav/lib/DAV/Tree.php b/vendor/sabre/dav/lib/DAV/Tree.php index 72e14d522..7a5a25f87 100644 --- a/vendor/sabre/dav/lib/DAV/Tree.php +++ b/vendor/sabre/dav/lib/DAV/Tree.php @@ -37,6 +37,8 @@ class Tree * Creates the object. * * This method expects the rootObject to be passed as a parameter + * + * @param ICollection $rootNode */ public function __construct(ICollection $rootNode) { @@ -286,7 +288,9 @@ class Tree /** * copyNode. * - * @param string $destinationName + * @param INode $source + * @param ICollection $destinationParent + * @param string $destinationName */ protected function copyNode(INode $source, ICollection $destinationParent, $destinationName = null) { diff --git a/vendor/sabre/dav/lib/DAV/Version.php b/vendor/sabre/dav/lib/DAV/Version.php index d2c4afb56..bb48768a9 100644 --- a/vendor/sabre/dav/lib/DAV/Version.php +++ b/vendor/sabre/dav/lib/DAV/Version.php @@ -16,5 +16,5 @@ class Version /** * Full version number. */ - public const VERSION = '4.1.0'; + const VERSION = '4.0.3'; } diff --git a/vendor/sabre/dav/lib/DAV/Xml/Element/Prop.php b/vendor/sabre/dav/lib/DAV/Xml/Element/Prop.php index 9c214792f..52a04cf08 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Element/Prop.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Element/Prop.php @@ -39,6 +39,8 @@ class Prop implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) @@ -77,6 +79,8 @@ class Prop implements XmlDeserializable * * name - A clark-notation XML element name. * * value - The parsed value. * + * @param Reader $reader + * * @return array */ private static function parseCurrentElement(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Element/Response.php b/vendor/sabre/dav/lib/DAV/Xml/Element/Response.php index 45c161fa4..a11091809 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Element/Response.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Element/Response.php @@ -59,6 +59,7 @@ class Response implements Element * deleted. * * @param string $href + * @param array $responseProperties * @param string $httpStatus */ public function __construct($href, array $responseProperties, $httpStatus = null) @@ -109,6 +110,8 @@ class Response implements Element * * Important note 2: If you are writing any new elements, you are also * responsible for closing them. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -164,6 +167,8 @@ class Response implements Element * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Element/Sharee.php b/vendor/sabre/dav/lib/DAV/Xml/Element/Sharee.php index 33564d8f2..e0db3bf37 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Element/Sharee.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Element/Sharee.php @@ -84,6 +84,8 @@ class Sharee implements Element * Creates the object. * * $properties will be used to populate all internal properties. + * + * @param array $properties */ public function __construct(array $properties = []) { @@ -111,6 +113,8 @@ class Sharee implements Element * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -153,6 +157,8 @@ class Sharee implements Element * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/Complex.php b/vendor/sabre/dav/lib/DAV/Xml/Property/Complex.php index 787d30d95..990302054 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Property/Complex.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Property/Complex.php @@ -37,6 +37,8 @@ class Complex extends XmlFragment * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/GetLastModified.php b/vendor/sabre/dav/lib/DAV/Xml/Property/GetLastModified.php index c6f6d421c..05a00c5e5 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Property/GetLastModified.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Property/GetLastModified.php @@ -68,6 +68,8 @@ class GetLastModified implements Element * * Important note 2: If you are writing any new elements, you are also * responsible for closing them. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -94,6 +96,8 @@ class GetLastModified implements Element * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/Href.php b/vendor/sabre/dav/lib/DAV/Xml/Property/Href.php index 0ed14dcf3..c479c1602 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Property/Href.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Property/Href.php @@ -87,6 +87,8 @@ class Href implements Element, HtmlOutput * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -107,6 +109,8 @@ class Href implements Element, HtmlOutput * The baseUri parameter is a url to the root of the application, and can * be used to construct local links. * + * @param HtmlOutputHelper $html + * * @return string */ public function toHtml(HtmlOutputHelper $html) @@ -137,6 +141,8 @@ class Href implements Element, HtmlOutput * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/Invite.php b/vendor/sabre/dav/lib/DAV/Xml/Property/Invite.php index e3f0a611b..b5e2dae46 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Property/Invite.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Property/Invite.php @@ -56,6 +56,8 @@ class Invite implements XmlSerializable * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/LockDiscovery.php b/vendor/sabre/dav/lib/DAV/Xml/Property/LockDiscovery.php index ec4cbc0c6..c33812b3e 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Property/LockDiscovery.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Property/LockDiscovery.php @@ -62,6 +62,8 @@ class LockDiscovery implements XmlSerializable * * Important note 2: If you are writing any new elements, you are also * responsible for closing them. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/ResourceType.php b/vendor/sabre/dav/lib/DAV/Xml/Property/ResourceType.php index 6532b70c9..ce07d4382 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Property/ResourceType.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Property/ResourceType.php @@ -90,6 +90,8 @@ class ResourceType extends Element\Elements implements HtmlOutput * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) @@ -109,6 +111,8 @@ class ResourceType extends Element\Elements implements HtmlOutput * The baseUri parameter is a url to the root of the application, and can * be used to construct local links. * + * @param HtmlOutputHelper $html + * * @return string */ public function toHtml(HtmlOutputHelper $html) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/ShareAccess.php b/vendor/sabre/dav/lib/DAV/Xml/Property/ShareAccess.php index fdd55558c..95175053a 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Property/ShareAccess.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Property/ShareAccess.php @@ -71,6 +71,8 @@ class ShareAccess implements Element * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -111,6 +113,8 @@ class ShareAccess implements Element * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedLock.php b/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedLock.php index 100829c60..26e7d646e 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedLock.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedLock.php @@ -37,6 +37,8 @@ class SupportedLock implements XmlSerializable * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedMethodSet.php b/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedMethodSet.php index 634401093..06ab28c94 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedMethodSet.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedMethodSet.php @@ -81,6 +81,8 @@ class SupportedMethodSet implements XmlSerializable, HtmlOutput * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -102,6 +104,8 @@ class SupportedMethodSet implements XmlSerializable, HtmlOutput * The baseUri parameter is a url to the root of the application, and can * be used to construct local links. * + * @param HtmlOutputHelper $html + * * @return string */ public function toHtml(HtmlOutputHelper $html) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedReportSet.php b/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedReportSet.php index 0b4990e96..4c25d23d9 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedReportSet.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Property/SupportedReportSet.php @@ -109,6 +109,8 @@ class SupportedReportSet implements XmlSerializable, HtmlOutput * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -132,6 +134,8 @@ class SupportedReportSet implements XmlSerializable, HtmlOutput * The baseUri parameter is a url to the root of the application, and can * be used to construct local links. * + * @param HtmlOutputHelper $html + * * @return string */ public function toHtml(HtmlOutputHelper $html) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Request/Lock.php b/vendor/sabre/dav/lib/DAV/Xml/Request/Lock.php index 57d12ef93..8d9348162 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Request/Lock.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Request/Lock.php @@ -56,6 +56,8 @@ class Lock implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Request/MkCol.php b/vendor/sabre/dav/lib/DAV/Xml/Request/MkCol.php index e0d7e90a2..7713646ea 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Request/MkCol.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Request/MkCol.php @@ -56,6 +56,8 @@ class MkCol implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Request/PropFind.php b/vendor/sabre/dav/lib/DAV/Xml/Request/PropFind.php index 505e7c79c..b4cce423e 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Request/PropFind.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Request/PropFind.php @@ -53,6 +53,8 @@ class PropFind implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Request/PropPatch.php b/vendor/sabre/dav/lib/DAV/Xml/Request/PropPatch.php index 4a2709502..55e154ec7 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Request/PropPatch.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Request/PropPatch.php @@ -45,6 +45,8 @@ class PropPatch implements Element * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -79,6 +81,8 @@ class PropPatch implements Element * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Request/ShareResource.php b/vendor/sabre/dav/lib/DAV/Xml/Request/ShareResource.php index 79d7dc826..e1985b8c3 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Request/ShareResource.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Request/ShareResource.php @@ -56,6 +56,8 @@ class ShareResource implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Request/SyncCollectionReport.php b/vendor/sabre/dav/lib/DAV/Xml/Request/SyncCollectionReport.php index 8dd95765b..acf0039ce 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Request/SyncCollectionReport.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Request/SyncCollectionReport.php @@ -68,6 +68,8 @@ class SyncCollectionReport implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php b/vendor/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php index e824cda42..423d0b569 100644 --- a/vendor/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php +++ b/vendor/sabre/dav/lib/DAV/Xml/Response/MultiStatus.php @@ -80,6 +80,8 @@ class MultiStatus implements Element * * Important note 2: If you are writing any new elements, you are also * responsible for closing them. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -109,6 +111,8 @@ class MultiStatus implements Element * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAVACL/ACLTrait.php b/vendor/sabre/dav/lib/DAVACL/ACLTrait.php index 98c1ce338..d9bf4e1e0 100644 --- a/vendor/sabre/dav/lib/DAVACL/ACLTrait.php +++ b/vendor/sabre/dav/lib/DAVACL/ACLTrait.php @@ -69,6 +69,8 @@ trait ACLTrait * Updates the ACL. * * This method will receive a list of new ACE's as an array argument. + * + * @param array $acl */ public function setACL(array $acl) { diff --git a/vendor/sabre/dav/lib/DAVACL/AbstractPrincipalCollection.php b/vendor/sabre/dav/lib/DAVACL/AbstractPrincipalCollection.php index d26f7d27b..1160dd7ac 100644 --- a/vendor/sabre/dav/lib/DAVACL/AbstractPrincipalCollection.php +++ b/vendor/sabre/dav/lib/DAVACL/AbstractPrincipalCollection.php @@ -51,7 +51,9 @@ abstract class AbstractPrincipalCollection extends DAV\Collection implements IPr * default is 'principals', if your principals are stored in a different * collection, override $principalPrefix * - * @param string $principalPrefix + * + * @param PrincipalBackend\BackendInterface $principalBackend + * @param string $principalPrefix */ public function __construct(PrincipalBackend\BackendInterface $principalBackend, $principalPrefix = 'principals') { @@ -66,6 +68,8 @@ abstract class AbstractPrincipalCollection extends DAV\Collection implements IPr * at least contain a uri item. Other properties may or may not be * supplied by the authentication backend. * + * @param array $principalInfo + * * @return DAV\INode */ abstract public function getChildForPrincipal(array $principalInfo); @@ -138,6 +142,7 @@ abstract class AbstractPrincipalCollection extends DAV\Collection implements IPr * This method should simply return a list of 'child names', which may be * used to call $this->getChild in the future. * + * @param array $searchProperties * @param string $test * * @return array diff --git a/vendor/sabre/dav/lib/DAVACL/Exception/AceConflict.php b/vendor/sabre/dav/lib/DAVACL/Exception/AceConflict.php index 0fc3f778d..7756d4728 100644 --- a/vendor/sabre/dav/lib/DAVACL/Exception/AceConflict.php +++ b/vendor/sabre/dav/lib/DAVACL/Exception/AceConflict.php @@ -20,6 +20,9 @@ class AceConflict extends DAV\Exception\Conflict * Adds in extra information in the xml response. * * This method adds the {DAV:}no-ace-conflict element as defined in rfc3744 + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAVACL/Exception/NeedPrivileges.php b/vendor/sabre/dav/lib/DAVACL/Exception/NeedPrivileges.php index af1f01c2b..19e0dac9d 100644 --- a/vendor/sabre/dav/lib/DAVACL/Exception/NeedPrivileges.php +++ b/vendor/sabre/dav/lib/DAVACL/Exception/NeedPrivileges.php @@ -36,6 +36,7 @@ class NeedPrivileges extends DAV\Exception\Forbidden * Constructor. * * @param string $uri + * @param array $privileges */ public function __construct($uri, array $privileges) { @@ -49,6 +50,9 @@ class NeedPrivileges extends DAV\Exception\Forbidden * Adds in extra information in the xml response. * * This method adds the {DAV:}need-privileges element as defined in rfc3744 + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAVACL/Exception/NoAbstract.php b/vendor/sabre/dav/lib/DAVACL/Exception/NoAbstract.php index b9c66169e..d90b01ffd 100644 --- a/vendor/sabre/dav/lib/DAVACL/Exception/NoAbstract.php +++ b/vendor/sabre/dav/lib/DAVACL/Exception/NoAbstract.php @@ -20,6 +20,9 @@ class NoAbstract extends DAV\Exception\PreconditionFailed * Adds in extra information in the xml response. * * This method adds the {DAV:}no-abstract element as defined in rfc3744 + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAVACL/Exception/NotRecognizedPrincipal.php b/vendor/sabre/dav/lib/DAVACL/Exception/NotRecognizedPrincipal.php index d4e728497..b005c55d8 100644 --- a/vendor/sabre/dav/lib/DAVACL/Exception/NotRecognizedPrincipal.php +++ b/vendor/sabre/dav/lib/DAVACL/Exception/NotRecognizedPrincipal.php @@ -20,6 +20,9 @@ class NotRecognizedPrincipal extends DAV\Exception\PreconditionFailed * Adds in extra information in the xml response. * * This method adds the {DAV:}recognized-principal element as defined in rfc3744 + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAVACL/Exception/NotSupportedPrivilege.php b/vendor/sabre/dav/lib/DAVACL/Exception/NotSupportedPrivilege.php index c04c5faa2..dda2e6281 100644 --- a/vendor/sabre/dav/lib/DAVACL/Exception/NotSupportedPrivilege.php +++ b/vendor/sabre/dav/lib/DAVACL/Exception/NotSupportedPrivilege.php @@ -20,6 +20,9 @@ class NotSupportedPrivilege extends DAV\Exception\PreconditionFailed * Adds in extra information in the xml response. * * This method adds the {DAV:}not-supported-privilege element as defined in rfc3744 + * + * @param DAV\Server $server + * @param \DOMElement $errorNode */ public function serialize(DAV\Server $server, \DOMElement $errorNode) { diff --git a/vendor/sabre/dav/lib/DAVACL/FS/HomeCollection.php b/vendor/sabre/dav/lib/DAVACL/FS/HomeCollection.php index fa476e094..c896d8e25 100644 --- a/vendor/sabre/dav/lib/DAVACL/FS/HomeCollection.php +++ b/vendor/sabre/dav/lib/DAVACL/FS/HomeCollection.php @@ -42,8 +42,9 @@ class HomeCollection extends AbstractPrincipalCollection implements IACL /** * Creates the home collection. * - * @param string $storagePath where the actual files are stored - * @param string $principalPrefix list of principals to iterate + * @param BackendInterface $principalBackend + * @param string $storagePath where the actual files are stored + * @param string $principalPrefix list of principals to iterate */ public function __construct(BackendInterface $principalBackend, $storagePath, $principalPrefix = 'principals') { @@ -70,6 +71,8 @@ class HomeCollection extends AbstractPrincipalCollection implements IACL * at least contain a uri item. Other properties may or may not be * supplied by the authentication backend. * + * @param array $principalInfo + * * @return \Sabre\DAV\INode */ public function getChildForPrincipal(array $principalInfo) diff --git a/vendor/sabre/dav/lib/DAVACL/IACL.php b/vendor/sabre/dav/lib/DAVACL/IACL.php index 291fb24ae..d19a075be 100644 --- a/vendor/sabre/dav/lib/DAVACL/IACL.php +++ b/vendor/sabre/dav/lib/DAVACL/IACL.php @@ -53,6 +53,8 @@ interface IACL extends DAV\INode * Updates the ACL. * * This method will receive a list of new ACE's as an array argument. + * + * @param array $acl */ public function setACL(array $acl); diff --git a/vendor/sabre/dav/lib/DAVACL/IPrincipal.php b/vendor/sabre/dav/lib/DAVACL/IPrincipal.php index 43e23d0a7..c804096de 100644 --- a/vendor/sabre/dav/lib/DAVACL/IPrincipal.php +++ b/vendor/sabre/dav/lib/DAVACL/IPrincipal.php @@ -60,6 +60,8 @@ interface IPrincipal extends DAV\INode * The list of members is always overwritten, never appended to. * * This method should throw an exception if the members could not be set. + * + * @param array $principals */ public function setGroupMemberSet(array $principals); diff --git a/vendor/sabre/dav/lib/DAVACL/IPrincipalCollection.php b/vendor/sabre/dav/lib/DAVACL/IPrincipalCollection.php index 7a3009be5..1003730d6 100644 --- a/vendor/sabre/dav/lib/DAVACL/IPrincipalCollection.php +++ b/vendor/sabre/dav/lib/DAVACL/IPrincipalCollection.php @@ -37,6 +37,7 @@ interface IPrincipalCollection extends DAV\ICollection * This method should simply return a list of 'child names', which may be * used to call $this->getChild in the future. * + * @param array $searchProperties * @param string $test * * @return array diff --git a/vendor/sabre/dav/lib/DAVACL/Plugin.php b/vendor/sabre/dav/lib/DAVACL/Plugin.php index 6f071927d..b9407472e 100644 --- a/vendor/sabre/dav/lib/DAVACL/Plugin.php +++ b/vendor/sabre/dav/lib/DAVACL/Plugin.php @@ -269,6 +269,8 @@ class Plugin extends DAV\ServerPlugin * Sets the default ACL rules. * * These rules are used for all nodes that don't implement the IACL interface. + * + * @param array $acl */ public function setDefaultAcl(array $acl) { @@ -761,6 +763,8 @@ class Plugin extends DAV\ServerPlugin * Sets up the plugin. * * This method is automatically called by the server class. + * + * @param DAV\Server $server */ public function initialize(DAV\Server $server) { @@ -825,6 +829,9 @@ class Plugin extends DAV\ServerPlugin /** * Triggered before any method is handled. + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function beforeMethod(RequestInterface $request, ResponseInterface $response) { @@ -916,7 +923,8 @@ class Plugin extends DAV\ServerPlugin /** * Triggered before a node is unlocked. * - * @param string $uri + * @param string $uri + * @param DAV\Locks\LockInfo $lock * @TODO: not yet implemented */ public function beforeUnlock($uri, DAV\Locks\LockInfo $lock) @@ -926,6 +934,8 @@ class Plugin extends DAV\ServerPlugin /** * Triggered before properties are looked up in specific nodes. * + * @param DAV\PropFind $propFind + * @param DAV\INode $node * @TODO really should be broken into multiple methods, or even a class. * * @return bool @@ -1034,7 +1044,8 @@ class Plugin extends DAV\ServerPlugin * This method intercepts PROPPATCH methods and make sure the * group-member-set is updated correctly. * - * @param string $path + * @param string $path + * @param DAV\PropPatch $propPatch */ public function propPatch($path, DAV\PropPatch $propPatch) { @@ -1107,6 +1118,9 @@ class Plugin extends DAV\ServerPlugin /** * This method is responsible for handling the 'ACL' event. * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return bool */ public function httpAcl(RequestInterface $request, ResponseInterface $response) @@ -1197,7 +1211,8 @@ class Plugin extends DAV\ServerPlugin * or a principal URL, the principal URL and principal URLs of groups that * principal belongs to. * - * @param string $path + * @param string $path + * @param Xml\Request\PrincipalMatchReport $report */ protected function principalMatchReport($path, Xml\Request\PrincipalMatchReport $report) { @@ -1419,7 +1434,8 @@ class Plugin extends DAV\ServerPlugin * clients to search for groups of principals, based on the value of one * or more properties. * - * @param string $path + * @param string $path + * @param Xml\Request\PrincipalPropertySearchReport $report */ protected function principalPropertySearchReport($path, Xml\Request\PrincipalPropertySearchReport $report) { @@ -1457,7 +1473,8 @@ class Plugin extends DAV\ServerPlugin * is used to for example generate a UI with ACL rules, allowing you * to show names for principals for every entry. * - * @param string $path + * @param string $path + * @param Xml\Request\AclPrincipalPropSetReport $report */ protected function aclPrincipalPropSetReport($path, Xml\Request\AclPrincipalPropSetReport $report) { @@ -1503,7 +1520,8 @@ class Plugin extends DAV\ServerPlugin * DAV\Browser\Plugin. This allows us to generate an interface users * can use to create new calendars. * - * @param string $output + * @param DAV\INode $node + * @param string $output * * @return bool */ diff --git a/vendor/sabre/dav/lib/DAVACL/Principal.php b/vendor/sabre/dav/lib/DAVACL/Principal.php index ada38ab72..e2df1c35e 100644 --- a/vendor/sabre/dav/lib/DAVACL/Principal.php +++ b/vendor/sabre/dav/lib/DAVACL/Principal.php @@ -42,6 +42,9 @@ class Principal extends DAV\Node implements IPrincipal, DAV\IProperties, IACL /** * Creates the principal object. + * + * @param PrincipalBackend\BackendInterface $principalBackend + * @param array $principalProperties */ public function __construct(PrincipalBackend\BackendInterface $principalBackend, array $principalProperties = []) { @@ -116,6 +119,8 @@ class Principal extends DAV\Node implements IPrincipal, DAV\IProperties, IACL * The list of members is always overwritten, never appended to. * * This method should throw an exception if the members could not be set. + * + * @param array $groupMembers */ public function setGroupMemberSet(array $groupMembers) { @@ -176,6 +181,8 @@ class Principal extends DAV\Node implements IPrincipal, DAV\IProperties, IACL * * To update specific properties, call the 'handle' method on this object. * Read the PropPatch documentation for more information. + * + * @param DAV\PropPatch $propPatch */ public function propPatch(DAV\PropPatch $propPatch) { diff --git a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/BackendInterface.php b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/BackendInterface.php index 72717a59b..40ac272b5 100644 --- a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/BackendInterface.php +++ b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/BackendInterface.php @@ -59,7 +59,8 @@ interface BackendInterface * * Read the PropPatch documentation for more info and examples. * - * @param string $path + * @param string $path + * @param \Sabre\DAV\PropPatch $propPatch */ public function updatePrincipal($path, \Sabre\DAV\PropPatch $propPatch); @@ -88,6 +89,7 @@ interface BackendInterface * from working. * * @param string $prefixPath + * @param array $searchProperties * @param string $test * * @return array @@ -138,6 +140,7 @@ interface BackendInterface * The principals should be passed as a list of uri's. * * @param string $principal + * @param array $members */ public function setGroupMemberSet($principal, array $members); } diff --git a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/CreatePrincipalSupport.php b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/CreatePrincipalSupport.php index 7de369289..ee418e49b 100644 --- a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/CreatePrincipalSupport.php +++ b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/CreatePrincipalSupport.php @@ -24,6 +24,7 @@ interface CreatePrincipalSupport extends BackendInterface * of the principal. * * @param string $path + * @param MkCol $mkCol */ public function createPrincipal($path, MkCol $mkCol); } diff --git a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php index 17bc245c5..160d41447 100644 --- a/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php +++ b/vendor/sabre/dav/lib/DAVACL/PrincipalBackend/PDO.php @@ -11,6 +11,7 @@ use Sabre\Uri; /** * PDO principal backend. * + * * This backend assumes all principals are in a single collection. The default collection * is 'principals/', but this can be overridden. * @@ -64,6 +65,8 @@ class PDO extends AbstractBackend implements CreatePrincipalSupport /** * Sets up the backend. + * + * @param \PDO $pdo */ public function __construct(\PDO $pdo) { @@ -173,7 +176,8 @@ class PDO extends AbstractBackend implements CreatePrincipalSupport * * Read the PropPatch documentation for more info and examples. * - * @param string $path + * @param string $path + * @param DAV\PropPatch $propPatch */ public function updatePrincipal($path, DAV\PropPatch $propPatch) { @@ -229,6 +233,7 @@ class PDO extends AbstractBackend implements CreatePrincipalSupport * from working. * * @param string $prefixPath + * @param array $searchProperties * @param string $test * * @return array @@ -395,6 +400,7 @@ class PDO extends AbstractBackend implements CreatePrincipalSupport * The principals should be passed as a list of uri's. * * @param string $principal + * @param array $members */ public function setGroupMemberSet($principal, array $members) { @@ -433,6 +439,7 @@ class PDO extends AbstractBackend implements CreatePrincipalSupport * of the principal. * * @param string $path + * @param MkCol $mkCol */ public function createPrincipal($path, MkCol $mkCol) { diff --git a/vendor/sabre/dav/lib/DAVACL/PrincipalCollection.php b/vendor/sabre/dav/lib/DAVACL/PrincipalCollection.php index b823b6ceb..4fae96e0c 100644 --- a/vendor/sabre/dav/lib/DAVACL/PrincipalCollection.php +++ b/vendor/sabre/dav/lib/DAVACL/PrincipalCollection.php @@ -29,6 +29,8 @@ class PrincipalCollection extends AbstractPrincipalCollection implements IExtend * at least contain a uri item. Other properties may or may not be * supplied by the authentication backend. * + * @param array $principal + * * @return \Sabre\DAV\INode */ public function getChildForPrincipal(array $principal) @@ -56,6 +58,7 @@ class PrincipalCollection extends AbstractPrincipalCollection implements IExtend * property for you. * * @param string $name + * @param MkCol $mkCol * * @throws InvalidResourceType */ diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Property/Acl.php b/vendor/sabre/dav/lib/DAVACL/Xml/Property/Acl.php index c6e236dc5..372f62ab3 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Property/Acl.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Property/Acl.php @@ -58,7 +58,8 @@ class Acl implements Element, HtmlOutput * are already full urls. If this is kept to true, the servers base url * will automatically be prefixed. * - * @param bool $prefixBaseUrl + * @param array $privileges + * @param bool $prefixBaseUrl */ public function __construct(array $privileges, $prefixBaseUrl = true) { @@ -91,6 +92,8 @@ class Acl implements Element, HtmlOutput * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -110,6 +113,8 @@ class Acl implements Element, HtmlOutput * The baseUri parameter is a url to the root of the application, and can * be used to construct local links. * + * @param HtmlOutputHelper $html + * * @return string */ public function toHtml(HtmlOutputHelper $html) @@ -156,6 +161,8 @@ class Acl implements Element, HtmlOutput * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) @@ -219,6 +226,9 @@ class Acl implements Element, HtmlOutput /** * Serializes a single access control entry. + * + * @param Writer $writer + * @param array $ace */ private function serializeAce(Writer $writer, array $ace) { diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Property/AclRestrictions.php b/vendor/sabre/dav/lib/DAVACL/Xml/Property/AclRestrictions.php index b5629c809..0bf16b431 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Property/AclRestrictions.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Property/AclRestrictions.php @@ -33,6 +33,8 @@ class AclRestrictions implements XmlSerializable * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Property/CurrentUserPrivilegeSet.php b/vendor/sabre/dav/lib/DAVACL/Xml/Property/CurrentUserPrivilegeSet.php index e38a45c61..083856330 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Property/CurrentUserPrivilegeSet.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Property/CurrentUserPrivilegeSet.php @@ -33,6 +33,8 @@ class CurrentUserPrivilegeSet implements Element, HtmlOutput * Creates the object. * * Pass the privileges in clark-notation + * + * @param array $privileges */ public function __construct(array $privileges) { @@ -54,6 +56,8 @@ class CurrentUserPrivilegeSet implements Element, HtmlOutput * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -105,6 +109,8 @@ class CurrentUserPrivilegeSet implements Element, HtmlOutput * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) @@ -133,6 +139,8 @@ class CurrentUserPrivilegeSet implements Element, HtmlOutput * The baseUri parameter is a url to the root of the application, and can * be used to construct local links. * + * @param HtmlOutputHelper $html + * * @return string */ public function toHtml(HtmlOutputHelper $html) diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php b/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php index 24aeffad9..e304a2aed 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Property/Principal.php @@ -98,6 +98,8 @@ class Principal extends DAV\Xml\Property\Href * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -128,6 +130,8 @@ class Principal extends DAV\Xml\Property\Href * The baseUri parameter is a url to the root of the application, and can * be used to construct local links. * + * @param HtmlOutputHelper $html + * * @return string */ public function toHtml(HtmlOutputHelper $html) @@ -162,6 +166,8 @@ class Principal extends DAV\Xml\Property\Href * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Property/SupportedPrivilegeSet.php b/vendor/sabre/dav/lib/DAVACL/Xml/Property/SupportedPrivilegeSet.php index 6e7514bd9..1762391d9 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Property/SupportedPrivilegeSet.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Property/SupportedPrivilegeSet.php @@ -34,6 +34,8 @@ class SupportedPrivilegeSet implements XmlSerializable, HtmlOutput /** * Constructor. + * + * @param array $privileges */ public function __construct(array $privileges) { @@ -65,6 +67,8 @@ class SupportedPrivilegeSet implements XmlSerializable, HtmlOutput * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. + * + * @param Writer $writer */ public function xmlSerialize(Writer $writer) { @@ -82,6 +86,8 @@ class SupportedPrivilegeSet implements XmlSerializable, HtmlOutput * The baseUri parameter is a url to the root of the application, and can * be used to construct local links. * + * @param HtmlOutputHelper $html + * * @return string */ public function toHtml(HtmlOutputHelper $html) @@ -118,6 +124,7 @@ class SupportedPrivilegeSet implements XmlSerializable, HtmlOutput * * This is a recursive function. * + * @param Writer $writer * @param string $privName * @param array $privilege */ diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php index 4fc61273a..17b37afab 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php @@ -41,6 +41,8 @@ class AclPrincipalPropSetReport implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php index 70a7e2200..393308cd2 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php @@ -52,6 +52,8 @@ class ExpandPropertyReport implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php index b49582450..f868cc9df 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php @@ -72,6 +72,8 @@ class PrincipalMatchReport implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php index bddceca8d..26468fd21 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php @@ -73,6 +73,8 @@ class PrincipalPropertySearchReport implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php index 7f15d8a4e..37bc2cfbf 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php @@ -40,6 +40,8 @@ class PrincipalSearchPropertySetReport implements XmlDeserializable * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * + * @param Reader $reader + * * @return mixed */ public static function xmlDeserialize(Reader $reader) diff --git a/vendor/sabre/dav/phpstan.neon b/vendor/sabre/dav/phpstan.neon index 5335bc651..e50c5be6e 100644 --- a/vendor/sabre/dav/phpstan.neon +++ b/vendor/sabre/dav/phpstan.neon @@ -1,2 +1,3 @@ parameters: level: 0 + bootstrap: %currentWorkingDirectory%/vendor/autoload.php diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php index 9460b8922..d2df483cd 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php @@ -15,7 +15,7 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase protected $pdo; - public function setup(): void + public function setUp() { $this->dropTables([ 'calendarobjects', @@ -67,7 +67,7 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase 'share-access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, ]; - $this->assertIsArray($calendars); + $this->assertInternalType('array', $calendars); $this->assertEquals(1, count($calendars)); foreach ($elementCheck as $name => $value) { @@ -112,7 +112,7 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'), ]; - $this->assertIsArray($calendars); + $this->assertInternalType('array', $calendars); $this->assertEquals(1, count($calendars)); foreach ($elementCheck as $name => $value) { @@ -123,10 +123,10 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase /** * @depends testConstruct + * @expectedException \InvalidArgumentException */ public function testUpdateCalendarBadId() { - $this->expectException('InvalidArgumentException'); $backend = new PDO($this->pdo); //Creating a new calendar @@ -186,10 +186,10 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase /** * @depends testCreateCalendarAndFetch + * @expectedException \InvalidArgumentException */ public function testDeleteCalendarBadID() { - $this->expectException('InvalidArgumentException'); $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', [ '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new CalDAV\Xml\Property\SupportedCalendarComponentSet(['VEVENT']), @@ -201,10 +201,10 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase /** * @depends testCreateCalendarAndFetch + * @expectedException \Sabre\DAV\Exception */ public function testCreateCalendarIncorrectComponentSet() { - $this->expectException('Sabre\DAV\Exception'); $backend = new PDO($this->pdo); //Creating a new calendar @@ -276,7 +276,7 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase switch ($key) { case 'lastmodified': - $this->assertIsInt($actual); + $this->assertInternalType('int', $actual); break; case 'calendardata': if (is_resource($actual)) { @@ -292,20 +292,20 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase /** * @depends testGetMultipleObjects + * @expectedException \InvalidArgumentException */ public function testGetMultipleObjectsBadId() { - $this->expectException('InvalidArgumentException'); $backend = new PDO($this->pdo); $backend->getMultipleCalendarObjects('bad-id', ['foo-bar']); } /** + * @expectedException \Sabre\DAV\Exception\BadRequest * @depends testCreateCalendarObject */ public function testCreateCalendarObjectNoComponent() { - $this->expectException('Sabre\DAV\Exception\BadRequest'); $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -345,10 +345,10 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase /** * @depends testCreateCalendarObject + * @expectedException \InvalidArgumentException */ public function testCreateCalendarObjectBadId() { - $this->expectException('InvalidArgumentException'); $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -519,20 +519,20 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase /** * @depends testGetCalendarObjects + * @expectedException \InvalidArgumentException */ public function testGetCalendarObjectsBadId() { - $this->expectException('InvalidArgumentException'); $backend = new PDO($this->pdo); $backend->getCalendarObjects('bad-id'); } /** * @depends testGetCalendarObjects + * @expectedException \InvalidArgumentException */ public function testGetCalendarObjectBadId() { - $this->expectException('InvalidArgumentException'); $backend = new PDO($this->pdo); $backend->getCalendarObject('bad-id', 'foo-bar'); } @@ -582,10 +582,10 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase /** * @depends testUpdateCalendarObject + * @expectedException \InvalidArgumentException */ public function testUpdateCalendarObjectBadId() { - $this->expectException('InvalidArgumentException'); $backend = new PDO($this->pdo); $backend->updateCalendarObject('bad-id', 'object-id', 'objectdata'); } @@ -608,10 +608,10 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase /** * @depends testDeleteCalendarObject + * @expectedException \InvalidArgumentException */ public function testDeleteCalendarObjectBadId() { - $this->expectException('InvalidArgumentException'); $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -644,11 +644,11 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase } /** + * @expectedException \InvalidArgumentException * @depends testCalendarQueryNoResult */ public function testCalendarQueryBadId() { - $this->expectException('InvalidArgumentException'); $abstract = new PDO($this->pdo); $filters = [ 'name' => 'VCALENDAR', @@ -859,10 +859,10 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase /** * @depends testGetChanges + * @expectedException \InvalidArgumentException */ public function testGetChangesBadId() { - $this->expectException('InvalidArgumentException'); $backend = new PDO($this->pdo); $id = $backend->createCalendar( 'principals/user1', @@ -903,9 +903,11 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase } } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testCreateSubscriptionFail() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $props = [ ]; @@ -1107,10 +1109,10 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase /** * @depends testGetInvites + * @expectedException \InvalidArgumentException */ public function testGetInvitesBadId() { - $this->expectException('InvalidArgumentException'); $backend = new PDO($this->pdo); // creating a new calendar @@ -1257,10 +1259,10 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase /** * @depends testUpdateInvites + * @expectedException \InvalidArgumentException */ public function testUpdateInvitesBadId() { - $this->expectException('InvalidArgumentException'); $backend = new PDO($this->pdo); // Add a new invite $backend->updateInvites( @@ -1314,7 +1316,7 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase ], ]), ]; - $this->assertEqualsCanonicalizing($expected, $result); + $this->assertEquals($expected, $result, null, 0.0, 10, true); // Last argument is $canonicalize = true, which allows us to compare, ignoring the order, because it's different between MySQL and Sqlite. } /** @@ -1388,9 +1390,11 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase $this->assertEquals($expected, $result); } + /** + * @expectedException \Sabre\DAV\Exception\NotImplemented + */ public function testSetPublishStatus() { - $this->expectException('Sabre\DAV\Exception\NotImplemented'); $backend = new PDO($this->pdo); $backend->setPublishStatus([1, 1], true); } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php index 01ac1b39e..9f18eeb72 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php @@ -65,6 +65,7 @@ class Mock extends AbstractBackend * * @param string $principalUri * @param string $calendarUri + * @param array $properties * * @return string|int */ @@ -93,7 +94,8 @@ class Mock extends AbstractBackend * * Read the PropPatch documentation for more info and examples. * - * @param mixed $calendarId + * @param mixed $calendarId + * @param \Sabre\DAV\PropPatch $propPatch */ public function updateCalendar($calendarId, \Sabre\DAV\PropPatch $propPatch) { diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php index b7eb4539e..d6073514f 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace Sabre\CalDAV; +require_once 'Sabre/CalDAV/TestUtil.php'; + class CalendarObjectTest extends \PHPUnit\Framework\TestCase { /** @@ -16,7 +18,7 @@ class CalendarObjectTest extends \PHPUnit\Framework\TestCase protected $calendar; protected $principalBackend; - public function setup(): void + public function setup() { $this->backend = TestUtil::getBackend(); @@ -25,7 +27,7 @@ class CalendarObjectTest extends \PHPUnit\Framework\TestCase $this->calendar = new Calendar($this->backend, $calendars[0]); } - public function teardown(): void + public function teardown() { unset($this->calendar); unset($this->backend); @@ -36,15 +38,17 @@ class CalendarObjectTest extends \PHPUnit\Framework\TestCase $children = $this->calendar->getChildren(); $this->assertTrue($children[0] instanceof CalendarObject); - $this->assertIsString($children[0]->getName()); - $this->assertIsString($children[0]->get()); - $this->assertIsString($children[0]->getETag()); + $this->assertInternalType('string', $children[0]->getName()); + $this->assertInternalType('string', $children[0]->get()); + $this->assertInternalType('string', $children[0]->getETag()); $this->assertEquals('text/calendar; charset=utf-8', $children[0]->getContentType()); } + /** + * @expectedException \InvalidArgumentException + */ public function testInvalidArg1() { - $this->expectException('InvalidArgumentException'); $obj = new CalendarObject( new Backend\Mock([], []), [], @@ -52,9 +56,11 @@ class CalendarObjectTest extends \PHPUnit\Framework\TestCase ); } + /** + * @expectedException \InvalidArgumentException + */ public function testInvalidArg2() { - $this->expectException('InvalidArgumentException'); $obj = new CalendarObject( new Backend\Mock([], []), [], @@ -131,7 +137,7 @@ class CalendarObjectTest extends \PHPUnit\Framework\TestCase $obj = $children[0]; $size = $obj->getSize(); - $this->assertIsInt($size); + $this->assertInternalType('int', $size); } public function testGetOwner() @@ -213,9 +219,11 @@ class CalendarObjectTest extends \PHPUnit\Framework\TestCase $this->assertEquals($expected, $calendarObject->getACL()); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testSetACL() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $children = $this->calendar->getChildren(); $this->assertTrue($children[0] instanceof CalendarObject); diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php index 18c3ec126..7d6414a80 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php @@ -6,6 +6,8 @@ namespace Sabre\CalDAV; use Sabre\DAV\PropPatch; +require_once 'Sabre/CalDAV/TestUtil.php'; + class CalendarTest extends \PHPUnit\Framework\TestCase { /** @@ -22,7 +24,7 @@ class CalendarTest extends \PHPUnit\Framework\TestCase */ protected $calendars; - public function setup(): void + public function setup() { $this->backend = TestUtil::getBackend(); @@ -31,7 +33,7 @@ class CalendarTest extends \PHPUnit\Framework\TestCase $this->calendar = new Calendar($this->backend, $this->calendars[0]); } - public function teardown(): void + public function teardown() { unset($this->backend); } @@ -78,11 +80,11 @@ class CalendarTest extends \PHPUnit\Framework\TestCase } /** + * @expectedException \Sabre\DAV\Exception\NotFound * @depends testSimple */ public function testGetChildNotFound() { - $this->expectException('Sabre\DAV\Exception\NotFound'); $this->calendar->getChild('randomname'); } @@ -108,15 +110,19 @@ class CalendarTest extends \PHPUnit\Framework\TestCase $this->assertTrue($this->calendar->childExists($children[0]->getName())); } + /** + * @expectedException \Sabre\DAV\Exception\MethodNotAllowed + */ public function testCreateDirectory() { - $this->expectException('Sabre\DAV\Exception\MethodNotAllowed'); $this->calendar->createDirectory('hello'); } + /** + * @expectedException \Sabre\DAV\Exception\MethodNotAllowed + */ public function testSetName() { - $this->expectException('Sabre\DAV\Exception\MethodNotAllowed'); $this->calendar->setName('hello'); } @@ -205,9 +211,11 @@ class CalendarTest extends \PHPUnit\Framework\TestCase $this->assertEquals($expected, $this->calendar->getACL()); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testSetACL() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $this->calendar->setACL([]); } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php index 93fc56dae..d6e7b491c 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php @@ -10,6 +10,7 @@ use Sabre\VObject; /** * This unittests is created to find out why recurring events have wrong DTSTART value. * + * * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php index 44823edab..3d4b36313 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php @@ -18,7 +18,7 @@ class FreeBusyReportTest extends \PHPUnit\Framework\TestCase */ protected $server; - public function setup(): void + public function setUp() { $obj1 = <<<ics BEGIN:VCALENDAR @@ -108,9 +108,11 @@ XML; $this->assertTrue(false !== strpos($this->server->httpResponse->body, '20111006T100000Z/20111006T110000Z')); } + /** + * @expectedException \Sabre\DAV\Exception\BadRequest + */ public function testFreeBusyReportNoTimeRange() { - $this->expectException('Sabre\DAV\Exception\BadRequest'); $reportXML = <<<XML <?xml version="1.0"?> <c:free-busy-query xmlns:c="urn:ietf:params:xml:ns:caldav"> @@ -120,9 +122,11 @@ XML; $report = $this->server->xml->parse($reportXML, null, $rootElem); } + /** + * @expectedException \Sabre\DAV\Exception\NotImplemented + */ public function testFreeBusyReportWrongNode() { - $this->expectException('Sabre\DAV\Exception\NotImplemented'); $request = new HTTP\Request('REPORT', '/'); $this->server->httpRequest = $request; @@ -137,9 +141,11 @@ XML; $this->plugin->report($rootElem, $report, null); } + /** + * @expectedException \Sabre\DAV\Exception + */ public function testFreeBusyReportNoACLPlugin() { - $this->expectException('Sabre\DAV\Exception'); $this->server = new DAV\Server(); $this->server->httpRequest = new HTTP\Request('REPORT', '/'); $this->plugin = new Plugin(); diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php index 8771f538b..8c99e6c46 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php @@ -15,7 +15,7 @@ class ICSExportPluginTest extends \Sabre\DAVServerTest protected $icsExportPlugin; - public function setup(): void + public function setUp() { parent::setUp(); $this->icsExportPlugin = new ICSExportPlugin(); diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php index 594241e0d..eceb0b87f 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php @@ -63,9 +63,11 @@ class CollectionTest extends \PHPUnit\Framework\TestCase $this->assertEquals($expected, $col->getACL()); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testSetACL() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $col = $this->getInstance(); $col->setACL([]); } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php index 623525e69..cb19ef962 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php @@ -73,9 +73,11 @@ class NodeTest extends \PHPUnit\Framework\TestCase $this->assertEquals($expected, $node->getACL()); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testSetACL() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $node = $this->getInstance(); $node->setACL([]); } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php index a4f08f7e5..f065e1ac8 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php @@ -26,7 +26,7 @@ class PluginTest extends \PHPUnit\Framework\TestCase */ protected $caldavBackend; - public function setup(): void + public function setup() { $caldavNS = '{urn:ietf:params:xml:ns:caldav}'; @@ -349,7 +349,7 @@ END:VCALENDAR'; } } - $this->assertIsArray($newCalendar); + $this->assertInternalType('array', $newCalendar); $keys = [ 'uri' => 'NEWCALENDAR', @@ -394,7 +394,7 @@ END:VCALENDAR'; } } - $this->assertIsArray($newCalendar); + $this->assertInternalType('array', $newCalendar); $keys = [ 'uri' => 'NEWCALENDAR', diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/ProxyReadTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/ProxyReadTest.php index 95ff86fa1..8036635b2 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/ProxyReadTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/ProxyReadTest.php @@ -39,16 +39,20 @@ class ProxyReadTest extends \PHPUnit\Framework\TestCase $this->assertNull($i->getLastModified()); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testDelete() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $i = $this->getInstance(); $i->delete(); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testSetName() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $i = $this->getInstance(); $i->setName('foo'); } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php index fd079acb2..2c690c65d 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php @@ -26,16 +26,20 @@ class UserTest extends \PHPUnit\Framework\TestCase ]); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testCreateFile() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $u = $this->getInstance(); $u->createFile('test'); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testCreateDirectory() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $u = $this->getInstance(); $u->createDirectory('test'); } @@ -54,16 +58,20 @@ class UserTest extends \PHPUnit\Framework\TestCase $this->assertInstanceOf('Sabre\\CalDAV\\Principal\\ProxyWrite', $child); } + /** + * @expectedException \Sabre\DAV\Exception\NotFound + */ public function testGetChildNotFound() { - $this->expectException('Sabre\DAV\Exception\NotFound'); $u = $this->getInstance(); $child = $u->getChild('foo'); } + /** + * @expectedException \Sabre\DAV\Exception\NotFound + */ public function testGetChildNotFound2() { - $this->expectException('Sabre\DAV\Exception\NotFound'); $u = $this->getInstance(); $child = $u->getChild('random'); } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php index f11af8b95..45c389cc2 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php @@ -6,17 +6,16 @@ namespace Sabre\CalDAV; use Sabre\DAV; use Sabre\DAV\Xml\Element\Sharee; -use Sabre\DAVServerTest; use Sabre\HTTP; -class SharingPluginTest extends DAVServerTest +class SharingPluginTest extends \Sabre\DAVServerTest { protected $setupCalDAV = true; protected $setupCalDAVSharing = true; protected $setupACL = true; protected $autoLogin = 'user1'; - public function setup(): void + public function setUp() { $this->caldavCalendars = [ [ @@ -52,9 +51,11 @@ class SharingPluginTest extends DAVServerTest ); } + /** + * @expectedException \LogicException + */ public function testSetupWithoutCoreSharingPlugin() { - $this->expectException('LogicException'); $server = new DAV\Server(); $server->addPlugin( new SharingPlugin() @@ -179,7 +180,7 @@ RRR; $request->setBody($xml); - $this->request($request, 200); + $response = $this->request($request, 200); $this->assertEquals( [ @@ -229,7 +230,7 @@ RRR; $request->setBody($xml); - $this->request($request, 403); + $response = $this->request($request, 403); } public function testInviteReply() @@ -288,7 +289,7 @@ RRR; // If the plugin did not handle this request, it must ensure that the // body is still accessible by other plugins. - $this->assertEquals($xml, $request->getBody()); + $this->assertEquals($xml, $request->getBody(true)); } public function testPostWithoutContentType() diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/TestUtil.php b/vendor/sabre/dav/tests/Sabre/CalDAV/TestUtil.php index 5de11a31a..72b5080af 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/TestUtil.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/TestUtil.php @@ -99,4 +99,87 @@ END:VCALENDAR'; return $calendarData; } + + public static function getTestTODO($type = 'due') + { + switch ($type) { + case 'due': + $extra = 'DUE:20100104T000000Z'; + break; + case 'due2': + $extra = 'DUE:20060104T000000Z'; + break; + case 'due_date': + $extra = 'DUE;VALUE=DATE:20060104'; + break; + case 'due_tz': + $extra = 'DUE;TZID=Asia/Seoul:20060104T000000Z'; + break; + case 'due_dtstart': + $extra = "DTSTART:20050223T060000Z\nDUE:20060104T000000Z"; + break; + case 'due_dtstart2': + $extra = "DTSTART:20090223T060000Z\nDUE:20100104T000000Z"; + break; + case 'dtstart': + $extra = 'DTSTART:20100223T060000Z'; + break; + case 'dtstart2': + $extra = 'DTSTART:20060223T060000Z'; + break; + case 'dtstart_date': + $extra = 'DTSTART;VALUE=DATE:20100223'; + break; + case 'dtstart_tz': + $extra = 'DTSTART;TZID=Asia/Seoul:20100223T060000Z'; + break; + case 'dtstart_duration': + $extra = "DTSTART:20061023T060000Z\nDURATION:PT1H"; + break; + case 'dtstart_duration2': + $extra = "DTSTART:20101023T060000Z\nDURATION:PT1H"; + break; + case 'completed': + $extra = 'COMPLETED:20060601T000000Z'; + break; + case 'completed2': + $extra = 'COMPLETED:20090601T000000Z'; + break; + case 'created': + $extra = 'CREATED:20060601T000000Z'; + break; + case 'created2': + $extra = 'CREATED:20090601T000000Z'; + break; + case 'completedcreated': + $extra = "CREATED:20060601T000000Z\nCOMPLETED:20070101T000000Z"; + break; + case 'completedcreated2': + $extra = "CREATED:20090601T000000Z\nCOMPLETED:20100101T000000Z"; + break; + case 'notime': + $extra = 'X-FILLER:oh hello'; + break; + default: + throw new Exception('Unknown type: '.$type); + } + + $todo = 'BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Example Corp.//CalDAV Client//EN +BEGIN:VTODO +DTSTAMP:20060205T235335Z +'.$extra.' +STATUS:NEEDS-ACTION +SUMMARY:Task #1 +UID:DDDEEB7915FA61233B861457@example.com +BEGIN:VALARM +ACTION:AUDIO +TRIGGER;RELATED=START:-PT10M +END:VALARM +END:VTODO +END:VCALENDAR'; + + return $todo; + } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php index 4e2411391..fc87184d9 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php @@ -8,10 +8,12 @@ use Sabre\DAV; use Sabre\DAVACL; use Sabre\HTTP; +require_once 'Sabre/HTTP/ResponseMock.php'; + class ValidateICalTest extends \PHPUnit\Framework\TestCase { /** - * @var DAV\Server + * @var Sabre\DAV\Server */ protected $server; /** @@ -19,7 +21,7 @@ class ValidateICalTest extends \PHPUnit\Framework\TestCase */ protected $calBackend; - public function setup(): void + public function setUp() { $calendars = [ [ @@ -54,9 +56,6 @@ class ValidateICalTest extends \PHPUnit\Framework\TestCase $this->server->httpResponse = $response; } - /** - * @return Sabre\HTTP\ResponseMock - */ public function request(HTTP\Request $request) { $this->server->httpRequest = $request; diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php index 6565fc459..c945e2c58 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php @@ -23,7 +23,7 @@ abstract class AbstractPluginTest extends \PHPUnit\Framework\TestCase */ protected $backend; - public function setup(): void + public function setUp() { $this->backend = new Backend\Mock(); $principalBackend = new DAVACL\PrincipalBackend\Mock(); diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php index a86d85144..fe047fb84 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php @@ -7,6 +7,9 @@ namespace Sabre\CardDAV; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/CardDAV/AbstractPluginTest.php'; +require_once 'Sabre/HTTP/ResponseMock.php'; + class AddressBookQueryTest extends AbstractPluginTest { public function testQuery() diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php index e985c54ff..879816803 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php @@ -16,7 +16,7 @@ class AddressBookTest extends \PHPUnit\Framework\TestCase protected $ab; protected $backend; - public function setup(): void + public function setUp() { $this->backend = new Backend\Mock(); $this->ab = new AddressBook( @@ -42,9 +42,11 @@ class AddressBookTest extends \PHPUnit\Framework\TestCase $this->assertEquals('card1', $card->getName()); } + /** + * @expectedException \Sabre\DAV\Exception\NotFound + */ public function testGetChildNotFound() { - $this->expectException('Sabre\DAV\Exception\NotFound'); $card = $this->ab->getChild('card3'); } @@ -57,9 +59,11 @@ class AddressBookTest extends \PHPUnit\Framework\TestCase $this->assertEquals('card2', $cards[1]->getName()); } + /** + * @expectedException \Sabre\DAV\Exception\MethodNotAllowed + */ public function testCreateDirectory() { - $this->expectException('Sabre\DAV\Exception\MethodNotAllowed'); $this->ab->createDirectory('name'); } @@ -79,9 +83,11 @@ class AddressBookTest extends \PHPUnit\Framework\TestCase $this->assertEquals(1, count($this->backend->addressBooks)); } + /** + * @expectedException \Sabre\DAV\Exception\MethodNotAllowed + */ public function testSetName() { - $this->expectException('Sabre\DAV\Exception\MethodNotAllowed'); $this->ab->setName('foo'); } @@ -122,9 +128,11 @@ class AddressBookTest extends \PHPUnit\Framework\TestCase ], $this->ab->getACL()); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testSetACL() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $this->ab->setACL([]); } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php index bac3b2b22..e5bd088fc 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php @@ -16,7 +16,7 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase */ protected $backend; - public function setup(): void + public function setUp() { $this->dropTables([ 'addressbooks', @@ -142,9 +142,11 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase $this->assertEquals([], $this->backend->getAddressBooksForUser('principals/user1')); } + /** + * @expectedException \Sabre\DAV\Exception\BadRequest + */ public function testCreateAddressBookUnsupportedProp() { - $this->expectException('Sabre\DAV\Exception\BadRequest'); $this->backend->createAddressBook('principals/user1', 'book2', [ '{DAV:}foo' => 'bar', ]); @@ -271,7 +273,7 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase switch ($k) { case 'lastmodified': - $this->assertIsInt($actual); + $this->assertInternalType('int', $actual); break; case 'carddata': if (is_resource($actual)) { diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php index 630465cc8..f7e20fbfb 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php @@ -69,7 +69,8 @@ class Mock extends AbstractBackend * * Read the PropPatch documentation for more info and examples. * - * @param string $addressBookId + * @param string $addressBookId + * @param \Sabre\DAV\PropPatch $propPatch */ public function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch) { diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/CardTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/CardTest.php index 1de10b719..41853aa63 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/CardTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/CardTest.php @@ -15,7 +15,7 @@ class CardTest extends \PHPUnit\Framework\TestCase */ protected $backend; - public function setup(): void + public function setUp() { $this->backend = new Backend\Mock(); $this->card = new Card( @@ -179,9 +179,11 @@ class CardTest extends \PHPUnit\Framework\TestCase ], $card->getACL()); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testSetACL() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $this->card->setACL([]); } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php index ac0cd5e91..6fdfcd07a 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php @@ -7,6 +7,8 @@ namespace Sabre\CardDAV; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/HTTP/ResponseMock.php'; + class MultiGetTest extends AbstractPluginTest { public function testMultiGet() diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/TestUtil.php b/vendor/sabre/dav/tests/Sabre/CardDAV/TestUtil.php new file mode 100644 index 000000000..0bdf07df5 --- /dev/null +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/TestUtil.php @@ -0,0 +1,63 @@ +<?php + +declare(strict_types=1); + +namespace Sabre\CardDAV; + +class TestUtil +{ + public static function getBackend() + { + $backend = new Backend\PDO(self::getSQLiteDB()); + + return $backend; + } + + public static function getSQLiteDB() + { + $pdo = Backend\PDOSqliteTest::getSQLite(); + + // Inserting events through a backend class. + $backend = new Backend\PDO($pdo); + $addressbookId = $backend->createAddressBook( + 'principals/user1', + 'UUID-123467', + [ + '{DAV:}displayname' => 'user1 addressbook', + '{urn:ietf:params:xml:ns:carddav}addressbook-description' => 'AddressBook description', + ] + ); + $backend->createAddressBook( + 'principals/user1', + 'UUID-123468', + [ + '{DAV:}displayname' => 'user1 addressbook2', + '{urn:ietf:params:xml:ns:carddav}addressbook-description' => 'AddressBook description', + ] + ); + $backend->createCard($addressbookId, 'UUID-2345', self::getTestCardData()); + + return $pdo; + } + + public static function deleteSQLiteDB() + { + $sqliteTest = new Backend\PDOSqliteTest(); + $pdo = $sqliteTest->tearDown(); + } + + public static function getTestCardData() + { + $addressbookData = 'BEGIN:VCARD +VERSION:3.0 +PRODID:-//Acme Inc.//RoadRunner 1.0//EN +FN:Wile E. Coyote +N:Coyote;Wile;Erroll;; +ORG:Acme Inc. +UID:39A6B5ED-DD51-4AFE-A683-C35EE3749627 +REV:2012-06-20T07:00:39+00:00 +END:VCARD'; + + return $addressbookData; + } +} diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php index 546a4ccfb..48477d7f2 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php @@ -28,7 +28,7 @@ class VCFExportTest extends \Sabre\DAVServerTest ], ]; - public function setup(): void + public function setUp() { parent::setUp(); $plugin = new VCFExportPlugin(); @@ -84,7 +84,7 @@ END:VCARD $actions = ''; $addressbook = new AddressBook($this->carddavBackend, []); $this->server->emit('browserButtonActions', ['/foo', $addressbook, &$actions]); - $this->assertStringContainsString('/foo?export', $actions); + $this->assertContains('/foo?export', $actions); } public function testContentDisposition() diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php index de7de19cd..753efc73d 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace Sabre\CardDAV; +require_once 'Sabre/CardDAV/AbstractPluginTest.php'; + class ValidateFilterTest extends AbstractPluginTest { /** @@ -14,7 +16,7 @@ class ValidateFilterTest extends AbstractPluginTest * @param string|null $message * @dataProvider data */ - public function testFilter($input, $filters, $test, $result, $message = '') + public function testFilter($input, $filters, $test, $result, $message = null) { if ($result) { $this->assertTrue($this->plugin->validateFilters($input, $filters, $test), $message); diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php index 571cce3f0..a9be169c0 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php @@ -8,12 +8,14 @@ use Sabre\DAV; use Sabre\DAVACL; use Sabre\HTTP; +require_once 'Sabre/HTTP/ResponseMock.php'; + class ValidateVCardTest extends \PHPUnit\Framework\TestCase { protected $server; protected $cardBackend; - public function setup(): void + public function setUp() { $addressbooks = [ [ diff --git a/vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php b/vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php index 807b66382..bf1e22aea 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php @@ -19,7 +19,7 @@ abstract class AbstractServer extends \PHPUnit\Framework\TestCase protected $server; protected $tempDir = SABRE_TEMPDIR; - public function setup(): void + public function setUp() { $this->response = new HTTP\ResponseMock(); $this->server = new Server($this->getRootNode()); @@ -32,7 +32,7 @@ abstract class AbstractServer extends \PHPUnit\Framework\TestCase file_put_contents(SABRE_TEMPDIR.'/dir/child.txt', 'Child contents'); } - public function teardown(): void + public function tearDown() { $this->deleteTree(SABRE_TEMPDIR, false); } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php index a751efdc2..d9af326fe 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php @@ -35,9 +35,11 @@ class AbstractDigestTest extends \PHPUnit\Framework\TestCase ); } + /** + * @expectedException \Sabre\DAV\Exception + */ public function testCheckBadGetUserInfoResponse2() { - $this->expectException('Sabre\DAV\Exception'); $header = 'username=array, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1'; $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'GET', diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php index 8b874f884..5e34f9c49 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php @@ -8,7 +8,7 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase { use \Sabre\DAV\DbTestHelperTrait; - public function setup(): void + public function setUp() { $this->dropTables('users'); $this->createSchema('users'); diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php index 31a86f9ed..0297b17f9 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php @@ -6,7 +6,7 @@ namespace Sabre\DAV\Auth\Backend; class FileTest extends \PHPUnit\Framework\TestCase { - public function teardown(): void + public function tearDown() { if (file_exists(SABRE_TEMPDIR.'/filebackend')) { unlink(SABRE_TEMPDIR.'/filebackend'); @@ -19,9 +19,11 @@ class FileTest extends \PHPUnit\Framework\TestCase $this->assertTrue($file instanceof File); } + /** + * @expectedException \Sabre\DAV\Exception + */ public function testLoadFileBroken() { - $this->expectException('Sabre\DAV\Exception'); file_put_contents(SABRE_TEMPDIR.'/backend', 'user:realm:hash'); $file = new File(SABRE_TEMPDIR.'/backend'); } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php index fca7f722f..730f2a975 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php @@ -44,6 +44,9 @@ class Mock implements BackendInterface * * principals/users/[username] * + * @param RequestInterface $request + * @param ResponseInterface $response + * * @return array */ public function check(RequestInterface $request, ResponseInterface $response) @@ -74,6 +77,9 @@ class Mock implements BackendInterface * WWW-Authenticate headers may already have been set, and you'll want to * append your own WWW-Authenticate header instead of overwriting the * existing one. + * + * @param RequestInterface $request + * @param ResponseInterface $response */ public function challenge(RequestInterface $request, ResponseInterface $response) { diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php index f4810d524..03c8a4624 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php @@ -16,7 +16,7 @@ class PluginTest extends \PHPUnit\Framework\TestCase $this->assertTrue($plugin instanceof Plugin); $fakeServer->addPlugin($plugin); $this->assertEquals($plugin, $fakeServer->getPlugin('auth')); - $this->assertIsArray($plugin->getPluginInfo()); + $this->assertInternalType('array', $plugin->getPluginInfo()); } /** @@ -34,10 +34,10 @@ class PluginTest extends \PHPUnit\Framework\TestCase /** * @depends testInit + * @expectedException \Sabre\DAV\Exception\NotAuthenticated */ public function testAuthenticateFail() { - $this->expectException('Sabre\DAV\Exception\NotAuthenticated'); $fakeServer = new DAV\Server(new DAV\SimpleCollection('bla')); $backend = new Backend\Mock(); $backend->fail = true; @@ -87,10 +87,10 @@ class PluginTest extends \PHPUnit\Framework\TestCase /** * @depends testInit + * @expectedException \Sabre\DAV\Exception */ public function testNoAuthBackend() { - $this->expectException('Sabre\DAV\Exception'); $fakeServer = new DAV\Server(new DAV\SimpleCollection('bla')); $plugin = new Plugin(); @@ -100,10 +100,10 @@ class PluginTest extends \PHPUnit\Framework\TestCase /** * @depends testInit + * @expectedException \Sabre\DAV\Exception */ public function testInvalidCheckResponse() { - $this->expectException('Sabre\DAV\Exception'); $fakeServer = new DAV\Server(new DAV\SimpleCollection('bla')); $backend = new Backend\Mock(); $backend->invalidCheckResponse = true; diff --git a/vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php index e9a8eddad..60fcc73fc 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php @@ -6,16 +6,20 @@ namespace Sabre\DAV; class BasicNodeTest extends \PHPUnit\Framework\TestCase { + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testPut() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $file = new FileMock(); $file->put('hi'); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testGet() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $file = new FileMock(); $file->get(); } @@ -38,16 +42,20 @@ class BasicNodeTest extends \PHPUnit\Framework\TestCase $this->assertNull($file->getContentType()); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testDelete() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $file = new FileMock(); $file->delete(); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testSetName() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $file = new FileMock(); $file->setName('hi'); } @@ -80,23 +88,29 @@ class BasicNodeTest extends \PHPUnit\Framework\TestCase $this->assertFalse($dir->childExists('mockfile2')); } + /** + * @expectedException \Sabre\DAV\Exception\NotFound + */ public function testGetChild404() { - $this->expectException('Sabre\DAV\Exception\NotFound'); $dir = new DirectoryMock(); $file = $dir->getChild('blabla'); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testCreateFile() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $dir = new DirectoryMock(); $dir->createFile('hello', 'data'); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testCreateDirectory() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $dir = new DirectoryMock(); $dir->createDirectory('hello'); } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php index cb4d3ce03..1f48256e0 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php @@ -6,9 +6,10 @@ namespace Sabre\DAV\Browser; use Sabre\DAV; +require_once 'Sabre/DAV/AbstractServer.php'; class GuessContentTypeTest extends DAV\AbstractServer { - public function setUp(): void + public function setUp() { parent::setUp(); \Sabre\TestUtil::clearTempDir(); @@ -16,7 +17,7 @@ class GuessContentTypeTest extends DAV\AbstractServer file_put_contents(SABRE_TEMPDIR.'/somefile.hoi', 'blabla'); } - public function tearDown(): void + public function tearDown() { \Sabre\TestUtil::clearTempDir(); parent::tearDown(); diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php index 00b2661ac..f51f5546c 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php @@ -7,9 +7,11 @@ namespace Sabre\DAV\Browser; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/DAV/AbstractServer.php'; + class MapGetToPropFindTest extends DAV\AbstractServer { - public function setUp(): void + public function setUp() { parent::setUp(); $this->server->addPlugin(new MapGetToPropFind()); diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php index a987525c0..f28661ca7 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php @@ -7,11 +7,13 @@ namespace Sabre\DAV\Browser; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/DAV/AbstractServer.php'; + class PluginTest extends DAV\AbstractServer { protected $plugin; - public function setUp(): void + public function setUp() { parent::setUp(); $this->server->addPlugin($this->plugin = new Plugin()); diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php index 85a95c90e..e9362c8e4 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php @@ -6,9 +6,11 @@ namespace Sabre\DAV; use Sabre\HTTP\Response; +require_once 'Sabre/DAV/ClientMock.php'; + class ClientTest extends \PHPUnit\Framework\TestCase { - public function setup(): void + public function setUp() { if (!function_exists('curl_init')) { $this->markTestSkipped('CURL must be installed to test the client'); @@ -23,9 +25,11 @@ class ClientTest extends \PHPUnit\Framework\TestCase $this->assertInstanceOf('Sabre\DAV\ClientMock', $client); } + /** + * @expectedException \InvalidArgumentException + */ public function testConstructNoBaseUri() { - $this->expectException('InvalidArgumentException'); $client = new ClientMock([]); } @@ -135,9 +139,11 @@ XML; ], $request->getHeaders()); } + /** + * @expectedException \Sabre\HTTP\ClientHttpException + */ public function testPropFindError() { - $this->expectException('Sabre\HTTP\ClientHttpException'); $client = new ClientMock([ 'baseUri' => '/', ]); @@ -219,10 +225,10 @@ XML; /** * @depends testPropPatch + * @expectedException \Sabre\HTTP\ClientHttpException */ public function testPropPatchHTTPError() { - $this->expectException('Sabre\HTTP\ClientHttpException'); $client = new ClientMock([ 'baseUri' => '/', ]); @@ -233,10 +239,10 @@ XML; /** * @depends testPropPatch + * @expectedException \Sabre\HTTP\ClientException */ public function testPropPatchMultiStatusError() { - $this->expectException('Sabre\HTTP\ClientException'); $client = new ClientMock([ 'baseUri' => '/', ]); diff --git a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php index 2b759e5d0..4bc79b597 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php @@ -4,14 +4,16 @@ declare(strict_types=1); namespace Sabre\DAV\FSExt; +require_once 'Sabre/TestUtil.php'; + class FileTest extends \PHPUnit\Framework\TestCase { - public function setup(): void + public function setUp() { file_put_contents(SABRE_TEMPDIR.'/file.txt', 'Contents'); } - public function teardown(): void + public function tearDown() { \Sabre\TestUtil::clearTempDir(); } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php index 79ffb0186..f53807e6c 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php @@ -7,6 +7,8 @@ namespace Sabre\DAV\FSExt; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/DAV/AbstractServer.php'; + class ServerTest extends DAV\AbstractServer { protected function getRootNode() diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php b/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php index 36b182c44..500ad6147 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php @@ -6,9 +6,11 @@ namespace Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/TestUtil.php'; + class Issue33Test extends \PHPUnit\Framework\TestCase { - public function setup(): void + public function setUp() { \Sabre\TestUtil::clearTempDir(); } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/FileTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/FileTest.php index 57a3255c7..50f17a7dd 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/FileTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/FileTest.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace Sabre\DAV\Locks\Backend; +require_once 'Sabre/TestUtil.php'; + class FileTest extends AbstractTest { public function getBackend() @@ -14,7 +16,7 @@ class FileTest extends AbstractTest return $backend; } - public function teardown(): void + public function tearDown() { \Sabre\TestUtil::clearTempDir(); } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php index 02c3d39ba..a2a31e87f 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php @@ -7,9 +7,12 @@ namespace Sabre\DAV\Locks; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/HTTP/ResponseMock.php'; +require_once 'Sabre/TestUtil.php'; + class MSWordTest extends \PHPUnit\Framework\TestCase { - public function teardown(): void + public function tearDown() { \Sabre\TestUtil::clearTempDir(); } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php index 96e3939d0..a9c6cc1bc 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php @@ -7,6 +7,8 @@ namespace Sabre\DAV\Locks; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/DAV/AbstractServer.php'; + class PluginTest extends DAV\AbstractServer { /** @@ -14,7 +16,7 @@ class PluginTest extends DAV\AbstractServer */ protected $locksPlugin; - public function setup(): void + public function setUp() { parent::setUp(); $locksBackend = new Backend\File(SABRE_TEMPDIR.'/locksdb'); @@ -849,9 +851,11 @@ class PluginTest extends DAV\AbstractServer $this->assertEquals(LockInfo::TIMEOUT_INFINITE, $this->locksPlugin->getTimeoutHeader()); } + /** + * @expectedException \Sabre\DAV\Exception\BadRequest + */ public function testGetTimeoutHeaderInvalid() { - $this->expectException('Sabre\DAV\Exception\BadRequest'); $request = new HTTP\Request('GET', '/', ['Timeout' => 'yourmom']); $this->server->httpRequest = $request; diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php b/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php index 041274706..e0bdecc09 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php @@ -31,6 +31,7 @@ class Collection extends DAV\Collection * Creates the object. * * @param string $name + * @param array $children * @param Collection $parent */ public function __construct($name, array $children = [], Collection $parent = null) @@ -87,11 +88,8 @@ class Collection extends DAV\Collection * * @return string|null */ - public function createFile($name, $data = null) + public function createFile($name, $data = '') { - if (null === $data) { - $data = ''; - } if (is_resource($data)) { $data = stream_get_contents($data); } @@ -122,6 +120,8 @@ class Collection extends DAV\Collection /** * Adds an already existing node to this collection. + * + * @param \Sabre\DAV\INode $node */ public function addNode(\Sabre\DAV\INode $node) { diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php index 54f7e4cb4..0e3123b35 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php @@ -7,9 +7,11 @@ namespace Sabre\DAV\Mount; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/DAV/AbstractServer.php'; + class PluginTest extends DAV\AbstractServer { - public function setup(): void + public function setUp() { parent::setUp(); $this->server->addPlugin(new Plugin()); diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php index 7066c49fc..6b6652967 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php @@ -4,11 +4,13 @@ declare(strict_types=1); namespace Sabre\DAV; +require_once 'Sabre/TestUtil.php'; + class ObjectTreeTest extends \PHPUnit\Framework\TestCase { protected $tree; - public function setup(): void + public function setup() { \Sabre\TestUtil::clearTempDir(); mkdir(SABRE_TEMPDIR.'/root'); @@ -19,7 +21,7 @@ class ObjectTreeTest extends \PHPUnit\Framework\TestCase $this->tree = new Tree($rootNode); } - public function teardown(): void + public function teardown() { \Sabre\TestUtil::clearTempDir(); } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php index 4d99aee7d..0cf6dc4e4 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php @@ -6,12 +6,14 @@ namespace Sabre\DAV\PartialUpdate; use Sabre\HTTP; +require_once 'Sabre/DAV/PartialUpdate/FileMock.php'; + class PluginTest extends \Sabre\DAVServerTest { protected $node; protected $plugin; - public function setup(): void + public function setUp() { $this->node = new FileMock(); $this->tree[] = $this->node; diff --git a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php index a727a13e2..56b2d576f 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php @@ -18,7 +18,7 @@ class SpecificationTest extends \PHPUnit\Framework\TestCase { protected $server; - public function setup(): void + public function setUp() { $tree = [ new File(SABRE_TEMPDIR.'/foobar.txt'), @@ -32,7 +32,7 @@ class SpecificationTest extends \PHPUnit\Framework\TestCase $this->server = $server; } - public function teardown(): void + public function tearDown() { \Sabre\TestUtil::clearTempDir(); } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php index b1f6754ea..7d55ea02e 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php @@ -6,6 +6,8 @@ namespace Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/DAV/AbstractServer.php'; + class ServerEventsTest extends AbstractServer { private $tempPath; diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php index 47e1e6b4c..bbf820eb5 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php @@ -6,6 +6,9 @@ namespace Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/DAV/AbstractServer.php'; +require_once 'Sabre/DAV/TestPlugin.php'; + class ServerPluginTest extends AbstractServer { /** @@ -13,7 +16,7 @@ class ServerPluginTest extends AbstractServer */ protected $testPlugin; - public function setup(): void + public function setUp() { parent::setUp(); diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerPreconditionTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerPreconditionTest.php new file mode 100644 index 000000000..fa88e9095 --- /dev/null +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerPreconditionTest.php @@ -0,0 +1,283 @@ +<?php + +declare(strict_types=1); + +namespace Sabre\DAV; + +use Sabre\HTTP; + +require_once 'Sabre/HTTP/ResponseMock.php'; + +class ServerPreconditionsTest extends \PHPUnit\Framework\TestCase +{ + /** + * @expectedException \Sabre\DAV\Exception\PreconditionFailed + */ + public function testIfMatchNoNode() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/bar', ['If-Match' => '*']); + $httpResponse = new HTTP\Response(); + $server->checkPreconditions($httpRequest, $httpResponse); + } + + public function testIfMatchHasNode() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '*']); + $httpResponse = new HTTP\Response(); + $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); + } + + /** + * @expectedException \Sabre\DAV\Exception\PreconditionFailed + */ + public function testIfMatchWrongEtag() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '1234']); + $httpResponse = new HTTP\Response(); + $server->checkPreconditions($httpRequest, $httpResponse); + } + + public function testIfMatchCorrectEtag() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '"abc123"']); + $httpResponse = new HTTP\Response(); + $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); + } + + /** + * Evolution sometimes uses \" instead of " for If-Match headers. + * + * @depends testIfMatchCorrectEtag + */ + public function testIfMatchEvolutionEtag() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '\\"abc123\\"']); + $httpResponse = new HTTP\Response(); + $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); + } + + public function testIfMatchMultiple() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '"hellothere", "abc123"']); + $httpResponse = new HTTP\Response(); + $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); + } + + public function testIfNoneMatchNoNode() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/bar', ['If-None-Match' => '*']); + $httpResponse = new HTTP\Response(); + $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); + } + + /** + * @expectedException \Sabre\DAV\Exception\PreconditionFailed + */ + public function testIfNoneMatchHasNode() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '*']); + $httpResponse = new HTTP\Response(); + $server->checkPreconditions($httpRequest, $httpResponse); + } + + public function testIfNoneMatchWrongEtag() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '"1234"']); + $httpResponse = new HTTP\Response(); + $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); + } + + public function testIfNoneMatchWrongEtagMultiple() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '"1234", "5678"']); + $httpResponse = new HTTP\Response(); + $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); + } + + /** + * @expectedException \Sabre\DAV\Exception\PreconditionFailed + */ + public function testIfNoneMatchCorrectEtag() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '"abc123"']); + $httpResponse = new HTTP\Response(); + $server->checkPreconditions($httpRequest, $httpResponse); + } + + /** + * @expectedException \Sabre\DAV\Exception\PreconditionFailed + */ + public function testIfNoneMatchCorrectEtagMultiple() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '"1234, "abc123"']); + $httpResponse = new HTTP\Response(); + $server->checkPreconditions($httpRequest, $httpResponse); + } + + public function testIfNoneMatchCorrectEtagAsGet() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', ['If-None-Match' => '"abc123"']); + $server->httpResponse = new HTTP\ResponseMock(); + + $this->assertFalse($server->checkPreconditions($httpRequest, $server->httpResponse)); + $this->assertEquals(304, $server->httpResponse->getStatus()); + $this->assertEquals(['ETag' => ['"abc123"']], $server->httpResponse->getHeaders()); + } + + /** + * This was a test written for issue #515. + */ + public function testNoneMatchCorrectEtagEnsureSapiSent() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $server->sapi = new HTTP\SapiMock(); + HTTP\SapiMock::$sent = 0; + $httpRequest = new HTTP\Request('GET', '/foo', ['If-None-Match' => '"abc123"']); + $server->httpRequest = $httpRequest; + $server->httpResponse = new HTTP\ResponseMock(); + + $server->exec(); + + $this->assertFalse($server->checkPreconditions($httpRequest, $server->httpResponse)); + $this->assertEquals(304, $server->httpResponse->getStatus()); + $this->assertEquals([ + 'ETag' => ['"abc123"'], + 'X-Sabre-Version' => [Version::VERSION], + ], $server->httpResponse->getHeaders()); + $this->assertEquals(1, HTTP\SapiMock::$sent); + } + + public function testIfModifiedSinceUnModified() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Modified-Since' => 'Sun, 06 Nov 1994 08:49:37 GMT', + ]); + $server->httpResponse = new HTTP\ResponseMock(); + $this->assertFalse($server->checkPreconditions($httpRequest, $server->httpResponse)); + + $this->assertEquals(304, $server->httpResponse->status); + $this->assertEquals([ + 'Last-Modified' => ['Sat, 06 Apr 1985 23:30:00 GMT'], + ], $server->httpResponse->getHeaders()); + } + + public function testIfModifiedSinceModified() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Modified-Since' => 'Tue, 06 Nov 1984 08:49:37 GMT', + ]); + + $httpResponse = new HTTP\ResponseMock(); + $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); + } + + public function testIfModifiedSinceInvalidDate() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Modified-Since' => 'Your mother', + ]); + $httpResponse = new HTTP\ResponseMock(); + + // Invalid dates must be ignored, so this should return true + $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); + } + + public function testIfModifiedSinceInvalidDate2() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Unmodified-Since' => 'Sun, 06 Nov 1994 08:49:37 EST', + ]); + $httpResponse = new HTTP\ResponseMock(); + $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); + } + + public function testIfUnmodifiedSinceUnModified() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Unmodified-Since' => 'Sun, 06 Nov 1994 08:49:37 GMT', + ]); + $httpResponse = new HTTP\Response(); + $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); + } + + /** + * @expectedException \Sabre\DAV\Exception\PreconditionFailed + */ + public function testIfUnmodifiedSinceModified() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Unmodified-Since' => 'Tue, 06 Nov 1984 08:49:37 GMT', + ]); + $httpResponse = new HTTP\ResponseMock(); + $server->checkPreconditions($httpRequest, $httpResponse); + } + + public function testIfUnmodifiedSinceInvalidDate() + { + $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); + $server = new Server($root); + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Unmodified-Since' => 'Sun, 06 Nov 1984 08:49:37 CET', + ]); + $httpResponse = new HTTP\ResponseMock(); + $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); + } +} + +class ServerPreconditionsNode extends File +{ + public function getETag() + { + return '"abc123"'; + } + + public function getLastModified() + { + /* my birthday & time, I believe */ + return strtotime('1985-04-07 01:30 +02:00'); + } + + public function getName() + { + return 'foo'; + } +} diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php index cd1ccfa53..def9a9cfb 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php @@ -6,6 +6,9 @@ namespace Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/HTTP/ResponseMock.php'; +require_once 'Sabre/DAV/AbstractServer.php'; + class ServerPropsTest extends AbstractServer { protected function getRootNode() @@ -13,7 +16,7 @@ class ServerPropsTest extends AbstractServer return new FSExt\Directory(SABRE_TEMPDIR); } - public function setup(): void + public function setUp() { if (file_exists(SABRE_TEMPDIR.'../.sabredav')) { unlink(SABRE_TEMPDIR.'../.sabredav'); @@ -25,7 +28,7 @@ class ServerPropsTest extends AbstractServer $this->server->addPlugin(new Locks\Plugin(new Locks\Backend\File(SABRE_TEMPDIR.'/.locksdb'))); } - public function teardown(): void + public function tearDown() { parent::tearDown(); if (file_exists(SABRE_TEMPDIR.'../.locksdb')) { diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php index 6d5be4608..93ea083d8 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php @@ -23,7 +23,7 @@ class ServerRangeTest extends \Sabre\DAVServerTest */ protected $lastModified; - public function setup(): void + public function setUp() { parent::setUp(); $this->server->createFile('files/test.txt', 'Test contents'); @@ -133,7 +133,7 @@ class ServerRangeTest extends \Sabre\DAVServerTest $request = new HTTP\Request('GET', '/files/no-seeking.txt', ['Range' => 'bytes=2-5']); $response = $this->request($request); - $this->assertEquals(206, $response->getStatus()); + $this->assertEquals(206, $response->getStatus(), $response); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], 'Content-Type' => ['application/octet-stream'], diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php index e4dd3cdb6..563f558eb 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php @@ -18,9 +18,11 @@ class ServerSimpleTest extends AbstractServer $this->assertEquals($nodes[0], $server->tree->getNodeForPath('hello')); } + /** + * @expectedException \Sabre\DAV\Exception + */ public function testConstructInvalidArg() { - $this->expectException('Sabre\DAV\Exception'); $server = new Server(1); } @@ -187,9 +189,11 @@ class ServerSimpleTest extends AbstractServer } } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testCalculateUriBreakout() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $uri = '/path1/'; $this->server->setBaseUri('/path2/'); @@ -307,10 +311,10 @@ class ServerSimpleTest extends AbstractServer /** * @depends testGuessBaseUri + * @expectedException \Sabre\DAV\Exception */ public function testGuessBaseUriBadConfig() { - $this->expectException('Sabre\DAV\Exception'); $serverVars = [ 'REQUEST_METHOD' => 'GET', 'REQUEST_URI' => '/index.php/root/heyyy', diff --git a/vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php b/vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php index bc36c6b78..1e4b92197 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php @@ -72,15 +72,19 @@ class StringUtilTest extends \PHPUnit\Framework\TestCase ]; } + /** + * @expectedException \Sabre\DAV\Exception\BadRequest + */ public function testBadCollation() { - $this->expectException('Sabre\DAV\Exception\BadRequest'); StringUtil::textMatch('foobar', 'foo', 'blabla', 'contains'); } + /** + * @expectedException \Sabre\DAV\Exception\BadRequest + */ public function testBadMatchType() { - $this->expectException('Sabre\DAV\Exception\BadRequest'); StringUtil::textMatch('foobar', 'foo', 'i;octet', 'booh'); } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php b/vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php index 951078bf0..bae5b58bf 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php @@ -8,7 +8,7 @@ use Sabre\HTTP; class TemporaryFileFilterTest extends AbstractServer { - public function setup(): void + public function setUp() { parent::setUp(); $plugin = new TemporaryFileFilterPlugin(SABRE_TEMPDIR.'/tff'); diff --git a/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php index e3f04ea3a..51ff5ccde 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php @@ -203,6 +203,8 @@ class TreeFileTester extends File implements IProperties * * To update specific properties, call the 'handle' method on this object. * Read the PropPatch documentation for more information. + * + * @param PropPatch $propPatch */ public function propPatch(PropPatch $propPatch) { @@ -219,6 +221,8 @@ class TreeMultiGetTester extends TreeDirectoryTester implements IMultiGet * * If any children are not found, you do not have to return them. * + * @param array $paths + * * @return array */ public function getMultipleChildren(array $paths) diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php index 715559df3..3627991bf 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php @@ -9,9 +9,11 @@ use Sabre\HTTP; class ACLMethodTest extends \PHPUnit\Framework\TestCase { + /** + * @expectedException \Sabre\DAV\Exception\BadRequest + */ public function testCallback() { - $this->expectException('Sabre\DAV\Exception\BadRequest'); $acl = new Plugin(); $server = new DAV\Server(); $server->addPlugin(new DAV\Auth\Plugin()); @@ -21,11 +23,11 @@ class ACLMethodTest extends \PHPUnit\Framework\TestCase } /** - /** + /** + * @expectedException \Sabre\DAV\Exception\MethodNotAllowed */ public function testNotSupportedByNode() { - $this->expectException('Sabre\DAV\Exception\MethodNotAllowed'); $tree = [ new DAV\SimpleCollection('test'), ]; @@ -62,9 +64,11 @@ class ACLMethodTest extends \PHPUnit\Framework\TestCase $this->assertFalse($acl->httpACL($server->httpRequest, $server->httpResponse)); } + /** + * @expectedException \Sabre\DAVACL\Exception\NotRecognizedPrincipal + */ public function testUnrecognizedPrincipal() { - $this->expectException('Sabre\DAVACL\Exception\NotRecognizedPrincipal'); $tree = [ new MockACLNode('test', []), ]; @@ -85,9 +89,11 @@ class ACLMethodTest extends \PHPUnit\Framework\TestCase $acl->httpACL($server->httpRequest, $server->httpResponse); } + /** + * @expectedException \Sabre\DAVACL\Exception\NotRecognizedPrincipal + */ public function testUnrecognizedPrincipal2() { - $this->expectException('Sabre\DAVACL\Exception\NotRecognizedPrincipal'); $tree = [ new MockACLNode('test', []), new DAV\SimpleCollection('principals', [ @@ -111,9 +117,11 @@ class ACLMethodTest extends \PHPUnit\Framework\TestCase $acl->httpACL($server->httpRequest, $server->httpResponse); } + /** + * @expectedException \Sabre\DAVACL\Exception\NotSupportedPrivilege + */ public function testUnknownPrivilege() { - $this->expectException('Sabre\DAVACL\Exception\NotSupportedPrivilege'); $tree = [ new MockACLNode('test', []), ]; @@ -134,9 +142,11 @@ class ACLMethodTest extends \PHPUnit\Framework\TestCase $acl->httpACL($server->httpRequest, $server->httpResponse); } + /** + * @expectedException \Sabre\DAVACL\Exception\NoAbstract + */ public function testAbstractPrivilege() { - $this->expectException('Sabre\DAVACL\Exception\NoAbstract'); $tree = [ new MockACLNode('test', []), ]; @@ -160,9 +170,11 @@ class ACLMethodTest extends \PHPUnit\Framework\TestCase $acl->httpACL($server->httpRequest, $server->httpResponse); } + /** + * @expectedException \Sabre\DAVACL\Exception\AceConflict + */ public function testUpdateProtectedPrivilege() { - $this->expectException('Sabre\DAVACL\Exception\AceConflict'); $oldACL = [ [ 'principal' => 'principals/notfound', @@ -191,9 +203,11 @@ class ACLMethodTest extends \PHPUnit\Framework\TestCase $acl->httpACL($server->httpRequest, $server->httpResponse); } + /** + * @expectedException \Sabre\DAVACL\Exception\AceConflict + */ public function testUpdateProtectedPrivilege2() { - $this->expectException('Sabre\DAVACL\Exception\AceConflict'); $oldACL = [ [ 'principal' => 'principals/notfound', @@ -222,9 +236,11 @@ class ACLMethodTest extends \PHPUnit\Framework\TestCase $acl->httpACL($server->httpRequest, $server->httpResponse); } + /** + * @expectedException \Sabre\DAVACL\Exception\AceConflict + */ public function testUpdateProtectedPrivilege3() { - $this->expectException('Sabre\DAVACL\Exception\AceConflict'); $oldACL = [ [ 'principal' => 'principals/notfound', diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php index 04dd29c04..724abc685 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php @@ -13,7 +13,7 @@ class AllowAccessTest extends \PHPUnit\Framework\TestCase */ protected $server; - public function setup(): void + public function setUp() { $nodes = [ new DAV\Mock\Collection('testdir', [ diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php index 566167ef0..3c3aaf6c9 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php @@ -14,7 +14,7 @@ class BlockAccessTest extends \PHPUnit\Framework\TestCase protected $server; protected $plugin; - public function setup(): void + public function setUp() { $nodes = [ new DAV\SimpleCollection('testdir'), @@ -36,9 +36,11 @@ class BlockAccessTest extends \PHPUnit\Framework\TestCase $this->server->addPlugin($this->plugin); } + /** + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges + */ public function testGet() { - $this->expectException('Sabre\DAVACL\Exception\NeedPrivileges'); $this->server->httpRequest->setMethod('GET'); $this->server->httpRequest->setUrl('/testdir'); @@ -54,87 +56,107 @@ class BlockAccessTest extends \PHPUnit\Framework\TestCase $this->assertTrue($r); } + /** + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges + */ public function testHEAD() { - $this->expectException('Sabre\DAVACL\Exception\NeedPrivileges'); $this->server->httpRequest->setMethod('HEAD'); $this->server->httpRequest->setUrl('/testdir'); $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } + /** + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges + */ public function testOPTIONS() { - $this->expectException('Sabre\DAVACL\Exception\NeedPrivileges'); $this->server->httpRequest->setMethod('OPTIONS'); $this->server->httpRequest->setUrl('/testdir'); $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } + /** + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges + */ public function testPUT() { - $this->expectException('Sabre\DAVACL\Exception\NeedPrivileges'); $this->server->httpRequest->setMethod('PUT'); $this->server->httpRequest->setUrl('/testdir'); $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } + /** + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges + */ public function testPROPPATCH() { - $this->expectException('Sabre\DAVACL\Exception\NeedPrivileges'); $this->server->httpRequest->setMethod('PROPPATCH'); $this->server->httpRequest->setUrl('/testdir'); $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } + /** + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges + */ public function testCOPY() { - $this->expectException('Sabre\DAVACL\Exception\NeedPrivileges'); $this->server->httpRequest->setMethod('COPY'); $this->server->httpRequest->setUrl('/testdir'); $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } + /** + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges + */ public function testMOVE() { - $this->expectException('Sabre\DAVACL\Exception\NeedPrivileges'); $this->server->httpRequest->setMethod('MOVE'); $this->server->httpRequest->setUrl('/testdir'); $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } + /** + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges + */ public function testACL() { - $this->expectException('Sabre\DAVACL\Exception\NeedPrivileges'); $this->server->httpRequest->setMethod('ACL'); $this->server->httpRequest->setUrl('/testdir'); $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } + /** + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges + */ public function testLOCK() { - $this->expectException('Sabre\DAVACL\Exception\NeedPrivileges'); $this->server->httpRequest->setMethod('LOCK'); $this->server->httpRequest->setUrl('/testdir'); $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } + /** + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges + */ public function testBeforeBind() { - $this->expectException('Sabre\DAVACL\Exception\NeedPrivileges'); $this->server->emit('beforeBind', ['testdir/file']); } + /** + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges + */ public function testBeforeUnbind() { - $this->expectException('Sabre\DAVACL\Exception\NeedPrivileges'); $this->server->emit('beforeUnbind', ['testdir']); } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php index 8afe6d30f..d0b67cfae 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php @@ -7,6 +7,8 @@ namespace Sabre\DAVACL; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/HTTP/ResponseMock.php'; + class ExpandPropertiesTest extends \PHPUnit\Framework\TestCase { public function getServer() diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php index 048b9f249..9ab16df74 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php @@ -7,11 +7,14 @@ namespace Sabre\DAVACL; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/DAVACL/MockACLNode.php'; +require_once 'Sabre/HTTP/ResponseMock.php'; + class PluginAdminTest extends \PHPUnit\Framework\TestCase { public $server; - public function setup(): void + public function setUp() { $principalBackend = new PrincipalBackend\Mock(); diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php index e6796e014..169629a03 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php @@ -72,9 +72,11 @@ class PluginUpdatePropertiesTest extends \PHPUnit\Framework\TestCase $this->assertEquals(['bar', 'baz'], $tree[0]->getGroupMemberSet()); } + /** + * @expectedException \Sabre\DAV\Exception + */ public function testSetBadValue() { - $this->expectException('Sabre\DAV\Exception'); $tree = [ new MockPrincipal('foo', 'foo'), ]; diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php index b18ab9488..95775d8fe 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php @@ -10,7 +10,7 @@ abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase { use DAV\DbTestHelperTrait; - public function setup(): void + public function setUp() { $this->dropTables(['principals', 'groupmembers']); $this->createSchema('principals'); diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php index 5f0434579..551a77900 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php @@ -126,7 +126,8 @@ class Mock extends AbstractBackend * * Read the PropPatch documentation for more info and examples. * - * @param string $path + * @param string $path + * @param \Sabre\DAV\PropPatch $propPatch */ public function updatePrincipal($path, \Sabre\DAV\PropPatch $propPatch) { diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php index 2777281a8..68aebe2ae 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php @@ -33,10 +33,10 @@ class PrincipalCollectionTest extends \PHPUnit\Framework\TestCase /** * @depends testBasic + * @expectedException \Sabre\DAV\Exception\MethodNotAllowed */ public function testGetChildrenDisable() { - $this->expectException('Sabre\DAV\Exception\MethodNotAllowed'); $backend = new PrincipalBackend\Mock(); $pc = new PrincipalCollection($backend); $pc->disableListing = true; diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php index 6883f25b4..55c64721e 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php @@ -7,6 +7,8 @@ namespace Sabre\DAVACL; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/HTTP/ResponseMock.php'; + class PrincipalPropertySearchTest extends \PHPUnit\Framework\TestCase { public function getServer() diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php index ec834fe1a..b44b46fc5 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php @@ -7,6 +7,8 @@ namespace Sabre\DAVACL; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/HTTP/ResponseMock.php'; + class PrincipalSearchPropertySetTest extends \PHPUnit\Framework\TestCase { public function getServer() diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php index 7e1656a15..a4821da5a 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php @@ -15,9 +15,11 @@ class PrincipalTest extends \PHPUnit\Framework\TestCase $this->assertTrue($principal instanceof Principal); } + /** + * @expectedException \Sabre\DAV\Exception + */ public function testConstructNoUri() { - $this->expectException('Sabre\DAV\Exception'); $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, []); } @@ -175,9 +177,11 @@ class PrincipalTest extends \PHPUnit\Framework\TestCase ], $principal->getACL()); } + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ public function testSetACl() { - $this->expectException('Sabre\DAV\Exception\Forbidden'); $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $principal->setACL([]); diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php index effa15838..a1e9ee36c 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php @@ -7,6 +7,9 @@ namespace Sabre\DAVACL; use Sabre\DAV; use Sabre\HTTP; +require_once 'Sabre/DAVACL/MockPrincipal.php'; +require_once 'Sabre/DAVACL/MockACLNode.php'; + class SimplePluginTest extends \PHPUnit\Framework\TestCase { public function testValues() diff --git a/vendor/sabre/dav/tests/Sabre/DAVServerTest.php b/vendor/sabre/dav/tests/Sabre/DAVServerTest.php index 2f64df08c..982090d23 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVServerTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVServerTest.php @@ -43,7 +43,7 @@ abstract class DAVServerTest extends \PHPUnit\Framework\TestCase protected $carddavCards = []; /** - * @var \Sabre\DAV\Server + * @var Sabre\DAV\Server */ protected $server; protected $tree = []; @@ -82,17 +82,12 @@ abstract class DAVServerTest extends \PHPUnit\Framework\TestCase protected $caldavSchedulePlugin; /** - * @var CalDAV\ICSExportPlugin - */ - protected $caldavICSExportPlugin; - - /** - * @var \Sabre\DAV\Auth\Plugin + * @var Sabre\DAV\Auth\Plugin */ protected $authPlugin; /** - * @var \Sabre\DAV\Locks\Plugin + * @var Sabre\DAV\Locks\Plugin */ protected $locksPlugin; @@ -114,7 +109,7 @@ abstract class DAVServerTest extends \PHPUnit\Framework\TestCase */ protected $autoLogin = null; - public function setup(): void + public function setUp() { $this->initializeEverything(); } @@ -198,7 +193,7 @@ abstract class DAVServerTest extends \PHPUnit\Framework\TestCase public function request($request, $expectedStatus = null) { if (is_array($request)) { - $request = HTTP\Sapi::createFromServerArray($request); + $request = HTTP\Request::createFromServerArray($request); } $response = new HTTP\ResponseMock(); @@ -300,6 +295,6 @@ abstract class DAVServerTest extends \PHPUnit\Framework\TestCase public function assertHttpStatus($expectedStatus, HTTP\Request $req) { $resp = $this->request($req); - $this->assertEquals((int) $expectedStatus, (int) $resp->getStatus(), 'Incorrect HTTP status received: '.$resp->getStatus()); + $this->assertEquals((int) $expectedStatus, (int) $resp->status, 'Incorrect HTTP status received: '.$resp->body); } } diff --git a/vendor/sabre/dav/tests/bootstrap.php b/vendor/sabre/dav/tests/bootstrap.php index d15805382..bc79b86ab 100644 --- a/vendor/sabre/dav/tests/bootstrap.php +++ b/vendor/sabre/dav/tests/bootstrap.php @@ -44,7 +44,6 @@ $config = [ ]; if (file_exists(__DIR__.'/config.user.php')) { - $userConfig = []; include __DIR__.'/config.user.php'; foreach ($userConfig as $key => $value) { $config[$key] = $value; diff --git a/vendor/sabre/event/.gitattributes b/vendor/sabre/event/.gitattributes new file mode 100644 index 000000000..0fdd4b01c --- /dev/null +++ b/vendor/sabre/event/.gitattributes @@ -0,0 +1,2 @@ +/examples export-ignore +/tests export-ignore diff --git a/vendor/sabre/event/.gitignore b/vendor/sabre/event/.gitignore new file mode 100644 index 000000000..d06a78164 --- /dev/null +++ b/vendor/sabre/event/.gitignore @@ -0,0 +1,14 @@ +#composer +vendor +composer.lock + +#binaries +bin/sabre-cs-fixer +bin/php-cs-fixer +bin/phpunit + +#vim lock files +.*.swp + +#development stuff +tests/cov diff --git a/vendor/sabre/event/.travis.yml b/vendor/sabre/event/.travis.yml new file mode 100644 index 000000000..020488b79 --- /dev/null +++ b/vendor/sabre/event/.travis.yml @@ -0,0 +1,21 @@ +language: php +php: + - 7.0 + - 7.1 + - 7.2 + +env: + matrix: + - LOWEST_DEPS="" + - LOWEST_DEPS="--prefer-lowest" + +before_script: + - composer update --prefer-source $LOWEST_DEPS + +script: + - ./bin/phpunit + - ./bin/sabre-cs-fixer fix . --dry-run --diff + +sudo: false + +cache: vendor diff --git a/vendor/sabre/event/CHANGELOG.md b/vendor/sabre/event/CHANGELOG.md new file mode 100644 index 000000000..5b1fb2e68 --- /dev/null +++ b/vendor/sabre/event/CHANGELOG.md @@ -0,0 +1,122 @@ +ChangeLog +========= +5.0.3 (2018-05-03) +------------------ + +* Dropped remaining hhvm leftovers. +* #55: Fixed typo in WildcardEmitterTrait (@SamMousa) +* #54: export-ignore examples & tests in distribution (@staabm) + +5.0.2 (2017-04-29) +------------------ + +* #50: Fixed Promise\all to resolve immediately for empty arrays (@MadHed) +* #48, #49: Performance optimisations for EmitterTrait and WildcardEmitterTrait (@lunixyacht). + +5.0.1 (2016-10-29) +------------------ + +* #45: Fixed `Emitter` class to use the correct interface. (@felixfbecker). + + +5.0.0 (2016-10-23) +------------------ + +* #42: The `coroutine` function now supports `return` in the passed generator + function. This allows you to more generally return a value. This is a BC + break as this is a feature that was only made possible with PHP 7, and + before the coroutine function would only ever return the last thing that + was yielded. If you depended on that feature, replace your last `yield` with + a `return`. + + +4.0.0 (2016-09-19) +------------------ + +* sabre/event now requires PHP 7. If you need PHP 5.5 support, just keep + using 3.0.0. +* PHP 7 type hints are now used everywhere. We're also using strict_types. +* Support for a new `WildcardEmitter` which allows you to listen for events + using the `*` wildcard. +* Removed deprecated functions `Promise::error` and `Promise::all`. Instead, + use `Promise::otherwise` and `Promise\all()`. +* `EventEmitter`, `EventEmitterTrait` and `EventEmitterInterface` are now just + called `Emitter`, `EmitterTrait`, and `EmitterInterface`. +* When rejecting Promises, it's now _required_ to use an `Exception` or + `Throwable`. This makes the typical case simpler and reduces special cases. + +3.0.0 (2015-11-05) +------------------ + +* Now requires PHP 5.5! +* `Promise::all()` is moved to `Promise\all()`. +* Aside from the `Promise\all()` function, there's now also `Promise\race()`. +* `Promise\reject()` and `Promise\resolve()` have also been added. +* Now 100% compatible with the Ecmascript 6 Promise. + + +3.0.0-alpha1 (2015-10-23) +------------------------- + +* This package now requires PHP 5.5. +* #26: Added an event loop implementation. Also knows as the Reactor Pattern. +* Renamed `Promise::error` to `Promise::otherwise` to be consistent with + ReactPHP and Guzzle. The `error` method is kept for BC but will be removed + in a future version. +* #27: Support for Promise-based coroutines via the `Sabre\Event\coroutine` + function. +* BC Break: Promises now use the EventLoop to run "then"-events in a separate + execution context. In practise that means you need to run the event loop to + wait for any `then`/`otherwise` callbacks to trigger. +* Promises now have a `wait()` method. Allowing you to make a promise + synchronous and simply wait for a result (or exception) to happen. + + +2.0.2 (2015-05-19) +------------------ + +* This release has no functional changes. It's just been brought up to date + with the latest coding standards. + + +2.0.1 (2014-10-06) +------------------ + +* Fixed: `$priority` was ignored in `EventEmitter::once` method. +* Fixed: Breaking the event chain was not possible in `EventEmitter::once`. + + +2.0.0 (2014-06-21) +------------------ + +* Added: When calling emit, it's now possible to specify a callback that will be + triggered after each method handled. This is dubbed the 'continueCallback' and + can be used to implement strategy patterns. +* Added: Promise object! +* Changed: EventEmitter::listeners now returns just the callbacks for an event, + and no longer returns the list by reference. The list is now automatically + sorted by priority. +* Update: Speed improvements. +* Updated: It's now possible to remove all listeners for every event. +* Changed: Now uses psr-4 autoloading. + + +1.0.1 (2014-06-12) +------------------ + +* hhvm compatible! +* Fixed: Issue #4. Compatiblitiy for PHP < 5.4.14. + + +1.0.0 (2013-07-19) +------------------ + +* Added: removeListener, removeAllListeners +* Added: once, to only listen to an event emitting once. +* Added README.md. + + +0.0.1-alpha (2013-06-29) +------------------------ + +* First version! diff --git a/vendor/sabre/event/README.md b/vendor/sabre/event/README.md new file mode 100644 index 000000000..9e2bdd042 --- /dev/null +++ b/vendor/sabre/event/README.md @@ -0,0 +1,51 @@ +sabre/event +=========== + +A lightweight library for event-based development in PHP. + +This library provides the following event-based concepts: + +1. EventEmitter. +2. Promises. +3. An event loop. +4. Co-routines. + +Full documentation can be found on [the website][1]. + +Installation +------------ + +Make sure you have [composer][3] installed, and then run: + + composer require sabre/event "^3.0" + +This package requires PHP 5.5. The 2.0 branch is still maintained as well, and +supports PHP 5.4. + +Build status +------------ + +| branch | status | +| ------ | ------ | +| master | [![Build Status](https://travis-ci.org/sabre-io/event.svg?branch=master)](https://travis-ci.org/sabre-io/event) | +| 3.0 | [![Build Status](https://travis-ci.org/sabre-io/event.svg?branch=2.0)](https://travis-ci.org/sabre-io/event) | +| 2.0 | [![Build Status](https://travis-ci.org/sabre-io/event.svg?branch=2.0)](https://travis-ci.org/sabre-io/event) | +| 1.0 | [![Build Status](https://travis-ci.org/sabre-io/event.svg?branch=1.0)](https://travis-ci.org/sabre-io/event) | +| php53 | [![Build Status](https://travis-ci.org/sabre-io/event.svg?branch=php53)](https://travis-ci.org/sabre-io/event) | + + +Questions? +---------- + +Head over to the [sabre/dav mailinglist][4], or you can also just open a ticket +on [GitHub][5]. + +Made at fruux +------------- + +This library is being developed by [fruux](https://fruux.com/). Drop us a line for commercial services or enterprise support. + +[1]: http://sabre.io/event/ +[3]: http://getcomposer.org/ +[4]: http://groups.google.com/group/sabredav-discuss +[5]: https://github.com/fruux/sabre-event/issues/ diff --git a/vendor/sabre/event/_config.yml b/vendor/sabre/event/_config.yml new file mode 100644 index 000000000..c4192631f --- /dev/null +++ b/vendor/sabre/event/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-cayman
\ No newline at end of file diff --git a/vendor/sabre/event/composer.json b/vendor/sabre/event/composer.json index 144704118..d7a13c5ca 100644 --- a/vendor/sabre/event/composer.json +++ b/vendor/sabre/event/composer.json @@ -16,7 +16,7 @@ "homepage": "http://sabre.io/event/", "license": "BSD-3-Clause", "require": { - "php": "^7.1" + "php": ">=7.0" }, "authors": [ { @@ -41,8 +41,8 @@ ] }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.16.1", - "phpunit/phpunit" : "^7 || ^8" + "sabre/cs": "~1.0.0", + "phpunit/phpunit" : ">=6" }, "config" : { "bin-dir" : "bin/" diff --git a/vendor/sabre/event/lib/Emitter.php b/vendor/sabre/event/lib/Emitter.php index e1f23fc87..ab5e8c90e 100644 --- a/vendor/sabre/event/lib/Emitter.php +++ b/vendor/sabre/event/lib/Emitter.php @@ -1,6 +1,4 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event; @@ -13,7 +11,8 @@ namespace Sabre\Event; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Emitter implements EmitterInterface -{ +class Emitter implements EmitterInterface { + use EmitterTrait; + } diff --git a/vendor/sabre/event/lib/EmitterInterface.php b/vendor/sabre/event/lib/EmitterInterface.php index 6ce0f34db..a7e4b6132 100644 --- a/vendor/sabre/event/lib/EmitterInterface.php +++ b/vendor/sabre/event/lib/EmitterInterface.php @@ -1,11 +1,9 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event; /** - * Event Emitter Interface. + * Event Emitter Interface * * Anything that accepts listeners and emits events should implement this * interface. @@ -14,22 +12,26 @@ namespace Sabre\Event; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -interface EmitterInterface -{ +interface EmitterInterface { + /** * Subscribe to an event. + * + * @return void */ - public function on(string $eventName, callable $callBack, int $priority = 100); + function on(string $eventName, callable $callBack, int $priority = 100); /** * Subscribe to an event exactly once. + * + * @return void */ - public function once(string $eventName, callable $callBack, int $priority = 100); + function once(string $eventName, callable $callBack, int $priority = 100); /** * Emits an event. * - * This method will return true if 0 or more listeners were successfully + * This method will return true if 0 or more listeners were succesfully * handled. false is returned if one of the events broke the event chain. * * If the continueCallBack is specified, this callback will be called every @@ -47,7 +49,7 @@ interface EmitterInterface * Lastly, if there are 5 event handlers for an event. The continueCallback * will be called at most 4 times. */ - public function emit(string $eventName, array $arguments = [], callable $continueCallBack = null): bool; + function emit(string $eventName, array $arguments = [], callable $continueCallBack = null) : bool; /** * Returns the list of listeners for an event. @@ -57,7 +59,7 @@ interface EmitterInterface * * @return callable[] */ - public function listeners(string $eventName): array; + function listeners(string $eventName) : array; /** * Removes a specific listener from an event. @@ -65,7 +67,7 @@ interface EmitterInterface * If the listener could not be found, this method will return false. If it * was removed it will return true. */ - public function removeListener(string $eventName, callable $listener): bool; + function removeListener(string $eventName, callable $listener) : bool; /** * Removes all listeners. @@ -73,6 +75,9 @@ interface EmitterInterface * If the eventName argument is specified, all listeners for that event are * removed. If it is not specified, every listener for every event is * removed. + * + * @return void */ - public function removeAllListeners(string $eventName = null); + function removeAllListeners(string $eventName = null); + } diff --git a/vendor/sabre/event/lib/EmitterTrait.php b/vendor/sabre/event/lib/EmitterTrait.php index 5502ef9f3..dafae362f 100644 --- a/vendor/sabre/event/lib/EmitterTrait.php +++ b/vendor/sabre/event/lib/EmitterTrait.php @@ -1,11 +1,9 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event; /** - * Event Emitter Trait. + * Event Emitter Trait * * This trait contains all the basic functions to implement an * EventEmitterInterface. @@ -17,45 +15,53 @@ namespace Sabre\Event; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -trait EmitterTrait -{ +trait EmitterTrait { + + /** * Subscribe to an event. + * + * @return void */ - public function on(string $eventName, callable $callBack, int $priority = 100) - { + function on(string $eventName, callable $callBack, int $priority = 100) { + if (!isset($this->listeners[$eventName])) { $this->listeners[$eventName] = [ true, // If there's only one item, it's sorted [$priority], - [$callBack], + [$callBack] ]; } else { $this->listeners[$eventName][0] = false; // marked as unsorted $this->listeners[$eventName][1][] = $priority; $this->listeners[$eventName][2][] = $callBack; } + } /** * Subscribe to an event exactly once. + * + * @return void */ - public function once(string $eventName, callable $callBack, int $priority = 100) - { + function once(string $eventName, callable $callBack, int $priority = 100) { + $wrapper = null; - $wrapper = function () use ($eventName, $callBack, &$wrapper) { - $this->removeListener($eventName, $wrapper); + $wrapper = function() use ($eventName, $callBack, &$wrapper) { + $this->removeListener($eventName, $wrapper); return \call_user_func_array($callBack, \func_get_args()); + }; $this->on($eventName, $wrapper, $priority); + } /** * Emits an event. * - * This method will return true if 0 or more listeners were successfully + * This method will return true if 0 or more listeners were succesfully * handled. false is returned if one of the events broke the event chain. * * If the continueCallBack is specified, this callback will be called every @@ -73,35 +79,41 @@ trait EmitterTrait * Lastly, if there are 5 event handlers for an event. The continueCallback * will be called at most 4 times. */ - public function emit(string $eventName, array $arguments = [], callable $continueCallBack = null): bool - { + function emit(string $eventName, array $arguments = [], callable $continueCallBack = null) : bool { + if (\is_null($continueCallBack)) { + foreach ($this->listeners($eventName) as $listener) { + $result = \call_user_func_array($listener, $arguments); - if (false === $result) { + if ($result === false) { return false; } } + } else { + $listeners = $this->listeners($eventName); $counter = \count($listeners); foreach ($listeners as $listener) { - --$counter; + + $counter--; $result = \call_user_func_array($listener, $arguments); - if (false === $result) { + if ($result === false) { return false; } if ($counter > 0) { - if (!$continueCallBack()) { - break; - } + if (!$continueCallBack()) break; } + } + } return true; + } /** @@ -112,14 +124,15 @@ trait EmitterTrait * * @return callable[] */ - public function listeners(string $eventName): array - { + function listeners(string $eventName) : array { + if (!isset($this->listeners[$eventName])) { return []; } // The list is not sorted if (!$this->listeners[$eventName][0]) { + // Sorting \array_multisort($this->listeners[$eventName][1], SORT_NUMERIC, $this->listeners[$eventName][2]); @@ -128,6 +141,7 @@ trait EmitterTrait } return $this->listeners[$eventName][2]; + } /** @@ -136,8 +150,8 @@ trait EmitterTrait * If the listener could not be found, this method will return false. If it * was removed it will return true. */ - public function removeListener(string $eventName, callable $listener): bool - { + function removeListener(string $eventName, callable $listener) : bool { + if (!isset($this->listeners[$eventName])) { return false; } @@ -145,12 +159,11 @@ trait EmitterTrait if ($check === $listener) { unset($this->listeners[$eventName][1][$index]); unset($this->listeners[$eventName][2][$index]); - return true; } } - return false; + } /** @@ -159,20 +172,24 @@ trait EmitterTrait * If the eventName argument is specified, all listeners for that event are * removed. If it is not specified, every listener for every event is * removed. + * + * @return void */ - public function removeAllListeners(string $eventName = null) - { + function removeAllListeners(string $eventName = null) { + if (!\is_null($eventName)) { unset($this->listeners[$eventName]); } else { $this->listeners = []; } + } /** - * The list of listeners. + * The list of listeners * * @var array */ protected $listeners = []; + } diff --git a/vendor/sabre/event/lib/EventEmitter.php b/vendor/sabre/event/lib/EventEmitter.php index 18971e3ee..cae6ac2a6 100644 --- a/vendor/sabre/event/lib/EventEmitter.php +++ b/vendor/sabre/event/lib/EventEmitter.php @@ -1,6 +1,4 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event; @@ -14,7 +12,8 @@ namespace Sabre\Event; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class EventEmitter implements EmitterInterface -{ +class EventEmitter implements EmitterInterface { + use EmitterTrait; + } diff --git a/vendor/sabre/event/lib/Loop/Loop.php b/vendor/sabre/event/lib/Loop/Loop.php index ec09be921..301fe8920 100644 --- a/vendor/sabre/event/lib/Loop/Loop.php +++ b/vendor/sabre/event/lib/Loop/Loop.php @@ -1,6 +1,4 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event\Loop; @@ -17,19 +15,20 @@ namespace Sabre\Event\Loop; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Loop -{ +class Loop { + /** * Executes a function after x seconds. + * + * @return void */ - public function setTimeout(callable $cb, float $timeout) - { + function setTimeout(callable $cb, float $timeout) { + $triggerTime = microtime(true) + ($timeout); if (!$this->timers) { // Special case when the timers array was empty. $this->timers[] = [$triggerTime, $cb]; - return; } @@ -47,12 +46,14 @@ class Loop [[$triggerTime, $cb]] ); break; - } elseif (0 === $index) { + } elseif ($index === 0) { array_unshift($this->timers, [$triggerTime, $cb]); break; } - --$index; + $index--; + } + } /** @@ -61,12 +62,12 @@ class Loop * The value this function returns can be used to stop the interval with * clearInterval. */ - public function setInterval(callable $cb, float $timeout): array - { + function setInterval(callable $cb, float $timeout) : array { + $keepGoing = true; $f = null; - $f = function () use ($cb, &$f, $timeout, &$keepGoing) { + $f = function() use ($cb, &$f, $timeout, &$keepGoing) { if ($keepGoing) { $cb(); $this->setTimeout($f, $timeout); @@ -81,24 +82,32 @@ class Loop // Because I'm worried people will be confused by using a boolean as a // sort of identifier, I added an extra string. return ['I\'m an implementation detail', &$keepGoing]; + } /** * Stops a running interval. + * + * @return void */ - public function clearInterval(array $intervalId) - { + function clearInterval(array $intervalId) { + $intervalId[1] = false; + } /** * Runs a function immediately at the next iteration of the loop. + * + * @return void */ - public function nextTick(callable $cb) - { + function nextTick(callable $cb) { + $this->nextTick[] = $cb; + } + /** * Adds a read stream. * @@ -109,11 +118,13 @@ class Loop * prevent the eventloop from never stopping. * * @param resource $stream + * @return void */ - public function addReadStream($stream, callable $cb) - { - $this->readStreams[(int) $stream] = $stream; - $this->readCallbacks[(int) $stream] = $cb; + function addReadStream($stream, callable $cb) { + + $this->readStreams[(int)$stream] = $stream; + $this->readCallbacks[(int)$stream] = $cb; + } /** @@ -126,53 +137,65 @@ class Loop * prevent the eventloop from never stopping. * * @param resource $stream + * @return void */ - public function addWriteStream($stream, callable $cb) - { - $this->writeStreams[(int) $stream] = $stream; - $this->writeCallbacks[(int) $stream] = $cb; + function addWriteStream($stream, callable $cb) { + + $this->writeStreams[(int)$stream] = $stream; + $this->writeCallbacks[(int)$stream] = $cb; + } /** * Stop watching a stream for reads. * * @param resource $stream + * @return void */ - public function removeReadStream($stream) - { + function removeReadStream($stream) { + unset( - $this->readStreams[(int) $stream], - $this->readCallbacks[(int) $stream] + $this->readStreams[(int)$stream], + $this->readCallbacks[(int)$stream] ); + } /** * Stop watching a stream for writes. * * @param resource $stream + * @return void */ - public function removeWriteStream($stream) - { + function removeWriteStream($stream) { + unset( - $this->writeStreams[(int) $stream], - $this->writeCallbacks[(int) $stream] + $this->writeStreams[(int)$stream], + $this->writeCallbacks[(int)$stream] ); + } + /** * Runs the loop. * - * This function will run continuously, until there's no more events to + * This function will run continiously, until there's no more events to * handle. + * + * @return void */ - public function run() - { + function run() { + $this->running = true; do { + $hasEvents = $this->tick(true); + } while ($this->running && $hasEvents); $this->running = false; + } /** @@ -187,8 +210,8 @@ class Loop * This function will return true if there are _any_ events left in the * loop after the tick. */ - public function tick(bool $block = false): bool - { + function tick(bool $block = false) : bool { + $this->runNextTicks(); $nextTimeout = $this->runTimers(); @@ -209,15 +232,19 @@ class Loop $this->runStreams($streamWait); - return $this->readStreams || $this->writeStreams || $this->nextTick || $this->timers; + return ($this->readStreams || $this->writeStreams || $this->nextTick || $this->timers); + } /** - * Stops a running eventloop. + * Stops a running eventloop + * + * @return void */ - public function stop() - { + function stop() { + $this->running = false; + } /** @@ -225,14 +252,15 @@ class Loop * * return void */ - protected function runNextTicks() - { + protected function runNextTicks() { + $nextTick = $this->nextTick; $this->nextTick = []; foreach ($nextTick as $cb) { $cb(); } + } /** @@ -245,8 +273,8 @@ class Loop * * @return float|null */ - protected function runTimers() - { + protected function runTimers() { + $now = microtime(true); while (($timer = array_pop($this->timers)) && $timer[0] < $now) { $timer[1](); @@ -254,9 +282,9 @@ class Loop // Add the last timer back to the array. if ($timer) { $this->timers[] = $timer; - return max(0, $timer[0] - microtime(true)); } + } /** @@ -267,31 +295,36 @@ class Loop * * @param float|null timeout */ - protected function runStreams($timeout) - { + protected function runStreams($timeout) { + if ($this->readStreams || $this->writeStreams) { + $read = $this->readStreams; $write = $this->writeStreams; $except = null; - if (stream_select($read, $write, $except, (null === $timeout) ? null : 0, $timeout ? (int) ($timeout * 1000000) : 0)) { + if (stream_select($read, $write, $except, ($timeout === null) ? null : 0, $timeout ? (int)($timeout * 1000000) : 0)) { + // See PHP Bug https://bugs.php.net/bug.php?id=62452 // Fixed in PHP7 foreach ($read as $readStream) { - $readCb = $this->readCallbacks[(int) $readStream]; + $readCb = $this->readCallbacks[(int)$readStream]; $readCb(); } foreach ($write as $writeStream) { - $writeCb = $this->writeCallbacks[(int) $writeStream]; + $writeCb = $this->writeCallbacks[(int)$writeStream]; $writeCb(); } + } + } elseif ($this->running && ($this->nextTick || $this->timers)) { - usleep(null !== $timeout ? intval($timeout * 1000000) : 200000); + usleep($timeout !== null ? intval($timeout * 1000000) : 200000); } + } /** - * Is the main loop active. + * Is the main loop active * * @var bool */ @@ -328,14 +361,16 @@ class Loop /** * List of read callbacks, indexed by stream id. * - * @var callable[] + * @var callback[] */ protected $readCallbacks = []; /** * List of write callbacks, indexed by stream id. * - * @var callable[] + * @var callback[] */ protected $writeCallbacks = []; + + } diff --git a/vendor/sabre/event/lib/Loop/functions.php b/vendor/sabre/event/lib/Loop/functions.php index bf4d933f2..b5884b2b6 100644 --- a/vendor/sabre/event/lib/Loop/functions.php +++ b/vendor/sabre/event/lib/Loop/functions.php @@ -1,15 +1,16 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event\Loop; /** * Executes a function after x seconds. + * + * @return void */ -function setTimeout(callable $cb, float $timeout) -{ +function setTimeout(callable $cb, float $timeout) { + instance()->setTimeout($cb, $timeout); + } /** @@ -18,27 +19,35 @@ function setTimeout(callable $cb, float $timeout) * The value this function returns can be used to stop the interval with * clearInterval. */ -function setInterval(callable $cb, float $timeout): array -{ +function setInterval(callable $cb, float $timeout) : array { + return instance()->setInterval($cb, $timeout); + } /** * Stops a running interval. + * + * @return void */ -function clearInterval(array $intervalId) -{ +function clearInterval(array $intervalId) { + instance()->clearInterval($intervalId); + } /** * Runs a function immediately at the next iteration of the loop. + * + * @return void */ -function nextTick(callable $cb) -{ +function nextTick(callable $cb) { + instance()->nextTick($cb); + } + /** * Adds a read stream. * @@ -49,10 +58,12 @@ function nextTick(callable $cb) * prevent the eventloop from never stopping. * * @param resource $stream + * @return void */ -function addReadStream($stream, callable $cb) -{ +function addReadStream($stream, callable $cb) { + instance()->addReadStream($stream, $cb); + } /** @@ -65,41 +76,51 @@ function addReadStream($stream, callable $cb) * prevent the eventloop from never stopping. * * @param resource $stream + * @return void */ -function addWriteStream($stream, callable $cb) -{ +function addWriteStream($stream, callable $cb) { + instance()->addWriteStream($stream, $cb); + } /** * Stop watching a stream for reads. * * @param resource $stream + * @return void */ -function removeReadStream($stream) -{ +function removeReadStream($stream) { + instance()->removeReadStream($stream); + } /** * Stop watching a stream for writes. * * @param resource $stream + * @return void */ -function removeWriteStream($stream) -{ +function removeWriteStream($stream) { + instance()->removeWriteStream($stream); + } + /** * Runs the loop. * - * This function will run continuously, until there's no more events to + * This function will run continiously, until there's no more events to * handle. + * + * @return void */ -function run() -{ +function run() { + instance()->run(); + } /** @@ -114,30 +135,34 @@ function run() * This function will return true if there are _any_ events left in the * loop after the tick. */ -function tick(bool $block = false): bool -{ +function tick(bool $block = false) : bool { + return instance()->tick($block); + } /** - * Stops a running eventloop. + * Stops a running eventloop + * + * @return void */ -function stop() -{ +function stop() { + instance()->stop(); + } /** * Retrieves or sets the global Loop object. */ -function instance(Loop $newLoop = null): Loop -{ +function instance(Loop $newLoop = null) : Loop { + static $loop; if ($newLoop) { $loop = $newLoop; } elseif (!$loop) { $loop = new Loop(); } - return $loop; + } diff --git a/vendor/sabre/event/lib/Promise.php b/vendor/sabre/event/lib/Promise.php index 1d4ddd74a..1d04bd4d4 100644 --- a/vendor/sabre/event/lib/Promise.php +++ b/vendor/sabre/event/lib/Promise.php @@ -1,6 +1,4 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event; @@ -23,8 +21,8 @@ use Throwable; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Promise -{ +class Promise { + /** * The asynchronous operation is pending. */ @@ -56,14 +54,15 @@ class Promise * Each are callbacks that map to $this->fulfill and $this->reject. * Using the executor is optional. */ - public function __construct(callable $executor = null) - { + function __construct(callable $executor = null) { + if ($executor) { $executor( [$this, 'fulfill'], [$this, 'reject'] ); } + } /** @@ -85,32 +84,32 @@ class Promise * If either of the callbacks throw an exception, the returned promise will * be rejected and the exception will be passed back. */ - public function then(callable $onFulfilled = null, callable $onRejected = null): Promise - { + function then(callable $onFulfilled = null, callable $onRejected = null) : Promise { + // This new subPromise will be returned from this function, and will // be fulfilled with the result of the onFulfilled or onRejected event // handlers. $subPromise = new self(); switch ($this->state) { - case self::PENDING: + case self::PENDING : // The operation is pending, so we keep a reference to the // event handlers so we can call them later. $this->subscribers[] = [$subPromise, $onFulfilled, $onRejected]; break; - case self::FULFILLED: + case self::FULFILLED : // The async operation is already fulfilled, so we trigger the // onFulfilled callback asap. $this->invokeCallback($subPromise, $onFulfilled); break; - case self::REJECTED: - // The async operation failed, so we call the onRejected + case self::REJECTED : + // The async operation failed, so we call teh onRejected // callback asap. $this->invokeCallback($subPromise, $onRejected); break; } - return $subPromise; + } /** @@ -119,19 +118,20 @@ class Promise * Its usage is identical to then(). However, the otherwise() function is * preferred. */ - public function otherwise(callable $onRejected): Promise - { + function otherwise(callable $onRejected) : Promise { + return $this->then(null, $onRejected); + } /** * Marks this promise as fulfilled and sets its return value. * * @param mixed $value + * @return void */ - public function fulfill($value = null) - { - if (self::PENDING !== $this->state) { + function fulfill($value = null) { + if ($this->state !== self::PENDING) { throw new PromiseAlreadyResolvedException('This promise is already resolved, and you\'re not allowed to resolve a promise more than once'); } $this->state = self::FULFILLED; @@ -143,10 +143,11 @@ class Promise /** * Marks this promise as rejected, and set it's rejection reason. + * + * @return void */ - public function reject(Throwable $reason) - { - if (self::PENDING !== $this->state) { + function reject(Throwable $reason) { + if ($this->state !== self::PENDING) { throw new PromiseAlreadyResolvedException('This promise is already resolved, and you\'re not allowed to resolve a promise more than once'); } $this->state = self::REJECTED; @@ -154,12 +155,13 @@ class Promise foreach ($this->subscribers as $subscriber) { $this->invokeCallback($subscriber[0], $subscriber[2]); } + } /** * Stops execution until this promise is resolved. * - * This method stops execution completely. If the promise is successful with + * This method stops exection completely. If the promise is successful with * a value, this method will return this value. If the promise was * rejected, this method will throw an exception. * @@ -169,10 +171,11 @@ class Promise * * @return mixed */ - public function wait() - { + function wait() { + $hasEvents = true; - while (self::PENDING === $this->state) { + while ($this->state === self::PENDING) { + if (!$hasEvents) { throw new \LogicException('There were no more events in the loop. This promise will never be fulfilled.'); } @@ -180,9 +183,10 @@ class Promise // As long as the promise is not fulfilled, we tell the event loop // to handle events, and to block. $hasEvents = Loop\tick(true); + } - if (self::FULFILLED === $this->state) { + if ($this->state === self::FULFILLED) { // If the state of this promise is fulfilled, we can return the value. return $this->value; } else { @@ -190,8 +194,11 @@ class Promise // errored. Therefore we need to throw an exception. throw $this->value; } + + } + /** * A list of subscribers. Subscribers are the callbacks that want us to let * them know if the callback was fulfilled or rejected. @@ -217,18 +224,21 @@ class Promise * correctly, and any chained promises are also correctly fulfilled or * rejected. * + * @param Promise $subPromise * @param callable $callBack + * @return void */ - private function invokeCallback(Promise $subPromise, callable $callBack = null) - { + private function invokeCallback(Promise $subPromise, callable $callBack = null) { + // We use 'nextTick' to ensure that the event handlers are always // triggered outside of the calling stack in which they were originally // passed to 'then'. // // This makes the order of execution more predictable. - Loop\nextTick(function () use ($callBack, $subPromise) { + Loop\nextTick(function() use ($callBack, $subPromise) { if (is_callable($callBack)) { try { + $result = $callBack($this->value); if ($result instanceof self) { // If the callback (onRejected or onFulfilled) @@ -247,7 +257,7 @@ class Promise $subPromise->reject($e); } } else { - if (self::FULFILLED === $this->state) { + if ($this->state === self::FULFILLED) { $subPromise->fulfill($this->value); } else { $subPromise->reject($this->value); @@ -255,4 +265,5 @@ class Promise } }); } + } diff --git a/vendor/sabre/event/lib/Promise/functions.php b/vendor/sabre/event/lib/Promise/functions.php index 986fe2b00..275492cbc 100644 --- a/vendor/sabre/event/lib/Promise/functions.php +++ b/vendor/sabre/event/lib/Promise/functions.php @@ -1,6 +1,4 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event\Promise; @@ -16,6 +14,7 @@ use Throwable; * @license http://sabre.io/license/ Modified BSD License */ + /** * This function takes an array of Promises, and returns a Promise that * resolves when all of the given arguments have resolved. @@ -25,17 +24,17 @@ use Throwable; * * This array will be in the exact same order as the array of input promises. * - * If any of the given Promises fails, the returned promise will immediately + * If any of the given Promises fails, the returned promise will immidiately * fail with the first Promise that fails, and its reason. * * @param Promise[] $promises */ -function all(array $promises): Promise -{ - return new Promise(function ($success, $fail) use ($promises) { +function all(array $promises) : Promise { + + return new Promise(function($success, $fail) use ($promises) { + if (empty($promises)) { $success([]); - return; } @@ -43,23 +42,25 @@ function all(array $promises): Promise $completeResult = []; foreach ($promises as $promiseIndex => $subPromise) { + $subPromise->then( - function ($result) use ($promiseIndex, &$completeResult, &$successCount, $success, $promises) { + function($result) use ($promiseIndex, &$completeResult, &$successCount, $success, $promises) { $completeResult[$promiseIndex] = $result; - ++$successCount; + $successCount++; if ($successCount === count($promises)) { $success($completeResult); } - return $result; } )->otherwise( - function ($reason) use ($fail) { + function($reason) use ($fail) { $fail($reason); } ); + } }); + } /** @@ -71,20 +72,22 @@ function all(array $promises): Promise * * @param Promise[] $promises */ -function race(array $promises): Promise -{ - return new Promise(function ($success, $fail) use ($promises) { +function race(array $promises) : Promise { + + return new Promise(function($success, $fail) use ($promises) { + $alreadyDone = false; foreach ($promises as $promise) { + $promise->then( - function ($result) use ($success, &$alreadyDone) { + function($result) use ($success, &$alreadyDone) { if ($alreadyDone) { return; } $alreadyDone = true; $success($result); }, - function ($reason) use ($fail, &$alreadyDone) { + function($reason) use ($fail, &$alreadyDone) { if ($alreadyDone) { return; } @@ -92,10 +95,14 @@ function race(array $promises): Promise $fail($reason); } ); + } + }); + } + /** * Returns a Promise that resolves with the given value. * @@ -104,25 +111,25 @@ function race(array $promises): Promise * * @param mixed $value */ -function resolve($value): Promise -{ +function resolve($value) : Promise { + if ($value instanceof Promise) { return $value->then(); } else { $promise = new Promise(); $promise->fulfill($value); - return $promise; } + } /** * Returns a Promise that will reject with the given reason. */ -function reject(Throwable $reason): Promise -{ +function reject(Throwable $reason) : Promise { + $promise = new Promise(); $promise->reject($reason); - return $promise; + } diff --git a/vendor/sabre/event/lib/PromiseAlreadyResolvedException.php b/vendor/sabre/event/lib/PromiseAlreadyResolvedException.php index abb6c108e..534a3d494 100644 --- a/vendor/sabre/event/lib/PromiseAlreadyResolvedException.php +++ b/vendor/sabre/event/lib/PromiseAlreadyResolvedException.php @@ -1,6 +1,4 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event; @@ -12,6 +10,6 @@ namespace Sabre\Event; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class PromiseAlreadyResolvedException extends \LogicException -{ +class PromiseAlreadyResolvedException extends \LogicException { + } diff --git a/vendor/sabre/event/lib/Version.php b/vendor/sabre/event/lib/Version.php index e98e2e3ff..9aee4b3ab 100644 --- a/vendor/sabre/event/lib/Version.php +++ b/vendor/sabre/event/lib/Version.php @@ -1,6 +1,4 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event; @@ -11,10 +9,11 @@ namespace Sabre\Event; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Version -{ +class Version { + /** - * Full version number. + * Full version number */ - const VERSION = '5.1.0'; + const VERSION = '5.0.3'; + } diff --git a/vendor/sabre/event/lib/WildcardEmitter.php b/vendor/sabre/event/lib/WildcardEmitter.php index 1b7c248b2..2ef15fe83 100644 --- a/vendor/sabre/event/lib/WildcardEmitter.php +++ b/vendor/sabre/event/lib/WildcardEmitter.php @@ -1,6 +1,4 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event; @@ -16,7 +14,7 @@ namespace Sabre\Event; * on('change:*') * * A few notes: - * + * * - Wildcards only work at the end of an event name. * - Currently you can only use 1 wildcard. * - Using ":" as a separator is optional, but it's highly recommended to use @@ -30,7 +28,10 @@ namespace Sabre\Event; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class WildcardEmitter implements EmitterInterface -{ +class WildcardEmitter implements EmitterInterface { + use WildcardEmitterTrait; + + + } diff --git a/vendor/sabre/event/lib/WildcardEmitterTrait.php b/vendor/sabre/event/lib/WildcardEmitterTrait.php index 206a8f3c5..7d8d62c26 100644 --- a/vendor/sabre/event/lib/WildcardEmitterTrait.php +++ b/vendor/sabre/event/lib/WildcardEmitterTrait.php @@ -1,11 +1,9 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event; /** - * Wildcard Emitter Trait. + * Wildcard Emitter Trait * * This trait provides the implementation for WildCardEmitter * Refer to that class for the full documentation about this @@ -19,19 +17,21 @@ namespace Sabre\Event; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -trait WildcardEmitterTrait -{ +trait WildcardEmitterTrait { + /** * Subscribe to an event. + * + * @return void */ - public function on(string $eventName, callable $callBack, int $priority = 100) - { - // If it ends with a wildcard, we use the wildcardListeners array - if ('*' === $eventName[\strlen($eventName) - 1]) { + function on(string $eventName, callable $callBack, int $priority = 100) { + + // If it ends with a wildcard, we use the wildcardListeners array + if ($eventName[\strlen($eventName) - 1] === '*') { $eventName = \substr($eventName, 0, -1); - $listeners = &$this->wildcardListeners; + $listeners = & $this->wildcardListeners; } else { - $listeners = &$this->listeners; + $listeners = & $this->listeners; } // Always fully reset the listener index. This is fairly sane for most @@ -44,27 +44,32 @@ trait WildcardEmitterTrait $listeners[$eventName] = []; } $listeners[$eventName][] = [$priority, $callBack]; + } /** * Subscribe to an event exactly once. + * + * @return void */ - public function once(string $eventName, callable $callBack, int $priority = 100) - { + function once(string $eventName, callable $callBack, int $priority = 100) { + $wrapper = null; - $wrapper = function () use ($eventName, $callBack, &$wrapper) { - $this->removeListener($eventName, $wrapper); + $wrapper = function() use ($eventName, $callBack, &$wrapper) { + $this->removeListener($eventName, $wrapper); return \call_user_func_array($callBack, \func_get_args()); + }; $this->on($eventName, $wrapper, $priority); + } /** * Emits an event. * - * This method will return true if 0 or more listeners were successfully + * This method will return true if 0 or more listeners were succesfully * handled. false is returned if one of the events broke the event chain. * * If the continueCallBack is specified, this callback will be called every @@ -82,35 +87,42 @@ trait WildcardEmitterTrait * Lastly, if there are 5 event handlers for an event. The continueCallback * will be called at most 4 times. */ - public function emit(string $eventName, array $arguments = [], callable $continueCallBack = null): bool - { + function emit(string $eventName, array $arguments = [], callable $continueCallBack = null) : bool { + if (\is_null($continueCallBack)) { + foreach ($this->listeners($eventName) as $listener) { + $result = \call_user_func_array($listener, $arguments); - if (false === $result) { + if ($result === false) { return false; } } + } else { + $listeners = $this->listeners($eventName); $counter = \count($listeners); foreach ($listeners as $listener) { - --$counter; + + $counter--; $result = \call_user_func_array($listener, $arguments); - if (false === $result) { + if ($result === false) { return false; } if ($counter > 0) { - if (!$continueCallBack()) { - break; - } + if (!$continueCallBack()) break; } + } + } return true; + + } /** @@ -121,27 +133,34 @@ trait WildcardEmitterTrait * * @return callable[] */ - public function listeners(string $eventName): array - { + function listeners(string $eventName) : array { + if (!\array_key_exists($eventName, $this->listenerIndex)) { + // Create a new index. $listeners = []; $listenersPriority = []; - if (isset($this->listeners[$eventName])) { - foreach ($this->listeners[$eventName] as $listener) { - $listenersPriority[] = $listener[0]; - $listeners[] = $listener[1]; - } + if (isset($this->listeners[$eventName])) foreach ($this->listeners[$eventName] as $listener) { + + $listenersPriority[] = $listener[0]; + $listeners[] = $listener[1]; + } foreach ($this->wildcardListeners as $wcEvent => $wcListeners) { + // Wildcard match if (\substr($eventName, 0, \strlen($wcEvent)) === $wcEvent) { + foreach ($wcListeners as $listener) { + $listenersPriority[] = $listener[0]; $listeners[] = $listener[1]; + } + } + } // Sorting by priority @@ -149,9 +168,11 @@ trait WildcardEmitterTrait // Creating index $this->listenerIndex[$eventName] = $listeners; + } return $this->listenerIndex[$eventName]; + } /** @@ -160,14 +181,14 @@ trait WildcardEmitterTrait * If the listener could not be found, this method will return false. If it * was removed it will return true. */ - public function removeListener(string $eventName, callable $listener): bool - { - // If it ends with a wildcard, we use the wildcardListeners array - if ('*' === $eventName[\strlen($eventName) - 1]) { + function removeListener(string $eventName, callable $listener) : bool { + + // If it ends with a wildcard, we use the wildcardListeners array + if ($eventName[\strlen($eventName) - 1] === '*') { $eventName = \substr($eventName, 0, -1); - $listeners = &$this->wildcardListeners; + $listeners = & $this->wildcardListeners; } else { - $listeners = &$this->listeners; + $listeners = & $this->listeners; } if (!isset($listeners[$eventName])) { @@ -175,17 +196,21 @@ trait WildcardEmitterTrait } foreach ($listeners[$eventName] as $index => $check) { + if ($check[1] === $listener) { + // Remove listener unset($listeners[$eventName][$index]); // Reset index $this->listenerIndex = []; - return true; + } + } return false; + } /** @@ -194,32 +219,38 @@ trait WildcardEmitterTrait * If the eventName argument is specified, all listeners for that event are * removed. If it is not specified, every listener for every event is * removed. + * + * @return void */ - public function removeAllListeners(string $eventName = null) - { + function removeAllListeners(string $eventName = null) { + if (\is_null($eventName)) { $this->listeners = []; $this->wildcardListeners = []; + } else { - if ('*' === $eventName[\strlen($eventName) - 1]) { + + if ($eventName[\strlen($eventName) - 1] === '*') { // Wildcard event unset($this->wildcardListeners[\substr($eventName, 0, -1)]); } else { unset($this->listeners[$eventName]); } + } // Reset index $this->listenerIndex = []; + } /** - * The list of listeners. + * The list of listeners */ protected $listeners = []; /** - * The list of "wildcard listeners". + * The list of "wildcard listeners". */ protected $wildcardListeners = []; diff --git a/vendor/sabre/event/lib/coroutine.php b/vendor/sabre/event/lib/coroutine.php index a6a2baf41..750e8ab52 100644 --- a/vendor/sabre/event/lib/coroutine.php +++ b/vendor/sabre/event/lib/coroutine.php @@ -1,6 +1,4 @@ -<?php - -declare(strict_types=1); +<?php declare (strict_types=1); namespace Sabre\Event; @@ -43,13 +41,12 @@ use Throwable; * }); * * @return \Sabre\Event\Promise - * * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -function coroutine(callable $gen): Promise -{ +function coroutine(callable $gen) : Promise { + $generator = $gen(); if (!$generator instanceof Generator) { throw new \InvalidArgumentException('You must pass a generator function'); @@ -62,20 +59,22 @@ function coroutine(callable $gen): Promise * So tempted to use the mythical y-combinator here, but it's not needed in * PHP. */ - $advanceGenerator = function () use (&$advanceGenerator, $generator, $promise) { + $advanceGenerator = function() use (&$advanceGenerator, $generator, $promise, &$lastYieldResult) { + while ($generator->valid()) { + $yieldedValue = $generator->current(); if ($yieldedValue instanceof Promise) { $yieldedValue->then( - function ($value) use ($generator, &$advanceGenerator) { + function($value) use ($generator, &$advanceGenerator, &$lastYieldResult) { $generator->send($value); $advanceGenerator(); }, - function (Throwable $reason) use ($generator, $advanceGenerator) { + function(Throwable $reason) use ($generator, $advanceGenerator) { $generator->throw($reason); $advanceGenerator(); } - )->otherwise(function (Throwable $reason) use ($promise) { + )->otherwise(function(Throwable $reason) use ($promise) { // This error handler would be called, if something in the // generator throws an exception, and it's not caught // locally. @@ -88,25 +87,31 @@ function coroutine(callable $gen): Promise // If the value was not a promise, we'll just let it pass through. $generator->send($yieldedValue); } + } // If the generator is at the end, and we didn't run into an exception, // We're grabbing the "return" value and fulfilling our top-level // promise with its value. - if (!$generator->valid() && Promise::PENDING === $promise->state) { - $returnValue = $generator->getReturn(); - - // The return value is a promise. - if ($returnValue instanceof Promise) { - $returnValue->then(function ($value) use ($promise) { - $promise->fulfill($value); - }, function (Throwable $reason) use ($promise) { - $promise->reject($reason); - }); - } else { - $promise->fulfill($returnValue); - } + if (!$generator->valid() && $promise->state === Promise::PENDING) { + $returnValue = $generator->getReturn(); + + // The return value is a promise. + if ($returnValue instanceof Promise) { + $returnValue->then(function($value) use ($promise) { + $promise->fulfill($value); + }, function(Throwable $reason) { + $promise->reject($reason); + }); + } else { + + $promise->fulfill($returnValue); + + } + + } + }; try { @@ -116,4 +121,5 @@ function coroutine(callable $gen): Promise } return $promise; + } diff --git a/vendor/sabre/event/phpunit.xml.dist b/vendor/sabre/event/phpunit.xml.dist new file mode 100644 index 000000000..ccd59be9c --- /dev/null +++ b/vendor/sabre/event/phpunit.xml.dist @@ -0,0 +1,18 @@ +<phpunit + colors="true" + bootstrap="vendor/autoload.php" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + strict="true" + > + <testsuite name="sabre-event"> + <directory>tests/</directory> + </testsuite> + + <filter> + <whitelist addUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">./lib/</directory> + </whitelist> + </filter> +</phpunit> diff --git a/vendor/sabre/http/.gitignore b/vendor/sabre/http/.gitignore index d291af69a..5f85ecc1b 100644 --- a/vendor/sabre/http/.gitignore +++ b/vendor/sabre/http/.gitignore @@ -5,19 +5,14 @@ composer.lock # Tests tests/cov/ -# phpunit cache -.phpunit.result.cache - # Composer binaries bin/phpunit* bin/phpcs* bin/php-cs-fixer* -bin/phpstan -bin/phpstan.phar +bin/sabre-cs-fixer* # Vim .*.swp # development stuff -/.idea .php_cs.cache diff --git a/vendor/sabre/http/.php_cs.dist b/vendor/sabre/http/.php_cs.dist index c5c78a971..8d61ee259 100644 --- a/vendor/sabre/http/.php_cs.dist +++ b/vendor/sabre/http/.php_cs.dist @@ -6,7 +6,7 @@ $config->getFinder() ->in(__DIR__); $config->setRules([ '@PSR1' => true, - '@Symfony' => true + '@Symfony' =>true ]); return $config;
\ No newline at end of file diff --git a/vendor/sabre/http/.travis.yml b/vendor/sabre/http/.travis.yml index daa24bff5..3b85d5f39 100644 --- a/vendor/sabre/http/.travis.yml +++ b/vendor/sabre/http/.travis.yml @@ -1,10 +1,11 @@ language: php sudo: required php: + - 7.0 - 7.1 - 7.2 - 7.3 - - 7.4 + - 7.4snapshot env: global: @@ -25,7 +26,7 @@ cache: - $HOME/.composer/cache install: - - if [ $RUN_PHPSTAN == "TRUE" ]; then composer require --dev phpstan/phpstan:^0.12; fi + - if [ $RUN_PHPSTAN == "TRUE" ]; then composer require --dev phpstan/phpstan; fi before_script: - composer update --prefer-source $PREFER_LOWEST @@ -33,7 +34,6 @@ before_script: - sudo $PHP_BIN -S localhost:80 -t $TRAVIS_BUILD_DIR/tests/www 2>/dev/null & script: - - if [ $RUN_PHPSTAN == "FALSE" ]; then ./bin/php-cs-fixer fix --dry-run --diff; fi - if [ $RUN_PHPSTAN == "FALSE" ]; then ./bin/phpunit --configuration tests/phpunit.xml $WITH_COVERAGE; fi - if [ $RUN_PHPSTAN == "TRUE" ]; then php ./bin/phpstan analyse -c phpstan.neon lib; fi diff --git a/vendor/sabre/http/CHANGELOG.md b/vendor/sabre/http/CHANGELOG.md index 716e09e68..e300aad09 100644 --- a/vendor/sabre/http/CHANGELOG.md +++ b/vendor/sabre/http/CHANGELOG.md @@ -1,13 +1,6 @@ ChangeLog ========= -5.1.0 (2020-01-31) -------------------------- - -* Added support for PHP 7.4, dropped support for PHP 7.0 (@phil-davis) -* Updated testsuite for phpunit8, added phpstan coverage (@phil-davis) -* Added autoload-dev for test classes (@C0pyR1ght) - 5.0.5 (2019-11-28) ------------------------- diff --git a/vendor/sabre/http/composer.json b/vendor/sabre/http/composer.json index 198cf2344..851a08730 100644 --- a/vendor/sabre/http/composer.json +++ b/vendor/sabre/http/composer.json @@ -5,7 +5,7 @@ "homepage" : "https://github.com/fruux/sabre-http", "license" : "BSD-3-Clause", "require" : { - "php" : "^7.1", + "php" : "^7.0", "ext-mbstring" : "*", "ext-ctype" : "*", "ext-curl" : "*", @@ -13,8 +13,7 @@ "sabre/uri" : "^2.0" }, "require-dev" : { - "friendsofphp/php-cs-fixer": "~2.16.1", - "phpunit/phpunit" : "^7.0 || ^8.0" + "phpunit/phpunit" : "^6.0 || ^7.0" }, "suggest" : { "ext-curl" : " to make http requests with the Client class" @@ -39,11 +38,6 @@ "Sabre\\HTTP\\" : "lib/" } }, - "autoload-dev" : { - "psr-4" : { - "Sabre\\HTTP\\" : "tests/HTTP" - } - }, "config" : { "bin-dir" : "bin/" } diff --git a/vendor/sabre/http/lib/Client.php b/vendor/sabre/http/lib/Client.php index b79c564da..48862e7da 100644 --- a/vendor/sabre/http/lib/Client.php +++ b/vendor/sabre/http/lib/Client.php @@ -450,6 +450,8 @@ class Client extends EventEmitter * * http_code - HTTP status code, as an int. Only set if Only set if * status is STATUS_SUCCESS, or STATUS_HTTPERROR * + * @param array $headerLines + * @param string $body * @param resource $curlHandle */ protected function parseCurlResponse(array $headerLines, string $body, $curlHandle): array diff --git a/vendor/sabre/http/lib/Message.php b/vendor/sabre/http/lib/Message.php index 90153fda5..fc34f8d7f 100644 --- a/vendor/sabre/http/lib/Message.php +++ b/vendor/sabre/http/lib/Message.php @@ -283,6 +283,8 @@ abstract class Message implements MessageInterface /** * Returns the HTTP version. + * + * @return string */ public function getHttpVersion(): string { diff --git a/vendor/sabre/http/lib/MessageDecoratorTrait.php b/vendor/sabre/http/lib/MessageDecoratorTrait.php index 6f49dadfc..d5504ac78 100644 --- a/vendor/sabre/http/lib/MessageDecoratorTrait.php +++ b/vendor/sabre/http/lib/MessageDecoratorTrait.php @@ -180,6 +180,8 @@ trait MessageDecoratorTrait * The specified header name must be treated as case-insensitive. * This method should return true if the header was successfully deleted, * and false if the header did not exist. + * + * @return bool */ public function removeHeader(string $name): bool { diff --git a/vendor/sabre/http/lib/MessageInterface.php b/vendor/sabre/http/lib/MessageInterface.php index 8504f0f59..8070845d9 100644 --- a/vendor/sabre/http/lib/MessageInterface.php +++ b/vendor/sabre/http/lib/MessageInterface.php @@ -29,6 +29,8 @@ interface MessageInterface * * Note that because the underlying data may be based on a stream, this * method could only work correctly the first time. + * + * @return string */ public function getBodyAsString(): string; diff --git a/vendor/sabre/http/lib/ResponseDecorator.php b/vendor/sabre/http/lib/ResponseDecorator.php index 5f9fe7c65..289dba5cc 100644 --- a/vendor/sabre/http/lib/ResponseDecorator.php +++ b/vendor/sabre/http/lib/ResponseDecorator.php @@ -64,6 +64,8 @@ class ResponseDecorator implements ResponseInterface * Serializes the request object as a string. * * This is useful for debugging purposes. + * + * @return string */ public function __toString(): string { diff --git a/vendor/sabre/http/lib/Version.php b/vendor/sabre/http/lib/Version.php index 8946a46a6..655753acf 100644 --- a/vendor/sabre/http/lib/Version.php +++ b/vendor/sabre/http/lib/Version.php @@ -16,5 +16,5 @@ class Version /** * Full version number. */ - const VERSION = '5.1.0'; + const VERSION = '5.0.5'; } diff --git a/vendor/sabre/http/lib/functions.php b/vendor/sabre/http/lib/functions.php index a23840a1a..197a9e661 100644 --- a/vendor/sabre/http/lib/functions.php +++ b/vendor/sabre/http/lib/functions.php @@ -29,6 +29,8 @@ use InvalidArgumentException; * See: * http://tools.ietf.org/html/rfc7231#section-7.1.1.1 * + * @param string $dateString + * * @return bool|DateTime */ function parseDate(string $dateString) @@ -73,6 +75,10 @@ function parseDate(string $dateString) /** * Transforms a DateTime object to a valid HTTP/1.1 Date header value. + * + * @param DateTime $dateTime + * + * @return string */ function toDate(DateTime $dateTime): string { @@ -101,6 +107,7 @@ function toDate(DateTime $dateTime): string * implying that no accept header was sent. * * @param string|null $acceptHeaderValue + * @param array $availableOptions * * @return string|null */ @@ -211,6 +218,8 @@ function negotiateContentType($acceptHeaderValue, array $availableOptions) * uses them. * * @param string|string[] $input + * + * @return array */ function parsePrefer($input): array { @@ -294,7 +303,7 @@ function getHeaderValues($values, $values2 = null): array $values = array_merge($values, (array) $values2); } - $result = []; + $result = array(); foreach ($values as $l1) { foreach (explode(',', $l1) as $l2) { $result[] = trim($l2); @@ -311,6 +320,10 @@ function getHeaderValues($values, $values2 = null): array * 2. subtype * 3. quality * 4. parameters + * + * @param string $str + * + * @return array */ function parseMimeType(string $str): array { diff --git a/vendor/sabre/http/phpstan.neon b/vendor/sabre/http/phpstan.neon index 213da6dad..241663a72 100644 --- a/vendor/sabre/http/phpstan.neon +++ b/vendor/sabre/http/phpstan.neon @@ -1,2 +1,3 @@ parameters: level: 1 + bootstrap: %currentWorkingDirectory%/vendor/autoload.php diff --git a/vendor/sabre/uri/.gitignore b/vendor/sabre/uri/.gitignore index 4c8ac0855..b6fc3f896 100644 --- a/vendor/sabre/uri/.gitignore +++ b/vendor/sabre/uri/.gitignore @@ -2,16 +2,8 @@ vendor/ composer.lock -# Composer binaries -bin/phpunit -bin/phpstan -bin/phpstan.phar -bin/php-cs-fixer - # Tests tests/cov/ -tests/.phpunit.result.cache -coverage.xml # Composer binaries bin @@ -19,8 +11,5 @@ bin # Vim .*.swp -# IDEs -/.idea - # development stuff .php_cs.cache diff --git a/vendor/sabre/uri/.php_cs.dist b/vendor/sabre/uri/.php_cs.dist index c5c78a971..8d61ee259 100644 --- a/vendor/sabre/uri/.php_cs.dist +++ b/vendor/sabre/uri/.php_cs.dist @@ -6,7 +6,7 @@ $config->getFinder() ->in(__DIR__); $config->setRules([ '@PSR1' => true, - '@Symfony' => true + '@Symfony' =>true ]); return $config;
\ No newline at end of file diff --git a/vendor/sabre/uri/composer.json b/vendor/sabre/uri/composer.json index 29194c670..30f382937 100644 --- a/vendor/sabre/uri/composer.json +++ b/vendor/sabre/uri/composer.json @@ -9,7 +9,7 @@ "homepage": "http://sabre.io/uri/", "license": "BSD-3-Clause", "require": { - "php": "^7.1" + "php": ">=7" }, "authors": [ { @@ -37,8 +37,7 @@ } }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.16.1", - "phpunit/phpunit" : "^7 || ^8" + "phpunit/phpunit" : "^6" }, "config" : { "bin-dir" : "bin/" diff --git a/vendor/sabre/uri/lib/Version.php b/vendor/sabre/uri/lib/Version.php index ba7caf273..ad6c89867 100644 --- a/vendor/sabre/uri/lib/Version.php +++ b/vendor/sabre/uri/lib/Version.php @@ -16,5 +16,5 @@ class Version /** * Full version number. */ - const VERSION = '2.2.0'; + const VERSION = '2.1.3'; } diff --git a/vendor/sabre/uri/lib/functions.php b/vendor/sabre/uri/lib/functions.php index 329c862ee..161e684d7 100644 --- a/vendor/sabre/uri/lib/functions.php +++ b/vendor/sabre/uri/lib/functions.php @@ -18,6 +18,11 @@ namespace Sabre\Uri; * This function takes a basePath, which itself _may_ also be relative, and * then applies the relative path on top of it. * + * @param string $basePath + * @param string $newPath + * + * @return string + * * @throws InvalidUriException */ function resolve(string $basePath, string $newPath): string @@ -107,6 +112,10 @@ function resolve(string $basePath, string $newPath): string * * It will also change a %3a into a %3A. * + * @param string $uri + * + * @return string + * * @throws InvalidUriException */ function normalize(string $uri): string @@ -174,7 +183,9 @@ function normalize(string $uri): string * Unlike PHP's parse_url, it will also convert any non-ascii characters to * percent-encoded strings. PHP's parse_url corrupts these characters on OS X. * - * @return array<string, string> + * @param string $uri + * + * @return array * * @throws InvalidUriException */ @@ -214,7 +225,9 @@ function parse(string $uri): array * This function takes the components returned from PHP's parse_url, and uses * it to generate a new uri. * - * @param array<string, string> $parts + * @param array $parts + * + * @return string */ function build(array $parts): string { @@ -268,7 +281,9 @@ function build(array $parts): string * If there is no dirname, it will return an empty string. Any / appearing at * the end of the string is stripped off. * - * @return array<int, mixed> + * @param string $path + * + * @return array */ function split(string $path): array { @@ -290,7 +305,9 @@ function split(string $path): array * This function is only called if the main parse method fails. It's pretty * crude and probably slow, so the original parse_url is usually preferred. * - * @return array<string, mixed> + * @param string $uri + * + * @return array * * @throws InvalidUriException */ diff --git a/vendor/sabre/uri/phpstan.neon b/vendor/sabre/uri/phpstan.neon index 91375db8b..341d02818 100644 --- a/vendor/sabre/uri/phpstan.neon +++ b/vendor/sabre/uri/phpstan.neon @@ -1,2 +1,3 @@ parameters: level: 7 + bootstrap: %currentWorkingDirectory%/vendor/autoload.php diff --git a/vendor/sabre/vobject/.gitignore b/vendor/sabre/vobject/.gitignore index e9b0ed32f..f08b31359 100644 --- a/vendor/sabre/vobject/.gitignore +++ b/vendor/sabre/vobject/.gitignore @@ -3,22 +3,20 @@ vendor/ composer.lock tests/cov/ tests/temp -tests/.phpunit.result.cache #vim .*.swp #binaries bin/phpunit +bin/phpcs bin/php-cs-fixer -bin/phpstan -bin/phpstan.phar +bin/sabre-cs-fixer bin/hoa # Development stuff testdata/ .php_cs.cache -.idea # OS X .DS_Store diff --git a/vendor/sabre/vobject/.php_cs.dist b/vendor/sabre/vobject/.php_cs.dist index c5c78a971..8d61ee259 100644 --- a/vendor/sabre/vobject/.php_cs.dist +++ b/vendor/sabre/vobject/.php_cs.dist @@ -6,7 +6,7 @@ $config->getFinder() ->in(__DIR__); $config->setRules([ '@PSR1' => true, - '@Symfony' => true + '@Symfony' =>true ]); return $config;
\ No newline at end of file diff --git a/vendor/sabre/vobject/.travis.yml b/vendor/sabre/vobject/.travis.yml index 511119bbb..64b055bf1 100644 --- a/vendor/sabre/vobject/.travis.yml +++ b/vendor/sabre/vobject/.travis.yml @@ -1,24 +1,37 @@ language: php +sudo: required php: + - 5.5 + - 5.6 + - 7.0 - 7.1 - 7.2 - 7.3 - - 7.4 + - 7.4snapshot + +env: + global: + - RUN_PHPSTAN="FALSE" matrix: + include: + - name: 'PHPStan' + php: 7.2 + env: RUN_PHPSTAN="TRUE" fast_finish: true + allow_failures: + - php: 5.5 install: - - composer require --dev phpstan/phpstan:^0.12 + - if [ $RUN_PHPSTAN == "TRUE" ]; then wget https://github.com/phpstan/phpstan/releases/download/0.11.8/phpstan.phar; fi before_script: - composer install script: - - ./bin/php-cs-fixer fix lib/ --dry-run --diff - - php ./bin/phpstan.phar analyse -c phpstan.neon lib tests - - ./bin/phpunit --configuration tests/phpunit.xml --coverage-clover=coverage.xml - + - if [ $RUN_PHPSTAN == "FALSE" ]; then ./bin/phpunit --configuration tests/phpunit.xml --coverage-clover=coverage.xml; fi + - if [ $RUN_PHPSTAN == "TRUE" ]; then php phpstan.phar analyse -c phpstan.neon lib; fi + after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/sabre/vobject/CHANGELOG.md b/vendor/sabre/vobject/CHANGELOG.md index 5126e04f9..3f70f37db 100644 --- a/vendor/sabre/vobject/CHANGELOG.md +++ b/vendor/sabre/vobject/CHANGELOG.md @@ -1,19 +1,6 @@ ChangeLog ========= -4.3.0 (2020-01-31) ------------------- - -* Added support for PHP 7.4, dropped support for PHP 7.0 (@phil-davis) -* #487: Added phpstan coverage, updated testsuite for phpunit8 (@phil-davis, @JeroenVanOort) -* #495: refactored maps to use ::class notation (@JeroenVanOort) - -4.2.2 (2020-01-14) ------------------- - -* #465: Add TZ in iTip REPLY iTip messages -* #486: Add PHONE-NUMBER value type (used for TEL in vCard 3.0) - 4.2.1 (2019-12-18) ------------------ diff --git a/vendor/sabre/vobject/composer.json b/vendor/sabre/vobject/composer.json index 9e522f8a4..ad026879e 100644 --- a/vendor/sabre/vobject/composer.json +++ b/vendor/sabre/vobject/composer.json @@ -32,13 +32,12 @@ "homepage" : "http://sabre.io/vobject/", "license" : "BSD-3-Clause", "require" : { - "php" : "^7.1", + "php" : ">=5.5", "ext-mbstring" : "*", - "sabre/xml" : "^2.1" + "sabre/xml" : ">=1.5 <3.0" }, "require-dev" : { - "friendsofphp/php-cs-fixer": "~2.16.1", - "phpunit/phpunit" : "^7 || ^8" + "phpunit/phpunit" : "> 4.8.35, <6.0.0" }, "suggest" : { "hoa/bench" : "If you would like to run the benchmark scripts" @@ -72,11 +71,6 @@ "Sabre\\VObject\\" : "lib/" } }, - "autoload-dev" : { - "psr-4" : { - "Sabre\\VObject\\" : "tests/VObject" - } - }, "bin" : [ "bin/vobject", "bin/generate_vcards" diff --git a/vendor/sabre/vobject/lib/Cli.php b/vendor/sabre/vobject/lib/Cli.php index f3e419b15..8350719a4 100644 --- a/vendor/sabre/vobject/lib/Cli.php +++ b/vendor/sabre/vobject/lib/Cli.php @@ -29,7 +29,7 @@ class Cli protected $showHelp = false; /** - * Whether to spit out 'mimedir' or 'json' format. + * Wether to spit out 'mimedir' or 'json' format. * * @var string */ @@ -312,6 +312,8 @@ HELP /** * Validates a VObject file. * + * @param Component $vObj + * * @return int */ protected function validate(Component $vObj) @@ -352,6 +354,8 @@ HELP /** * Repairs a VObject file. * + * @param Component $vObj + * * @return int */ protected function repair(Component $vObj) @@ -512,7 +516,7 @@ HELP * * A higher score means the item will be lower in the list. * To avoid score collisions, each "score category" has a reasonable - * space to accommodate elements. The $key is added to the $score to + * space to accomodate elements. The $key is added to the $score to * preserve the original relative order of elements. * * @param int $key @@ -578,6 +582,8 @@ HELP /** * Colorizes a property. + * + * @param Property $property */ protected function serializeProperty(Property $property) { @@ -636,6 +642,8 @@ HELP /** * Parses the list of arguments. + * + * @param array $argv */ protected function parseArguments(array $argv) { diff --git a/vendor/sabre/vobject/lib/Component.php b/vendor/sabre/vobject/lib/Component.php index 58594aec1..a33b7d577 100644 --- a/vendor/sabre/vobject/lib/Component.php +++ b/vendor/sabre/vobject/lib/Component.php @@ -43,8 +43,10 @@ class Component extends Node * an iCalendar object, this may be something like CALSCALE:GREGORIAN. To * ensure that this does not happen, set $defaults to false. * - * @param string $name such as VCALENDAR, VEVENT - * @param bool $defaults + * @param Document $root + * @param string $name such as VCALENDAR, VEVENT + * @param array $children + * @param bool $defaults */ public function __construct(Document $root, $name, array $children = [], $defaults = true) { @@ -274,7 +276,7 @@ class Component extends Node * * A higher score means the item will be lower in the list. * To avoid score collisions, each "score category" has a reasonable - * space to accommodate elements. The $key is added to the $score to + * space to accomodate elements. The $key is added to the $score to * preserve the original relative order of elements. * * @param int $key diff --git a/vendor/sabre/vobject/lib/Component/VAvailability.php b/vendor/sabre/vobject/lib/Component/VAvailability.php index 04ec38dcb..6f3e7f13c 100644 --- a/vendor/sabre/vobject/lib/Component/VAvailability.php +++ b/vendor/sabre/vobject/lib/Component/VAvailability.php @@ -26,6 +26,9 @@ class VAvailability extends VObject\Component * * https://tools.ietf.org/html/draft-daboo-calendar-availability-05#section-3.1 * + * @param DateTimeInterface $start + * @param DateTimeInterface $end + * * @return bool */ public function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) diff --git a/vendor/sabre/vobject/lib/Component/VCalendar.php b/vendor/sabre/vobject/lib/Component/VCalendar.php index 40e09a1c0..e21ae077a 100644 --- a/vendor/sabre/vobject/lib/Component/VCalendar.php +++ b/vendor/sabre/vobject/lib/Component/VCalendar.php @@ -37,15 +37,15 @@ class VCalendar extends VObject\Document * @var array */ public static $componentMap = [ - 'VCALENDAR' => self::class, - 'VALARM' => VAlarm::class, - 'VEVENT' => VEvent::class, - 'VFREEBUSY' => VFreeBusy::class, - 'VAVAILABILITY' => VAvailability::class, - 'AVAILABLE' => Available::class, - 'VJOURNAL' => VJournal::class, - 'VTIMEZONE' => VTimeZone::class, - 'VTODO' => VTodo::class, + 'VCALENDAR' => 'Sabre\\VObject\\Component\\VCalendar', + 'VALARM' => 'Sabre\\VObject\\Component\\VAlarm', + 'VEVENT' => 'Sabre\\VObject\\Component\\VEvent', + 'VFREEBUSY' => 'Sabre\\VObject\\Component\\VFreeBusy', + 'VAVAILABILITY' => 'Sabre\\VObject\\Component\\VAvailability', + 'AVAILABLE' => 'Sabre\\VObject\\Component\\Available', + 'VJOURNAL' => 'Sabre\\VObject\\Component\\VJournal', + 'VTIMEZONE' => 'Sabre\\VObject\\Component\\VTimeZone', + 'VTODO' => 'Sabre\\VObject\\Component\\VTodo', ]; /** @@ -54,21 +54,21 @@ class VCalendar extends VObject\Document * @var array */ public static $valueMap = [ - 'BINARY' => VObject\Property\Binary::class, - 'BOOLEAN' => VObject\Property\Boolean::class, - 'CAL-ADDRESS' => VObject\Property\ICalendar\CalAddress::class, - 'DATE' => VObject\Property\ICalendar\Date::class, - 'DATE-TIME' => VObject\Property\ICalendar\DateTime::class, - 'DURATION' => VObject\Property\ICalendar\Duration::class, - 'FLOAT' => VObject\Property\FloatValue::class, - 'INTEGER' => VObject\Property\IntegerValue::class, - 'PERIOD' => VObject\Property\ICalendar\Period::class, - 'RECUR' => VObject\Property\ICalendar\Recur::class, - 'TEXT' => VObject\Property\Text::class, - 'TIME' => VObject\Property\Time::class, - 'UNKNOWN' => VObject\Property\Unknown::class, // jCard / jCal-only. - 'URI' => VObject\Property\Uri::class, - 'UTC-OFFSET' => VObject\Property\UtcOffset::class, + 'BINARY' => 'Sabre\\VObject\\Property\\Binary', + 'BOOLEAN' => 'Sabre\\VObject\\Property\\Boolean', + 'CAL-ADDRESS' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress', + 'DATE' => 'Sabre\\VObject\\Property\\ICalendar\\Date', + 'DATE-TIME' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime', + 'DURATION' => 'Sabre\\VObject\\Property\\ICalendar\\Duration', + 'FLOAT' => 'Sabre\\VObject\\Property\\FloatValue', + 'INTEGER' => 'Sabre\\VObject\\Property\\IntegerValue', + 'PERIOD' => 'Sabre\\VObject\\Property\\ICalendar\\Period', + 'RECUR' => 'Sabre\\VObject\\Property\\ICalendar\\Recur', + 'TEXT' => 'Sabre\\VObject\\Property\\Text', + 'TIME' => 'Sabre\\VObject\\Property\\Time', + 'UNKNOWN' => 'Sabre\\VObject\\Property\\Unknown', // jCard / jCal-only. + 'URI' => 'Sabre\\VObject\\Property\\Uri', + 'UTC-OFFSET' => 'Sabre\\VObject\\Property\\UtcOffset', ]; /** @@ -78,78 +78,78 @@ class VCalendar extends VObject\Document */ public static $propertyMap = [ // Calendar properties - 'CALSCALE' => VObject\Property\FlatText::class, - 'METHOD' => VObject\Property\FlatText::class, - 'PRODID' => VObject\Property\FlatText::class, - 'VERSION' => VObject\Property\FlatText::class, + 'CALSCALE' => 'Sabre\\VObject\\Property\\FlatText', + 'METHOD' => 'Sabre\\VObject\\Property\\FlatText', + 'PRODID' => 'Sabre\\VObject\\Property\\FlatText', + 'VERSION' => 'Sabre\\VObject\\Property\\FlatText', // Component properties - 'ATTACH' => VObject\Property\Uri::class, - 'CATEGORIES' => VObject\Property\Text::class, - 'CLASS' => VObject\Property\FlatText::class, - 'COMMENT' => VObject\Property\FlatText::class, - 'DESCRIPTION' => VObject\Property\FlatText::class, - 'GEO' => VObject\Property\FloatValue::class, - 'LOCATION' => VObject\Property\FlatText::class, - 'PERCENT-COMPLETE' => VObject\Property\IntegerValue::class, - 'PRIORITY' => VObject\Property\IntegerValue::class, - 'RESOURCES' => VObject\Property\Text::class, - 'STATUS' => VObject\Property\FlatText::class, - 'SUMMARY' => VObject\Property\FlatText::class, + 'ATTACH' => 'Sabre\\VObject\\Property\\Uri', + 'CATEGORIES' => 'Sabre\\VObject\\Property\\Text', + 'CLASS' => 'Sabre\\VObject\\Property\\FlatText', + 'COMMENT' => 'Sabre\\VObject\\Property\\FlatText', + 'DESCRIPTION' => 'Sabre\\VObject\\Property\\FlatText', + 'GEO' => 'Sabre\\VObject\\Property\\FloatValue', + 'LOCATION' => 'Sabre\\VObject\\Property\\FlatText', + 'PERCENT-COMPLETE' => 'Sabre\\VObject\\Property\\IntegerValue', + 'PRIORITY' => 'Sabre\\VObject\\Property\\IntegerValue', + 'RESOURCES' => 'Sabre\\VObject\\Property\\Text', + 'STATUS' => 'Sabre\\VObject\\Property\\FlatText', + 'SUMMARY' => 'Sabre\\VObject\\Property\\FlatText', // Date and Time Component Properties - 'COMPLETED' => VObject\Property\ICalendar\DateTime::class, - 'DTEND' => VObject\Property\ICalendar\DateTime::class, - 'DUE' => VObject\Property\ICalendar\DateTime::class, - 'DTSTART' => VObject\Property\ICalendar\DateTime::class, - 'DURATION' => VObject\Property\ICalendar\Duration::class, - 'FREEBUSY' => VObject\Property\ICalendar\Period::class, - 'TRANSP' => VObject\Property\FlatText::class, + 'COMPLETED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime', + 'DTEND' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime', + 'DUE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime', + 'DTSTART' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime', + 'DURATION' => 'Sabre\\VObject\\Property\\ICalendar\\Duration', + 'FREEBUSY' => 'Sabre\\VObject\\Property\\ICalendar\\Period', + 'TRANSP' => 'Sabre\\VObject\\Property\\FlatText', // Time Zone Component Properties - 'TZID' => VObject\Property\FlatText::class, - 'TZNAME' => VObject\Property\FlatText::class, - 'TZOFFSETFROM' => VObject\Property\UtcOffset::class, - 'TZOFFSETTO' => VObject\Property\UtcOffset::class, - 'TZURL' => VObject\Property\Uri::class, + 'TZID' => 'Sabre\\VObject\\Property\\FlatText', + 'TZNAME' => 'Sabre\\VObject\\Property\\FlatText', + 'TZOFFSETFROM' => 'Sabre\\VObject\\Property\\UtcOffset', + 'TZOFFSETTO' => 'Sabre\\VObject\\Property\\UtcOffset', + 'TZURL' => 'Sabre\\VObject\\Property\\Uri', // Relationship Component Properties - 'ATTENDEE' => VObject\Property\ICalendar\CalAddress::class, - 'CONTACT' => VObject\Property\FlatText::class, - 'ORGANIZER' => VObject\Property\ICalendar\CalAddress::class, - 'RECURRENCE-ID' => VObject\Property\ICalendar\DateTime::class, - 'RELATED-TO' => VObject\Property\FlatText::class, - 'URL' => VObject\Property\Uri::class, - 'UID' => VObject\Property\FlatText::class, + 'ATTENDEE' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress', + 'CONTACT' => 'Sabre\\VObject\\Property\\FlatText', + 'ORGANIZER' => 'Sabre\\VObject\\Property\\ICalendar\\CalAddress', + 'RECURRENCE-ID' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime', + 'RELATED-TO' => 'Sabre\\VObject\\Property\\FlatText', + 'URL' => 'Sabre\\VObject\\Property\\Uri', + 'UID' => 'Sabre\\VObject\\Property\\FlatText', // Recurrence Component Properties - 'EXDATE' => VObject\Property\ICalendar\DateTime::class, - 'RDATE' => VObject\Property\ICalendar\DateTime::class, - 'RRULE' => VObject\Property\ICalendar\Recur::class, - 'EXRULE' => VObject\Property\ICalendar\Recur::class, // Deprecated since rfc5545 + 'EXDATE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime', + 'RDATE' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime', + 'RRULE' => 'Sabre\\VObject\\Property\\ICalendar\\Recur', + 'EXRULE' => 'Sabre\\VObject\\Property\\ICalendar\\Recur', // Deprecated since rfc5545 // Alarm Component Properties - 'ACTION' => VObject\Property\FlatText::class, - 'REPEAT' => VObject\Property\IntegerValue::class, - 'TRIGGER' => VObject\Property\ICalendar\Duration::class, + 'ACTION' => 'Sabre\\VObject\\Property\\FlatText', + 'REPEAT' => 'Sabre\\VObject\\Property\\IntegerValue', + 'TRIGGER' => 'Sabre\\VObject\\Property\\ICalendar\\Duration', // Change Management Component Properties - 'CREATED' => VObject\Property\ICalendar\DateTime::class, - 'DTSTAMP' => VObject\Property\ICalendar\DateTime::class, - 'LAST-MODIFIED' => VObject\Property\ICalendar\DateTime::class, - 'SEQUENCE' => VObject\Property\IntegerValue::class, + 'CREATED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime', + 'DTSTAMP' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime', + 'LAST-MODIFIED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime', + 'SEQUENCE' => 'Sabre\\VObject\\Property\\IntegerValue', // Request Status - 'REQUEST-STATUS' => VObject\Property\Text::class, + 'REQUEST-STATUS' => 'Sabre\\VObject\\Property\\Text', // Additions from draft-daboo-valarm-extensions-04 - 'ALARM-AGENT' => VObject\Property\Text::class, - 'ACKNOWLEDGED' => VObject\Property\ICalendar\DateTime::class, - 'PROXIMITY' => VObject\Property\Text::class, - 'DEFAULT-ALARM' => VObject\Property\Boolean::class, + 'ALARM-AGENT' => 'Sabre\\VObject\\Property\\Text', + 'ACKNOWLEDGED' => 'Sabre\\VObject\\Property\\ICalendar\\DateTime', + 'PROXIMITY' => 'Sabre\\VObject\\Property\\Text', + 'DEFAULT-ALARM' => 'Sabre\\VObject\\Property\\Boolean', // Additions from draft-daboo-calendar-availability-05 - 'BUSYTYPE' => VObject\Property\Text::class, + 'BUSYTYPE' => 'Sabre\\VObject\\Property\\Text', ]; /** @@ -276,8 +276,10 @@ class VCalendar extends VObject\Document * In addition, this method will cause timezone information to be stripped, * and normalized to UTC. * - * @param DateTimeZone $timeZone reference timezone for floating dates and - * times + * @param DateTimeInterface $start + * @param DateTimeInterface $end + * @param DateTimeZone $timeZone reference timezone for floating dates and + * times * * @return VCalendar */ diff --git a/vendor/sabre/vobject/lib/Component/VCard.php b/vendor/sabre/vobject/lib/Component/VCard.php index 51321949f..860e45ffa 100644 --- a/vendor/sabre/vobject/lib/Component/VCard.php +++ b/vendor/sabre/vobject/lib/Component/VCard.php @@ -39,7 +39,7 @@ class VCard extends VObject\Document * @var array */ public static $componentMap = [ - 'VCARD' => VCard::class, + 'VCARD' => 'Sabre\\VObject\\Component\\VCard', ]; /** @@ -48,23 +48,22 @@ class VCard extends VObject\Document * @var array */ public static $valueMap = [ - 'BINARY' => VObject\Property\Binary::class, - 'BOOLEAN' => VObject\Property\Boolean::class, - 'CONTENT-ID' => VObject\Property\FlatText::class, // vCard 2.1 only - 'DATE' => VObject\Property\VCard\Date::class, - 'DATE-TIME' => VObject\Property\VCard\DateTime::class, - 'DATE-AND-OR-TIME' => VObject\Property\VCard\DateAndOrTime::class, // vCard only - 'FLOAT' => VObject\Property\FloatValue::class, - 'INTEGER' => VObject\Property\IntegerValue::class, - 'LANGUAGE-TAG' => VObject\Property\VCard\LanguageTag::class, - 'PHONE-NUMBER' => VObject\Property\VCard\PhoneNumber::class, // vCard 3.0 only - 'TIMESTAMP' => VObject\Property\VCard\TimeStamp::class, - 'TEXT' => VObject\Property\Text::class, - 'TIME' => VObject\Property\Time::class, - 'UNKNOWN' => VObject\Property\Unknown::class, // jCard / jCal-only. - 'URI' => VObject\Property\Uri::class, - 'URL' => VObject\Property\Uri::class, // vCard 2.1 only - 'UTC-OFFSET' => VObject\Property\UtcOffset::class, + 'BINARY' => 'Sabre\\VObject\\Property\\Binary', + 'BOOLEAN' => 'Sabre\\VObject\\Property\\Boolean', + 'CONTENT-ID' => 'Sabre\\VObject\\Property\\FlatText', // vCard 2.1 only + 'DATE' => 'Sabre\\VObject\\Property\\VCard\\Date', + 'DATE-TIME' => 'Sabre\\VObject\\Property\\VCard\\DateTime', + 'DATE-AND-OR-TIME' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime', // vCard only + 'FLOAT' => 'Sabre\\VObject\\Property\\FloatValue', + 'INTEGER' => 'Sabre\\VObject\\Property\\IntegerValue', + 'LANGUAGE-TAG' => 'Sabre\\VObject\\Property\\VCard\\LanguageTag', + 'TIMESTAMP' => 'Sabre\\VObject\\Property\\VCard\\TimeStamp', + 'TEXT' => 'Sabre\\VObject\\Property\\Text', + 'TIME' => 'Sabre\\VObject\\Property\\Time', + 'UNKNOWN' => 'Sabre\\VObject\\Property\\Unknown', // jCard / jCal-only. + 'URI' => 'Sabre\\VObject\\Property\\Uri', + 'URL' => 'Sabre\\VObject\\Property\\Uri', // vCard 2.1 only + 'UTC-OFFSET' => 'Sabre\\VObject\\Property\\UtcOffset', ]; /** @@ -74,68 +73,68 @@ class VCard extends VObject\Document */ public static $propertyMap = [ // vCard 2.1 properties and up - 'N' => VObject\Property\Text::class, - 'FN' => VObject\Property\FlatText::class, - 'PHOTO' => VObject\Property\Binary::class, - 'BDAY' => VObject\Property\VCard\DateAndOrTime::class, - 'ADR' => VObject\Property\Text::class, - 'LABEL' => VObject\Property\FlatText::class, // Removed in vCard 4.0 - 'TEL' => VObject\Property\FlatText::class, - 'EMAIL' => VObject\Property\FlatText::class, - 'MAILER' => VObject\Property\FlatText::class, // Removed in vCard 4.0 - 'GEO' => VObject\Property\FlatText::class, - 'TITLE' => VObject\Property\FlatText::class, - 'ROLE' => VObject\Property\FlatText::class, - 'LOGO' => VObject\Property\Binary::class, + 'N' => 'Sabre\\VObject\\Property\\Text', + 'FN' => 'Sabre\\VObject\\Property\\FlatText', + 'PHOTO' => 'Sabre\\VObject\\Property\\Binary', + 'BDAY' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime', + 'ADR' => 'Sabre\\VObject\\Property\\Text', + 'LABEL' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0 + 'TEL' => 'Sabre\\VObject\\Property\\FlatText', + 'EMAIL' => 'Sabre\\VObject\\Property\\FlatText', + 'MAILER' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0 + 'GEO' => 'Sabre\\VObject\\Property\\FlatText', + 'TITLE' => 'Sabre\\VObject\\Property\\FlatText', + 'ROLE' => 'Sabre\\VObject\\Property\\FlatText', + 'LOGO' => 'Sabre\\VObject\\Property\\Binary', // 'AGENT' => 'Sabre\\VObject\\Property\\', // Todo: is an embedded vCard. Probably rare, so // not supported at the moment - 'ORG' => VObject\Property\Text::class, - 'NOTE' => VObject\Property\FlatText::class, - 'REV' => VObject\Property\VCard\TimeStamp::class, - 'SOUND' => VObject\Property\FlatText::class, - 'URL' => VObject\Property\Uri::class, - 'UID' => VObject\Property\FlatText::class, - 'VERSION' => VObject\Property\FlatText::class, - 'KEY' => VObject\Property\FlatText::class, - 'TZ' => VObject\Property\Text::class, + 'ORG' => 'Sabre\\VObject\\Property\\Text', + 'NOTE' => 'Sabre\\VObject\\Property\\FlatText', + 'REV' => 'Sabre\\VObject\\Property\\VCard\\TimeStamp', + 'SOUND' => 'Sabre\\VObject\\Property\\FlatText', + 'URL' => 'Sabre\\VObject\\Property\\Uri', + 'UID' => 'Sabre\\VObject\\Property\\FlatText', + 'VERSION' => 'Sabre\\VObject\\Property\\FlatText', + 'KEY' => 'Sabre\\VObject\\Property\\FlatText', + 'TZ' => 'Sabre\\VObject\\Property\\Text', // vCard 3.0 properties - 'CATEGORIES' => VObject\Property\Text::class, - 'SORT-STRING' => VObject\Property\FlatText::class, - 'PRODID' => VObject\Property\FlatText::class, - 'NICKNAME' => VObject\Property\Text::class, - 'CLASS' => VObject\Property\FlatText::class, // Removed in vCard 4.0 + 'CATEGORIES' => 'Sabre\\VObject\\Property\\Text', + 'SORT-STRING' => 'Sabre\\VObject\\Property\\FlatText', + 'PRODID' => 'Sabre\\VObject\\Property\\FlatText', + 'NICKNAME' => 'Sabre\\VObject\\Property\\Text', + 'CLASS' => 'Sabre\\VObject\\Property\\FlatText', // Removed in vCard 4.0 // rfc2739 properties - 'FBURL' => VObject\Property\Uri::class, - 'CAPURI' => VObject\Property\Uri::class, - 'CALURI' => VObject\Property\Uri::class, - 'CALADRURI' => VObject\Property\Uri::class, + 'FBURL' => 'Sabre\\VObject\\Property\\Uri', + 'CAPURI' => 'Sabre\\VObject\\Property\\Uri', + 'CALURI' => 'Sabre\\VObject\\Property\\Uri', + 'CALADRURI' => 'Sabre\\VObject\\Property\\Uri', // rfc4770 properties - 'IMPP' => VObject\Property\Uri::class, + 'IMPP' => 'Sabre\\VObject\\Property\\Uri', // vCard 4.0 properties - 'SOURCE' => VObject\Property\Uri::class, - 'XML' => VObject\Property\FlatText::class, - 'ANNIVERSARY' => VObject\Property\VCard\DateAndOrTime::class, - 'CLIENTPIDMAP' => VObject\Property\Text::class, - 'LANG' => VObject\Property\VCard\LanguageTag::class, - 'GENDER' => VObject\Property\Text::class, - 'KIND' => VObject\Property\FlatText::class, - 'MEMBER' => VObject\Property\Uri::class, - 'RELATED' => VObject\Property\Uri::class, + 'SOURCE' => 'Sabre\\VObject\\Property\\Uri', + 'XML' => 'Sabre\\VObject\\Property\\FlatText', + 'ANNIVERSARY' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime', + 'CLIENTPIDMAP' => 'Sabre\\VObject\\Property\\Text', + 'LANG' => 'Sabre\\VObject\\Property\\VCard\\LanguageTag', + 'GENDER' => 'Sabre\\VObject\\Property\\Text', + 'KIND' => 'Sabre\\VObject\\Property\\FlatText', + 'MEMBER' => 'Sabre\\VObject\\Property\\Uri', + 'RELATED' => 'Sabre\\VObject\\Property\\Uri', // rfc6474 properties - 'BIRTHPLACE' => VObject\Property\FlatText::class, - 'DEATHPLACE' => VObject\Property\FlatText::class, - 'DEATHDATE' => VObject\Property\VCard\DateAndOrTime::class, + 'BIRTHPLACE' => 'Sabre\\VObject\\Property\\FlatText', + 'DEATHPLACE' => 'Sabre\\VObject\\Property\\FlatText', + 'DEATHDATE' => 'Sabre\\VObject\\Property\\VCard\\DateAndOrTime', // rfc6715 properties - 'EXPERTISE' => VObject\Property\FlatText::class, - 'HOBBY' => VObject\Property\FlatText::class, - 'INTEREST' => VObject\Property\FlatText::class, - 'ORG-DIRECTORY' => VObject\Property\FlatText::class, + 'EXPERTISE' => 'Sabre\\VObject\\Property\\FlatText', + 'HOBBY' => 'Sabre\\VObject\\Property\\FlatText', + 'INTEREST' => 'Sabre\\VObject\\Property\\FlatText', + 'ORG-DIRECTORY' => 'Sabre\\VObject\\Property\\FlatText', ]; /** @@ -526,8 +525,8 @@ class VCard extends VObject\Document $className = parent::getClassNameForPropertyName($propertyName); // In vCard 4, BINARY no longer exists, and we need URI instead. - if (VObject\Property\Binary::class == $className && self::VCARD40 === $this->getDocumentType()) { - return VObject\Property\Uri::class; + if ('Sabre\\VObject\\Property\\Binary' == $className && self::VCARD40 === $this->getDocumentType()) { + return 'Sabre\\VObject\\Property\\Uri'; } return $className; diff --git a/vendor/sabre/vobject/lib/Component/VEvent.php b/vendor/sabre/vobject/lib/Component/VEvent.php index 6ea93ed5e..09f37033c 100644 --- a/vendor/sabre/vobject/lib/Component/VEvent.php +++ b/vendor/sabre/vobject/lib/Component/VEvent.php @@ -25,6 +25,9 @@ class VEvent extends VObject\Component * The rules used to determine if an event falls within the specified * time-range is based on the CalDAV specification. * + * @param DateTimeInterface $start + * @param DateTimeInterface $end + * * @return bool */ public function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) @@ -33,7 +36,7 @@ class VEvent extends VObject\Component try { $it = new EventIterator($this, null, $start->getTimezone()); } catch (NoInstancesException $e) { - // If we've caught this exception, there are no instances + // If we've catched this exception, there are no instances // for the event that fall into the specified time-range. return false; } diff --git a/vendor/sabre/vobject/lib/Component/VFreeBusy.php b/vendor/sabre/vobject/lib/Component/VFreeBusy.php index fef418b53..558a85233 100644 --- a/vendor/sabre/vobject/lib/Component/VFreeBusy.php +++ b/vendor/sabre/vobject/lib/Component/VFreeBusy.php @@ -21,6 +21,9 @@ class VFreeBusy extends VObject\Component * Checks based on the contained FREEBUSY information, if a timeslot is * available. * + * @param DateTimeInterface $start + * @param DateTimeInterface $end + * * @return bool */ public function isFree(DateTimeInterface $start, DatetimeInterface $end) diff --git a/vendor/sabre/vobject/lib/Component/VJournal.php b/vendor/sabre/vobject/lib/Component/VJournal.php index 9b7f1b873..9bd336776 100644 --- a/vendor/sabre/vobject/lib/Component/VJournal.php +++ b/vendor/sabre/vobject/lib/Component/VJournal.php @@ -23,6 +23,9 @@ class VJournal extends VObject\Component * The rules used to determine if an event falls within the specified * time-range is based on the CalDAV specification. * + * @param DateTimeInterface $start + * @param DateTimeInterface $end + * * @return bool */ public function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) diff --git a/vendor/sabre/vobject/lib/Component/VTodo.php b/vendor/sabre/vobject/lib/Component/VTodo.php index 6f022ba6d..9de77e841 100644 --- a/vendor/sabre/vobject/lib/Component/VTodo.php +++ b/vendor/sabre/vobject/lib/Component/VTodo.php @@ -23,6 +23,9 @@ class VTodo extends VObject\Component * The rules used to determine if an event falls within the specified * time-range is based on the CalDAV specification. * + * @param DateTimeInterface $start + * @param DateTimeInterface $end + * * @return bool */ public function isInTimeRange(DateTimeInterface $start, DateTimeInterface $end) diff --git a/vendor/sabre/vobject/lib/Document.php b/vendor/sabre/vobject/lib/Document.php index 14a77c911..0cb2e0978 100644 --- a/vendor/sabre/vobject/lib/Document.php +++ b/vendor/sabre/vobject/lib/Document.php @@ -160,7 +160,7 @@ abstract class Document extends Component public function createComponent($name, array $children = null, $defaults = true) { $name = strtoupper($name); - $class = Component::class; + $class = 'Sabre\\VObject\\Component'; if (isset(static::$componentMap[$name])) { $class = static::$componentMap[$name]; @@ -258,7 +258,7 @@ abstract class Document extends Component if (isset(static::$propertyMap[$propertyName])) { return static::$propertyMap[$propertyName]; } else { - return Property\Unknown::class; + return 'Sabre\\VObject\\Property\\Unknown'; } } } diff --git a/vendor/sabre/vobject/lib/FreeBusyGenerator.php b/vendor/sabre/vobject/lib/FreeBusyGenerator.php index a1c24044c..adb214c08 100644 --- a/vendor/sabre/vobject/lib/FreeBusyGenerator.php +++ b/vendor/sabre/vobject/lib/FreeBusyGenerator.php @@ -109,6 +109,8 @@ class FreeBusyGenerator * for setting things like the METHOD, CALSCALE, VERSION, etc.. * * The VFREEBUSY object will be automatically added though. + * + * @param Document $vcalendar */ public function setBaseObject(Document $vcalendar) { @@ -117,6 +119,8 @@ class FreeBusyGenerator /** * Sets a VAVAILABILITY document. + * + * @param Document $vcalendar */ public function setVAvailability(Document $vcalendar) { @@ -172,6 +176,8 @@ class FreeBusyGenerator /** * Sets the reference timezone for floating times. + * + * @param DateTimeZone $timeZone */ public function setTimeZone(DateTimeZone $timeZone) { @@ -202,6 +208,9 @@ class FreeBusyGenerator /** * This method takes a VAVAILABILITY component and figures out all the * available times. + * + * @param FreeBusyData $fbData + * @param VCalendar $vavailability */ protected function calculateAvailability(FreeBusyData $fbData, VCalendar $vavailability) { @@ -354,7 +363,8 @@ class FreeBusyGenerator * This method takes an array of iCalendar objects and applies its busy * times on fbData. * - * @param VCalendar[] $objects + * @param FreeBusyData $fbData + * @param VCalendar[] $objects */ protected function calculateBusy(FreeBusyData $fbData, array $objects) { diff --git a/vendor/sabre/vobject/lib/ITip/Broker.php b/vendor/sabre/vobject/lib/ITip/Broker.php index c09cdf3be..4f37b75d0 100644 --- a/vendor/sabre/vobject/lib/ITip/Broker.php +++ b/vendor/sabre/vobject/lib/ITip/Broker.php @@ -104,6 +104,7 @@ class Broker * * If the iTip message was not supported, we will always return false. * + * @param Message $itipMessage * @param VCalendar $existingObject * * @return VCalendar|null @@ -262,6 +263,8 @@ class Broker * This is message from an organizer, and is either a new event * invite, or an update to an existing one. * + * + * @param Message $itipMessage * @param VCalendar $existingObject * * @return VCalendar|null @@ -297,6 +300,7 @@ class Broker * attendee got removed from an event, or an event got cancelled * altogether. * + * @param Message $itipMessage * @param VCalendar $existingObject * * @return VCalendar|null @@ -322,6 +326,7 @@ class Broker * The message is a reply. This is for example an attendee telling * an organizer he accepted the invite, or declined it. * + * @param Message $itipMessage * @param VCalendar $existingObject * * @return VCalendar|null @@ -447,6 +452,10 @@ class Broker * We will detect which attendees got added, which got removed and create * specific messages for these situations. * + * @param VCalendar $calendar + * @param array $eventInfo + * @param array $oldEventInfo + * * @return array */ protected function parseEventForOrganizer(VCalendar $calendar, array $eventInfo, array $oldEventInfo) @@ -496,21 +505,20 @@ class Broker $message->recipient = $attendee['href']; $message->recipientName = $attendee['name']; - // Creating the new iCalendar body. - $icalMsg = new VCalendar(); - - foreach ($calendar->select('VTIMEZONE') as $timezone) { - $icalMsg->add(clone $timezone); - } - if (!$attendee['newInstances']) { // If there are no instances the attendee is a part of, it // means the attendee was removed and we need to send him a // CANCEL. $message->method = 'CANCEL'; + // Creating the new iCalendar body. + $icalMsg = new VCalendar(); $icalMsg->METHOD = $message->method; + foreach ($calendar->select('VTIMEZONE') as $timezone) { + $icalMsg->add(clone $timezone); + } + $event = $icalMsg->add('VEVENT', [ 'UID' => $message->uid, 'SEQUENCE' => $message->sequence, @@ -537,8 +545,14 @@ class Broker // The attendee gets the updated event body $message->method = 'REQUEST'; + // Creating the new iCalendar body. + $icalMsg = new VCalendar(); $icalMsg->METHOD = $message->method; + foreach ($calendar->select('VTIMEZONE') as $timezone) { + $icalMsg->add(clone $timezone); + } + // We need to find out that this change is significant. If it's // not, systems may opt to not send messages. // @@ -611,7 +625,10 @@ class Broker * * This function figures out if we need to send a reply to an organizer. * - * @param string $attendee + * @param VCalendar $calendar + * @param array $eventInfo + * @param array $oldEventInfo + * @param string $attendee * * @return Message[] */ @@ -694,10 +711,6 @@ class Broker $icalMsg = new VCalendar(); $icalMsg->METHOD = 'REPLY'; - foreach ($calendar->select('VTIMEZONE') as $timezone) { - $icalMsg->add(clone $timezone); - } - $hasReply = false; foreach ($instances as $instance) { diff --git a/vendor/sabre/vobject/lib/Node.php b/vendor/sabre/vobject/lib/Node.php index 4c0c04f72..154a7fac5 100644 --- a/vendor/sabre/vobject/lib/Node.php +++ b/vendor/sabre/vobject/lib/Node.php @@ -115,6 +115,8 @@ abstract class Node implements \IteratorAggregate, \ArrayAccess, \Countable, \Js * Sets the overridden iterator. * * Note that this is not actually part of the iterator interface + * + * @param ElementList $iterator */ public function setIterator(ElementList $iterator) { diff --git a/vendor/sabre/vobject/lib/PHPUnitAssertions.php b/vendor/sabre/vobject/lib/PHPUnitAssertions.php index 45c0a21c6..d77e4b1ed 100644 --- a/vendor/sabre/vobject/lib/PHPUnitAssertions.php +++ b/vendor/sabre/vobject/lib/PHPUnitAssertions.php @@ -15,7 +15,7 @@ namespace Sabre\VObject; trait PHPUnitAssertions { /** - * This method tests whether two vcards or icalendar objects are + * This method tests wether two vcards or icalendar objects are * semantically identical. * * It supports objects being supplied as strings, streams or @@ -34,7 +34,8 @@ trait PHPUnitAssertions */ public function assertVObjectEqualsVObject($expected, $actual, $message = '') { - $getObj = function ($input) { + $self = $this; + $getObj = function ($input) use ($self) { if (is_resource($input)) { $input = stream_get_contents($input); } diff --git a/vendor/sabre/vobject/lib/Parameter.php b/vendor/sabre/vobject/lib/Parameter.php index e39d320a1..2c9a8e7fd 100644 --- a/vendor/sabre/vobject/lib/Parameter.php +++ b/vendor/sabre/vobject/lib/Parameter.php @@ -201,6 +201,8 @@ class Parameter extends Node /** * Sets multiple values for this parameter. + * + * @param array $value */ public function setParts(array $value) { diff --git a/vendor/sabre/vobject/lib/Parser/Json.php b/vendor/sabre/vobject/lib/Parser/Json.php index f33603207..3fd307e97 100644 --- a/vendor/sabre/vobject/lib/Parser/Json.php +++ b/vendor/sabre/vobject/lib/Parser/Json.php @@ -7,8 +7,6 @@ use Sabre\VObject\Component\VCard; use Sabre\VObject\Document; use Sabre\VObject\EofException; use Sabre\VObject\ParseException; -use Sabre\VObject\Property\FlatText; -use Sabre\VObject\Property\Text; /** * Json Parser. @@ -89,6 +87,8 @@ class Json extends Parser /** * Parses a component. * + * @param array $jComp + * * @return \Sabre\VObject\Component */ public function parseComponent(array $jComp) @@ -124,6 +124,8 @@ class Json extends Parser /** * Parses properties. * + * @param array $jProp + * * @return \Sabre\VObject\Property */ public function parseProperty(array $jProp) @@ -158,8 +160,8 @@ class Json extends Parser // represents TEXT values. We have to normalize these here. In the // future we can get rid of FlatText once we're allowed to break BC // again. - if (FlatText::class === $defaultPropertyClass) { - $defaultPropertyClass = Text::class; + if ('Sabre\VObject\Property\FlatText' === $defaultPropertyClass) { + $defaultPropertyClass = 'Sabre\VObject\Property\Text'; } // If the value type we received (e.g.: TEXT) was not the default value diff --git a/vendor/sabre/vobject/lib/Parser/MimeDir.php b/vendor/sabre/vobject/lib/Parser/MimeDir.php index ea5ac0326..26a7101e5 100644 --- a/vendor/sabre/vobject/lib/Parser/MimeDir.php +++ b/vendor/sabre/vobject/lib/Parser/MimeDir.php @@ -124,7 +124,7 @@ class MimeDir extends Parser $this->startLine = 0; if (is_string($input)) { - // Converting to a stream. + // Convering to a stream. $stream = fopen('php://temp', 'r+'); fwrite($stream, $input); rewind($stream); @@ -480,7 +480,7 @@ class MimeDir extends Parser * vCard 3.0 says: * * (rfc2425) Backslashes, newlines (\n or \N) and comma's must be * escaped, all time time. - * * Comma's are used for delimiters in multiple values + * * Comma's are used for delimeters in multiple values * * (rfc2426) Adds to to this that the semi-colon MUST also be escaped, * as in some properties semi-colon is used for separators. * * Properties using semi-colons: N, ADR, GEO, ORG diff --git a/vendor/sabre/vobject/lib/Parser/XML.php b/vendor/sabre/vobject/lib/Parser/XML.php index 78773173d..90f262d9e 100644 --- a/vendor/sabre/vobject/lib/Parser/XML.php +++ b/vendor/sabre/vobject/lib/Parser/XML.php @@ -112,6 +112,8 @@ class XML extends Parser /** * Parse a xCalendar component. + * + * @param Component $parentComponent */ protected function parseVCalendarComponents(Component $parentComponent) { @@ -132,6 +134,8 @@ class XML extends Parser /** * Parse a xCard component. + * + * @param Component $parentComponent */ protected function parseVCardComponents(Component $parentComponent) { @@ -142,7 +146,8 @@ class XML extends Parser /** * Parse xCalendar and xCard properties. * - * @param string $propertyNamePrefix + * @param Component $parentComponent + * @param string $propertyNamePrefix */ protected function parseProperties(Component $parentComponent, $propertyNamePrefix = '') { @@ -297,6 +302,8 @@ class XML extends Parser /** * Parse a component. + * + * @param Component $parentComponent */ protected function parseComponent(Component $parentComponent) { @@ -320,10 +327,11 @@ class XML extends Parser /** * Create a property. * - * @param string $name - * @param array $parameters - * @param string $type - * @param mixed $value + * @param Component $parentComponent + * @param string $name + * @param array $parameters + * @param string $type + * @param mixed $value */ protected function createProperty(Component $parentComponent, $name, $parameters, $type, $value) { @@ -351,9 +359,9 @@ class XML extends Parser if (is_string($input)) { $reader = new SabreXml\Reader(); $reader->elementMap['{'.self::XCAL_NAMESPACE.'}period'] - = XML\Element\KeyValue::class; + = 'Sabre\VObject\Parser\XML\Element\KeyValue'; $reader->elementMap['{'.self::XCAL_NAMESPACE.'}recur'] - = XML\Element\KeyValue::class; + = 'Sabre\VObject\Parser\XML\Element\KeyValue'; $reader->xml($input); $input = $reader->parse(); } diff --git a/vendor/sabre/vobject/lib/Parser/XML/Element/KeyValue.php b/vendor/sabre/vobject/lib/Parser/XML/Element/KeyValue.php index c0bbf0d9b..e26540036 100644 --- a/vendor/sabre/vobject/lib/Parser/XML/Element/KeyValue.php +++ b/vendor/sabre/vobject/lib/Parser/XML/Element/KeyValue.php @@ -18,7 +18,7 @@ class KeyValue extends SabreXml\Element\KeyValue /** * The deserialize method is called during xml parsing. * - * This method is called statically, this is because in theory this method + * This method is called staticly, this is because in theory this method * may be used as a type of constructor, or factory method. * * Often you want to return an instance of the current class, but you are diff --git a/vendor/sabre/vobject/lib/Property.php b/vendor/sabre/vobject/lib/Property.php index f9cf8e38e..6105cb0f0 100644 --- a/vendor/sabre/vobject/lib/Property.php +++ b/vendor/sabre/vobject/lib/Property.php @@ -123,6 +123,8 @@ abstract class Property extends Node /** * Sets a multi-valued property. + * + * @param array $parts */ public function setParts(array $parts) { @@ -260,6 +262,8 @@ abstract class Property extends Node * Sets the JSON value, as it would appear in a jCard or jCal object. * * The value must always be an array. + * + * @param array $value */ public function setJsonValue(array $value) { @@ -305,6 +309,8 @@ abstract class Property extends Node /** * Hydrate data from a XML subtree, as it would appear in a xCard or xCal * object. + * + * @param array $value */ public function setXmlValue(array $value) { diff --git a/vendor/sabre/vobject/lib/Property/Binary.php b/vendor/sabre/vobject/lib/Property/Binary.php index ec6713fdd..830dd9028 100644 --- a/vendor/sabre/vobject/lib/Property/Binary.php +++ b/vendor/sabre/vobject/lib/Property/Binary.php @@ -100,6 +100,8 @@ class Binary extends Property * Sets the json value, as it would appear in a jCard or jCal object. * * The value must always be an array. + * + * @param array $value */ public function setJsonValue(array $value) { diff --git a/vendor/sabre/vobject/lib/Property/Boolean.php b/vendor/sabre/vobject/lib/Property/Boolean.php index 9fb2bce35..1b219bb8c 100644 --- a/vendor/sabre/vobject/lib/Property/Boolean.php +++ b/vendor/sabre/vobject/lib/Property/Boolean.php @@ -8,7 +8,7 @@ use /** * Boolean property. * - * This object represents BOOLEAN values. These are always the case-insensitive + * This object represents BOOLEAN values. These are always the case-insenstive * string TRUE or FALSE. * * Automatic conversion to PHP's true and false are done. @@ -59,6 +59,8 @@ class Boolean extends Property /** * Hydrate data from a XML subtree, as it would appear in a xCard or xCal * object. + * + * @param array $value */ public function setXmlValue(array $value) { diff --git a/vendor/sabre/vobject/lib/Property/FloatValue.php b/vendor/sabre/vobject/lib/Property/FloatValue.php index 0d0346968..208d74516 100644 --- a/vendor/sabre/vobject/lib/Property/FloatValue.php +++ b/vendor/sabre/vobject/lib/Property/FloatValue.php @@ -93,6 +93,8 @@ class FloatValue extends Property /** * Hydrate data from a XML subtree, as it would appear in a xCard or xCal * object. + * + * @param array $value */ public function setXmlValue(array $value) { diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php b/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php index f2dbdeba3..7eb3e0bb7 100644 --- a/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php +++ b/vendor/sabre/vobject/lib/Property/ICalendar/DateTime.php @@ -38,6 +38,8 @@ class DateTime extends Property * Sets a multi-valued property. * * You may also specify DateTime objects here. + * + * @param array $parts */ public function setParts(array $parts) { @@ -173,6 +175,7 @@ class DateTime extends Property /** * Sets the property as a DateTime object. * + * @param DateTimeInterface $dt * @param bool isFloating If set to true, timezones will be ignored */ public function setDateTime(DateTimeInterface $dt, $isFloating = false) @@ -276,6 +279,8 @@ class DateTime extends Property * Sets the json value, as it would appear in a jCard or jCal object. * * The value must always be an array. + * + * @param array $value */ public function setJsonValue(array $value) { @@ -338,8 +343,8 @@ class DateTime extends Property $messages = parent::validate($options); $valueType = $this->getValueType(); $values = $this->getParts(); - foreach ($values as $value) { - try { + try { + foreach ($values as $value) { switch ($valueType) { case 'DATE': DateTimeParser::parseDate($value); @@ -348,14 +353,13 @@ class DateTime extends Property DateTimeParser::parseDateTime($value); break; } - } catch (InvalidDataException $e) { - $messages[] = [ - 'level' => 3, - 'message' => 'The supplied value ('.$value.') is not a correct '.$valueType, - 'node' => $this, - ]; - break; } + } catch (InvalidDataException $e) { + $messages[] = [ + 'level' => 3, + 'message' => 'The supplied value ('.$value.') is not a correct '.$valueType, + 'node' => $this, + ]; } return $messages; diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/Period.php b/vendor/sabre/vobject/lib/Property/ICalendar/Period.php index eb3752770..17bfa5c5c 100644 --- a/vendor/sabre/vobject/lib/Property/ICalendar/Period.php +++ b/vendor/sabre/vobject/lib/Property/ICalendar/Period.php @@ -67,6 +67,8 @@ class Period extends Property * Sets the json value, as it would appear in a jCard or jCal object. * * The value must always be an array. + * + * @param array $value */ public function setJsonValue(array $value) { diff --git a/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php b/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php index 3d632fec1..baeda781e 100644 --- a/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php +++ b/vendor/sabre/vobject/lib/Property/ICalendar/Recur.php @@ -88,6 +88,8 @@ class Recur extends Property /** * Sets a multi-valued property. + * + * @param array $parts */ public function setParts(array $parts) { diff --git a/vendor/sabre/vobject/lib/Property/IntegerValue.php b/vendor/sabre/vobject/lib/Property/IntegerValue.php index 6f709bfff..ddd71d731 100644 --- a/vendor/sabre/vobject/lib/Property/IntegerValue.php +++ b/vendor/sabre/vobject/lib/Property/IntegerValue.php @@ -9,7 +9,7 @@ use * Integer property. * * This object represents INTEGER values. These are always a single integer. - * They may be preceded by either + or -. + * They may be preceeded by either + or -. * * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) @@ -68,6 +68,8 @@ class IntegerValue extends Property /** * Hydrate data from a XML subtree, as it would appear in a xCard or xCal * object. + * + * @param array $value */ public function setXmlValue(array $value) { diff --git a/vendor/sabre/vobject/lib/Property/Text.php b/vendor/sabre/vobject/lib/Property/Text.php index ac8aa066b..23c945551 100644 --- a/vendor/sabre/vobject/lib/Property/Text.php +++ b/vendor/sabre/vobject/lib/Property/Text.php @@ -111,7 +111,7 @@ class Text extends Property // that. // // We also don't have to unescape \\, so all we need to look for is a ; - // that's not preceded with a \. + // that's not preceeded with a \. $regex = '# (?<!\\\\) ; #x'; $matches = preg_split($regex, $val); $this->setValue($matches); diff --git a/vendor/sabre/vobject/lib/Property/Time.php b/vendor/sabre/vobject/lib/Property/Time.php index 544b5ced3..7aeafc8d0 100644 --- a/vendor/sabre/vobject/lib/Property/Time.php +++ b/vendor/sabre/vobject/lib/Property/Time.php @@ -40,6 +40,8 @@ class Time extends Text * Sets the JSON value, as it would appear in a jCard or jCal object. * * The value must always be an array. + * + * @param array $value */ public function setJsonValue(array $value) { @@ -117,6 +119,8 @@ class Time extends Text /** * Hydrate data from a XML subtree, as it would appear in a xCard or xCal * object. + * + * @param array $value */ public function setXmlValue(array $value) { diff --git a/vendor/sabre/vobject/lib/Property/Uri.php b/vendor/sabre/vobject/lib/Property/Uri.php index 830cd3f18..3449ba1f2 100644 --- a/vendor/sabre/vobject/lib/Property/Uri.php +++ b/vendor/sabre/vobject/lib/Property/Uri.php @@ -72,7 +72,7 @@ class Uri extends Text { // Normally we don't need to do any type of unescaping for these // properties, however.. we've noticed that Google Contacts - // specifically escapes the colon (:) with a backslash. While I have + // specifically escapes the colon (:) with a blackslash. While I have // no clue why they thought that was a good idea, I'm unescaping it // anyway. // diff --git a/vendor/sabre/vobject/lib/Property/UtcOffset.php b/vendor/sabre/vobject/lib/Property/UtcOffset.php index 248ed40ea..732239e23 100644 --- a/vendor/sabre/vobject/lib/Property/UtcOffset.php +++ b/vendor/sabre/vobject/lib/Property/UtcOffset.php @@ -38,6 +38,8 @@ class UtcOffset extends Text * Sets the JSON value, as it would appear in a jCard or jCal object. * * The value must always be an array. + * + * @param array $value */ public function setJsonValue(array $value) { diff --git a/vendor/sabre/vobject/lib/Property/VCard/Date.php b/vendor/sabre/vobject/lib/Property/VCard/Date.php index fc679d572..a018ccbb8 100644 --- a/vendor/sabre/vobject/lib/Property/VCard/Date.php +++ b/vendor/sabre/vobject/lib/Property/VCard/Date.php @@ -28,6 +28,8 @@ class Date extends DateAndOrTime /** * Sets the property as a DateTime object. + * + * @param \DateTimeInterface $dt */ public function setDateTime(\DateTimeInterface $dt) { diff --git a/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php b/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php index 09918b31a..b7e17492a 100644 --- a/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php +++ b/vendor/sabre/vobject/lib/Property/VCard/DateAndOrTime.php @@ -45,6 +45,8 @@ class DateAndOrTime extends Property * Sets a multi-valued property. * * You may also specify DateTimeInterface objects here. + * + * @param array $parts */ public function setParts(array $parts) { @@ -78,6 +80,8 @@ class DateAndOrTime extends Property /** * Sets the property as a DateTime object. + * + * @param DateTimeInterface $dt */ public function setDateTime(DateTimeInterface $dt) { diff --git a/vendor/sabre/vobject/lib/Recur/EventIterator.php b/vendor/sabre/vobject/lib/Recur/EventIterator.php index fd904b383..135ecf00e 100644 --- a/vendor/sabre/vobject/lib/Recur/EventIterator.php +++ b/vendor/sabre/vobject/lib/Recur/EventIterator.php @@ -380,6 +380,8 @@ class EventIterator implements \Iterator /** * Quickly jump to a date in the future. + * + * @param DateTimeInterface $dateTime */ public function fastForward(DateTimeInterface $dateTime) { diff --git a/vendor/sabre/vobject/lib/Recur/NoInstancesException.php b/vendor/sabre/vobject/lib/Recur/NoInstancesException.php index 348c02306..b55af567d 100644 --- a/vendor/sabre/vobject/lib/Recur/NoInstancesException.php +++ b/vendor/sabre/vobject/lib/Recur/NoInstancesException.php @@ -7,7 +7,7 @@ use Exception; /** * This exception gets thrown when a recurrence iterator produces 0 instances. * - * This may happen when every occurrence in a rrule is also in EXDATE. + * This may happen when every occurence in a rrule is also in EXDATE. * * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) diff --git a/vendor/sabre/vobject/lib/Recur/RDateIterator.php b/vendor/sabre/vobject/lib/Recur/RDateIterator.php index d117e152c..013694b95 100644 --- a/vendor/sabre/vobject/lib/Recur/RDateIterator.php +++ b/vendor/sabre/vobject/lib/Recur/RDateIterator.php @@ -24,7 +24,8 @@ class RDateIterator implements Iterator /** * Creates the Iterator. * - * @param string|array $rrule + * @param string|array $rrule + * @param DateTimeInterface $start */ public function __construct($rrule, DateTimeInterface $start) { @@ -106,6 +107,8 @@ class RDateIterator implements Iterator /** * This method allows you to quickly go to the next occurrence after the * specified date. + * + * @param DateTimeInterface $dt */ public function fastForward(DateTimeInterface $dt) { diff --git a/vendor/sabre/vobject/lib/Recur/RRuleIterator.php b/vendor/sabre/vobject/lib/Recur/RRuleIterator.php index 55581e9ac..75342a2a8 100644 --- a/vendor/sabre/vobject/lib/Recur/RRuleIterator.php +++ b/vendor/sabre/vobject/lib/Recur/RRuleIterator.php @@ -27,7 +27,8 @@ class RRuleIterator implements Iterator /** * Creates the Iterator. * - * @param string|array $rrule + * @param string|array $rrule + * @param DateTimeInterface $start */ public function __construct($rrule, DateTimeInterface $start) { @@ -131,6 +132,8 @@ class RRuleIterator implements Iterator /** * This method allows you to quickly go to the next occurrence after the * specified date. + * + * @param DateTimeInterface $dt */ public function fastForward(DateTimeInterface $dt) { @@ -229,7 +232,7 @@ class RRuleIterator implements Iterator * * This is an array of weekdays * - * This may also be preceded by a positive or negative integer. If present, + * This may also be preceeded by a positive or negative integer. If present, * this indicates the nth occurrence of a specific day within the monthly or * yearly rrule. For instance, -2TU indicates the second-last tuesday of * the month, or year. @@ -322,17 +325,14 @@ class RRuleIterator implements Iterator return; } - $recurrenceHours = []; if (!empty($this->byHour)) { $recurrenceHours = $this->getHours(); } - $recurrenceDays = []; if (!empty($this->byDay)) { $recurrenceDays = $this->getDays(); } - $recurrenceMonths = []; if (!empty($this->byMonth)) { $recurrenceMonths = $this->getMonths(); } @@ -375,12 +375,10 @@ class RRuleIterator implements Iterator return; } - $recurrenceHours = []; if ($this->byHour) { $recurrenceHours = $this->getHours(); } - $recurrenceDays = []; if ($this->byDay) { $recurrenceDays = $this->getDays(); } @@ -441,7 +439,6 @@ class RRuleIterator implements Iterator return; } - $occurrence = -1; while (true) { $occurrences = $this->getMonthlyOccurrences(); @@ -611,7 +608,6 @@ class RRuleIterator implements Iterator // If we got a byDay or getMonthDay filter, we must first expand // further. if ($this->byDay || $this->byMonthDay) { - $occurrence = -1; while (true) { $occurrences = $this->getMonthlyOccurrences(); @@ -775,7 +771,7 @@ class RRuleIterator implements Iterator $this->byMonth = (array) $value; foreach ($this->byMonth as $byMonth) { if (!is_numeric($byMonth) || (int) $byMonth < 1 || (int) $byMonth > 12) { - throw new InvalidDataException('BYMONTH in RRULE must have value(s) between 1 and 12!'); + throw new InvalidDataException('BYMONTH in RRULE must have value(s) betweeen 1 and 12!'); } } break; @@ -952,7 +948,7 @@ class RRuleIterator implements Iterator { $recurrenceDays = []; foreach ($this->byDay as $byDay) { - // The day may be preceded with a positive (+n) or + // The day may be preceeded with a positive (+n) or // negative (-n) integer. However, this does not make // sense in 'weekly' so we ignore it here. $recurrenceDays[] = $this->dayMap[substr($byDay, -2)]; diff --git a/vendor/sabre/vobject/lib/Settings.php b/vendor/sabre/vobject/lib/Settings.php index b0bb80a82..afc586b0c 100644 --- a/vendor/sabre/vobject/lib/Settings.php +++ b/vendor/sabre/vobject/lib/Settings.php @@ -46,7 +46,7 @@ class Settings * specific events that recur many, many times, potentially DDOSing the * server. * - * The default (3500) allows creation of a daily event that goes on for 10 + * The default (3500) allows creation of a dialy event that goes on for 10 * years, which is hopefully long enough for most. * * Set this value to -1 to disable this control altogether. diff --git a/vendor/sabre/vobject/lib/TimeZoneUtil.php b/vendor/sabre/vobject/lib/TimeZoneUtil.php index 2c407fee6..5b1a775c2 100644 --- a/vendor/sabre/vobject/lib/TimeZoneUtil.php +++ b/vendor/sabre/vobject/lib/TimeZoneUtil.php @@ -139,7 +139,7 @@ class TimeZoneUtil // PHP has a bug that logs PHP warnings even it shouldn't: // https://bugs.php.net/bug.php?id=67881 // - // That's why we're checking if we'll be able to successfully instantiate + // That's why we're checking if we'll be able to successfull instantiate // \DateTimeZone() before doing so. Otherwise we could simply instantiate // and catch the exception. $tzIdentifiers = \DateTimeZone::listIdentifiers(); diff --git a/vendor/sabre/vobject/lib/VCardConverter.php b/vendor/sabre/vobject/lib/VCardConverter.php index 04932fe67..156b83b4e 100644 --- a/vendor/sabre/vobject/lib/VCardConverter.php +++ b/vendor/sabre/vobject/lib/VCardConverter.php @@ -26,7 +26,8 @@ class VCardConverter * * If input and output version are identical, a clone is returned. * - * @param int $targetVersion + * @param Component\VCard $input + * @param int $targetVersion */ public function convert(Component\VCard $input, $targetVersion) { @@ -61,7 +62,10 @@ class VCardConverter /** * Handles conversion of a single property. * - * @param int $targetVersion + * @param Component\VCard $input + * @param Component\VCard $output + * @param Property $property + * @param int $targetVersion */ protected function convertProperty(Component\VCard $input, Component\VCard $output, Property $property, $targetVersion) { @@ -79,9 +83,6 @@ class VCardConverter if (!$valueType) { $valueType = $property->getValueType(); } - if (Document::VCARD30 !== $targetVersion && 'PHONE-NUMBER' === $valueType) { - $valueType = null; - } $newProperty = $output->createProperty( $property->name, $property->getParts(), @@ -226,7 +227,7 @@ class VCardConverter // Lastly, we need to see if there's a need for a VALUE parameter. // - // We can do that by instantiating a empty property with that name, and + // We can do that by instantating a empty property with that name, and // seeing if the default valueType is identical to the current one. $tempProperty = $output->createProperty($newProperty->name); if ($tempProperty->getValueType() !== $newProperty->getValueType()) { @@ -241,7 +242,8 @@ class VCardConverter * * vCard 4.0 no longer supports BINARY properties. * - * @param Property\Uri $property the input property + * @param Component\VCard $output + * @param Property\Uri $property the input property * @param $parameters list of parameters that will eventually be added to * the new property * @@ -294,7 +296,8 @@ class VCardConverter * be valid in vCard 3.0 as well, we should convert those to BINARY if * possible, to improve compatibility. * - * @param Property\Uri $property the input property + * @param Component\VCard $output + * @param Property\Uri $property the input property * * @return Property\Binary|null */ @@ -341,6 +344,9 @@ class VCardConverter /** * Adds parameters to a new property for vCard 4.0. + * + * @param Property $newProperty + * @param array $parameters */ protected function convertParameters40(Property $newProperty, array $parameters) { @@ -377,6 +383,9 @@ class VCardConverter /** * Adds parameters to a new property for vCard 3.0. + * + * @param Property $newProperty + * @param array $parameters */ protected function convertParameters30(Property $newProperty, array $parameters) { diff --git a/vendor/sabre/vobject/lib/Version.php b/vendor/sabre/vobject/lib/Version.php index 883d20289..b728f216d 100644 --- a/vendor/sabre/vobject/lib/Version.php +++ b/vendor/sabre/vobject/lib/Version.php @@ -14,5 +14,5 @@ class Version /** * Full version number. */ - const VERSION = '4.3.0'; + const VERSION = '4.2.1'; } diff --git a/vendor/sabre/vobject/lib/Writer.php b/vendor/sabre/vobject/lib/Writer.php index cbd22022e..c70a6ae4d 100644 --- a/vendor/sabre/vobject/lib/Writer.php +++ b/vendor/sabre/vobject/lib/Writer.php @@ -19,6 +19,8 @@ class Writer /** * Serializes a vCard or iCalendar object. * + * @param Component $component + * * @return string */ public static function write(Component $component) @@ -29,7 +31,8 @@ class Writer /** * Serializes a jCal or jCard object. * - * @param int $options + * @param Component $component + * @param int $options * * @return string */ @@ -41,6 +44,8 @@ class Writer /** * Serializes a xCal or xCard object. * + * @param Component $component + * * @return string */ public static function writeXml(Component $component) diff --git a/vendor/sabre/vobject/phpstan.neon b/vendor/sabre/vobject/phpstan.neon index c705178c9..e50c5be6e 100644 --- a/vendor/sabre/vobject/phpstan.neon +++ b/vendor/sabre/vobject/phpstan.neon @@ -1,4 +1,3 @@ parameters: - level: 1 - universalObjectCratesClasses: - - \Sabre\VObject\Component + level: 0 + bootstrap: %currentWorkingDirectory%/vendor/autoload.php diff --git a/vendor/sabre/vobject/tests/bootstrap.php b/vendor/sabre/vobject/tests/bootstrap.php index 2496aa4ff..46e9014cb 100644 --- a/vendor/sabre/vobject/tests/bootstrap.php +++ b/vendor/sabre/vobject/tests/bootstrap.php @@ -13,3 +13,13 @@ foreach ($try as $path) { break; } } + +$autoLoader->addPsr4('Sabre\\VObject\\', __DIR__.'/VObject'); + +if (!defined('SABRE_TEMPDIR')) { + define('SABRE_TEMPDIR', __DIR__.'/temp/'); +} + +if (!file_exists(SABRE_TEMPDIR)) { + mkdir(SABRE_TEMPDIR); +} diff --git a/vendor/sabre/vobject/tests/phpunit.xml b/vendor/sabre/vobject/tests/phpunit.xml index c9abae412..46dad6a3d 100644 --- a/vendor/sabre/vobject/tests/phpunit.xml +++ b/vendor/sabre/vobject/tests/phpunit.xml @@ -6,12 +6,11 @@ convertWarningsToExceptions="true" beStrictAboutTestsThatDoNotTestAnything="true" beStrictAboutOutputDuringTests="true" + beStrictAboutTestSize="true" > - <testsuites> - <testsuite name="Sabre\VObject"> - <directory>VObject/</directory> - </testsuite> - </testsuites> + <testsuite name="Sabre\VObject"> + <directory>VObject/</directory> + </testsuite> <filter> <whitelist addUncoveredFilesFromWhitelist="true"> diff --git a/vendor/sabre/xml/.gitignore b/vendor/sabre/xml/.gitignore index a85591183..51fc188bf 100644 --- a/vendor/sabre/xml/.gitignore +++ b/vendor/sabre/xml/.gitignore @@ -1,22 +1,10 @@ -# Composer vendor composer.lock - -# Tests tests/cov -tests/.phpunit.result.cache .*.swp +.php_cs.cache # Composer binaries bin/phpunit bin/php-cs-fixer -bin/phpstan -bin/phpstan.phar - -# Vim -.*.swp - -# IDEs -/.idea - -.php_cs.cache +bin/sabre-cs-fixer diff --git a/vendor/sabre/xml/.php_cs.dist b/vendor/sabre/xml/.php_cs.dist index c5c78a971..8d61ee259 100644 --- a/vendor/sabre/xml/.php_cs.dist +++ b/vendor/sabre/xml/.php_cs.dist @@ -6,7 +6,7 @@ $config->getFinder() ->in(__DIR__); $config->setRules([ '@PSR1' => true, - '@Symfony' => true + '@Symfony' =>true ]); return $config;
\ No newline at end of file diff --git a/vendor/sabre/xml/.travis.yml b/vendor/sabre/xml/.travis.yml index 953c2a60b..49a0c9a22 100644 --- a/vendor/sabre/xml/.travis.yml +++ b/vendor/sabre/xml/.travis.yml @@ -1,20 +1,19 @@ language: php sudo: required +dist: xenial php: + - 7.0 - 7.1 - 7.2 - - 7.3 - - 7.4 + - 7.3snapshot -env: - global: - - RUN_PHPSTAN="FALSE" +addons: + apt: + packages: + # required for php7.3 + - libzip4 matrix: - include: - - name: 'PHPStan' - php: 7.2 - env: RUN_PHPSTAN="TRUE" fast_finish: true cache: @@ -22,15 +21,11 @@ cache: - $HOME/.composer/cache install: - - if [ $RUN_PHPSTAN == "TRUE" ]; then composer require --dev phpstan/phpstan:^0.12; fi - -before_script: - composer install script: - - if [ $RUN_PHPSTAN == "FALSE" ]; then ./bin/php-cs-fixer fix --dry-run --diff; fi - - if [ $RUN_PHPSTAN == "FALSE" ]; then ./bin/phpunit --configuration tests/phpunit.xml --coverage-clover=coverage.xml; fi - - if [ $RUN_PHPSTAN == "TRUE" ]; then php ./bin/phpstan analyse -c phpstan.neon lib; fi + - ./bin/phpunit --configuration tests/phpunit.xml.dist --coverage-clover=coverage.xml after_success: - - bash <(curl -s https://codecov.io/bash) +- bash <(curl -s https://codecov.io/bash) + diff --git a/vendor/sabre/xml/CHANGELOG.md b/vendor/sabre/xml/CHANGELOG.md index bbfc8ddec..1ad830124 100644 --- a/vendor/sabre/xml/CHANGELOG.md +++ b/vendor/sabre/xml/CHANGELOG.md @@ -1,28 +1,16 @@ ChangeLog ========= -2.2.0 (2020-01-31) ------------------- - -* #171: Added Support for PHP 7.4, dropped Support for PHP 7.0 (@staabm, @phil-davis) -* #174: Update testsuite to phpunit8 (@phil-davis) -* Added phpstan coverage (@phil-davis) -* #144: Added a new `functionCaller` deserializer function for executing a callable when reading a XML -element (@vsouz4) - - 2.1.3 (2019-08-14) ------------------ * #166: Throw exception when empty inputs found - 2.1.2 (2019-01-09) ------------------ * #161: Prevent infinite loop on empty xml elements - 2.1.1 (2018-10-09) ------------------ diff --git a/vendor/sabre/xml/composer.json b/vendor/sabre/xml/composer.json index 2af0dd458..c782dbc5e 100644 --- a/vendor/sabre/xml/composer.json +++ b/vendor/sabre/xml/composer.json @@ -5,7 +5,7 @@ "homepage" : "https://sabre.io/xml/", "license" : "BSD-3-Clause", "require" : { - "php" : "^7.1", + "php" : ">=7.0", "ext-xmlwriter" : "*", "ext-xmlreader" : "*", "ext-dom" : "*", @@ -44,8 +44,7 @@ } }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.16.1", - "phpunit/phpunit" : "^7 || ^8" + "phpunit/phpunit" : "^6" }, "config" : { "bin-dir" : "bin/" diff --git a/vendor/sabre/xml/lib/ContextStackTrait.php b/vendor/sabre/xml/lib/ContextStackTrait.php index 757088847..bc770ffad 100644 --- a/vendor/sabre/xml/lib/ContextStackTrait.php +++ b/vendor/sabre/xml/lib/ContextStackTrait.php @@ -45,7 +45,7 @@ trait ContextStackTrait * common use-case for parsing XML documents, it's added here as a * convenience. * - * @var string|null + * @var string */ public $contextUri; diff --git a/vendor/sabre/xml/lib/Deserializer/functions.php b/vendor/sabre/xml/lib/Deserializer/functions.php index c4f240970..0eff4b7e0 100644 --- a/vendor/sabre/xml/lib/Deserializer/functions.php +++ b/vendor/sabre/xml/lib/Deserializer/functions.php @@ -173,7 +173,7 @@ function enum(Reader $reader, string $namespace = null): array if (!is_null($namespace) && $namespace === $reader->namespaceURI) { $values[] = $reader->localName; } else { - $values[] = (string) $reader->getClark(); + $values[] = $reader->getClark(); } } while ($reader->depth >= $currentDepth && $reader->next()); @@ -316,44 +316,3 @@ function mixedContent(Reader $reader): array return $content; } - -/** - * The functionCaller deserializer turns an xml element into whatever your callable return. - * - * You can use, e.g., a named constructor (factory method) to create an object using - * this function. - * - * @return mixed - */ -function functionCaller(Reader $reader, callable $func, string $namespace) -{ - if ($reader->isEmptyElement) { - $reader->next(); - - return null; - } - - $funcArgs = []; - $func = is_string($func) && false !== strpos($func, '::') ? explode('::', $func) : $func; - $ref = is_array($func) ? new \ReflectionMethod($func[0], $func[1]) : new \ReflectionFunction($func); - foreach ($ref->getParameters() as $parameter) { - $funcArgs[$parameter->getName()] = null; - } - - $reader->read(); - do { - if (Reader::ELEMENT === $reader->nodeType && $reader->namespaceURI == $namespace) { - if (array_key_exists($reader->localName, $funcArgs)) { - $funcArgs[$reader->localName] = $reader->parseCurrentElement()['value']; - } else { - // Ignore property - $reader->next(); - } - } else { - $reader->read(); - } - } while (Reader::END_ELEMENT !== $reader->nodeType); - $reader->read(); - - return $func(...array_values($funcArgs)); -} diff --git a/vendor/sabre/xml/lib/Element/Uri.php b/vendor/sabre/xml/lib/Element/Uri.php index 2644fbcd7..898a26457 100644 --- a/vendor/sabre/xml/lib/Element/Uri.php +++ b/vendor/sabre/xml/lib/Element/Uri.php @@ -91,7 +91,7 @@ class Uri implements Xml\Element { return new self( \Sabre\Uri\resolve( - (string) $reader->contextUri, + $reader->contextUri, $reader->readText() ) ); diff --git a/vendor/sabre/xml/lib/Element/XmlFragment.php b/vendor/sabre/xml/lib/Element/XmlFragment.php index 12109e5c9..413e0f106 100644 --- a/vendor/sabre/xml/lib/Element/XmlFragment.php +++ b/vendor/sabre/xml/lib/Element/XmlFragment.php @@ -85,7 +85,7 @@ XML; switch ($reader->nodeType) { case Reader::ELEMENT: $writer->startElement( - (string) $reader->getClark() + $reader->getClark() ); $empty = $reader->isEmptyElement; while ($reader->moveToNextAttribute()) { @@ -97,7 +97,7 @@ XML; // Skip namespace declarations break; default: - $writer->writeAttribute((string) $reader->getClark(), $reader->value); + $writer->writeAttribute($reader->getClark(), $reader->value); break; } } diff --git a/vendor/sabre/xml/lib/LibXMLException.php b/vendor/sabre/xml/lib/LibXMLException.php index ae136f57b..4701c304a 100644 --- a/vendor/sabre/xml/lib/LibXMLException.php +++ b/vendor/sabre/xml/lib/LibXMLException.php @@ -21,7 +21,7 @@ class LibXMLException extends ParseException /** * The error list. * - * @var \LibXMLError[] + * @var []LibXMLError */ protected $errors; @@ -30,7 +30,8 @@ class LibXMLException extends ParseException * * You should pass a list of LibXMLError objects in its constructor. * - * @param LibXMLError[] $errors + * @param []LibXMLError $errors + * @param int $code * @param Throwable $previousException */ public function __construct(array $errors, int $code = 0, Throwable $previousException = null) diff --git a/vendor/sabre/xml/lib/ParseException.php b/vendor/sabre/xml/lib/ParseException.php index 5980b5fc4..e237b8732 100644 --- a/vendor/sabre/xml/lib/ParseException.php +++ b/vendor/sabre/xml/lib/ParseException.php @@ -4,8 +4,7 @@ declare(strict_types=1); namespace Sabre\Xml; -use - Exception; +use Exception; /** * This is a base exception for any exception related to parsing xml files. diff --git a/vendor/sabre/xml/lib/Reader.php b/vendor/sabre/xml/lib/Reader.php index a28cf8c3b..37e0c86dd 100644 --- a/vendor/sabre/xml/lib/Reader.php +++ b/vendor/sabre/xml/lib/Reader.php @@ -118,7 +118,7 @@ class Reader extends XMLReader * If the $elementMap argument is specified, the existing elementMap will * be overridden while parsing the tree, and restored after this process. * - * @return array|string|null + * @return array|string */ public function parseInnerTree(array $elementMap = null) { @@ -147,9 +147,7 @@ class Reader extends XMLReader throw new ParseException('This should never happen (famous last words)'); } - $keepOnParsing = true; - - while ($keepOnParsing) { + while (true) { if (!$this->isValid()) { $errors = libxml_get_errors(); @@ -171,8 +169,7 @@ class Reader extends XMLReader case self::END_ELEMENT: // Ensuring we are moving the cursor after the end element. $this->read(); - $keepOnParsing = false; - break; + break 2; case self::NONE: throw new ParseException('We hit the end of the document prematurely. This likely means that some parser "eats" too many elements. Do not attempt to continue parsing.'); default: @@ -226,7 +223,7 @@ class Reader extends XMLReader } $value = call_user_func( - $this->getDeserializerForElementName((string) $name), + $this->getDeserializerForElementName($name), $this ); diff --git a/vendor/sabre/xml/lib/Serializer/functions.php b/vendor/sabre/xml/lib/Serializer/functions.php index 8d0330558..3694d9791 100644 --- a/vendor/sabre/xml/lib/Serializer/functions.php +++ b/vendor/sabre/xml/lib/Serializer/functions.php @@ -148,7 +148,7 @@ function repeatingElements(Writer $writer, array $items, string $childElementNam * * You can even mix the two array syntaxes. * - * @param string|int|float|bool|array|object $value + * @param string|int|float|bool|array|object */ function standardSerializer(Writer $writer, $value) { @@ -164,6 +164,8 @@ function standardSerializer(Writer $writer, $value) } elseif (is_callable($value)) { // A callback $value($writer); + } elseif (is_null($value)) { + // nothing! } elseif (is_array($value) && array_key_exists('name', $value)) { // if the array had a 'name' element, we assume that this array // describes a 'name' and optionally 'attributes' and 'value'. @@ -202,7 +204,7 @@ function standardSerializer(Writer $writer, $value) } } elseif (is_object($value)) { throw new InvalidArgumentException('The writer cannot serialize objects of class: '.get_class($value)); - } elseif (!is_null($value)) { + } else { throw new InvalidArgumentException('The writer cannot serialize values of type: '.gettype($value)); } } diff --git a/vendor/sabre/xml/lib/Service.php b/vendor/sabre/xml/lib/Service.php index 9a2c47794..882b2dc2c 100644 --- a/vendor/sabre/xml/lib/Service.php +++ b/vendor/sabre/xml/lib/Service.php @@ -61,13 +61,6 @@ class Service public $classMap = []; /** - * A bitmask of the LIBXML_* constants. - * - * @var int - */ - public $options = 0; - - /** * Returns a fresh XML Reader. */ public function getReader(): Reader @@ -114,7 +107,7 @@ class Service if (is_resource($input)) { // Unfortunately the XMLReader doesn't support streams. When it // does, we can optimize this. - $input = (string) stream_get_contents($input); + $input = stream_get_contents($input); // If input is an empty string, then its safe to throw exception if ('' === $input) { @@ -123,7 +116,7 @@ class Service } $r = $this->getReader(); $r->contextUri = $contextUri; - $r->XML($input, null, $this->options); + $r->xml($input); $result = $r->parse(); $rootElementName = $result['name']; @@ -147,6 +140,7 @@ class Service * * @param string|string[] $rootElementName * @param string|resource $input + * @param string|null $contextUri * * @throws ParseException * @@ -157,7 +151,7 @@ class Service if (is_resource($input)) { // Unfortunately the XMLReader doesn't support streams. When it // does, we can optimize this. - $input = (string) stream_get_contents($input); + $input = stream_get_contents($input); // If input is empty string, then its safe to throw exception if ('' === $input) { @@ -166,7 +160,7 @@ class Service } $r = $this->getReader(); $r->contextUri = $contextUri; - $r->XML($input, null, $this->options); + $r->xml($input); $rootElementName = (array) $rootElementName; @@ -178,7 +172,7 @@ class Service $result = $r->parse(); if (!in_array($result['name'], $rootElementName, true)) { - throw new ParseException('Expected '.implode(' or ', $rootElementName).' but received '.$result['name'].' as the root element'); + throw new ParseException('Expected '.implode(' or ', (array) $rootElementName).' but received '.$result['name'].' as the root element'); } return $result['value']; @@ -198,7 +192,7 @@ class Service * This allows an implementor to easily create URI's relative to the root * of the domain. * - * @param string|array|object|XmlSerializable $value + * @param string|array|XmlSerializable $value * * @return string */ diff --git a/vendor/sabre/xml/lib/Version.php b/vendor/sabre/xml/lib/Version.php index cf2810c2a..65706ec42 100644 --- a/vendor/sabre/xml/lib/Version.php +++ b/vendor/sabre/xml/lib/Version.php @@ -16,5 +16,5 @@ class Version /** * Full version number. */ - const VERSION = '2.2.0'; + const VERSION = '2.1.1'; } diff --git a/vendor/sabre/xml/lib/Writer.php b/vendor/sabre/xml/lib/Writer.php index e3238a7ed..f5957bbce 100644 --- a/vendor/sabre/xml/lib/Writer.php +++ b/vendor/sabre/xml/lib/Writer.php @@ -182,6 +182,8 @@ class Writer extends XMLWriter * XMLWriter::startElement doesn't either. * * @param array|string|object|null $content + * + * @return bool */ public function writeElement($name, $content = null): bool { diff --git a/vendor/simplepie/simplepie/LICENSE.txt b/vendor/simplepie/simplepie/LICENSE.txt index 6503e83c1..a822a4bd9 100644 --- a/vendor/simplepie/simplepie/LICENSE.txt +++ b/vendor/simplepie/simplepie/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2004-2007, Ryan Parman and Sam Sneddon. +Copyright (c) 2004-2007, Ryan Parman and Geoffrey Sneddon. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are diff --git a/vendor/simplepie/simplepie/README.markdown b/vendor/simplepie/simplepie/README.markdown index 9fcc12937..6903a065b 100644 --- a/vendor/simplepie/simplepie/README.markdown +++ b/vendor/simplepie/simplepie/README.markdown @@ -87,14 +87,14 @@ Authors and contributors ### Alumni * [Ryan McCue][] (developer, support) * [Ryan Parman][] (Creator, developer, evangelism, support) -* [Sam Sneddon][] (Lead developer) +* [Geoffrey Sneddon][] (Lead developer) * [Michael Shipley][] (Submitter of patches, support) * [Steve Minutillo][] (Submitter of patches) [Malcolm Blaney]: https://unicyclic.com/mal [Ryan McCue]: http://ryanmccue.info [Ryan Parman]: http://ryanparman.com -[Sam Sneddon]: https://gsnedders.com +[Geoffrey Sneddon]: http://gsnedders.com [Michael Shipley]: http://michaelpshipley.com [Steve Minutillo]: http://minutillo.com/steve/ diff --git a/vendor/simplepie/simplepie/autoloader.php b/vendor/simplepie/simplepie/autoloader.php index e42f07b3a..fd7690da2 100644 --- a/vendor/simplepie/simplepie/autoloader.php +++ b/vendor/simplepie/simplepie/autoloader.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/composer.json b/vendor/simplepie/simplepie/composer.json index d76ee7d4d..dd1346150 100644 --- a/vendor/simplepie/simplepie/composer.json +++ b/vendor/simplepie/simplepie/composer.json @@ -12,8 +12,8 @@ "role": "Creator, alumnus developer" }, { - "name": "Sam Sneddon", - "homepage": "https://gsnedders.com/", + "name": "Geoffrey Sneddon", + "homepage": "http://gsnedders.com/", "role": "Alumnus developer" }, { diff --git a/vendor/simplepie/simplepie/library/SimplePie.php b/vendor/simplepie/simplepie/library/SimplePie.php index 5ce5f82f3..406ab0aec 100644 --- a/vendor/simplepie/simplepie/library/SimplePie.php +++ b/vendor/simplepie/simplepie/library/SimplePie.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2017, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2017, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,10 +33,10 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @version 1.5.5 - * @copyright 2004-2017 Ryan Parman, Sam Sneddon, Ryan McCue + * @version 1.5.3 + * @copyright 2004-2017 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License @@ -50,7 +50,7 @@ define('SIMPLEPIE_NAME', 'SimplePie'); /** * SimplePie Version */ -define('SIMPLEPIE_VERSION', '1.5.5'); +define('SIMPLEPIE_VERSION', '1.5.3'); /** * SimplePie Build @@ -706,7 +706,7 @@ class SimplePie */ public function __destruct() { - if (!gc_enabled()) + if ((version_compare(PHP_VERSION, '5.6', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode')) { if (!empty($this->data['items'])) { @@ -1373,8 +1373,7 @@ class SimplePie // Decide whether to enable caching if ($this->cache && $parsed_feed_url['scheme'] !== '') { - $url = $this->feed_url . ($this->force_feed ? '#force_feed' : ''); - $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $url), 'spc')); + $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc')); } // Fetch the data via SimplePie_File into $this->raw_data diff --git a/vendor/simplepie/simplepie/library/SimplePie/Author.php b/vendor/simplepie/simplepie/library/SimplePie/Author.php index 563932f4c..14794cf27 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Author.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Author.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache.php b/vendor/simplepie/simplepie/library/SimplePie/Cache.php index 9c5577d95..d98cc6511 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Cache.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php index 522ff7e10..333fb05cf 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php index 74d57b8da..7e8f77532 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php index 03758e923..a09dea637 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php index caf785275..5190eef93 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php index 0b40d87c8..1f73b3890 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php index a684eb833..061ed043a 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Caption.php b/vendor/simplepie/simplepie/library/SimplePie/Caption.php index 3d7bfdd71..854857603 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Caption.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Caption.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Category.php b/vendor/simplepie/simplepie/library/SimplePie/Category.php index e4dabed8b..df0f13f9a 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Category.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Category.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php b/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php index 39972b5a7..b86dfa33c 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Copyright.php b/vendor/simplepie/simplepie/library/SimplePie/Copyright.php index 92f9b0947..a57f323e6 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Copyright.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Copyright.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Core.php b/vendor/simplepie/simplepie/library/SimplePie/Core.php index ffcca46f5..c856ba361 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Core.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Core.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Credit.php b/vendor/simplepie/simplepie/library/SimplePie/Credit.php index d6ff07eba..064a1b864 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Credit.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Credit.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php b/vendor/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php index a43c374b3..773481a8c 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php b/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php index 32216d848..ddbbc3c92 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Exception.php b/vendor/simplepie/simplepie/library/SimplePie/Exception.php index 7a04c560c..53c015e77 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Exception.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Exception.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/File.php b/vendor/simplepie/simplepie/library/SimplePie/File.php index 82db47ec9..c73e0fbc9 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/File.php +++ b/vendor/simplepie/simplepie/library/SimplePie/File.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License @@ -109,7 +109,7 @@ class SimplePie_File curl_setopt($fp, CURLOPT_REFERER, $url); curl_setopt($fp, CURLOPT_USERAGENT, $useragent); curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2); - if (!ini_get('open_basedir') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>=')) + if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>=')) { curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects); diff --git a/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php index 1dbe06c3e..7d6188dd1 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php +++ b/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/IRI.php b/vendor/simplepie/simplepie/library/SimplePie/IRI.php index a02de682c..ffba232b1 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/IRI.php +++ b/vendor/simplepie/simplepie/library/SimplePie/IRI.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License @@ -46,10 +46,10 @@ * * @package SimplePie * @subpackage HTTP - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Steve Minutillo * @author Ryan McCue - * @copyright 2007-2012 Sam Sneddon, Steve Minutillo, Ryan McCue + * @copyright 2007-2012 Geoffrey Sneddon, Steve Minutillo, Ryan McCue * @license http://www.opensource.org/licenses/bsd-license.php */ class SimplePie_IRI diff --git a/vendor/simplepie/simplepie/library/SimplePie/Item.php b/vendor/simplepie/simplepie/library/SimplePie/Item.php index 5be6b1994..47e69e3d7 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Item.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Item.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License @@ -121,7 +121,7 @@ class SimplePie_Item */ public function __destruct() { - if (!gc_enabled()) + if ((version_compare(PHP_VERSION, '5.6', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode')) { unset($this->feed); } diff --git a/vendor/simplepie/simplepie/library/SimplePie/Locator.php b/vendor/simplepie/simplepie/library/SimplePie/Locator.php index bf7c21a6f..12bc15e15 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Locator.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Locator.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Misc.php b/vendor/simplepie/simplepie/library/SimplePie/Misc.php index 48d7c860a..2a2ecc575 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Misc.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Misc.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php b/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php index 25c992bd1..a054e8be5 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License @@ -53,7 +53,7 @@ * @author Alexander Merz <alexander.merz@web.de> * @author elfrink at introweb dot nl * @author Josh Peck <jmp at joshpeck dot org> - * @author Sam Sneddon <geoffers@gmail.com> + * @author Geoffrey Sneddon <geoffers@gmail.com> */ class SimplePie_Net_IPv6 { diff --git a/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php b/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php index cf57437d2..f6ba42425 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/Parser.php index 4efdf41a7..3cef2287d 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Parser.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Parser.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Rating.php b/vendor/simplepie/simplepie/library/SimplePie/Rating.php index 599f75acb..108dd22bf 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Rating.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Rating.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Registry.php b/vendor/simplepie/simplepie/library/SimplePie/Registry.php index bf3baf179..e0909bb74 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Registry.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Registry.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Restriction.php b/vendor/simplepie/simplepie/library/SimplePie/Restriction.php index 950017fae..803d84fde 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Restriction.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Restriction.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php b/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php index 35838032f..cd3a410c6 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/Source.php b/vendor/simplepie/simplepie/library/SimplePie/Source.php index f14e5b220..8fac13ef7 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/Source.php +++ b/vendor/simplepie/simplepie/library/SimplePie/Source.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php index 0c857a586..18ca1b79b 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php +++ b/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php b/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php index 9c54f8833..f4aeafa28 100644 --- a/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php +++ b/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php @@ -5,7 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -33,9 +33,9 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman - * @author Sam Sneddon + * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License diff --git a/vendor/smarty/smarty/README.md b/vendor/smarty/smarty/README.md index ee7edb1ab..24baae4c2 100644 --- a/vendor/smarty/smarty/README.md +++ b/vendor/smarty/smarty/README.md @@ -1,17 +1,11 @@ # Smarty 3 template engine [smarty.net](https://www.smarty.net/) -[![Build Status](https://travis-ci.org/smarty-php/smarty.svg?branch=master)](https://travis-ci.org/smarty-php/smarty) - ## Documentation For documentation see [www.smarty.net/docs/en/](https://www.smarty.net/docs/en/) -## Requirements - -Smarty can be run with PHP 5.2 to PHP 7.4. - ## Distribution repository > Smarty 3.1.28 introduces run time template inheritance diff --git a/vendor/smarty/smarty/change_log.txt b/vendor/smarty/smarty/change_log.txt new file mode 100644 index 000000000..aeb17e4d9 --- /dev/null +++ b/vendor/smarty/smarty/change_log.txt @@ -0,0 +1,3412 @@ +===== 3.1.34-dev-6 ===== +30.10.2018 + - bugfix a nested subblock in an inheritance child template was not replace by + outer level block with same name in same child template https://github.com/smarty-php/smarty/issues/500 + +29.10.2018 + - bugfix Smarty::$php_handling == PHP_PASSTHRU (default) did eat the "\n" (newline) character if it did directly followed + a PHP tag like "?>" or other https://github.com/smarty-php/smarty/issues/501 + +14.10.2018 + - bugfix autoloader exit shortcut https://github.com/smarty-php/smarty/issues/467 + +11.10.2018 + - bugfix {insert} not works when caching is enabled and included template is present + https://github.com/smarty-php/smarty/issues/496 + - bugfix in date-format modifier; NULL at date string or default_date did not produce correct output + https://github.com/smarty-php/smarty/pull/458 + +09.10.2018 + - bugfix fix of 26.8.2017 https://github.com/smarty-php/smarty/issues/327 + modifier is applied to sum expression https://github.com/smarty-php/smarty/issues/491 + - bugfix indexed arrays could not be defined "array(...)"" + +18.09.2018 + - bugfix large plain text template sections without a Smarty tag > 700kB could + could fail in version 3.1.32 and 3.1.33 because PHP preg_match() restrictions + https://github.com/smarty-php/smarty/issues/488 + +===== 3.1.33 release ===== 12.09.2018 +===== 3.1.33-dev-12 ===== +03.09.2018 + - bugfix {foreach} using new style property access like {$item@property} on + Smarty 2 style named foreach loop could produce errors https://github.com/smarty-php/smarty/issues/484 + +31.08.2018 + - bugfix some custom left and right delimiters like '{^' '^}' did not work + https://github.com/smarty-php/smarty/issues/450 https://github.com/smarty-php/smarty/pull/482 + + - reformating for PSR-2 coding standards https://github.com/smarty-php/smarty/pull/483 + + - bugfix on Windows absolute filepathes did fail if the drive letter was followed by a linux DIRECTORY_SEPARATOR + like C:/ at Smarty > 3.1.33-dev-5 https://github.com/smarty-php/smarty/issues/451 + + - PSR-2 code style fixes for config and template file Lexer/Parser generated with + the Smarty Lexer/Parser generator from https://github.com/smarty-php/smarty-lexer + https://github.com/smarty-php/smarty/pull/483 + +26.08.2018 + - bugfix/enhancement {capture} allow variable as capture block name in Smarty special variable + like $smarty.capture.$foo https://github.com/smarty-php/smarty/issues/478 https://github.com/smarty-php/smarty/pull/481 + +===== 3.1.33-dev-6 ===== +19.08.2018 + - fix PSR-2 coding standards and PHPDoc blocks https://github.com/smarty-php/smarty/pull/452 + https://github.com/smarty-php/smarty/pull/475 + https://github.com/smarty-php/smarty/pull/473 + - bugfix PHP5.2 compatibility https://github.com/smarty-php/smarty/pull/472 + +===== 3.1.33-dev-4 ===== +17.05.2018 + - bugfix strip-block produces different output in Smarty v3.1.32 https://github.com/smarty-php/smarty/issues/436 + - bugfix Smarty::compileAllTemplates ignores `$extension` parameter https://github.com/smarty-php/smarty/issues/437 + https://github.com/smarty-php/smarty/pull/438 + - improvement do not compute total property in {foreach} if not needed https://github.com/smarty-php/smarty/issues/443 + - bugfix plugins may not be loaded when setMergeCompiledIncludes is true https://github.com/smarty-php/smarty/issues/435 + +26.04.2018 + - bugfix regarding Security Vulnerability did not solve the problem under Linux. + Security issue CVE-2018-16831 + +===== 3.1.32 ===== (24.04.2018) +24.04.2018 + - bugfix possible Security Vulnerability in Smarty_Security class. + +26.03.2018 + - bugfix plugins may not be loaded if {function} or {block} tags are executed in nocache mode + https://github.com/smarty-php/smarty/issues/371 + +26.03.2018 + - new feature {parent} = {$smarty.block.parent} {child} = {$smarty.block.child} + +23.03.2018 + - bugfix preg_replace could fail on large content resulting in a blank page https://github.com/smarty-php/smarty/issues/417 + +21.03.2018 + - bugfix {$smarty.section...} used outside {section}{/section} showed incorrect values if {section}{/section} was called inside + another loop https://github.com/smarty-php/smarty/issues/422 + - bugfix short form of {section} attributes did not work https://github.com/smarty-php/smarty/issues/428 + +17.03.2018 + - improvement Smarty::compileAllTemplates() exit with a non-zero status code if max errors is reached https://github.com/smarty-php/smarty/pull/402 + +16.03.2018 + - bugfix extends resource did not work with user defined left/right delimiter https://github.com/smarty-php/smarty/issues/419 + +22.11.2017 + - bugfix {break} and {continue} could fail if {foreach}{/foreach} did contain other + looping tags like {for}, {section} and {while} https://github.com/smarty-php/smarty/issues/323 + +20.11.2017 + - bugfix rework of newline spacing between tag code and template text. + now again identical with Smarty2 (forum topic 26878) + - replacement of " by ' + +05.11.2017 + - lexer/parser optimization + - code cleanup and optimizations + - bugfix {$smarty.section.name.loop} used together with {$smarty.section.name.total} could produce + wrong results (forum topic 27041) + +26.10.2017 + - bugfix Smarty version was not filled in header comment of compiled and cached files + - optimization replace internal Smarty::$ds property by DIRECTORY_SEPARATOR + - deprecate functions Smarty::muteExpectedErrors() and Smarty::unmuteExpectedErrors() + as Smarty does no longer use error suppression like @filemtime(). + for backward compatibility code is moved from Smarty class to an external class and still can be + called. + - correction of PHPDoc blocks + - minor code cleanup + +21.10.2017 + - bugfix custom delimiters could fail since modification of version 3.1.32-dev-23 + https://github.com/smarty-php/smarty/issues/394 + +18.10.2017 + - bugfix fix implementation of unclosed block tag in double quoted string of 12.10.2017 + https://github.com/smarty-php/smarty/issues/396 https://github.com/smarty-php/smarty/issues/397 + https://github.com/smarty-php/smarty/issues/391 https://github.com/smarty-php/smarty/issues/392 + +12.10.2017 + - bugfix $smarty.block.child and $smarty.block.parent could not be used like any + $smarty special variable https://github.com/smarty-php/smarty/issues/393 + - unclosed block tag in double quoted string must throw compiler exception. + https://github.com/smarty-php/smarty/issues/391 https://github.com/smarty-php/smarty/issues/392 + +07.10.2017 + - bugfix modification of 9.8.2017 did fail on some recursive + tag nesting. https://github.com/smarty-php/smarty/issues/389 + +26.8.2017 + - bugfix chained modifier failed when last modifier parameter is a signed value + https://github.com/smarty-php/smarty/issues/327 + - bugfix templates filepath with multibyte characters did not work + https://github.com/smarty-php/smarty/issues/385 + - bugfix {make_nocache} did display code if the template did not contain other nocache code + https://github.com/smarty-php/smarty/issues/369 + +09.8.2017 + - improvement repeated delimiter like {{ and }} will be treated as literal + https://groups.google.com/forum/#!topic/smarty-developers/h9r82Bx4KZw + +05.8.2017 + - bugfix wordwrap modifier could fail if used in nocache code. + converted plugin file shared.mb_wordwrap.php into modifier.mb_wordwrap.php + - cleanup of _getSmartyObj() + +31.7.2017 + - Call clearstatcache() after mkdir() failure https://github.com/smarty-php/smarty/pull/379 + +30.7.2017 + - rewrite mkdir() bugfix to retry automatically see https://github.com/smarty-php/smarty/pull/377 + https://github.com/smarty-php/smarty/pull/379 + +21.7.2017 + - security possible PHP code injection on custom resources at display() or fetch() + calls if the resource does not sanitize the template name + - bugfix fix 'mkdir(): File exists' error on create directory from parallel + processes https://github.com/smarty-php/smarty/pull/377 + - bugfix solve preg_match() hhvm parameter problem https://github.com/smarty-php/smarty/pull/372 + +27.5.2017 + - bugfix change compiled code for registered function and modifiers to called as callable to allow closures + https://github.com/smarty-php/smarty/pull/368, https://github.com/smarty-php/smarty/issues/273 + - bugfix https://github.com/smarty-php/smarty/pull/368 did break the default plugin handler + - improvement replace phpversion() by PHP_VERSION constant. + https://github.com/smarty-php/smarty/pull/363 + +21.5.2017 + - performance store flag for already required shared plugin functions in static variable or + Smarty's $_cache to improve performance when plugins are often called + https://github.com/smarty-php/smarty/commit/51e0d5cd405d764a4ea257d1bac1fb1205f74528#commitcomment-22280086 + - bugfix remove special treatment of classes implementing ArrayAccess in {foreach} + https://github.com/smarty-php/smarty/issues/332 + - bugfix remove deleted files by clear_cache() and clear_compiled_template() from + ACP cache if present, add some is_file() checks to avoid possible warnings on filemtime() + caused by above functions. + https://github.com/smarty-php/smarty/issues/341 + - bugfix version 3.1.31 did fail under PHP 5.2 + https://github.com/smarty-php/smarty/issues/365 + +19.5.2017 + - change properties $accessMap and $obsoleteProperties from private to protected + https://github.com/smarty-php/smarty/issues/351 + - new feature The named capture buffers can now be accessed also as array + See NEWS_FEATURES.txt https://github.com/smarty-php/smarty/issues/366 + - improvement check if ini_get() and ini_set() not disabled + https://github.com/smarty-php/smarty/pull/362 + +24.4.2017 + - fix spelling https://github.com/smarty-php/smarty/commit/e3eda8a5f5653d8abb960eb1bc47e3eca679b1b4#commitcomment-21803095 + +17.4.2017 + - correct generated code on empty() and isset() call, observe change PHP behaviour since PHP 5.5 + https://github.com/smarty-php/smarty/issues/347 + +14.4.2017 + - merge pull requests https://github.com/smarty-php/smarty/pull/349, https://github.com/smarty-php/smarty/pull/322 and https://github.com/smarty-php/smarty/pull/337 to fix spelling and annotation + +13.4.2017 + - bugfix array_merge() parameter should be checked https://github.com/smarty-php/smarty/issues/350 + +===== 3.1.31 ===== (14.12.2016) + 23.11.2016 + - move template object cache into static variables + + 19.11.2016 + - bugfix inheritance root child templates containing nested {block}{/block} could call sub-bock content from parent + template https://github.com/smarty-php/smarty/issues/317 + - change version checking + + 11.11.2016 + - bugfix when Smarty is using a cached template object on Smarty::fetch() or Smarty::isCached() the inheritance data + must be removed https://github.com/smarty-php/smarty/issues/312 + - smaller speed optimization + + 08.11.2016 + - add bootstrap file to load and register Smarty_Autoloader. Change composer.json to make it known to composer + + 07.11.2016 + - optimization of lexer speed https://github.com/smarty-php/smarty/issues/311 + + 27.10.2016 + - bugfix template function definitions array has not been cached between Smarty::fetch() and Smarty::display() calls + https://github.com/smarty-php/smarty/issues/301 + + 23.10.2016 + - improvement/bugfix when Smarty::fetch() is called on a template object the inheritance and tplFunctions property + should be copied to the called template object + + 21.10.2016 + - bugfix for compile locking touched timestamp of old compiled file was not restored on compilation error https://github.com/smarty-php/smarty/issues/308 + + 20.10.2016 + - bugfix nocache code was not removed in cache file when subtemplate did contain PHP short tags in text but no other + nocache code https://github.com/smarty-php/smarty/issues/300 + + 19.10.2016 + - bugfix {make_nocache $var} did fail when variable value did contain '\' https://github.com/smarty-php/smarty/issues/305 + - bugfix {make_nocache $var} remove spaces from variable value https://github.com/smarty-php/smarty/issues/304 + + 12.10.2016 + - bugfix {include} with template names including variable or constants could fail after bugfix from + 28.09.2016 https://github.com/smarty-php/smarty/issues/302 + + 08.10.2016 + - optimization move runtime extension for template functions into Smarty objects + + 29.09.2016 + - improvement new Smarty::$extends_recursion property to disable execution of {extends} in templates called by extends resource + https://github.com/smarty-php/smarty/issues/296 + + 28.09.2016 + - bugfix the generated code for calling a subtemplate must pass the template resource name in single quotes https://github.com/smarty-php/smarty/issues/299 + - bugfix nocache hash was not removed for <?xml ?> tags in subtemplates https://github.com/smarty-php/smarty/issues/300 + + 27.09.2016 + - bugfix when Smarty does use an internally cached template object on Smarty::fetch() calls + the template and config variables must be cleared https://github.com/smarty-php/smarty/issues/297 + + 20.09.2016 + - bugfix some $smarty special template variables are no longer accessed as real variable. + using them on calls like {if isset($smarty.foo)} or {if empty($smarty.foo)} will fail + http://www.smarty.net/forums/viewtopic.php?t=26222 + - temporary fix for https://github.com/smarty-php/smarty/issues/293 main reason still under investigation + - improvement new tags {block_parent} {block_child} in template inheritance + + 19.09.2016 + - optimization clear compiled and cached folder completely on detected version change + - cleanup convert cache resource file method clear into runtime extension + + 15.09.2016 + - bugfix assigning a variable in if condition by function like {if $value = array_shift($array)} the function got called twice https://github.com/smarty-php/smarty/issues/291 + - bugfix function plugins called with assign attribute like {foo assign='bar'} did not output returned content because + because assumption was made that it was assigned to a variable https://github.com/smarty-php/smarty/issues/292 + - bugfix calling $smarty->isCached() on a not existing cache file with $smarty->cache_locking = true; could cause a 10 second delay http://www.smarty.net/forums/viewtopic.php?t=26282 + - improvement make Smarty::clearCompiledTemplate() on custom resource independent from changes of templateId computation + + 11.09.2016 + - improvement {math} misleading E_USER_WARNING messages when parameter value = null https://github.com/smarty-php/smarty/issues/288 + - improvement move often used code snippets into methods + - performance Smarty::configLoad() did load unneeded template source object + + 09.09.2016 + - bugfix/optimization {foreach} did not execute the {foreachelse} when iterating empty objects https://github.com/smarty-php/smarty/pull/287 + - bugfix {foreach} must keep the @properties when restoring a saved $item variable as the properties might be used outside {foreach} https://github.com/smarty-php/smarty/issues/267 + - improvement {foreach} observe {break n} and {continue n} nesting levels when restoring saved $item and $key variables + + 08.09.2016 + - bugfix implement wrapper for removed method getConfigVariable() https://github.com/smarty-php/smarty/issues/286 + + 07.09.2016 + - bugfix using nocache like attribute with value true like {plugin nocache=true} did not work https://github.com/smarty-php/smarty/issues/285 + - bugfix uppercase TRUE, FALSE and NULL did not work when security was enabled https://github.com/smarty-php/smarty/issues/282 + - bugfix when {foreach} was looping over an object the total property like {$item@total} did always return 1 https://github.com/smarty-php/smarty/issues/281 + - bugfix {capture}{/capture} did add in 3.1.30 unintended additional blank lines https://github.com/smarty-php/smarty/issues/268 + + 01.09.2016 + - performance require_once should be called only once for shared plugins https://github.com/smarty-php/smarty/issues/280 + + 26.08.2016 + - bugfix change of 23.08.2016 failed on linux when use_include_path = true + + 23.08.2016 + - bugfix remove constant DS as shortcut for DIRECTORY_SEPARATOR as the user may have defined it to something else https://github.com/smarty-php/smarty/issues/277 + + 20.08-2016 + - bugfix {config_load ... scope="global"} shall not throw an arror but fallback to scope="smarty" https://github.com/smarty-php/smarty/issues/274 + - bugfix {make_nocache} failed when using composer autoloader https://github.com/smarty-php/smarty/issues/275 + + 14.08.2016 + - bugfix $smarty_>debugging = true; did E_NOTICE messages when {eval} tag was used https://github.com/smarty-php/smarty/issues/266 + - bugfix Class 'Smarty_Internal_Runtime_ValidateCompiled' not found when upgrading from some older Smarty versions with existing + compiled or cached template files https://github.com/smarty-php/smarty/issues/269 + - optimization remove unneeded call to update acopes when {assign} scope and template scope was local (default) + +===== 3.1.30 ===== (07.08.2016) + + 07.08.2016 + - bugfix update of 04.08.2016 was incomplete + + 05.08.2016 + - bugfix compiling of templates failed when the Smarty delimiter did contain '/' https://github.com/smarty-php/smarty/issues/264 + - updated error checking at template and config default handler + + 04.08.2016 + - improvement move template function source parameter into extension + + 26.07.2016 + - optimization unneeded loading of compiled resource + + 24.07.2016 + - regression this->addPluginsDir('/abs/path/to/dir') adding absolute path without trailing '/' did fail https://github.com/smarty-php/smarty/issues/260 + + 23.07.2016 + - bugfix setTemplateDir('/') and setTemplateDir('') did create wrong absolute filepath https://github.com/smarty-php/smarty/issues/245 + - optimization of filepath normalization + - improvement remove double function declaration in plugin shared.escape_special_cars.php https://github.com/smarty-php/smarty/issues/229 + + 19.07.2016 + - bugfix multiple {include} with relative filepath within {block}{/block} could fail https://github.com/smarty-php/smarty/issues/246 + - bugfix {math} shell injection vulnerability patch provided by Tim Weber + + 18.07.2016 + - bugfix {foreach} if key variable and item@key attribute have been used both the key variable was not updated https://github.com/smarty-php/smarty/issues/254 + - bugfix modifier on plugins like {plugin|modifier ... } did fail when the plugin does return an array https://github.com/smarty-php/smarty/issues/228 + - bugfix avoid opcache_invalidate to result in ErrorException when opcache.restrict_api is not empty https://github.com/smarty-php/smarty/pull/244 + - bugfix multiple {include} with relative filepath within {block}{/block} could fail https://github.com/smarty-php/smarty/issues/246 + + 14.07.2016 + - bugfix wrong parameter on compileAllTemplates() and compileAllConfig() https://github.com/smarty-php/smarty/issues/231 + + 13.07.2016 + - bugfix PHP 7 compatibility on registered compiler plugins https://github.com/smarty-php/smarty/issues/241 + - update testInstall() https://github.com/smarty-php/smarty/issues/248https://github.com/smarty-php/smarty/issues/248 + - bugfix enable debugging could fail when template objects did already exists https://github.com/smarty-php/smarty/issues/237 + - bugfix template function data should be merged when loading subtemplate https://github.com/smarty-php/smarty/issues/240 + - bugfix wrong parameter on compileAllTemplates() https://github.com/smarty-php/smarty/issues/231 + + 12.07.2016 + - bugfix {foreach} item variable must be created also on empty from array https://github.com/smarty-php/smarty/issues/238 and https://github.com/smarty-php/smarty/issues/239 + - bugfix enableSecurity() must init cache flags https://github.com/smarty-php/smarty/issues/247 + + 27.05.2016 + - bugfix/improvement of compileAlltemplates() follow symlinks in template folder (PHP >= 5.3.1) https://github.com/smarty-php/smarty/issues/224 + clear internal cache and expension handler for each template to avoid possible conflicts https://github.com/smarty-php/smarty/issues/231 + + 16.05.2016 + - optimization {foreach} compiler and processing + - broken PHP 5.3 and 5.4 compatibility + + 15.05.2016 + - optimization and cleanup of resource code + + 10.05.2016 + - optimization of inheritance processing + + 07.05.2016 + -bugfix Only variables should be assigned by reference https://github.com/smarty-php/smarty/issues/227 + + 02.05.2016 + - enhancement {block} tag names can now be variable https://github.com/smarty-php/smarty/issues/221 + + 01.05.2016 + - bugfix same relative filepath at {include} called from template in different folders could display wrong sub-template + + 29.04.2016 + - bugfix {strip} remove space on linebreak between html tags https://github.com/smarty-php/smarty/issues/213 + + 24.04.2016 + - bugfix nested {include} with relative file path could fail when called in {block} ... {/block} https://github.com/smarty-php/smarty/issues/218 + + 14.04.2016 + - bugfix special variable {$smarty.capture.name} was not case sensitive on name https://github.com/smarty-php/smarty/issues/210 + - bugfix the default template handler must calculate the source uid https://github.com/smarty-php/smarty/issues/205 + + 13.04.2016 + - bugfix template inheritance status must be saved when calling sub-templates https://github.com/smarty-php/smarty/issues/215 + + 27.03.2016 + - bugfix change of 11.03.2016 cause again {capture} data could not been seen in other templates with {$smarty.capture.name} https://github.com/smarty-php/smarty/issues/153 + + 11.03.2016 + - optimization of capture and security handling + - improvement $smarty->clearCompiledTemplate() should return on recompiled or uncompiled resources + + 10.03.2016 + - optimization of resource processing + + 09.03.2016 + - improvement rework of 'scope' attribute handling see see NEW_FEATURES.txt https://github.com/smarty-php/smarty/issues/194 + https://github.com/smarty-php/smarty/issues/186 https://github.com/smarty-php/smarty/issues/179 + - bugfix correct Autoloader update of 2.3.2014 https://github.com/smarty-php/smarty/issues/199 + + 04.03.2016 + - bugfix change from 01.03.2016 will cause $smarty->isCached(..) failure if called multiple time for same template + (forum topic 25935) + + 02.03.2016 + - revert autoloader optimizations because of unexplainable warning when using plugins https://github.com/smarty-php/smarty/issues/199 + + 01.03.2016 + - bugfix template objects must be cached on $smarty->fetch('foo.tpl) calls incase the template is fetched + multiple times (forum topic 25909) + + 25.02.2016 + - bugfix wrong _realpath with 4 or more parent-directories https://github.com/smarty-php/smarty/issues/190 + - optimization of _realpath + - bugfix instanceof expression in template code must be treated as value https://github.com/smarty-php/smarty/issues/191 + + 20.02.2016 + - bugfix {strip} must keep space between hmtl tags. Broken by changes of 10.2.2016 https://github.com/smarty-php/smarty/issues/184 + - new feature/bugfix {foreach}{section} add 'properties' attribute to force compilation of loop properties + see NEW_FEATURES.txt https://github.com/smarty-php/smarty/issues/189 + + 19.02.2016 + - revert output buffer flushing on display, echo content again because possible problems when PHP files had + characters (newline} after ?> at file end https://github.com/smarty-php/smarty/issues/187 + + 14.02.2016 + - new tag {make_nocache} read NEW_FEATURES.txt https://github.com/smarty-php/smarty/issues/110 + - optimization of sub-template processing + - bugfix using extendsall as default resource and {include} inside {block} tags could produce unexpected results https://github.com/smarty-php/smarty/issues/183 + - optimization of tag attribute compiling + - optimization make compiler tag object cache static for higher compilation speed + + 11.02.2016 + - improvement added KnockoutJS comments to trimwhitespace outputfilter https://github.com/smarty-php/smarty/issues/82 + https://github.com/smarty-php/smarty/pull/181 + + 10.02.2016 + - bugfix {strip} must keep space on output creating smarty tags within html tags https://github.com/smarty-php/smarty/issues/177 + - bugfix wrong precedence on special if conditions like '$foo is ... by $bar' could cause wrong code https://github.com/smarty-php/smarty/issues/178 + - improvement because of ambiguities the inline constant support has been removed from the $foo.bar syntax https://github.com/smarty-php/smarty/issues/149 + - bugfix other {strip} error with output tags between hmtl https://github.com/smarty-php/smarty/issues/180 + + 09.02.2016 + - move some code from parser into compiler + - reformat all code for unique style + - update/bugfix scope attribute handling reworked. Read the newfeatures.txt file + + 05.02.2016 + - improvement internal compiler changes + + 01.02.2016 + - bugfix {foreach} compilation failed when $smarty->merge_compiled_includes = true and pre-filters are used. + + 29.01.2016 + - bugfix implement replacement code for _tag_stack property https://github.com/smarty-php/smarty/issues/151 + + 28.01.2016 + - bugfix allow windows network filepath or wrapper (forum topic 25876) https://github.com/smarty-php/smarty/issues/170 + - bugfix if fetch('foo.tpl') is called on a template object the $parent parameter should default to the calling template object https://github.com/smarty-php/smarty/issues/152 + + 27.01.2016 + - revert bugfix compiling {section} did create warning + - bugfix {$smarty.section.customer.loop} did throw compiler error https://github.com/smarty-php/smarty/issues/161 + update of yesterdays fix + - bugfix string resource could inject code at {block} or inline subtemplates through PHP comments https://github.com/smarty-php/smarty/issues/157 + - bugfix output filters did not observe nocache code flhttps://github.com/smarty-php/smarty/issues/154g https://github.com/smarty-php/smarty/issues/160 + - bugfix {extends} with relative file path did not work https://github.com/smarty-php/smarty/issues/154 + https://github.com/smarty-php/smarty/issues/158 + - bugfix {capture} data could not been seen in other templates with {$smarty.capture.name} https://github.com/smarty-php/smarty/issues/153 + + 26.01.2016 + - improvement observe Smarty::$_CHARSET in debugging console https://github.com/smarty-php/smarty/issues/169 + - bugfix compiling {section} did create warning + - bugfix {$smarty.section.customer.loop} did throw compiler error https://github.com/smarty-php/smarty/issues/161 + + 02.01.2016 + - update scope handling + - optimize block plugin compiler + - improvement runtime checks if registered block plugins are callable + + 01.01.2016 + - remove Smarty::$resource_cache_mode property + + 31.12.2015 + - optimization of {assign}, {if} and {while} compiled code + + 30.12.2015 + - bugfix plugin names starting with "php" did not compile https://github.com/smarty-php/smarty/issues/147 + + 29.12.2015 + - bugfix Smarty::error_reporting was not observed when display() or fetch() was called on template objects https://github.com/smarty-php/smarty/issues/145 + + 28.12.2015 + - optimization of {foreach} code size and processing + + 27.12.2015 + - improve inheritance code + - update external methods + - code fixes + - PHPdoc updates + + 25.12.2015 + - compile {block} tag code and its processing into classes + - optimization replace hhvm extension by inline code + - new feature If ACP is enabled force an apc_compile_file() when compiled or cached template was updated + + 24.12.2015 + - new feature Compiler does now observe the template_dir setting and will create separate compiled files if required + - bugfix post filter did fail on template inheritance https://github.com/smarty-php/smarty/issues/144 + + 23.12.2015 + - optimization move internal method decodeProperties back into template object + - optimization move subtemplate processing back into template object + - new feature Caching does now observe the template_dir setting and will create separate cache files if required + + 22.12.2015 + - change $xxx_dir properties from private to protected in case Smarty class gets extended + - code optimizations + + 21.12.2015 + - bugfix a filepath starting with '/' or '\' on windows should normalize to the root dir + of current working drive https://github.com/smarty-php/smarty/issues/134 + - optimization of filepath normalization + - bugfix {strip} must remove all blanks between html tags https://github.com/smarty-php/smarty/issues/136 + + ===== 3.1.29 ===== (21.12.2015) + 21.12.2015 + - optimization improve speed of filetime checks on extends and extendsall resource + + 20.12.2015 + - bugfix failure when the default resource type was set to 'extendsall' https://github.com/smarty-php/smarty/issues/123 + - update compilation of Smarty special variables + - bugfix add addition check for OS type on normalization of file path https://github.com/smarty-php/smarty/issues/134 + - bugfix the source uid of the extendsall resource must contain $template_dir settings https://github.com/smarty-php/smarty/issues/123 + + 19.12.2015 + - bugfix using $smarty.capture.foo in expressions could fail https://github.com/smarty-php/smarty/pull/138 + - bugfix broken PHP 5.2 compatibility https://github.com/smarty-php/smarty/issues/139 + - remove no longer used code + - improvement make sure that compiled and cache templates never can contain a trailing '?>? + + 18.12.2015 + - bugfix regression when modifier parameter was followed by math https://github.com/smarty-php/smarty/issues/132 + + 17.12.2015 + - bugfix {$smarty.capture.nameFail} did lowercase capture name https://github.com/smarty-php/smarty/issues/135 + - bugfix using {block append/prepend} on same block in multiple levels of inheritance templates could fail (forum topic 25827) + - bugfix text content consisting of just a single '0' like in {if true}0{/if} was suppressed (forum topic 25834) + + 16.12.2015 + - bugfix {foreach} did fail if from atrribute is a Generator class https://github.com/smarty-php/smarty/issues/128 + - bugfix direct access $smarty->template_dir = 'foo'; should call Smarty::setTemplateDir() https://github.com/smarty-php/smarty/issues/121 + + 15.12.2015 + - bugfix {$smarty.cookies.foo} did return the $_COOKIE array not the 'foo' value https://github.com/smarty-php/smarty/issues/122 + - bugfix a call to clearAllCache() and other should clear all internal template object caches (forum topic 25828) + + 14.12.2015 + - bugfix {$smarty.config.foo} broken in 3.1.28 https://github.com/smarty-php/smarty/issues/120 + - bugfix multiple calls of {section} with same name droped E_NOTICE error https://github.com/smarty-php/smarty/issues/118 + + ===== 3.1.28 ===== (13.12.2015) + 13.12.2015 + - bugfix {foreach} and {section} with uppercase characters in name attribute did not work (forum topic 25819) + - bugfix $smarty->debugging_ctrl = 'URL' did not work (forum topic 25811) + - bugfix Debug Console could display incorrect data when using subtemplates + + 09.12.2015 + - bugfix Smarty did fail under PHP 7.0.0 with use_include_path = true; + + 09.12.2015 + - bugfix {strip} should exclude some html tags from stripping, related to fix for https://github.com/smarty-php/smarty/issues/111 + + 08.12.2015 + - bugfix internal template function data got stored in wrong compiled file https://github.com/smarty-php/smarty/issues/114 + + 05.12.2015 + -bugfix {strip} should insert a single space https://github.com/smarty-php/smarty/issues/111 + + 25.11.2015 + -bugfix a left delimter like '[%' did fail on [%$var_[%$variable%]%] (forum topic 25798) + + 02.11.2015 + - bugfix {include} with variable file name like {include file="foo_`$bar`.tpl"} did fail in 3.1.28-dev https://github.com/smarty-php/smarty/issues/102 + + 01.11.2015 + - update config file processing + + 31.10.2015 + - bugfix add missing $trusted_dir property to SmartyBC class (forum topic 25751) + + 29.10.2015 + - improve template scope handling + + 24.10.2015 + - more optimizations of template processing + - bugfix Error when using {include} within {capture} https://github.com/smarty-php/smarty/issues/100 + + 21.10.2015 + - move some code into runtime extensions + + 18.10.2015 + - optimize filepath normalization + - rework of template inheritance + - speed and size optimizations + - bugfix under HHVM temporary cache file must only be created when caches template was updated + - fix compiled code for new {block} assign attribute + - update code generated by template function call handler + + 18.09.2015 + - bugfix {if $foo instanceof $bar} failed to compile if 2nd value is a variable https://github.com/smarty-php/smarty/issues/92 + + 17.09.2015 + - bugfix {foreach} first attribute was not correctly reset since commit 05a8fa2 of 02.08.2015 https://github.com/smarty-php/smarty/issues/90 + + 16.09.2015 + - update compiler by moving no longer needed properties, code optimizations and other + + 14.09.2015 + - optimize autoloader + - optimize subtemplate handling + - update template inheritance processing + - move code of {call} processing back into Smarty_Internal_Template class + - improvement invalidate OPCACHE for cleared compiled and cached template files (forum topic 25557) + - bugfix unintended multiple debug windows (forum topic 25699) + + 30.08.2015 + - size optimization move some runtime functions into extension + - optimize inline template processing + - optimization merge inheritance child and parent templates into one compiled template file + + 29.08.2015 + - improvement convert template inheritance into runtime processing + - bugfix {$smarty.block.parent} did always reference the root parent block https://github.com/smarty-php/smarty/issues/68 + + 23.08.2015 + - introduce Smarty::$resource_cache_mode and cache template object of {include} inside loop + - load seldom used Smarty API methods dynamically to reduce memory footprint + - cache template object of {include} if same template is included several times + - convert debug console processing to object + - use output buffers for better performance and less memory usage + - optimize nocache hash processing + - remove not really needed properties + - optimize rendering + - move caching to Smarty::_cache + - remove properties with redundant content + - optimize Smarty::templateExists() + - optimize use_include_path processing + - relocate properties for size optimization + - remove redundant code + - bugfix compiling super globals like {$smarty.get.foo} did fail in the master branch https://github.com/smarty-php/smarty/issues/77 + + 06.08.2015 + - avoid possible circular object references caused by parser/lexer objects + - rewrite compileAll... utility methods + - commit several internal improvements + - bugfix Smarty failed when compile_id did contain "|" + + 03.08.2015 + - rework clear cache methods + - bugfix compileAllConfig() was broken since 3.1.22 because of the changes in config file processing + - improve getIncludePath() to return directory if no file was given + + 02.08.2015 + - optimization and code cleanup of {foreach} and {section} compiler + - rework {capture} compiler + + 01.08.2015 + - update DateTime object can be instance of DateTimeImmutable since PHP5.5 https://github.com/smarty-php/smarty/pull/75 + - improvement show resource type and start of template source instead of uid on eval: and string: resource (forum topic 25630) + + 31.07.2015 + - optimize {foreach} and {section} compiler + + 29.07.2015 + - optimize {section} compiler for speed and size of compiled code + + 28.07.2015 + - update for PHP 7 compatibility + + 26.07.2015 + - improvement impement workaround for HHVM PHP incompatibillity https://github.com/facebook/hhvm/issues/4797 + + 25.07.2015 + - bugfix parser did hang on text starting <?something https://github.com/smarty-php/smarty/issues/74 + + 20.07.2015 + - bugfix config files got recompiled on each request + - improvement invalidate PHP 5.5 opcache for recompiled and cached templates https://github.com/smarty-php/smarty/issues/72 + + 12.07.2015 + - optimize {extends} compilation + + 10.07.2015 + - bugfix force file: resource in demo resource.extendsall.php + + 08.07.2015 + - bugfix convert each word of class names to ucfirst in in compiler. (forum topic 25588) + + 07.07.2015 + - improvement allow fetch() or display() called on a template object to get output from other template + like $template->fetch('foo.tpl') https://github.com/smarty-php/smarty/issues/70 + - improvement Added $limit parameter to regex_replace modifier #71 + - new feature multiple indices on file: resource + + 06.07.2015 + - optimize {block} compilation + - optimization get rid of __get and __set in source object + + 01.07.2015 + - optimize compile check handling + - update {foreach} compiler + - bugfix debugging console did not display string values containing \n, \r or \t correctly https://github.com/smarty-php/smarty/issues/66 + - optimize source resources + + 28.06.2015 + - move $smarty->enableSecurity() into Smarty_Security class + - optimize security isTrustedResourceDir() + - move auto load filter methods into extension + - move $smarty->getTemplateVars() into extension + - move getStreamVariable() into extension + - move $smarty->append() and $smarty->appendByRef() into extension + - optimize autoloader + - optimize file path normalization + - bugfix PATH_SEPARATOR was replaced by mistake in autoloader + - remove redundant code + + 27.06.2015 + - bugfix resolve naming conflict between custom Smarty delimiter '<%' and PHP ASP tags https://github.com/smarty-php/smarty/issues/64 + - update $smarty->_realpath for relative path not starting with './' + - update Smarty security with new realpath handling + - update {include_php} with new realpath handling + - move $smarty->loadPlugin() into extension + - minor compiler optimizations + - bugfix allow function plugins with name ending with 'close' https://github.com/smarty-php/smarty/issues/52 + - rework of $smarty->clearCompiledTemplate() and move it to its own extension + + 19.06.2015 + - improvement allow closures as callback at $smarty->registerFilter() https://github.com/smarty-php/smarty/issues/59 + + ===== 3.1.27===== (18.06.2015) + 18.06.2015 + - bugfix another update on file path normalization failed on path containing something like "/.foo/" https://github.com/smarty-php/smarty/issues/56 + + ===== 3.1.26===== (18.06.2015) + 18.06.2015 + - bugfix file path normalization failed on path containing something like "/.foo/" https://github.com/smarty-php/smarty/issues/56 + + 17.06.2015 + - bugfix calling a plugin with nocache option but no other attributes like {foo nocache} caused call to undefined function https://github.com/smarty-php/smarty/issues/55 + + ===== 3.1.25===== (15.06.2015) + 15.06.2015 + - optimization of smarty_cachereource_keyvaluestore.php code + + 14.06.2015 + - bugfix a relative sub template path could fail if template_dir path did contain /../ https://github.com/smarty-php/smarty/issues/50 + - optimization rework of path normalization + - bugfix an output tag with variable, modifier followed by an operator like {$foo|modifier+1} did fail https://github.com/smarty-php/smarty/issues/53 + + 13.06.2015 + - bugfix a custom cache resource using smarty_cachereource_keyvaluestore.php did fail if php.ini mbstring.func_overload = 2 (forum topic 25568) + + 11.06.2015 + - bugfix the lexer could hang on very large quoted strings (forum topic 25570) + + 08.06.2015 + - bugfix using {$foo} as array index like $bar.{$foo} or in double quoted string like "some {$foo} thing" failed https://github.com/smarty-php/smarty/issues/49 + + 04.06.2015 + - bugfix possible error message on unset() while compiling {block} tags https://github.com/smarty-php/smarty/issues/46 + + 01.06.2015 + - bugfix <?xml ... ?> including template variables broken since 3.1.22 https://github.com/smarty-php/smarty/issues/47 + + 27.05.2015 + - bugfix {include} with variable file name must not create by default individual cache file (since 3.1.22) https://github.com/smarty-php/smarty/issues/43 + + 24.05.2015 + - bugfix if condition string 'neq' broken due to a typo https://github.com/smarty-php/smarty/issues/42 + + ===== 3.1.24===== (23.05.2015) + 23.05.2015 + - improvement on php_handling to allow very large PHP sections, better error handling + - improvement allow extreme large comment sections (forum 25538) + + 21.05.2015 + - bugfix broken PHP 5.2 compatibility when compiling <?php tags https://github.com/smarty-php/smarty/issues/40 + - bugfix named {foreach} comparison like $smarty.foreach.foobar.index > 1 did compile into wrong code https://github.com/smarty-php/smarty/issues/41 + + 19.05.2015 + - bugfix compiler did overwrite existing variable value when setting the nocache attribute https://github.com/smarty-php/smarty/issues/39 + - bugfix output filter trimwhitespace could run into the pcre.backtrack_limit on large output (code.google issue 220) + - bugfix compiler could run into the pcre.backtrack_limit on larger comment or {php} tag sections (forum 25538) + + 18.05.2015 + - improvement introduce shortcuts in lexer/parser rules for most frequent terms for higher + compilation speed + + 16.05.2015 + - bugfix {php}{/php} did work just for single lines https://github.com/smarty-php/smarty/issues/33 + - improvement remove not needed ?><?php transitions from compiled code + - improvement reduce number of lexer tokens on operators and if conditions + - improvement higher compilation speed by modified lexer/parser generator at "smarty/smarty-lexer" + + 13.05.2015 + - improvement remove not needed ?><?php transitions from compiled code + - improvement of debugging: + - use fresh Smarty object to display the debug console because of possible problems when the Smarty + was extended or Smarty properties had been modified in the class source + - display Smarty version number + - Truncate lenght of Origin display and extend strin value display to 80 character + - bugfix in Smarty_Security 'nl2br' should be a trusted modifier, not PHP function (code.google issue 223) + + 12.05.2015 + - bugfix {$smarty.constant.TEST} did fail on undefined constant https://github.com/smarty-php/smarty/issues/28 + - bugfix access to undefined config variable like {#undef#} did fail https://github.com/smarty-php/smarty/issues/29 + - bugfix in nested {foreach} saved item attributes got overwritten https://github.com/smarty-php/smarty/issues/33 + + ===== 3.1.23 ===== (12.05.2015) + 12.05.2015 + - bugfix of smaller performance issue introduce in 3.1.22 when caching is enabled + - bugfix missig entry for smarty-temmplate-config in autoloader + + ===== 3.1.22 ===== tag was deleted because 3.1.22 did fail caused by the missing entry for smarty-temmplate-config in autoloader + 10.05.2015 + - bugfix custom cache resource did not observe compile_id and cache_id when $cache_locking == true + - bugfix cache lock was not handled correctly after timeout when $cache_locking == true + - improvement added constants for $debugging + + 07.05.2015 + - improvement of the debugging console. Read NEW_FEATURES.txt + - optimization of resource class loading + + 06.05.2015 + - bugfix in 3.1.22-dev cache resource must not be loaded for subtemplates + - bugfix/improvement in 3.1.22-dev cache locking did not work as expected + + 05.05.2015 + - optimization on cache update when main template is modified + - optimization move <?php ?> handling from parser to new compiler module + + 05.05.2015 + - bugfix code could be messed up when {tags} are used in multiple attributes https://github.com/smarty-php/smarty/issues/23 + + 04.05.2015 + - bugfix Smarty_Resource::parseResourceName incompatible with Google AppEngine (https://github.com/smarty-php/smarty/issues/22) + - improvement use is_file() checks to avoid errors suppressed by @ which could still cause problems (https://github.com/smarty-php/smarty/issues/24) + + 28.04.2015 + - bugfix plugins of merged subtemplates not loaded in 3.1.22-dev (forum topic 25508) 2nd fix + + 28.04.2015 + - bugfix plugins of merged subtemplates not loaded in 3.1.22-dev (forum topic 25508) + + 23.04.2015 + - bugfix a nocache template variable used as parameter at {insert} was by mistake cached + + 20.04.2015 + - bugfix at a template function containing nocache code a parmeter could overwrite a template variable of same name + + 27.03.2015 + - bugfix Smarty_Security->allow_constants=false; did also disable true, false and null (change of 16.03.2015) + - improvement added a whitelist for trusted constants to security Smarty_Security::$trusted_constants (forum topic 25471) + + 20.03.2015 + - bugfix make sure that function properties get saved only in compiled files containing the fuction definition {forum topic 25452} + - bugfix correct update of global variable values on exit of template functions. (reported under Smarty Developers) + + 16.03.2015 + - bugfix problems with {function}{/function} and {call} tags in different subtemplate cache files {forum topic 25452} + - bugfix Smarty_Security->allow_constants=false; did not disallow direct usage of defined constants like {SMARTY_DIR} {forum topic 25457} + - bugfix {block}{/block} tags did not work inside double quoted strings https://github.com/smarty-php/smarty/issues/18 + + + 15.03.2015 + - bugfix $smarty->compile_check must be restored before rendering of a just updated cache file {forum 25452} + + 14.03.2015 + - bugfix {nocache} {/nocache} tags corrupted code when used within a nocache section caused by a nocache template variable. + + - bugfix template functions defined with {function} in an included subtemplate could not be called in nocache + mode with {call... nocache} if the subtemplate had it's own cache file {forum 25452} + + 10.03.2015 + - bugfix {include ... nocache} whith variable file or compile_id attribute was not executed in nocache mode. + + 12.02.2015 + - bugfix multiple Smarty::fetch() of same template when $smarty->merge_compiled_includes = true; could cause function already defined error + + 11.02.2015 + - bugfix recursive {includes} did create E_NOTICE message when $smarty->merge_compiled_includes = true; (github issue #16) + + 22.01.2015 + - new feature security can now control access to static methods and properties + see also NEW_FEATURES.txt + + 21.01.2015 + - bugfix clearCompiledTemplates(), clearAll() and clear() could try to delete whole drive at wrong path permissions because realpath() fail (forum 25397) + - bugfix 'self::' and 'parent::' was interpreted in template syntax as static class + + 04.01.2015 + - push last weeks changes to github + + - different optimizations + - improvement automatically create different versions of compiled templates and config files depending + on property settings. + - optimization restructure template processing by moving code into classes it better belongs to + - optimization restructure config file processing + + 31.12.2014 + - bugfix use function_exists('mb_get_info') for setting Smarty::$_MBSTRING. + Function mb_split could be overloaded depending on php.ini mbstring.func_overload + + + 29.12.2014 + - new feature security can now limit the template nesting level by property $max_template_nesting + see also NEW_FEATURES.txt (forum 25370) + + 29.12.2014 + - new feature security can now disable special $smarty variables listed in property $disabled_special_smarty_vars + see also NEW_FEATURES.txt (forum 25370) + + 27.12.2014 + - bugfix clear internal _is_file_cache when plugins_dir was modified + + 13.12.2014 + - improvement optimization of lexer and parser resulting in a up to 30% higher compiling speed + + 11.12.2014 + - bugfix resolve parser ambiguity between constant print tag {CONST} and other smarty tags after change of 09.12.2014 + + 09.12.2014 + - bugfix variables $null, $true and $false did not work after the change of 12.11.2014 (forum 25342) + - bugfix call of template function by a variable name did not work after latest changes (forum 25342) + + 23.11.2014 + - bugfix a plugin with attached modifier could fail if the tag was immediately followed by another Smarty tag (since 3.1.21) (forum 25326) + + 13.11.2014 + - improvement move autoload code into Autoloader.php. Use Composer autoloader when possible + + 12.11.2014 + - new feature added support of namespaces to template code + + 08.11.2014 - 10.11.2014 + - bugfix subtemplate called in nocache mode could be called with wrong compile_id when it did change on one of the calling templates + - improvement add code of template functions called in nocache mode dynamically to cache file (related to bugfix of 01.11.2014) + - bugfix Debug Console did not include all data from merged compiled subtemplates + + 04.11.2014 + - new feature $smarty->debugging = true; => overwrite existing Debug Console window (old behaviour) + $smarty->debugging = 2; => individual Debug Console window by template name + + 03.11.2014 + - bugfix Debug Console did not show included subtemplates since 3.1.17 (forum 25301) + - bugfix Modifier debug_print_var did not limit recursion or prevent recursive object display at Debug Console + (ATTENTION: parameter order has changed to be able to specify maximum recursion) + - bugfix Debug consol did not include subtemplate information with $smarty->merge_compiled_includes = true + - improvement The template variables are no longer displayed as objects on the Debug Console + - improvement $smarty->createData($parent = null, $name = null) new optional name parameter for display at Debug Console + - addition of some hooks for future extension of Debug Console + + 01.11.2014 + - bugfix and enhancement on subtemplate {include} and template {function} tags. + * Calling a template which has a nocache section could fail if it was called from a cached and a not cached subtemplate. + * Calling the same subtemplate cached and not cached with the $smarty->merge_compiled_includes enabled could cause problems + * Many smaller related changes + + 30.10.2014 + - bugfix access to class constant by object like {$object::CONST} or variable class name {$class::CONST} did not work (forum 25301) + + 26.10.2014 + - bugfix E_NOTICE message was created during compilation when ASP tags '<%' or '%>' are in template source text + - bugfix merge_compiled_includes option failed when caching enables and same subtemplate was included cached and not cached + + ===== 3.1.21 ===== (18.10.2014) + 18.10.2014 + - composer moved to github + + 17.10.2014 + - bugfix on $php_handling security and optimization of smarty_internal_parsetree (Thue Kristensen) + + 16.10.2014 + - bugfix composer.json update + + 15.10.2014 + - bugfix calling a new created cache file with fetch() and Smarty::CACHING_LIFETIME_SAVED multiple times did fail (forum 22350) + + 14.10.2014 + - bugfix any tag placed within "<script language=php>" will throw a security exception to close all thinkable holes + - bugfix classmap in root composer.json should start at "libs/..." + - improvement cache is_file(file_exists) results of loadPlugin() to avoid unnecessary calls during compilation (Issue 201} + + 12.10.2014 + - bugfix a comment like "<script{*foo*} language=php>" bypassed $php_handling checking (Thue Kristensen) + - bugfix change of 08.10.2014 could create E_NOTICE meassage when using "<?php" tags + - bugfix "<script language=php>" with $php_handling PHP_PASSTHRU was executed in {nocache} sections + + ===== 3.1.20 ===== (09.10.2014) + 08.10.2014 + - bugfix security mode of "<script language=php>" must be controlled by $php_handling property (Thue Kristensen) + + 01.10.2014 + - bugfix template resource of inheritance blocks could get invalid if the default resource type is not 'file'(Issue 202) + - bugfix existing child {block} tag must override parent {block} tag append / prepend setting (topic 25259) + + 02.08.2014 + - bugfix modifier wordwrap did output break string wrong if first word was exceeding length with cut = true (topic 25193) + + 24.07.2014 + - bugfix cache clear when cache folder does not exist + + 16.07.2014 + - enhancement remove BOM automatically from template source (topic 25161) + + 04.07.2014 + - bugfix the bufix of 02.06.2014 broke correct handling of child templates with same name but different template folders in extends resource (issue 194 and topic 25099) + + ===== 3.1.19 ===== (30.06.2014) + 20.06.2014 + - bugfix template variables could not be passed as parameter in {include} when the include was in a {nocache} section (topic 25131) + + 17.06.2014 + - bugfix large template text of some charsets could cause parsing errors (topic 24630) + + 08.06.2014 + - bugfix registered objects did not work after spelling fixes of 06.06.2014 + - bugfix {block} tags within {literal} .. {/literal} got not displayed correctly (topic 25024) + - bugfix UNC WINDOWS PATH like "\\psf\path\to\dir" did not work as template directory (Issue 192) + - bugfix {html_image} security check did fail on files relative to basedir (Issue 191) + + 06.06.2014 + - fixed PHPUnit outputFilterTrimWhitespaceTests.php assertion of test result + - fixed spelling, PHPDoc , minor errors, code cleanup + + 02.06.2014 + - using multiple cwd with relative template dirs could result in identical compiled file names. (issue 194 and topic 25099) + + 19.04.2014 + - bugfix calling createTemplate(template, data) with empty data array caused notice of array to string conversion (Issue 189) + - bugfix clearCompiledTemplate() did not delete files on WINDOWS when a compile_id was specified + + 18.04.2014 + - revert bugfix of 5.4.2014 because %-e date format is not supported on all operating systems + + ===== 3.1.18 ===== (07.04.2014) + 06.04.2014 + - bugfix template inheritance fail when using custom resource after patch of 8.3.2014 (Issue 187) + - bugfix update of composer file (Issue 168 and 184) + + 05.04.2014 + - bugfix default date format leads to extra spaces when displaying dates with single digit days (Issue 165) + + 26.03.2014 + - bugfix Smart_Resource_Custom should not lowercase the resource name (Issue 183) + + 24.03.2014 + - bugfix using a {foreach} property like @iteration could fail when used in inheritance parent templates (Issue 182) + + 20.03.2014 + - bugfix $smarty->auto_literal and mbsting.func_overload 2, 6 or 7 did fail (forum topic 24899) + + 18.03.2014 + - revert change of 17.03.2014 + +17.03.2014 + - bugfix $smarty->auto_literal and mbsting.func_overload 2, 6 or 7 did fail (forum topic 24899) + + 15.03.2014 + - bugfix Smarty_CacheResource_Keyvaluestore did use different keys on read/writes and clearCache() calls (Issue 169) + + 13.03.2014 + - bugfix clearXxx() change of 27.1.2014 did not work when specifing cache_id or compile_id (forum topic 24868 and 24867) + + ===== 3.1.17 ===== + 08.03.2014 + - bugfix relative file path {include} within {block} of child templates did throw exception on first call (Issue 177) + + 17.02.2014 + - bugfix Smarty failed when executing PHP on HHVM (Hip Hop 2.4) because uniqid('',true) does return string with ',' (forum topic 20343) + + 16.02.2014 + - bugfix a '//' or '\\' in template_dir path could produce wrong path on relative filepath in {include} (Issue 175) + + 05.02.2014 + - bugfix shared.literal_compiler_param.php did throw an exception when literal did contain a '-' (smarty-developers group) + + 27.01.2014 + - bugfix $smarty->debugging = true; did show the variable of the $smarty object not the variables used in display() call (forum topic 24764) + - bugfix clearCompiledTemplate(), clearAll() and clear() should use realpath to avoid possible exception from RecursiveDirectoryIterator (Issue 171) + + 26.01.2014 + - bugfix undo block nesting checks for {nocache} for reasons like forum topic 23280 (forum topic 24762) + + 18.01.2014 + - bugfix the compiler did fail when using template inheritance and recursive {include} (smarty-developers group) + + 11.01.2014 + - bugfix "* }" (spaces before right delimiter) was interpreted by mistake as comment end tag (Issue 170) + - internals content cache should be clear when updating cache file + + 08.01.2014 + - bugfix Smarty_CacheResource_Custom did not handle template resource type specifications on clearCache() calls (Issue 169) + - bugfix SmartyBC.class.php should use require_once to load Smarty.class.php (forum topic 24683) + + ===== 3.1.16 ===== + 15.12.2013 + - bugfix {include} with {block} tag handling (forum topic 24599, 24594, 24682) (Issue 161) + Read 3.1.16_RELEASE_NOTES for more details + - enhancement additional debug output at $smarty->_parserdebug = true; + + 07.11.2013 + - bugfix too restrictive handling of {include} within {block} tags. 3.1.15 did throw errors where 3.1.14 did not (forum topic 24599) + - bugfix compiler could fail if PHP mbstring.func_overload is enabled (Issue 164) + + 28.10.2013 + - bugfix variable resource name at custom resource plugin did not work within {block} tags (Issue 163) + - bugfix notice "Trying to get property of non-object" removed (Issue 163) + - bugfix correction of modifier capitalize fix from 3.10.2013 (issue 159) + - bugfix multiple {block}s with same name in parent did not work (forum topic 24631) + + 20.10.2013 + - bugfix a variable file name at {extends} tag did fail (forum topic 24618) + + 14.10.2013 + - bugfix yesterdays fix could result in an undefined variable + + 13.10.2013 + - bugfix variable names on {include} in template inheritance did unextepted error message (forum topic 24594) (Issue 161) +.- bugfix relative includes with same name like {include './foo.tpl'} from different folder failed (forum topic 24590)(Issue 161) + + 04.10.2013 + - bugfix variable file names at {extends} had been disbabled by mistake with the rewrite of + template inheritance of 24.08.2013 (forum topic 24585) + +03.10.2013 + - bugfix loops using modifier capitalize did eat up memory (issue 159) + + ===== Smarty 3.1.15 ===== +01.10.2013 + - use current delimiters in compiler error messages (issue 157) + - improvement on performance when using error handler and multiple template folders (issue 152) + +17.09.2013 + - improvement added patch for additional SmartyCompilerException properties for better access to scource information (forum topic 24559) + +16.09.2013 + - bugfix recompiled templates did not show on first request with zend opcache cache (forum topic 24320) + +13.09.2013 + - bugfix html_select_time defaulting error for the Meridian dropdown (forum topic 24549) + +09.09.2012 +- bugfix incorrect compiled code with array(object,method) callback at registered Variable Filter (forum topic 24542) + +27.08.2013 +- bugfix delimiter followed by linebreak did not work as auto literal after update from 24.08.2013 (forum topic 24518) + +24.08.2013 +- bugfix and enhancement + Because several recent problems with template inheritance the {block} tag compiler has been rewriten + - Error messages shown now the correct child template file and line number + - The compiler could fail on some larger UTF-8 text block (forum topic 24455) + - The {strip} tag can now be placed outside {block} tags in child templates (forum topic 24289) +- change SmartyException::$escape is now false by default +- change PHP traceback has been remove for SmartyException and SmartyCompilerException + +14.08.2013 +- bugfix compiled filepath of config file did not observe different config_dir (forum topic 24493) + +13.08.2013 +- bugfix the internal resource cache did not observe config_dir changes (forum topic 24493) + +12.08.2013 +- bugfix internal $tmpx variables must be unique over all inheritance templates (Issue 149) + +10.08.2013 +- bugfix a newline was eaten when a <?xml ... ?> was passed by a Smarty variable and caching was enabled (forum topic 24482) + +29.07.2013 +- bugfix headers already send warning thrown when using 'SMARTY_DEBUG=on' from URL (Issue 148) + +27.07.2013 +- enhancement allow access to properties of registered opjects for Smarty2 BC (forum topic 24344) + +26.07.2013 +- bugfix template inheritance nesting problem (forum topic 24387) + +15.7.2013 +- update code generated by PSR-2 standards fixer which introduced PHP 5.4 incompatibilities of 14.7.2013 + +14.7.2013 +- bugfix increase of internal maximum parser stacksize to allow more complex tag code {forum topic 24426} +- update for PHP 5.4 compatibility +- reformat source to PSR-2 standard + +12.7.2013 +- bugfix Do not remove '//' from file path at normalization (Issue 142) + +2.7.2013 +- bugfix trimwhitespace would replace captured items in wrong order (forum topic 24387) + +===== Smarty-3.1.14 ===== +27.06.2013 +- bugfix removed PHP 5.5 deprecated preg_replace /e option in modifier capitalize (forum topic 24389) + +17.06.2013 +- fixed spelling in sources and documentation (from smarty-developers forum Veres Lajos) +- enhancement added constant SMARTY::CLEAR_EXPIRED for the change of 26.05.2013 (forum topic 24310) +- bugfix added smarty_security.php to composer.json (Issue 135) + +26.05.2013 +- enhancement an expire_time of -1 in clearCache() and clearAllCache() will delete outdated cache files + by their individual cache_lifetime used at creation (forum topic 24310) + +21.05.2013 +- bugfix modifier strip_tags:true was compiled into wrong code (Forum Topic 24287) +- bugfix /n after ?> in Smarty.class.php did start output buffering (Issue 138) + +25.04.2013 +- bugfix escape and wordrap modifier could be compiled into wrong code when used in {nocache}{/nocache} + section but caching is disabled (Forum Topic 24260) + +05.04.2013 +- bugfix post filter must not run when compiling inheritance child blocks (Forum Topic 24094) +- bugfix after the fix for Issue #130 compiler exceptions got double escaped (Forum Topic 24199) + +28.02.2013 +- bugfix nocache blocks could be lost when using CACHING_LIFETIME_SAVED (Issue #133) +- bugfix Compile ID gets nulled when compiling child blocks (Issue #134) + + +24.01.2013 +- bugfix wrong tag type in smarty_internal_templatecompilerbase.php could cause wrong plugin search order (Forum Topic 24028) + +===== Smarty-3.1.13 ===== +13.01.2013 +- enhancement allow to disable exception message escaping by SmartyException::$escape = false; (Issue #130) + +09.01.2013 +- bugfix compilation did fail when a prefilter did modify an {extends} tag c +- bugfix template inheritance could fail if nested {block} tags in childs did contain {$smarty.block.child} (Issue #127) +- bugfix template inheritance could fail if {block} tags in childs did have similar name as used plugins (Issue #128) +- added abstract method declaration doCompile() in Smarty_Internal_TemplateCompilerBase (Forum Topic 23969) + +06.01.2013 +- Allow '://' URL syntax in template names of stream resources (Issue #129) + +27.11.2012 +- bugfix wrong variable usage in smarty_internal_utility.php (Issue #125) + +26.11.2012 +- bugfix global variable assigned within template function are not seen after template function exit (Forum Topic 23800) + +24.11.2012 +- made SmartyBC loadable via composer (Issue #124) + +20.11.2012 +- bugfix assignGlobal() called from plugins did not work (Forum Topic 23771) + +13.11.2012 +- adding attribute "strict" to html_options, html_checkboxes, html_radios to only print disabled/readonly attributes if their values are true or "disabled"/"readonly" (Issue #120) + +01.11.2012 +- bugfix muteExcpetedErrors() would screw up for non-readable paths (Issue #118) + +===== Smarty-3.1.12 ===== +14.09.2012 +- bugfix template inheritance failed to compile with delimiters {/ and /} (Forum Topic 23008) + +11.09.2012 +- bugfix escape Smarty exception messages to avoid possible script execution + +10.09.2012 +- bugfix tag option flags and shorttag attributes did not work when rdel started with '=' (Forum Topic 22979) + +31.08.2012 +- bugfix resolving relative paths broke in some circumstances (Issue #114) + +22.08.2012 +- bugfix test MBString availability through mb_split, as it could've been compiled without regex support (--enable-mbregex). + Either we get MBstring's full package, or we pretend it's not there at all. + +21.08.2012 +- bugfix $auto_literal = false did not work with { block} tags in child templates + (problem was reintroduced after fix in 3.1.7)(Forum Topic 20581) + +17.08.2012 +- bugfix compiled code of nocache sections could contain wrong escaping (Forum Topic 22810) + +15.08.2012 +- bugfix template inheritance did produce wrong code if subtemplates with {block} was + included several times (from smarty-developers forum) + +14.08.2012 +- bugfix PHP5.2 compatibility compromised by SplFileInfo::getBasename() (Issue 110) + +01.08.2012 +- bugfix avoid PHP error on $smarty->configLoad(...) with invalid section specification (Forum Topic 22608) + +30.07.2012 +-bugfix {assign} in a nocache section should not overwrite existing variable values + during compilation (issue 109) + +28.07.2012 +- bugfix array access of config variables did not work (Forum Topic 22527) + +19.07.2012 +- bugfix the default plugin handler did create wrong compiled code for static class methods + from external script files (issue 108) + +===== Smarty-3.1.11 ===== +30.06.2012 +- bugfix {block.. hide} did not work as nested child (Forum Topic 22216) + +25.06.2012 +- bugfix the default plugin handler did not allow static class methods for modifier (issue 85) + +24.06.2012 +- bugfix escape modifier support for PHP < 5.2.3 (Forum Topic 21176) + +11.06.2012 +- bugfix the patch for Topic 21856 did break tabs between tag attributes (Forum Topic 22124) + +===== Smarty-3.1.10 ===== +09.06.2012 +- bugfix the compiler did ignore registered compiler plugins for closing tags (Forum Topic 22094) +- bugfix the patch for Topic 21856 did break multiline tags (Forum Topic 22124) + +===== Smarty-3.1.9 ===== +07.06.2012 +- bugfix fetch() and display() with relative paths (Issue 104) +- bugfix treat "0000-00-00" as 0 in modifier.date_format (Issue 103) + +24.05.2012 +- bugfix Smarty_Internal_Write_File::writeFile() could cause race-conditions on linux systems (Issue 101) +- bugfix attribute parameter names of plugins may now contain also "-" and ":" (Forum Topic 21856) +- bugfix add compile_id to cache key of of source (Issue 97) + +22.05.2012 +- bugfix recursive {include} within {section} did fail (Smarty developer group) + +12.05.2012 +- bugfix {html_options} did not properly escape values (Issue 98) + +03.05.2012 +- bugfix make HTTP protocall version variable (issue 96) + +02.05.2012 +- bugfix {nocache}{block}{plugin}... did produce wrong compiled code when caching is disabled (Forum Topic 21572, issue 95) + +12.04.2012 +- bugfix Smarty did eat the linebreak after the <?xml...?> closing tag (Issue 93) +- bugfix concurrent cache updates could create a warning (Forum Topic 21403) + +08.04.2012 +- bugfix "\\" was not escaped correctly when generating nocache code (Forum Topic 21364) + +30.03.2012 +- bugfix template inheritance did not throw exception when a parent template was deleted (issue 90) + +27.03.2012 +- bugfix prefilter did run multiple times on inline subtemplates compiled into several main templates (Forum Topic 21325) +- bugfix implement Smarty2's behaviour of variables assigned by reference in SmartyBC. {assign} will affect all references. + (issue 88) + +21.03.2012 +- bugfix compileAllTemplates() and compileAllConfig() did not return the number of compiled files (Forum Topic 21286) + +13.03.2012 +- correction of yesterdays bugfix (Forum Topic 21175 and 21182) + +12.03.2012 +- bugfix a double quoted string of "$foo" did not compile into PHP "$foo" (Forum Topic 21175) +- bugfix template inheritance did set $merge_compiled_includes globally true + +03.03.2012 +- optimization of compiling speed when same modifier was used several times + +02.03.2012 +- enhancement the default plugin handler can now also resolve undefined modifier (Smarty::PLUGIN_MODIFIER) + (Issue 85) + +===== Smarty-3.1.8 ===== +19.02.2012 +- bugfix {include} could result in a fatal error if used in appended or prepended nested {block} tags + (reported by mh and Issue 83) +- enhancement added Smarty special variable $smarty.template_object to return the current template object (Forum Topic 20289) + + +07.02.2012 +- bugfix increase entropy of internal function names in compiled and cached template files (Forum Topic 20996) +- enhancement cacheable parameter added to default plugin handler, same functionality as in registerPlugin (request by calguy1000) + +06.02.2012 +- improvement stream_resolve_include_path() added to Smarty_Internal_Get_Include_Path (Forum Topic 20980) +- bugfix fetch('extends:foo.tpl') always yielded $source->exists == true (Forum Topic 20980) +- added modifier unescape:"url", fix (Forum Topic 20980) +- improvement replaced some calls of preg_replace with str_replace (Issue 73) + +30.01.2012 +- bugfix Smarty_Security internal $_resource_dir cache wasn't properly propagated + +27.01.2012 +- bugfix Smarty did not a template name of "0" (Forum Topic 20895) + +20.01.2012 +- bugfix typo in Smarty_Internal_Get_IncludePath did cause runtime overhead (Issue 74) +- improvment remove unneeded assigments (Issue 75 and 76) +- fixed typo in template parser +- bugfix output filter must not run before writing cache when template does contain nocache code (Issue 71) + +02.01.2012 +- bugfix {block foo nocache} did not load plugins within child {block} in nocache mode (Forum Topic 20753) + +29.12.2011 +- bugfix enable more entropy in Smarty_Internal_Write_File for "more uniqueness" and Cygwin compatibility (Forum Topic 20724) +- bugfix embedded quotes in single quoted strings did not compile correctly in {nocache} sections (Forum Topic 20730) + +28.12.2011 +- bugfix Smarty's internal header code must be excluded from postfilters (issue 71) + +22.12.2011 +- bugfix the new lexer of 17.12.2011 did fail if mbstring.func_overload != 0 (issue 70) (Forum Topic 20680) +- bugfix template inheritace did fail if mbstring.func_overload != 0 (issue 70) (Forum Topic 20680) + +20.12.2011 +- bugfix template inheritance: {$smarty.block.child} in nested child {block} tags did not return + content after {$smarty.block.child} (Forum Topic 20564) + +===== Smarty-3.1.7 ===== +18.12.2011 +- bugfix strings ending with " in multiline strings of config files failed to compile (issue #67) +- added chaining to Smarty_Internal_Templatebase +- changed unloadFilter() to not return a boolean in favor of chaining and API conformity +- bugfix unregisterObject() raised notice when object to unregister did not exist +- changed internals to use Smarty::$_MBSTRING ($_CHARSET, $_DATE_FORMAT) for better unit testing +- added Smarty::$_UTF8_MODIFIER for proper PCRE charset handling (Forum Topic 20452) +- added Smarty_Security::isTrustedUri() and Smarty_Security::$trusted_uri to validate + remote resource calls through {fetch} and {html_image} (Forum Topic 20627) + +17.12.2011 +- improvement of compiling speed by new handling of plain text blocks in the lexer/parser (issue #68) + +16.12.2011 +- bugfix the source exits flag and timestamp was not setup when template was in php include path (issue #69) + +9.12.2011 +- bugfix {capture} tags around recursive {include} calls did throw exception (Forum Topic 20549) +- bugfix $auto_literal = false did not work with { block} tags in child templates (Forum Topic 20581) +- bugfix template inheritance: do not include code of {include} in overloaded {block} into compiled + parent template (Issue #66} +- bugfix template inheritance: {$smarty.block.child} in nested child {block} tags did not return expected + result (Forum Topic 20564) + +===== Smarty-3.1.6 ===== +30.11.2011 +- bugfix is_cache() for individual cached subtemplates with $smarty->caching = CACHING_OFF did produce + an exception (Forum Topic 20531) + +29.11.2011 +- bugfix added exception if the default plugin handler did return a not static callback (Forum Topic 20512) + +25.11.2011 +- bugfix {html_select_date} and {html_slecet_time} did not default to current time if "time" was not specified + since r4432 (issue 60) + +24.11.2011 +- bugfix a subtemplate later used as main template did use old variable values + +21.11.2011 +- bugfix cache file could include unneeded modifier plugins under certain condition + +18.11.2011 +- bugfix declare all directory properties private to map direct access to getter/setter also on extended Smarty class + +16.11.2011 +- bugfix Smarty_Resource::load() did not always return a proper resource handler (Forum Topic 20414) +- added escape argument to html_checkboxes and html_radios (Forum Topic 20425) + +===== Smarty-3.1.5 ===== +14.11.2011 +- bugfix allow space between function name and open bracket (forum topic 20375) + +09.11.2011 +- bugfix different behaviour of uniqid() on cygwin. See https://bugs.php.net/bug.php?id=34908 + (forum topic 20343) + +01.11.2011 +- bugfix {if} and {while} tags without condition did not throw a SmartyCompilerException (Issue #57) +- bugfix multiline strings in config files could fail on longer strings (reopened Issue #55) + +22.10.2011 +- bugfix smarty_mb_from_unicode() would not decode unicode-points properly +- bugfix use catch Exception instead UnexpectedValueException in + clearCompiledTemplate to be PHP 5.2 compatible + +21.10.2011 +- bugfix apostrophe in plugins_dir path name failed (forum topic 20199) +- improvement sha1() for array keys longer than 150 characters +- add Smarty::$allow_ambiguous_resources to activate unique resource handling (Forum Topic 20128) + +20.10.2011 +- @silenced unlink() in Smarty_Internal_Write_File since debuggers go haywire without it. +- bugfix Smarty::clearCompiledTemplate() threw an Exception if $cache_id was not present in $compile_dir when $use_sub_dirs = true. +- bugfix {html_select_date} and {html_select_time} did not properly handle empty time arguments (Forum Topic 20190) +- improvement removed unnecessary sha1() + +19.10.2011 +- revert PHP4 constructor message +- fixed PHP4 constructor message + +===== Smarty-3.1.4 ===== +19.10.2011 +- added exception when using PHP4 style constructor + +16.10.2011 +- bugfix testInstall() did not propery check cache_dir and compile_dir + +15.10.2011 +- bugfix Smarty_Resource and Smarty_CacheResource runtime caching (Forum Post 75264) + +14.10.2011 +- bugfix unique_resource did not properly apply to compiled resources (Forum Topic 20128) +- add locking to custom resources (Forum Post 75252) +- add Smarty_Internal_Template::clearCache() to accompany isCached() fetch() etc. + +13.10.2011 +- add caching for config files in Smarty_Resource +- bugfix disable of caching after isCached() call did not work (Forum Topic 20131) +- add concept unique_resource to combat potentially ambiguous template_resource values when custom resource handlers are used (Forum Topic 20128) +- bugfix multiline strings in config files could fail on longer strings (Issue #55) + +11.10.2011 +- add runtime checks for not matching {capture}/{/capture} calls (Forum Topic 20120) + +10.10.2011 +- bugfix variable name typo in {html_options} and {html_checkboxes} (Issue #54) +- bugfix <?xml> tag did create wrong output when caching enabled and the tag was in included subtemplate +- bugfix Smarty_CacheResource_mysql example was missing strtotime() calls + +===== Smarty-3.1.3 ===== +07.10.2011 +- improvement removed html comments from {mailto} (Forum Topic 20092) +- bugfix testInstall() would not show path to internal plugins_dir (Forum Post 74627) +- improvement testInstall() now showing resolved paths and checking the include_path if necessary +- bugfix html_options plugin did not handle object values properly (Issue #49, Forum Topic 20049) +- improvement html_checkboxes and html_radios to accept null- and object values, and label_ids attribute +- improvement removed some unnecessary count()s +- bugfix parent pointer was not set when fetch() for other template was called on template object + +06.10.2011 +- bugfix switch lexer internals depending on mbstring.func_overload +- bugfix start_year and end_year of {html_select_date} did not use current year as offset base (Issue #53) + +05.10.2011 +- bugfix of problem introduced with r4342 by replacing strlen() with isset() +- add environment configuration issue with mbstring.func_overload Smarty cannot compensate for (Issue #45) +- bugfix nofilter tag option did not disable default modifier +- bugfix html_options plugin did not handle null- and object values properly (Issue #49, Forum Topic 20049) + +04.10.2011 +- bugfix assign() in plugins called in subtemplates did change value also in parent template +- bugfix of problem introduced with r4342 on math plugin +- bugfix output filter should not run on individually cached subtemplates +- add unloadFilter() method +- bugfix has_nocache_code flag was not reset before compilation + +===== Smarty-3.1.2 ===== +03.10.2011 +- improvement add internal $joined_template_dir property instead computing it on the fly several times + +01.10.2011 +- improvement replaced most in_array() calls by more efficient isset() on array_flip()ed haystacks +- improvement replaced some strlen($foo) > 3 calls by isset($foo[3]) +- improvement Smarty_Internal_Utility::clearCompiledTemplate() removed redundant strlen()s + +29.09.2011 +- improvement of Smarty_Internal_Config::loadConfigVars() dropped the in_array for index look up + +28.09.2011 +- bugfix on template functions called nocache calling other template functions + +27.09.2011 +- bugfix possible warning "attempt to modify property of non-object" in {section} (issue #34) +- added chaining to Smarty_Internal_Data so $smarty->assign('a',1)->assign('b',2); is possible now +- bugfix remove race condition when a custom resource did change timestamp during compilation +- bugfix variable property did not work on objects variable in template +- bugfix smarty_make_timestamp() failed to process DateTime objects properly +- bugfix wrong resource could be used on compile check of custom resource + +26.09.2011 +- bugfix repeated calls to same subtemplate did not make use of cached template object + +24.09.2011 +- removed internal muteExpectedErrors() calls in favor of having the implementor call this once from his application +- optimized muteExpectedErrors() to pass errors to the latest registered error handler, if appliccable +- added compile_dir and cache_dir to list of muted directories +- improvment better error message for undefined templates at {include} + +23.09.2011 +- remove unused properties +- optimization use real function instead anonymous function for preg_replace_callback +- bugfix a relative {include} in child template blocks failed +- bugfix direct setting of $template_dir, $config_dir, $plugins_dir in __construct() of an + extended Smarty class created problems +- bugfix error muting was not implemented for cache locking + +===== Smarty 3.1.1 ===== +22.09.2011 +- bugfix {foreachelse} does fail if {section} was nested inside {foreach} +- bugfix debug.tpl did not display correctly when it was compiled with escape_html = true + +21.09.2011 +- bugfix look for mixed case plugin file names as in 3.0 if not found try all lowercase +- added $error_muting to suppress error messages even for badly implemented error_handlers +- optimized autoloader +- reverted ./ and ../ handling in fetch() and display() - they're allowed again + +20.09.2011 +- bugfix removed debug echo output while compiling template inheritance +- bugfix relative paths in $template_dir broke relative path resolving in {include "../foo.tpl"} +- bugfix {include} did not work inside nested {block} tags +- bugfix {assign} with scope root and global did not work in all cases + +19.09.2011 +- bugfix regression in Smarty_CacheReource_KeyValueStore introduced by r4261 +- bugfix output filter shall not run on included subtemplates + +18.09.2011 +- bugfix template caching did not care about file.tpl in different template_dir +- bugfix {include $file} was broken when merge_compiled_incluges = true +- bugfix {include} was broken when merge_compiled_incluges = true and same indluded template + was used in different main templates in one compilation run +- bugfix for Smarty2 style compiler plugins on unnamed attribute passing like {tag $foo $bar} +- bugfix debug.tpl did not display correctly when it was compiled with escape_html = true + +17.09.2011 +- bugfix lock_id for file resource would create invalid filepath +- bugfix resource caching did not care about file.tpl in different template_dir + +===== Smarty 3.1.0 ===== +15/09/2011 +- optimization of {foreach}; call internal _count() method only when "total" or "last" {foreach} properties are used + +11/09/2011 +- added unregisterObject() method + +06/09/2011 +- bugfix isset() did not work in templates on config variables + +03/09/2011 +- bugfix createTemplate() must default to cache_id and compile_id of Smarty object +- bugfix Smarty_CacheResource_KeyValueStore must include $source->uid in cache filepath to keep templates with same + name but different folders separated +- added cacheresource.apc.php example in demo folder + +02/09/2011 +- bugfix cache lock file must use absolute filepath + +01/09/2011 +- update of cache locking + +30/08/2011 +- added locking mechanism to CacheResource API (implemented with File and KeyValueStores) + +28/08/2011 +- bugfix clearCompileTemplate() did not work for specific template subfolder or resource + +27/08/2011 +- bugfix {$foo|bar+1} did create syntax error + +26/08/2011 +- bugfix when generating nocache code which contains double \ +- bugfix handle race condition if cache file was deleted between filemtime and include + +17/08/2011 +- bugfix CacheResource_Custom bad internal fetch() call + +15/08/2011 +- bugfix CacheResource would load content twice for KeyValueStore and Custom handlers + +06/08/2011 +- bugfix {include} with scope attribute could execute in wrong scope +- optimization of compile_check processing + +03/08/2011 +- allow comment tags to comment {block} tags out in child templates + +26/07/2011 +- bugfix experimental getTags() method did not work + +24/07/2011 +- sure opened output buffers are closed on exception +- bugfix {foreach} did not work on IteratorAggregate + +22/07/2011 +- clear internal caches on clearAllCache(), clearCache(), clearCompiledTemplate() + +21/07/2011 +- bugfix value changes of variable values assigned to Smarty object could not be seen on repeated $smarty->fetch() calls + +17/07/2011 +- bugfix {$smarty.block.child} did drop a notice at undefined child + +15/07/2011 +- bugfix individual cache_lifetime of {include} did not work correctly inside {block} tags +- added caches for Smarty_Internal_TemplateSource and Smarty_Internal_TemplateCompiled to reduce I/O for multiple cache_id rendering + +14/07/2011 +- made Smarty::loadPlugin() respect the include_path if required + +13/07/2011 +- optimized internal file write functionality +- bugfix PHP did eat line break on nocache sections +- fixed typo of Smarty_Security properties $allowed_modifiers and $disabled_modifiers + +06/07/2011 +- bugfix variable modifier must run befor gereral filtering/escaping + +04/07/2011 +- bugfix use (?P<name>) syntax at preg_match as some pcre libraries failed on (?<name>) +- some performance improvement when using generic getter/setter on template objects + +30/06/2011 +- bugfix generic getter/setter of Smarty properties used on template objects did throw exception +- removed is_dir and is_readable checks from directory setters for better performance + +28/06/2011 +- added back support of php template resource as undocumented feature +- bugfix automatic recompilation on version change could drop undefined index notice on old 3.0 cache and compiled files +- update of README_3_1_DEV.txt and moved into the distribution folder +- improvement show first characters of eval and string templates instead sha1 Uid in debug window + +===== Smarty 3.1-RC1 ===== +25/06/2011 +- revert change of 17/06/2011. $_smarty varibale removed. call loadPlugin() from inside plugin code if required +- code cleanup, remove no longer used properties and methods +- update of PHPdoc comments + +23/06/2011 +- bugfix {html_select_date} would not respect current time zone + +19/06/2011 +- added $errors argument to testInstall() functions to suppress output. +- added plugin-file checks to testInstall() + +18/06/2011 +- bugfix mixed use of same subtemplate inline and not inline in same script could cause a warning during compilation + +17/06/2011 +- bugfix/change use $_smarty->loadPlugin() when loading nested depending plugins via loadPlugin +- bugfix {include ... inline} within {block}...{/block} did fail + +16/06/2011 +- bugfix do not overwrite '$smarty' template variable when {include ... scope=parent} is called +- bugfix complete empty inline subtemplates did fail + +15/06/2011 +- bugfix template variables where not accessable within inline subtemplates + +12/06/2011 +- bugfix removed unneeded merging of template variable when fetching includled subtemplates + +10/06/2011 +- made protected properties $template_dir, $plugins_dir, $cache_dir, $compile_dir, $config_dir accessible via magic methods + +09/06/2011 +- fix smarty security_policy issue in plugins {html_image} and {fetch} + +05/06/2011 +- update of SMARTY_VERSION +- bugfix made getTags() working again + +04/06/2011 +- allow extends resource in file attribute of {extends} tag + +03/06/2011 +- added {setfilter} tag to set filters for variable output +- added escape_html property to control autoescaping of variable output + +27/05/2011 +- added allowed/disabled tags and modifiers in security for sandboxing + +23/05/2011 +- added base64: and urlencode: arguments to eval and string resource types + +22/05/2011 +- made time-attribute of {html_select_date} and {html_select_time} accept arrays as defined by attributes prefix and field_array + +13/05/2011 +- remove setOption / getOption calls from SamrtyBC class + +02/05/2011 +- removed experimental setOption() getOption() methods +- output returned content also on opening tag calls of block plugins +- rewrite of default plugin handler +- compile code of variable filters for better performance + +20/04/2011 +- allow {php} {include_php} tags and PHP_ALLOW handling only with the SmartyBC class +- removed support of php template resource + +20/04/2011 +- added extendsall resource example +- optimization of template variable access +- optimization of subtemplate handling {include} +- optimization of template class + +01/04/2011 +- bugfix quote handling in capitalize modifier + +28/03/2011 +- bugfix stripslashes() requried when using PCRE e-modifier + +04/03/2011 +- upgrade to new PHP_LexerGenerator version 0.4.0 for better performance + +27/02/2011 +- ignore .svn folders when clearing cache and compiled files +- string resources do not need a modify check + +26/02/2011 +- replaced smarty_internal_wrapper by SmartyBC class +- load utility functions as static methods instead through __call() +- bugfix in extends resource when subresources are used +- optimization of modify checks + +25/02/2011 +- use $smarty->error_unassigned to control NOTICE handling on unassigned variables + +21/02/2011 +- added new new compile_check mode COMPILECHECK_CACHEMISS +- corrected new cloning behaviour of createTemplate() +- do no longer store the compiler object as property in the compile_tag classes to avoid possible memory leaks + during compilation + +19/02/2011 +- optimizations on merge_compiled_includes handling +- a couple of optimizations and bugfixes related to new resource structure + +17/02/2011 +- changed ./ and ../ behaviour + +14/02/2011 +- added {block ... hide} option to suppress block if no child is defined + +13/02/2011 +- update handling of recursive subtemplate calls +- bugfix replace $smarty->triggerError() by exception in smarty_internal_resource_extends.php + +12/02/2011 +- new class Smarty_Internal_TemplateBase with shared methods of Smarty and Template objects +- optimizations of template processing +- made register... methods permanet +- code for default_plugin_handler +- add automatic recompilation at version change + +04/02/2011 +- change in Smarty_CacheResource_Custom +- bugfix cache_lifetime did not compile correctly at {include} after last update +- moved isCached processing into CacheResource class +- bugfix new CacheResource API did not work with disabled compile_check + +03/02/2011 +- handle template content as function to improve speed on multiple calls of same subtemplate and isCached()/display() calls +- bugfixes and improvents in the new resource API +- optimizations of template class code + +25/01/2011 +- optimized function html_select_time + +22/01/2011 +- added Smarty::$use_include_path configuration directive for Resource API + +21/01/2011 +- optimized function html_select_date + +19/01/2011 +- optimized outputfilter trimwhitespace + +18/01/2011 +- bugfix Config to use Smarty_Resource to fetch sources +- optimized Smarty_Security's isTrustedDir() and isTrustedPHPDir() + +17/01/2011 +- bugfix HTTP headers for CGI SAPIs + +16/01/2011 +- optimized internals of Smarty_Resource and Smarty_CacheResource + +14/01/2011 +- added modifiercompiler escape to improve performance of escaping html, htmlall, url, urlpathinfo, quotes, javascript +- added support to choose template_dir to load from: [index]filename.tpl + +12/01/2011 +- added unencode modifier to revert results of encode modifier +- added to_charset and from_charset modifier for character encoding + +11/01/2011 +- added SMARTY_MBSTRING to generalize MBString detection +- added argument $lc_rest to modifier.capitalize to lower-case anything but the first character of a word +- changed strip modifier to consider unicode white-space, too +- changed wordwrap modifier to accept UTF-8 strings +- changed count_sentences modifier to consider unicode characters and treat sequences delimited by ? and ! as sentences, too +- added argument $double_encode to modifier.escape (applies to html and htmlall only) +- changed escape modifier to be UTF-8 compliant +- changed textformat block to be UTF-8 compliant +- optimized performance of mailto function +- fixed spacify modifier so characters are not prepended and appended, made it unicode compatible +- fixed truncate modifier to properly use mb_string if possible +- removed UTF-8 frenzy from count_characters modifier +- fixed count_words modifier to treat "hello-world" as a single word like str_count_words() does +- removed UTF-8 frenzy from upper modifier +- removed UTF-8 frenzy from lower modifier + +01/01/2011 +- optimize smarty_modified_escape for hex, hexentity, decentity. + +28/12/2010 +- changed $tpl_vars, $config_vars and $parent to belong to Smarty_Internal_Data +- added Smarty::registerCacheResource() for dynamic cache resource object registration + +27/12/2010 +- added Smarty_CacheResource API and refactored existing cache resources accordingly +- added Smarty_CacheResource_Custom and Smarty_CacheResource_Mysql + +26/12/2010 +- added Smarty_Resource API and refactored existing resources accordingly +- added Smarty_Resource_Custom and Smarty_Resource_Mysql +- bugfix Smarty::createTemplate() to return properly cloned template instances + +24/12/2010 +- optimize smarty_function_escape_special_chars() for PHP >= 5.2.3 + +===== SVN 3.0 trunk ===== +14/05/2011 +- bugfix error handling at stream resources + +13/05/2011 +- bugfix condition starting with "-" did fail at {if} and {while} tags + +22/04/2011 +- bugfix allow only fixed string as file attribute at {extends} tag + +01/04/2011 +- bugfix do not run filters and default modifier when displaying the debug template +- bugfix of embedded double quotes within multi line strings (""") + +29/03/2011 +- bugfix on error message in smarty_internal_compile_block.php +- bugfix mb handling in strip modifier +- bugfix for Smarty2 style registered compiler function on unnamed attribute passing like {tag $foo $bar} + +17/03/2011 +- bugfix on default {function} parameters when {function} was used in nocache sections +- bugfix on compiler object destruction. compiler_object property was by mistake unset. + +09/03/2011 +-bugfix a variable filter should run before modifiers on an output tag (see change of 23/07/2010) + +08/03/2011 +- bugfix loading config file without section should load only defaults + +03/03/2011 +- bugfix "smarty" template variable was not recreated when cached templated had expired +- bugfix internal rendered_content must be cleared after subtemplate was included + +01/03/2011 +- bugfix replace modifier did not work in 3.0.7 on systems without multibyte support +- bugfix {$smarty.template} could return in 3.0.7 parent template name instead of + child name when it needed to compile + +25/02/2011 +- bugfix for Smarty2 style compiler plugins on unnamed attribute passing like {tag $foo $bar} + +24/02/2011 +- bugfix $smarty->clearCache('some.tpl') did by mistake cache the template object + +18/02/2011 +- bugfix removed possible race condition when isCached() was called for an individually cached subtemplate +- bugfix force default debug.tpl to be loaded by the file resource + +17/02/2011 +-improvement not to delete files starting with '.' from cache and template_c folders on clearCompiledTemplate() and clearCache() + +16/02/2011 +-fixed typo in exception message of Smarty_Internal_Template +-improvement allow leading spaces on } tag closing if auto_literal is enabled + +13/02/2011 +- bufix replace $smarty->triggerError() by exception +- removed obsolete {popup_init..} plugin from demo templates +- bugfix replace $smarty->triggerError() by exception in smarty_internal_resource_extends.php + +===== Smarty 3.0.7 ===== +09/02/2011 +- patched vulnerability when using {$smarty.template} + +01/02/2011 +- removed assert() from config and template parser + +31/01/2011 +- bugfix the lexer/parser did fail on special characters like VT + +16/01/2011 +-bugfix of ArrayAccess object handling in internal _count() method +-bugfix of Iterator object handling in internal _count() method + +14/01/2011 +-bugfix removed memory leak while processing compileAllTemplates + +12/01/2011 +- bugfix in {if} and {while} tag compiler when using assignments as condition and nocache mode + +10/01/2011 +- bugfix when using {$smarty.block.child} and name of {block} was in double quoted string +- bugfix updateParentVariables() was called twice when leaving {include} processing + +- bugfix mb_str_replace in replace and escape modifiers work with utf8 + +31/12/2010 +- bugfix dynamic configuration of $debugging_crtl did not work +- bugfix default value of $config_read_hidden changed to false +- bugfix format of attribute array on compiler plugins +- bugfix getTemplateVars() could return value from wrong scope + +28/12/2010 +- bugfix multiple {append} tags failed to compile. + +22/12/2010 +- update do not clone the Smarty object an internal createTemplate() calls to increase performance + +21/12/2010 +- update html_options to support class and id attrs + +17/12/2010 +- bugfix added missing support of $cache_attrs for registered plugins + +15/12/2010 +- bugfix assignment as condition in {while} did drop an E_NOTICE + +14/12/2010 +- bugfix when passing an array as default parameter at {function} tag + +13/12/2010 +- bugfix {$smarty.template} in child template did not return right content +- bugfix Smarty3 did not search the PHP include_path for template files + +===== Smarty 3.0.6 ===== + +12/12/2010 +- bugfix fixed typo regarding yesterdays change to allow streamWrapper + +11/12/2010 +- bugfix nested block tags in template inheritance child templates did not work correctly +- bugfix {$smarty.current_dir} in child template did not point to dir of child template +- bugfix changed code when writing temporary compiled files to allow stream_wrapper + +06/12/2010 +- bugfix getTemplateVars() should return 'null' instead dropping E_NOTICE on an unassigned variable + +05/12/2010 +- bugfix missing declaration of $smarty in Smarty class +- bugfix empty($foo) in {if} did drop a notice when $foo was not assigned + +01/12/2010 +- improvement of {debug} tag output + +27/11/2010 +-change run output filter before cache file is written. (same as in Smarty2) + +24/11/2011 +-bugfix on parser at !$foo|modifier +-change parser logic when assignments used as condition in {if] and {while} to allow assign to array element + +23/11/2011 +-bugfix allow integer as attribute name in plugin calls +-change trimm whitespace from error message, removed long list of expected tokens + +22/11/2010 +- bugfix on template inheritance when an {extends} tag was inserted by a prefilter +- added error message for illegal variable file attributes at {extends...} tags + +===== Smarty 3.0.5 ===== + + +19/11/2010 +- bugfix on block plugins with modifiers + +18/11/2010 +- change on handling of unassigned template variable -- default will drop E_NOTICE +- bugfix on Smarty2 wrapper load_filter() did not work + +17/11/2010 +- bugfix on {call} with variable function name +- bugfix on {block} if name did contain '-' +- bugfix in function.fetch.php , referece to undefined $smarty + +16/11/2010 +- bugfix whitespace in front of "<?php" in smarty_internal_compile_private_block_plugin.php +- bugfix {$smarty.now} did compile incorrectly +- bugfix on reset(),end(),next(),prev(),current() within templates +- bugfix on default parameter for {function} + +15/11/2010 +- bugfix when using {$smarty.session} as object +- bugfix scoping problem on $smarty object passed to filters +- bugfix captured content could not be accessed globally +- bugfix Smarty2 wrapper functions could not be call from within plugins + +===== Smarty 3.0.4 ===== + +14/11/2010 +- bugfix isset() did not allow multiple parameter +- improvment of some error messages +- bugfix html_image did use removed property $request_use_auto_globals +- small performace patch in Smarty class + +13/11/2010 +- bugfix overloading problem when $smarty->fetch()/display() have been used in plugins + (introduced with 3.0.2) +- code cleanup + +===== Smarty 3.0.3 ===== + +13/11/2010 +- bugfix on {debug} +- reverted location of loadPlugin() to Smarty class +- fixed comments in plugins +- fixed internal_config (removed unwanted code line) +- improvement remove last linebreak from {function} definition + +===== Smarty 3.0.2 ===== + +12/11/2010 +- reactivated $error_reporting property handling +- fixed typo in compile_continue +- fixed security in {fetch} plugin +- changed back plugin parameters to two. second is template object + with transparent access to Smarty object +- fixed {config_load} scoping form compile time to run time + +===== Smarty 3.0.0 ===== + + + +11/11/2010 +- major update including some API changes + +10/11/2010 +- observe compile_id also for config files + +09/11/2010 +-bugfix on complex expressions as start value for {for} tag +request_use_auto_globals +04/11/2010 +- bugfix do not allow access of dynamic and private object members of assigned objects when + security is enabled. + +01/11/2010 +- bugfix related to E_NOTICE change. {if empty($foo)} did fail when $foo contained a string + +28/10/2010 +- bugfix on compiling modifiers within $smarty special vars like {$smarty.post.{$foo|lower}} + +27/10/2010 +- bugfix default parameter values did not work for template functions included with {include} + +25/10/2010 +- bugfix for E_NOTICE change, array elements did not work as modifier parameter + +20/10/2010 +- bugfix for the E_NOTICE change + +19/10/2010 +- change Smarty does no longer mask out E_NOTICE by default during template processing + +13/10/2010 +- bugfix removed ambiguity between ternary and stream variable in template syntax +- bugfix use caching properties of template instead of smarty object when compiling child {block} +- bugfix {*block}...{/block*} did throw an exception in template inheritance +- bugfix on template inheritance using nested eval or string resource in {extends} tags +- bugfix on output buffer handling in isCached() method + +===== RC4 ===== + +01/10/2010 +- added {break} and {continue} tags for flow control of {foreach},{section},{for} and {while} loops +- change of 'string' resource. It's no longer evaluated and compiled files are now stored +- new 'eval' resource which evaluates a template without saving the compiled file +- change in isCached() method to allow multiple calls for the same template + +25/09/2010 +- bugfix on some compiling modifiers + +24/09/2010 +- bugfix merge_compiled_includes flag was not restored correctly in {block} tag + +22/09/2010 +- bugfix on default modifier + +18/09/2010 +- bugfix untility compileAllConfig() did not create sha1 code for compiled template file names if template_dir was defined with no trailing DS +- bugfix on templateExists() for extends resource + +17/09/2010 +- bugfix {$smarty.template} and {$smarty.current_dir} did not compile correctly within {block} tags +- bugfix corrected error message on missing template files in extends resource +- bugfix untility compileAllTemplates() did not create sha1 code for compiled template file names if template_dir was defined with no trailing DS + +16/09/2010 +- bugfix when a doublequoted modifier parameter did contain Smarty tags and ':' + +15/09/2010 +- bugfix resolving conflict between '<%'/'%>' as custom Smarty delimiter and ASP tags +- use ucfirst for resource name on internal resource class names + +12/09/2010 +- bugfix for change of 08/09/2010 (final {block} tags in subtemplates did not produce correct results) + +10/09/2010 +- bugfix for change of 08/09/2010 (final {block} tags in subtemplates did not produce correct results) + +08/09/2010 +- allow multiple template inheritance branches starting in subtemplates + +07/09/2010 +- bugfix {counter} and {cycle} plugin assigned result to smarty variable not in local(template) scope +- bugfix templates containing just {strip} {/strip} tags did produce an error + + +23/08/2010 +- fixed E_STRICT errors for uninitialized variables + +22/08/2010 +- added attribute cache_id to {include} tag + +13/08/2010 +- remove exception_handler property from Smarty class +- added Smarty's own exceptions SmartyException and SmartyCompilerException + +09/08/2010 +- bugfix on modifier with doublequoted strings as parameter containing embedded tags + +06/08/2010 +- bugfix when cascading some modifier like |strip|strip_tags modifier + +05/08/2010 +- added plugin type modifiercompiler to produce compiled modifier code +- changed standard modifier plugins to the compiling versions whenever possible +- bugfix in nocache sections {include} must not cache the subtemplate + +02/08/2010 +- bugfix strip did not work correctly in conjunction with comment lines + +31/07/2010 +- bugfix on nocache attribute at {assign} and {append} + +30/07/2010 +- bugfix passing scope attributes in doublequoted strings did not work at {include} {assign} and {append} + +25/07/2010 +- another bugfix of change from 23/07/2010 when compiling modifier + +24/07/2010 +- bugfix of change from 23/07/2010 when compiling modifier + +23/07/2010 +- changed execution order. A variable filter does now run before modifiers on output of variables +- bugfix use always { and } as delimiter for debug.tpl + + +22/07/2010 +- bugfix in templateExists() method + +20/07/2010 +- fixed handling of { strip } tag with whitespaces + +15/07/2010 +- bufix {$smarty.template} does include now the relative path, not just filename + +===== RC3 ===== + + + + +15/07/2010 +- make the date_format modifier work also on objects of the DateTime class +- implementation of parsetrees in the parser to close security holes and remove unwanted empty line in HTML output + +08/07/2010 +- bugfix on assigning multidimensional arrays within templates +- corrected bugfix for truncate modifier + +07/07/2010 +- bugfix the truncate modifier needs to check if the string is utf-8 encoded or not +- bugfix support of script files relative to trusted_dir + +06/07/2010 +- create exception on recursive {extends} calls +- fixed reported line number at "unexpected closing tag " exception +- bugfix on escape:'mail' modifier +- drop exception if 'item' variable is equal 'from' variable in {foreach} tag + +01/07/2010 +- removed call_user_func_array calls for optimization of compiled code when using registered modifiers and plugins + +25/06/2010 +- bugfix escaping " when block tags are used within doublequoted strings + +24/06/2010 +- replace internal get_time() calls with standard PHP5 microtime(true) calls in Smarty_Internal_Utility +- added $smarty->register->templateClass() and $smarty->unregister->templateClass() methods for supporting static classes with namespace + + +22/06/2010 +- allow spaces between typecast and value in template syntax +- bugfix get correct count of traversables in {foreach} tag + +21/06/2010 +- removed use of PHP shortags SMARTY_PHP_PASSTHRU mode +- improved speed of cache->clear() when a compile_id was specified and use_sub_dirs is true + +20/06/2010 +- replace internal get_time() calls with standard PHP5 microtime(true) calls +- closed security hole when php.ini asp_tags = on + +18/06/2010 +- added __toString method to the Smarty_Variable class + + +14/06/2010 +- make handling of Smarty comments followed by newline BC to Smarty2 + + +===== RC2 ===== + + + +13/06/2010 +- bugfix Smarty3 did not handle hexadecimals like 0x0F as numerical value +- bugifx Smarty3 did not accept numerical constants like .1 or 2. (without a leading or trailing digit) + +11/06/2010 +- bugfix the lexer did fail on larger {literal} ... {/literal} sections + +03/06/2010 +- bugfix on calling template functions like Smarty tags + +01/06/2010 +- bugfix on template functions used with template inheritance +- removed /* vim: set expandtab: */ comments +- bugfix of auto literal problem introduce with fix of 31/05/2010 + +31/05/2010 +- bugfix the parser did not allow some smarty variables with special name like $for, $if, $else and others. + +27/05/2010 +- bugfix on object chaining using variable properties +- make scope of {counter} and {cycle} tags again global as in Smarty2 + +26/05/2010 +- bugfix removed decrepated register_resource call in smarty_internal_template.php + +25/05/2010 +- rewrite of template function handling to improve speed +- bugfix on file dependency when merge_compiled_includes = true + + +16/05/2010 +- bugfix when passing parameter with numeric name like {foo 1='bar' 2='blar'} + +14/05/2010 +- bugfix compile new config files if compile_check and force_compile = false +- added variable static classes names to template syntax + +11/05/2010 +- bugfix make sure that the cache resource is loaded in all conditions when template methods getCached... are called externally +- reverted the change 0f 30/04/2010. With the exception of forward references template functions can be again called by a standard tag. + +10/05/2010 +- bugfix on {foreach} and {for} optimizations of 27/04/2010 + +09/05/2010 +- update of template and config file parser because of minor parser generator bugs + +07/05/2010 +- bugfix on {insert} + +06/05/2010 +- bugfix when merging compiled templates and objects are passed as parameter of the {include} tag + +05/05/2010 +- bugfix on {insert} to cache parameter +- implementation of $smarty->default_modifiers as in Smarty2 +- bugfix on getTemplateVars method + +01/05/2010 +- bugfix on handling of variable method names at object chaning + +30/04/2010 +- bugfix when comparing timestamps in sysplugins/smarty_internal_config.php +- work around of a substr_compare bug in older PHP5 versions +- bugfix on template inheritance for tag names starting with "block" +- bugfix on {function} tag with name attribute in doublequoted strings +- fix to make calling of template functions unambiguously by madatory usage of the {call} tag + +===== RC1 ===== + +27/04/2010 +- change default of $debugging_ctrl to 'NONE' +- optimization of compiled code of {foreach} and {for} loops +- change of compiler for config variables + +27/04/2010 +- bugfix in $smarty->cache->clear() method. (do not cache template object) + + +17/04/2010 +- security fix in {math} plugin + + +12/04/2010 +- bugfix in smarty_internal_templatecompilerbase (overloaded property) +- removed parser restrictions in using true,false and null as ID + +07/04/2010 +- bugfix typo in smarty_internal_templatecompilerbase + +31/03/2010 +- compile locking by touching old compiled files to avoid concurrent compilations + +29/03/2010 +- bugfix allow array definitions as modifier parameter +- bugfix observe compile_check property when loading config files +- added the template object as third filter parameter + +25/03/2010 +- change of utility->compileAllTemplates() log messages +- bugfix on nocache code in {function} tags +- new method utility->compileAllConfig() to compile all config files + +24/03/2010 +- bugfix on register->modifier() error messages + +23/03/2010 +- bugfix on template inheritance when calling multiple child/parent relations +- bugfix on caching mode SMARTY_CACHING_LIFETIME_SAVED and cache_lifetime = 0 + +22/03/2010 +- bugfix make directory separator operating system independend in compileAllTemplates() + +21/03/2010 +- removed unused code in compileAllTemplates() + +19/03/2010 +- bugfix for multiple {/block} tags on same line + +17/03/2010 +- bugfix make $smarty->cache->clear() function independent from caching status + +16/03/2010 +- bugfix on assign attribute at registered template objects +- make handling of modifiers on expression BC to Smarty2 + +15/03/2010 +- bugfix on block plugin calls + +11/03/2010 +- changed parsing of <?php and ?> back to Smarty2 behaviour + +08/03/2010 +- bugfix on uninitialized properties in smarty_internal_template +- bugfix on $smarty->disableSecurity() + +04/03/2010 +- bugfix allow uppercase chars in registered resource names +- bugfix on accessing chained objects of static classes + +01/03/2010 +- bugfix on nocache code in {block} tags if child template was included by {include} + +27/02/2010 +- allow block tags inside double quoted string + +26/02/2010 +- cache modified check implemented +- support of access to a class constant from an object (since PHP 5.3) + +24/02/2010 +- bugfix on expressions in doublequoted string enclosed in backticks +- added security property $static_classes for static class security + +18/02/2010 +- bugfix on parsing Smarty tags inside <?xml ... ?> +- bugfix on truncate modifier + +17/02/2010 +- removed restriction that modifiers did require surrounding parenthesis in some cases +- added {$smarty.block.child} special variable for template inheritance + +16/02/2010 +- bugfix on <?xml ... ?> tags for all php_handling modes +- bugfix on parameter of variablefilter.htmlspecialchars.php plugin + +14/02/2010 +- added missing _plugins property in smarty.class.php +- bugfix $smarty.const... inside doublequoted strings and backticks was compiled into wrong PHP code + +12/02/2010 +- bugfix on nested {block} tags +- changed Smarty special variable $smarty.parent to $smarty.block.parent +- added support of nested {bock} tags + +10/02/2010 +- avoid possible notice on $smarty->cache->clear(...), $smarty->clear_cache(....) +- allow Smarty tags inside <? ... ?> tags in SMARTY_PHP_QUOTE and SMARTY_PHP_PASSTHRU mode +- bugfix at new "for" syntax like {for $x=1 to 10 step 2} + +09/02/2010 +- added $smarty->_tag_stack for tracing block tag hierarchy + +08/02/2010 +- bugfix use template fullpath at §smarty->cache->clear(...), $smarty->clear_cache(....) +- bugfix of cache filename on extended templates when force_compile=true + +07/02/2010 +- bugfix on changes of 05/02/2010 +- preserve line endings type form template source +- API changes (see README file) + +05/02/2010 +- bugfix on modifier and block plugins with same name + +02/02/2010 +- retaining newlines at registered functions and function plugins + +01/25/2010 +- bugfix cache resource was not loaded when caching was globally off but enabled at a template object +- added test that $_SERVER['SCRIPT_NAME'] does exist in Smarty.class.php + +01/22/2010 +- new method $smarty->createData([$parent]) for creating a data object (required for bugfixes below) +- bugfix config_load() method now works also on a data object +- bugfix get_config_vars() method now works also on a data and template objects +- bugfix clear_config() method now works also on a data and template objects + +01/19/2010 +- bugfix on plugins if same plugin was called from a nocache section first and later from a cached section + + +###beta 7### + + +01/17/2010 +- bugfix on $smarty.const... in double quoted strings + +01/16/2010 +- internal change of config file lexer/parser on handling of section names +- bugfix on registered objects (format parameter of register_object was not handled correctly) + +01/14/2010 +- bugfix on backslash within single quoted strings +- bugfix allow absolute filepath for config files +- bugfix on special Smarty variable $smarty.cookies +- revert handling of newline on no output tags like {if...} +- allow special characters in config file section names for Smarty2 BC + +01/13/2010 +- bugfix on {if} tags + +01/12/2010 +- changed back modifier handling in parser. Some restrictions still apply: + if modifiers are used in side {if...} expression or in mathematical expressions + parentheses must be used. +- bugfix the {function..} tag did not accept the name attribute in double quotes +- closed possible security hole at <?php ... ?> tags +- bugfix of config file parser on large config files + + +###beta 6#### + +01/11/2010 +- added \n to the compiled code of the {if},{else},{elseif},{/if} tags to get output of newlines as expected by the template source +- added missing support of insert plugins +- added optional nocache attribute to {block} tags in parent template +- updated <?php...?> handling supporting now heredocs and newdocs. (thanks to Thue Jnaus Kristensen) + +01/09/2010 +- bugfix on nocache {block} tags in parent templates + +01/08/2010 +- bugfix on variable filters. filter/nofilter attributes did not work on output statements + +01/07/2010 +- bugfix on file dependency at template inheritance +- bugfix on nocache code at template inheritance + +01/06/2010 +- fixed typo in smarty_internal_resource_registered +- bugfix for custom delimiter at extends resource and {extends} tag + +01/05/2010 +- bugfix sha1() calculations at extends resource and some general improvments on sha1() handling + + +01/03/2010 +- internal change on building cache files + +01/02/2010 +- update cached_timestamp at the template object after cache file is written to avoid possible side effects +- use internally always SMARTY_CACHING_LIFETIME_* constants + +01/01/2010 +- bugfix for obtaining plugins which must be included (related to change of 12/30/2009) +- bugfix for {php} tag (trow an exception if allow_php_tag = false) + +12/31/2009 +- optimization of generated code for doublequoted strings containing variables +- rewrite of {function} tag handling + - can now be declared in an external subtemplate + - can contain nocache sections (nocache_hash handling) + - can be called in noccache sections (nocache_hash handling) + - new {call..} tag to call template functions with a variable name {call name=$foo} +- fixed nocache_hash handling in merged compiled templates + +12/30/2009 +- bugfix for plugins defined in the script as smarty_function_foo + +12/29/2009 +- use sha1() for filepath encoding +- updates on nocache_hash handling +- internal change on merging some data +- fixed cache filename for custom resources + +12/28/2009 +- update for security fixes +- make modifier plugins always trusted +- fixed bug loading modifiers in child template at template inheritance + +12/27/2009 +--- this is a major update with a couple of internal changes --- +- new config file lexer/parser (thanks to Thue Jnaus Kristensen) +- template lexer/parser fixes for PHP and {literal} handing (thanks to Thue Jnaus Kristensen) +- fix on registered plugins with different type but same name +- rewrite of plugin handling (optimized execution speed) +- closed a security hole regarding PHP code injection into cache files +- fixed bug in clear cache handling +- Renamed a couple of internal classes +- code cleanup for merging compiled templates +- couple of runtime optimizations (still not all done) +- update of getCachedTimestamp() +- fixed bug on modifier plugins at nocache output + +12/19/2009 +- bugfix on comment lines in config files + +12/17/2009 +- bugfix of parent/global variable update at included/merged subtemplates +- encode final template filepath into filename of compiled and cached files +- fixed {strip} handling in auto literals + +12/16/2009 +- update of changelog +- added {include file='foo.tpl' inline} inline option to merge compiled code of subtemplate into the calling template + +12/14/2009 +- fixed sideefect of last modification (objects in array index did not work anymore) + +12/13/2009 +- allow boolean negation ("!") as operator on variables outside {if} tag + +12/12/2009 +- bugfix on single quotes inside {function} tag +- fix short append/prepend attributes in {block} tags + +12/11/2009 +- bugfix on clear_compiled_tpl (avoid possible warning) + +12/10/2009 +- bugfix on {function} tags and template inheritance + +12/05/2009 +- fixed problem when a cached file was fetched several times +- removed unneeded lexer code + +12/04/2009 +- added max attribute to for loop +- added security mode allow_super_globals + +12/03/2009 +- template inheritance: child templates can now call functions defined by the {function} tag in the parent template +- added {for $foo = 1 to 5 step 2} syntax +- bugfix for {$foo.$x.$y.$z} + +12/01/2009 +- fixed parsing of names of special formated tags like if,elseif,while,for,foreach +- removed direct access to constants in templates because of some syntax problems +- removed cache resource plugin for mysql from the distribution +- replaced most hard errors (exceptions) by softerrors(trigger_error) in plugins +- use $template_class property for template class name when compiling {include},{eval} and {extends} tags + +11/30/2009 +- map 'true' to SMARTY_CACHING_LIFETIME_CURRENT for the $smarty->caching parameter +- allow {function} tags within {block} tags + +11/28/2009 +- ignore compile_id at debug template +- added direct access to constants in templates +- some lexer/parser optimizations + +11/27/2009 +- added cache resource MYSQL plugin + +11/26/2009 +- bugfix on nested doublequoted strings +- correct line number on unknown tag error message +- changed {include} compiled code +- fix on checking dynamic varibales with error_unassigned = true + +11/25/2009 +- allow the following writing for boolean: true, TRUE, True, false, FALSE, False +- {strip} tag functionality rewritten + +11/24/2009 +- bugfix for $smarty->config_overwrite = false + +11/23/2009 +- suppress warnings on unlink caused by race conditions +- correct line number on unknown tag error message + +------- beta 5 +11/23/2009 +- fixed configfile parser for text starting with a numeric char +- the default_template_handler_func may now return a filepath to a template source + +11/20/2009 +- bugfix for empty config files +- convert timestamps of registered resources to integer + +11/19/2009 +- compiled templates are no longer touched with the filemtime of template source + +11/18/2009 +- allow integer as attribute name in plugin calls + +------- beta 4 +11/18/2009 +- observe umask settings when setting file permissions +- avoide unneeded cache file creation for subtemplates which did occur in some situations +- make $smarty->_current_file available during compilation for Smarty2 BC + +11/17/2009 +- sanitize compile_id and cache_id (replace illegal chars with _) +- use _dir_perms and _file_perms properties at file creation +- new constant SMARTY_RESOURCE_DATE_FORMAT (default '%b %e, %Y') which is used as default format in modifier date_format +- added {foreach $array as $key=>$value} syntax +- renamed extend tag and resource to extends: {extends file='foo.tol'} , $smarty->display('extends:foo.tpl|bar.tpl); +- bugfix cycle plugin + +11/15/2009 +- lexer/parser optimizations on quoted strings + +11/14/2009 +- bugfix on merging compiled templates when source files got removed or renamed. +- bugfix modifiers on registered object tags +- fixed locaion where outputfilters are running +- fixed config file definitions at EOF +- fix on merging compiled templates with nocache sections in nocache includes +- parser could run into a PHP error on wrong file attribute + +11/12/2009 +- fixed variable filenames in {include_php} and {insert} +- added scope to Smarty variables in the {block} tag compiler +- fix on nocache code in child {block} tags + +11/11/2009 +- fixed {foreachelse}, {forelse}, {sectionelse} compiled code at nocache variables +- removed checking for reserved variables +- changed debugging handling + +11/10/2009 +- fixed preg_qoute on delimiters + +11/09/2009 +- lexer/parser bugfix +- new SMARTY_SPL_AUTOLOAD constant to control the autoloader option +- bugfix for {function} block tags in included templates + +11/08/2009 +- fixed alphanumeric array index +- bugfix on complex double quoted strings + +11/05/2009 +- config_load method can now be called on data and template objects + +11/04/2009 +- added typecasting support for template variables +- bugfix on complex indexed special Smarty variables + +11/03/2009 +- fixed parser error on objects with special smarty vars +- fixed file dependency for {incude} inside {block} tag +- fixed not compiling on non existing compiled templates when compile_check = false +- renamed function names of autoloaded Smarty methods to Smarty_Method_.... +- new security_class property (default is Smarty_Security) + +11/02/2009 +- added neq,lte,gte,mod as aliases to if conditions +- throw exception on illegal Smarty() constructor calls + +10/31/2009 +- change of filenames in sysplugins folder for internal spl_autoload function +- lexer/parser changed for increased compilation speed + +10/27/2009 +- fixed missing quotes in include_php.php + +10/27/2009 +- fixed typo in method.register_resource +- pass {} through as literal + +10/26/2009 +- merge only compiled subtemplates into the compiled code of the main template + +10/24/2009 +- fixed nocache vars at internal block tags +- fixed merging of recursive includes + +10/23/2009 +- fixed nocache var problem + +10/22/2009 +- fix trimwhitespace outputfilter parameter + +10/21/2009 +- added {$foo++}{$foo--} syntax +- buxfix changed PHP "if (..):" to "if (..){" because of possible bad code when concenating PHP tags +- autoload Smarty internal classes +- fixed file dependency for config files +- some code optimizations +- fixed function definitions on some autoloaded methods +- fixed nocache variable inside if condition of {if} tag + +10/20/2009 +- check at compile time for variable filter to improve rendering speed if no filter is used +- fixed bug at combination of {elseif} tag and {...} in double quoted strings of static class parameter + +10/19/2009 +- fixed compiled template merging on variable double quoted strings as name +- fixed bug in caching mode 2 and cache_lifetime -1 +- fixed modifier support on block tags + +10/17/2009 +- remove ?>\n<?php and ?><?php sequences from compiled template + +10/15/2009 +- buxfix on assigning array elements inside templates +- parser bugfix on array access + +10/15/2009 +- allow bit operator '&' inside {if} tag +- implementation of ternary operator + +10/13/2009 +- do not recompile evaluated templates if reused just with other data +- recompile config files when config properties did change +- some lexer/parser otimizations + +10/11/2009 +- allow {block} tags inside included templates +- bugfix for resource plugins in Smarty2 format +- some optimizations of internal.template.php + +10/11/2009 +- fixed bug when template with same name is used with different data objects +- fixed bug with double quoted name attribute at {insert} tag +- reenabled assign_by_ref and append_by_ref methods + +10/07/2009 +- removed block nesting checks for {capture} + +10/05/2009 +- added support of "isinstance" to {if} tag + +10/03/2009 +- internal changes to improve performance +- fix registering of filters for classes + +10/01/2009 +- removed default timezone setting +- reactivated PHP resource for simple PHP templates. Must set allow_php_templates = true to enable +- {PHP} tag can be enabled by allow_php_tag = true + +09/30/2009 +- fixed handling template_exits method for all resource types +- bugfix for other cache resources than file +- the methods assign_by_ref is now wrapped to assign, append_by_ref to append +- allow arrays of variables pass in display, fetch and createTemplate calls + $data = array('foo'=>'bar','foo2'=>'blar'); + $smarty->display('my.tpl',$data); + +09/29/2009 +- changed {php} tag handling +- removed support of Smarty::instance() +- removed support of PHP resource type +- improved execution speed of {foreach} tags +- fixed bug in {section} tag + +09/23/2009 +- improvements and bugfix on {include} tag handling +NOTICE: existing compiled template and cache files must be deleted + +09/19/2009 +- replace internal "eval()" calls by "include" during rendering process +- speed improvment for templates which have included subtemplates + the compiled code of included templates is merged into the compiled code of the parent template +- added logical operator "xor" for {if} tag +- changed parameter ordering for Smarty2 BC + fetch($template, $cache_id = null, $compile_id = null, $parent = null) + display($template, $cache_id = null, $compile_id = null, $parent = null) + createTemplate($template, $cache_id = null, $compile_id = null, $parent = null) +- property resource_char_set is now replaced by constant SMARTY_RESOURCE_CHAR_SET +- fixed handling of classes in registered blocks +- speed improvement of lexer on text sections + +09/01/2009 +- dropped nl2br as plugin +- added '<>' as comparission operator in {if} tags +- cached caching_lifetime property to cache_liftime for backward compatibility with Smarty2. + {include} optional attribute is also now cache_lifetime +- fixed trigger_error method (moved into Smarty class) +- version is now Beta!!! + + +08/30/2009 +- some speed optimizations on loading internal plugins + + +08/29/2009 +- implemented caching of registered Resources +- new property 'auto_literal'. if true(default) '{ ' and ' }' interpreted as literal, not as Smarty delimiter + + +08/28/2009 +- Fix on line breaks inside {if} tags + +08/26/2009 +- implemented registered resources as in Smarty2. NOTE: caching does not work yet +- new property 'force_cache'. if true it forces the creation of a new cache file +- fixed modifiers on arrays +- some speed optimization on loading internal classes + + +08/24/2009 +- fixed typo in lexer definition for '!==' operator +- bugfix - the ouput of plugins was not cached +- added global variable SCRIPT_NAME + +08/21/2009 +- fixed problems whitespace in conjuction with custom delimiters +- Smarty tags can now be used as value anywhere + +08/18/2009 +- definition of template class name moded in internal.templatebase.php +- whitespace parser changes + +08/12/2009 +- fixed parser problems + +08/11/2009 +- fixed parser problems with custom delimiter + +08/10/2009 +- update of mb support in plugins + + +08/09/2009 +- fixed problems with doublequoted strings at name attribute of {block} tag +- bugfix at scope attribute of {append} tag + +08/08/2009 +- removed all internal calls of Smarty::instance() +- fixed code in double quoted strings + +08/05/2009 +- bugfix mb_string support +- bugfix of \n.\t etc in double quoted strings + +07/29/2009 +- added syntax for variable config vars like #$foo# + +07/28/2009 +- fixed parsing of $smarty.session vars containing objects + +07/22/2009 +- fix of "$" handling in double quoted strings + +07/21/2009 +- fix that {$smarty.current_dir} return correct value within {block} tags. + +07/20/2009 +- drop error message on unmatched {block} {/block} pairs + +07/01/2009 +- fixed smarty_function_html_options call in plugin function.html_select_date.php (missing ,) + +06/24/2009 +- fixed smarty_function_html_options call in plugin function.html_select_date.php + +06/22/2009 +- fix on \n and spaces inside smarty tags +- removed request_use_auto_globals propert as it is no longer needed because Smarty 3 will always run under PHP 5 + + +06/18/2009 +- fixed compilation of block plugins when caching enabled +- added $smarty.current_dir which returns the current working directory + +06/14/2009 +- fixed array access on super globals +- allow smarty tags within xml tags + +06/13/2009 +- bugfix at extend resource: create unique files for compiled template and cache for each combination of template files +- update extend resource to handle appen and prepend block attributes +- instantiate classes of plugins instead of calling them static + +06/03/2009 +- fixed repeat at block plugins + +05/25/2009 +- fixed problem with caching of compiler plugins + +05/14/2009 +- fixed directory separator handling + +05/09/2009 +- syntax change for stream variables +- fixed bug when using absolute template filepath and caching + +05/08/2009 +- fixed bug of {nocache} tag in included templates + +05/06/2009 +- allow that plugins_dir folder names can end without directory separator + +05/05/2009 +- fixed E_STRICT incompabilities +- {function} tag bug fix +- security policy definitions have been moved from plugins folder to file Security.class.php in libs folder +- added allow_super_global configuration to security + +04/30/2009 +- functions defined with the {function} tag now always have global scope + +04/29/2009 +- fixed problem with directory setter methods +- allow that cache_dir can end without directory separator + +04/28/2009 +- the {function} tag can no longer overwrite standard smarty tags +- inherit functions defined by the {fuction} tag into subtemplates +- added {while <statement>} sytax to while tag + +04/26/2009 +- added trusted stream checking to security +- internal changes at file dependency check for caching + +04/24/2009 +- changed name of {template} tag to {function} +- added new {template} tag + +04/23/2009 +- fixed access of special smarty variables from included template + +04/22/2009 +- unified template stream syntax with standard Smarty resource syntax $smarty->display('mystream:mytemplate') + +04/21/2009 +- change of new style syntax for forach. Now: {foreach $array as $var} like in PHP + +04/20/2009 +- fixed "$foo.bar ..." variable replacement in double quoted strings +- fixed error in {include} tag with variable file attribute + +04/18/2009 +- added stream resources ($smarty->display('mystream://mytemplate')) +- added stream variables {$mystream:myvar} + +04/14/2009 +- fixed compile_id handling on {include} tags +- fixed append/prepend attributes in {block} tag +- added {if 'expression' is in 'array'} syntax +- use crc32 as hash for compiled config files. + +04/13/2009 +- fixed scope problem with parent variables when appending variables within templates. +- fixed code for {block} without childs (possible sources for notice errors removed) + +04/12/2009 +- added append and prepend attribute to {block} tag + +04/11/2009 +- fixed variables in 'file' attribute of {extend} tag +- fixed problems in modifiers (if mb string functions not present) + +04/10/2009 +- check if mb string functions available otherwise fallback to normal string functions +- added global variable scope SMARTY_GLOBAL_SCOPE +- enable 'variable' filter by default +- fixed {$smarty.block.parent.foo} +- implementation of a 'variable' filter as replacement for default modifier + +04/09/2009 +- fixed execution of filters defined by classes +- compile the always the content of {block} tags to make shure that the filters are running over it +- syntax corrections on variable object property +- syntax corrections on array access in dot syntax + +04/08/2009 +- allow variable object property + +04/07/2009 +- changed variable scopes to SMARTY_LOCAL_SCOPE, SMARTY_PARENT_SCOPE, SMARTY_ROOT_SCOPE to avoid possible conflicts with user constants +- Smarty variable global attribute replaced with scope attribute + +04/06/2009 +- variable scopes LOCAL_SCOPE, PARENT_SCOPE, ROOT_SCOPE +- more getter/setter methods + +04/05/2009 +- replaced new array looping syntax {for $foo in $array} with {foreach $foo in $array} to avoid confusion +- added append array for short form of assign {$foo[]='bar'} and allow assignments to nested arrays {$foo['bla']['blue']='bar'} + +04/04/2009 +- make output of template default handlers cachable and save compiled source +- some fixes on yesterdays update + +04/03/2006 +- added registerDefaultTemplateHandler method and functionallity +- added registerDefaultPluginHandler method and functionallity +- added {append} tag to extend Smarty array variabled + +04/02/2009 +- added setter/getter methods +- added $foo@first and $foo@last properties at {for} tag +- added $set_timezone (true/false) property to setup optionally the default time zone + +03/31/2009 +- bugfix smarty.class and internal.security_handler +- added compile_check configuration +- added setter/getter methods + +03/30/2009 +- added all major setter/getter methods + +03/28/2009 +- {block} tags can be nested now +- md5 hash function replace with crc32 for speed optimization +- file order for exted resource inverted +- clear_compiled_tpl and clear_cache_all will not touch .svn folder any longer + +03/27/2009 +- added extend resource + +03/26/2009 +- fixed parser not to create error on `word` in double quoted strings +- allow PHP array(...) +- implemented $smarty.block.name.parent to access parent block content +- fixed smarty.class + + +03/23/2009 +- fixed {foreachelse} and {forelse} tags + +03/22/2009 +- fixed possible sources for notice errors +- rearrange SVN into distribution and development folders + +03/21/2009 +- fixed exceptions in function plugins +- fixed notice error in Smarty.class.php +- allow chained objects to span multiple lines +- fixed error in modifiers + +03/20/2009 +- moved /plugins folder into /libs folder +- added noprint modifier +- autoappend a directory separator if the xxxxx_dir definition have no trailing one + +03/19/2009 +- allow array definition as modifier parameter +- changed modifier to use multi byte string funktions. + +03/17/2009 +- bugfix + +03/15/2009 +- added {include_php} tag for BC +- removed @ error suppression +- bugfix fetch did always repeat output of first call when calling same template several times +- PHPunit tests extended + +03/13/2009 +- changed block syntax to be Smarty like {block:titel} -> {block name=titel} +- compiling of {block} and {extend} tags rewriten for better performance +- added special Smarty variable block ($smarty.block.foo} returns the parent definition of block foo +- optimization of {block} tag compiled code. +- fixed problem with escaped double quotes in double quoted strings + +03/12/2009 +- added support of template inheritance by {extend } and {block } tags. +- bugfix comments within literals +- added scope attribuie to {include} tag + +03/10/2009 +- couple of bugfixes and improvements +- PHPunit tests extended + +03/09/2009 +- added support for global template vars. {assign_global...} $smarty->assign_global(...) +- added direct_access_security +- PHPunit tests extended +- added missing {if} tag conditions like "is div by" etc. + +03/08/2009 +- splitted up the Compiler class to make it easier to use a coustom compiler +- made default plugins_dir relative to Smarty root and not current working directory +- some changes to make the lexer parser better configurable +- implemented {section} tag for Smarty2 BC + +03/07/2009 +- fixed problem with comment tags +- fixed problem with #xxxx in double quoted string +- new {while} tag implemented +- made lexer and paser class configurable as $smarty property +- Smarty method get_template_vars implemented +- Smarty method get_registered_object implemented +- Smarty method trigger_error implemented +- PHPunit tests extended + +03/06/2009 +- final changes on config variable handling +- parser change - unquoted strings will by be converted into single quoted strings +- PHPunit tests extended +- some code cleanup +- fixed problem on catenate strings with expression +- update of count_words modifier +- bugfix on comment tags + + +03/05/2009 +- bugfix on <?xml...> tag with caching enabled +- changes on exception handling (by Monte) + +03/04/2009 +- added support for config variables +- bugfix on <?xml...> tag + +03/02/2009 +- fixed unqouted strings within modifier parameter +- bugfix parsing of mofifier parameter + +03/01/2009 +- modifier chaining works now as in Smarty2 + +02/28/2009 +- changed handling of unqouted strings + +02/26/2009 +- bugfix +- changed $smarty.capture.foo to be global for Smarty2 BC. + +02/24/2009 +- bugfix {php} {/php} tags for backward compatibility +- bugfix for expressions on arrays +- fixed usage of "null" value +- added $smarty.foreach.foo.first and $smarty.foreach.foo.last + +02/06/2009 +- bugfix for request variables without index for example $smarty.get +- experimental solution for variable functions in static class + +02/05/2009 +- update of popup plugin +- added config variables to template parser (load config functions still missing) +- parser bugfix for empty quoted strings + +02/03/2009 +- allow array of objects as static class variabales. +- use htmlentities at source output at template errors. + +02/02/2009 +- changed search order on modifiers to look at plugins folder first +- parser bug fix for modifier on array elements $foo.bar|modifier +- parser bug fix on single quoted srings +- internal: splitted up compiler plugin files + +02/01/2009 +- allow method chaining on static classes +- special Smarty variables $smarty.... implemented +- added {PHP} {/PHP} tags for backward compatibility + +01/31/2009 +- added {math} plugin for Smarty2 BC +- added template_exists method +- changed Smarty3 method enable_security() to enableSecurity() to follow camelCase standards + +01/30/2009 +- bugfix in single quoted strings +- changed syntax for variable property access from $foo:property to $foo@property because of ambiguous syntax at modifiers + +01/29/2009 +- syntax for array definition changed from (1,2,3) to [1,2,3] to remove ambiguous syntax +- allow {for $foo in [1,2,3]} syntax +- bugfix in double quoted strings +- allow <?xml...?> tags in template even if short_tags are enabled + +01/28/2009 +- fixed '!==' if condition. + +01/28/2009 +- added support of {strip} {/strip} tag. + +01/27/2009 +- bug fix on backticks in double quoted strings at objects + +01/25/2009 +- Smarty2 modfiers added to SVN + +01/25/2009 +- bugfix allow arrays at object properties in Smarty syntax +- the template object is now passed as additional parameter at plugin calls +- clear_compiled_tpl method completed + +01/20/2009 +- access to class constants implemented ( class::CONSTANT ) +- access to static class variables implemented ( class::$variable ) +- call of static class methods implemented ( class::method() ) + +01/16/2009 +- reallow leading _ in variable names {$_var} +- allow array of objects {$array.index->method()} syntax +- finished work on clear_cache and clear_cache_all methods + +01/11/2009 +- added support of {literal} tag +- added support of {ldelim} and {rdelim} tags +- make code compatible to run with E_STRICT error setting + +01/08/2009 +- moved clear_assign and clear_all_assign to internal.templatebase.php +- added assign_by_ref, append and append_by_ref methods + +01/02/2009 +- added load_filter method +- fished work on filter handling +- optimization of plugin loading + +12/30/2008 +- added compiler support of registered object +- added backtick support in doubled quoted strings for backward compatibility +- some minor bug fixes and improvments + +12/23/2008 +- fixed problem of not working "not" operator in if-expressions +- added handling of compiler function plugins +- finished work on (un)register_compiler_function method +- finished work on (un)register_modifier method +- plugin handling from plugins folder changed for modifier plugins + deleted - internal.modifier.php +- added modifier chaining to parser + +12/17/2008 +- finished (un)register_function method +- finished (un)register_block method +- added security checking for PHP functions in PHP templates +- plugin handling from plugins folder rewritten + new - internal.plugin_handler.php + deleted - internal.block.php + deleted - internal.function.php +- removed plugin checking from security handler + +12/16/2008 + +- new start of this change_log file diff --git a/vendor/smarty/smarty/composer.json b/vendor/smarty/smarty/composer.json index 889cb9444..28c392c95 100644 --- a/vendor/smarty/smarty/composer.json +++ b/vendor/smarty/smarty/composer.json @@ -40,7 +40,6 @@ } }, "require-dev": { - "phpunit/phpunit": "6.4.1", - "smarty/smarty-lexer": "^3.1" + "phpunit/phpunit": "6.4.1" } } diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php b/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php index 71fe9d3f1..9c8855c31 100644 --- a/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php +++ b/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php @@ -42,12 +42,18 @@ class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore */ protected function read(array $keys) { - $res = array(); - foreach ($keys as $key) { - $k = sha1($key); - $res[$key] = $this->memcache->get($k); + $_keys = $lookup = array(); + foreach ($keys as $k) { + $_k = sha1($k); + $_keys[] = $_k; + $lookup[ $_k ] = $k; + } + $_res = array(); + $res = $this->memcache->get($_keys); + foreach ($res as $k => $v) { + $_res[ $lookup[ $k ] ] = $v; } - return $res; + return $_res; } /** @@ -62,11 +68,7 @@ class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore { foreach ($keys as $k => $v) { $k = sha1($k); - if (class_exists('Memcached')) { - $this->memcache->set($k, $v, $expire); - } else { - $this->memcache->set($k, $v, 0, $expire); - } + $this->memcache->set($k, $v, 0, $expire); } return true; } diff --git a/vendor/smarty/smarty/error_reporting.ini b/vendor/smarty/smarty/error_reporting.ini new file mode 100644 index 000000000..496bbf5c2 --- /dev/null +++ b/vendor/smarty/smarty/error_reporting.ini @@ -0,0 +1 @@ +error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
\ No newline at end of file diff --git a/vendor/smarty/smarty/libs/Smarty.class.php b/vendor/smarty/smarty/libs/Smarty.class.php index 9e0ca7670..44b77a856 100644 --- a/vendor/smarty/smarty/libs/Smarty.class.php +++ b/vendor/smarty/smarty/libs/Smarty.class.php @@ -112,7 +112,7 @@ class Smarty extends Smarty_Internal_TemplateBase /** * smarty version */ - const SMARTY_VERSION = '3.1.36'; + const SMARTY_VERSION = '3.1.34-dev-7'; /** * define variable scopes */ diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php index 1f0ab9b7d..4b9984888 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php @@ -83,7 +83,7 @@ class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase if (isset($parameter[ 'smarty_internal_index' ])) { $output = "<?php \$_tmp_array = isset(\$_smarty_tpl->tpl_vars[{$_var}]) ? \$_smarty_tpl->tpl_vars[{$_var}]->value : array();\n"; - $output .= "if (!(is_array(\$_tmp_array) || \$_tmp_array instanceof ArrayAccess)) {\n"; + $output .= "if (!is_array(\$_tmp_array) || \$_tmp_array instanceof ArrayAccess) {\n"; $output .= "settype(\$_tmp_array, 'array');\n"; $output .= "}\n"; $output .= "\$_tmp_array{$parameter['smarty_internal_index']} = {$_attr['value']};\n"; diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php index a68da5409..78b45ea7e 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php @@ -219,9 +219,8 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_Compile_Private_Fo if (isset($itemAttr[ 'index' ])) { $output .= "{$itemVar}->index = -1;\n"; } - $output .= "{$itemVar}->do_else = true;\n"; - $output .= "if (\$_from !== null) foreach (\$_from as {$keyTerm}{$itemVar}->value) {\n"; - $output .= "{$itemVar}->do_else = false;\n"; + $output .= "if (\$_from !== null) {\n"; + $output .= "foreach (\$_from as {$keyTerm}{$itemVar}->value) {\n"; if (isset($attributes[ 'key' ]) && isset($itemAttr[ 'key' ])) { $output .= "\$_smarty_tpl->tpl_vars['{$key}']->value = {$itemVar}->key;\n"; } @@ -297,7 +296,7 @@ class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase if ($restore === 2) { $output .= "{$itemVar} = {$local}saved;\n"; } - $output .= "}\nif ({$itemVar}->do_else) {\n?>"; + $output .= "}\n} else {\n?>"; return $output; } } @@ -333,6 +332,9 @@ class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase if ($restore === 2) { $output .= "{$itemVar} = {$local}saved;\n"; } + if ($restore > 0) { + $output .= "}\n"; + } $output .= "}\n"; /* @var Smarty_Internal_Compile_Foreach $foreachCompiler */ $foreachCompiler = $compiler->getTagCompiler('foreach'); diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php index ed18d84bb..f987f6da5 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php @@ -48,8 +48,6 @@ class Smarty_Internal_Method_RegisterPlugin throw new SmartyException("Plugin tag '{$name}' already registered"); } elseif (!is_callable($callback)) { throw new SmartyException("Plugin '{$name}' not callable"); - } elseif ($cacheable && $cache_attr) { - throw new SmartyException("Cannot set caching attributes for plugin '{$name}' when it is cacheable."); } else { $smarty->registered_plugins[ $type ][ $name ] = array($callback, (bool)$cacheable, (array)$cache_attr); } diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php index 477232ef8..8e716bd5d 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php @@ -85,85 +85,45 @@ class Smarty_Internal_ParseTree_Template extends Smarty_Internal_ParseTree public function to_smarty_php(Smarty_Internal_Templateparser $parser) { $code = ''; - - foreach ($this->getChunkedSubtrees() as $chunk) { - $text = ''; - switch ($chunk['mode']) { - case 'textstripped': - foreach ($chunk['subtrees'] as $subtree) { - $text .= $subtree->to_smarty_php($parser); - } - $code .= preg_replace( - '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/', - "<?php echo '\$1'; ?>\n", - $parser->compiler->processText($text) - ); - break; - case 'text': - foreach ($chunk['subtrees'] as $subtree) { - $text .= $subtree->to_smarty_php($parser); - } - $code .= preg_replace( - '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/', - "<?php echo '\$1'; ?>\n", - $text - ); - break; - case 'tag': - foreach ($chunk['subtrees'] as $subtree) { - $text = $parser->compiler->appendCode($text, $subtree->to_smarty_php($parser)); - } - $code .= $text; - break; - default: - foreach ($chunk['subtrees'] as $subtree) { - $text = $subtree->to_smarty_php($parser); - } - $code .= $text; - - } + for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key++) { + if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text) { + $subtree = $this->subtrees[ $key ]->to_smarty_php($parser); + while ($key + 1 < $cnt && ($this->subtrees[ $key + 1 ] instanceof Smarty_Internal_ParseTree_Text || + $this->subtrees[ $key + 1 ]->data === '')) { + $key++; + if ($this->subtrees[ $key ]->data === '') { + continue; + } + $subtree .= $this->subtrees[ $key ]->to_smarty_php($parser); + } + if ($subtree === '') { + continue; + } + $code .= preg_replace( + '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/', + "<?php echo '\$1'; ?>\n", + $subtree + ); + continue; + } + if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Tag) { + $subtree = $this->subtrees[ $key ]->to_smarty_php($parser); + while ($key + 1 < $cnt && ($this->subtrees[ $key + 1 ] instanceof Smarty_Internal_ParseTree_Tag || + $this->subtrees[ $key + 1 ]->data === '')) { + $key++; + if ($this->subtrees[ $key ]->data === '') { + continue; + } + $subtree = $parser->compiler->appendCode($subtree, $this->subtrees[ $key ]->to_smarty_php($parser)); + } + if ($subtree === '') { + continue; + } + $code .= $subtree; + continue; + } + $code .= $this->subtrees[ $key ]->to_smarty_php($parser); } return $code; } - - private function getChunkedSubtrees() { - $chunks = []; - $currentMode = null; - $currentChunk = []; - for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key++) { - - if ($this->subtrees[ $key ]->data === '' && in_array($currentMode, ['textstripped', 'text', 'tag'])) { - continue; - } - - if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text - && $this->subtrees[ $key ]->isToBeStripped()) { - $newMode = 'textstripped'; - } elseif ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text) { - $newMode = 'text'; - } elseif ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Tag) { - $newMode = 'tag'; - } else { - $newMode = 'other'; - } - - if ($newMode == $currentMode) { - $currentChunk[] = $this->subtrees[ $key ]; - } else { - $chunks[] = [ - 'mode' => $currentMode, - 'subtrees' => $currentChunk - ]; - $currentMode = $newMode; - $currentChunk = [$this->subtrees[ $key ]]; - } - } - if ($currentMode && $currentChunk) { - $chunks[] = [ - 'mode' => $currentMode, - 'subtrees' => $currentChunk - ]; - } - return $chunks; - } } diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php index 399e84941..b3100fa09 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php @@ -16,31 +16,14 @@ */ class Smarty_Internal_ParseTree_Text extends Smarty_Internal_ParseTree { - - /** - * Wether this section should be stripped on output to smarty php - * @var bool - */ - private $toBeStripped = false; - - /** - * Create template text buffer - * - * @param string $data text - * @param bool $toBeStripped wether this section should be stripped on output to smarty php - */ - public function __construct($data, $toBeStripped = false) + /** + * Create template text buffer + * + * @param string $data text + */ + public function __construct($data) { $this->data = $data; - $this->toBeStripped = $toBeStripped; - } - - /** - * Wether this section should be stripped on output to smarty php - * @return bool - */ - public function isToBeStripped() { - return $this->toBeStripped; } /** diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php index 200c11bb5..4476f120f 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php @@ -265,7 +265,7 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data * * @param string $type plugin type * @param string $name name of template tag - * @param callable $callback PHP callback to register + * @param callback $callback PHP callback to register * @param bool $cacheable if true (default) this function is cache able * @param mixed $cache_attr caching attributes if any * @@ -301,7 +301,7 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data * @link http://www.smarty.net/docs/en/api.register.filter.tpl * * @param string $type filter type - * @param callable $callback + * @param callback $callback * @param string|null $name optional filter name * * @return \Smarty|\Smarty_Internal_Template diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php index 3cc957dec..a72f3a4ab 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php @@ -621,18 +621,22 @@ abstract class Smarty_Internal_TemplateCompilerBase || strcasecmp($name, 'array') === 0 || is_callable($name) ) { $func_name = strtolower($name); - + $par = implode(',', $parameter); + $parHasFuction = strpos($par, '(') !== false; if ($func_name === 'isset') { if (count($parameter) === 0) { $this->trigger_template_error('Illegal number of parameter in "isset()"'); } - - $pa = array(); - foreach ($parameter as $p) { - $pa[] = $this->syntaxMatchesVariable($p) ? 'isset(' . $p . ')' : '(' . $p . ' !== null )'; - } - return '(' . implode(' && ', $pa) . ')'; - + if ($parHasFuction) { + $pa = array(); + foreach ($parameter as $p) { + $pa[] = (strpos($p, '(') === false) ? ('isset(' . $p . ')') : ('(' . $p . ' !== null )'); + } + return '(' . implode(' && ', $pa) . ')'; + } else { + $isset_par = str_replace("')->value", "',null,true,false)->value", $par); + } + return $name . '(' . $isset_par . ')'; } elseif (in_array( $func_name, array( @@ -649,7 +653,7 @@ abstract class Smarty_Internal_TemplateCompilerBase $this->trigger_template_error("Illegal number of parameter in '{$func_name()}'"); } if ($func_name === 'empty') { - if (!$this->syntaxMatchesVariable($parameter[0]) && version_compare(PHP_VERSION, '5.5.0', '<')) { + if ($parHasFuction && version_compare(PHP_VERSION, '5.5.0', '<')) { return '(' . $parameter[ 0 ] . ' === false )'; } else { return $func_name . '(' . @@ -667,82 +671,74 @@ abstract class Smarty_Internal_TemplateCompilerBase } } - /** - * Determines whether the passed string represents a valid (PHP) variable. - * This is important, because `isset()` only works on variables and `empty()` can only be passed - * a variable prior to php5.5 - * @param $string - * @return bool - */ - private function syntaxMatchesVariable($string) { - static $regex_pattern = '/^\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*((->)[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*|\[.*]*\])*$/'; - return 1 === preg_match($regex_pattern, trim($string)); - } - /** - * This method is called from parser to process a text content section if strip is enabled + * This method is called from parser to process a text content section * - remove text from inheritance child templates as they may generate output + * - strip text if strip is enabled * * @param string $text * - * @return string + * @return null|\Smarty_Internal_ParseTree_Text */ public function processText($text) { - - if (strpos($text, '<') === false) { - return preg_replace($this->stripRegEx, '', $text); - } - - $store = array(); - $_store = 0; - - // capture html elements not to be messed with - $_offset = 0; - if (preg_match_all( - '#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is', - $text, - $matches, - PREG_OFFSET_CAPTURE | PREG_SET_ORDER - ) - ) { - foreach ($matches as $match) { - $store[] = $match[ 0 ][ 0 ]; - $_length = strlen($match[ 0 ][ 0 ]); - $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@'; - $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] - $_offset, $_length); - $_offset += $_length - strlen($replace); - $_store++; - } - } - $expressions = array(// replace multiple spaces between tags by a single space - '#(:SMARTY@!@|>)[\040\011]+(?=@!@SMARTY:|<)#s' => '\1 \2', - // remove newline between tags - '#(:SMARTY@!@|>)[\040\011]*[\n]\s*(?=@!@SMARTY:|<)#s' => '\1\2', - // remove multiple spaces between attributes (but not in attribute values!) - '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5', - '#>[\040\011]+$#Ss' => '> ', - '#>[\040\011]*[\n]\s*$#Ss' => '>', - $this->stripRegEx => '', - ); - $text = preg_replace(array_keys($expressions), array_values($expressions), $text); - $_offset = 0; - if (preg_match_all( - '#@!@SMARTY:([0-9]+):SMARTY@!@#is', - $text, - $matches, - PREG_OFFSET_CAPTURE | PREG_SET_ORDER - ) - ) { - foreach ($matches as $match) { - $_length = strlen($match[ 0 ][ 0 ]); - $replace = $store[ $match[ 1 ][ 0 ] ]; - $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] + $_offset, $_length); - $_offset += strlen($replace) - $_length; - $_store++; + if ((string)$text != '') { + $store = array(); + $_store = 0; + if ($this->parser->strip) { + if (strpos($text, '<') !== false) { + // capture html elements not to be messed with + $_offset = 0; + if (preg_match_all( + '#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is', + $text, + $matches, + PREG_OFFSET_CAPTURE | PREG_SET_ORDER + ) + ) { + foreach ($matches as $match) { + $store[] = $match[ 0 ][ 0 ]; + $_length = strlen($match[ 0 ][ 0 ]); + $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@'; + $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] - $_offset, $_length); + $_offset += $_length - strlen($replace); + $_store++; + } + } + $expressions = array(// replace multiple spaces between tags by a single space + '#(:SMARTY@!@|>)[\040\011]+(?=@!@SMARTY:|<)#s' => '\1 \2', + // remove newline between tags + '#(:SMARTY@!@|>)[\040\011]*[\n]\s*(?=@!@SMARTY:|<)#s' => '\1\2', + // remove multiple spaces between attributes (but not in attribute values!) + '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5', + '#>[\040\011]+$#Ss' => '> ', + '#>[\040\011]*[\n]\s*$#Ss' => '>', + $this->stripRegEx => '', + ); + $text = preg_replace(array_keys($expressions), array_values($expressions), $text); + $_offset = 0; + if (preg_match_all( + '#@!@SMARTY:([0-9]+):SMARTY@!@#is', + $text, + $matches, + PREG_OFFSET_CAPTURE | PREG_SET_ORDER + ) + ) { + foreach ($matches as $match) { + $_length = strlen($match[ 0 ][ 0 ]); + $replace = $store[ $match[ 1 ][ 0 ] ]; + $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] + $_offset, $_length); + $_offset += strlen($replace) - $_length; + $_store++; + } + } + } else { + $text = preg_replace($this->stripRegEx, '', $text); + } } + return new Smarty_Internal_ParseTree_Text($text); } - return $text; + return null; } /** diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php index 867a31d26..d29c39b56 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php @@ -376,7 +376,7 @@ class Smarty_Internal_Templatelexer continue; } } else { - throw new Exception('Unexpected input at line ' . $this->line . + throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]); } break; @@ -497,7 +497,7 @@ class Smarty_Internal_Templatelexer continue; } } else { - throw new Exception('Unexpected input at line ' . $this->line . + throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]); } break; @@ -635,7 +635,7 @@ class Smarty_Internal_Templatelexer continue; } } else { - throw new Exception('Unexpected input at line ' . $this->line . + throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]); } break; @@ -927,7 +927,7 @@ class Smarty_Internal_Templatelexer continue; } } else { - throw new Exception('Unexpected input at line ' . $this->line . + throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]); } break; @@ -1014,7 +1014,7 @@ class Smarty_Internal_Templatelexer continue; } } else { - throw new Exception('Unexpected input at line ' . $this->line . + throw new Exception('Unexpected input at line' . $this->line . ': ' . $this->data[ $this->counter ]); } break; @@ -1092,4 +1092,4 @@ class Smarty_Internal_Templatelexer } } - +
\ No newline at end of file diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php index aaeae63b7..a26e7a147 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php @@ -2169,13 +2169,8 @@ class Smarty_Internal_Templateparser // line 255 "../smarty/lexer/smarty_internal_templateparser.y" public function yy_r2() { - $text = $this->yystack[ $this->yyidx + 0 ]->minor; - - if ((string)$text == '') { - $this->current_buffer->append_subtree($this, null); - } - - $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text($text, $this->strip)); + $this->current_buffer->append_subtree($this, + $this->compiler->processText($this->yystack[ $this->yyidx + 0 ]->minor)); } // line 259 "../smarty/lexer/smarty_internal_templateparser.y" @@ -2257,7 +2252,7 @@ class Smarty_Internal_Templateparser -$this->compiler->getRdelLength())); if ($tag == 'strip') { $this->strip = true; - $this->_retvalue = null; + $this->_retvalue = null;; } else { if (defined($tag)) { if ($this->security) { diff --git a/vendor/symfony/polyfill-ctype/composer.json b/vendor/symfony/polyfill-ctype/composer.json index 71d436ed5..2a2ea044b 100644 --- a/vendor/symfony/polyfill-ctype/composer.json +++ b/vendor/symfony/polyfill-ctype/composer.json @@ -28,7 +28,7 @@ "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.13-dev" } } } |