diff -Nru libmojolicious-perl-8.11+dfsg/Changes libmojolicious-perl-8.12+dfsg/Changes --- libmojolicious-perl-8.11+dfsg/Changes 2019-01-02 13:50:33.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/Changes 2019-01-30 23:20:26.000000000 +0000 @@ -1,4 +1,10 @@ +8.12 2019-01-27 + - Added EXPERIMENTAL timeout method to Mojo::Promise. (batman) + - Removed deprecated module Mojolicious::Plugin::PODRenderer. + - Removed deprecated method mojo_lib_dir from Mojo::Home. + - Fixed rare warning in Mojo::Log. (Grinnz) + 8.11 2019-01-01 - Added EXPERIMENTAL support for SameSite cookies to better protect Mojolicious applications from CSRF attacks. (dylanwh, sri) diff -Nru libmojolicious-perl-8.11+dfsg/debian/changelog libmojolicious-perl-8.12+dfsg/debian/changelog --- libmojolicious-perl-8.11+dfsg/debian/changelog 2019-01-03 22:47:31.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/debian/changelog 2019-02-05 17:58:40.000000000 +0000 @@ -1,3 +1,10 @@ +libmojolicious-perl (8.12+dfsg-1) unstable; urgency=medium + + * Import upstream version 8.12+dfsg. + * Add a notice about removed methods/modules to debian/NEWS. + + -- gregor herrmann Tue, 05 Feb 2019 18:58:40 +0100 + libmojolicious-perl (8.11+dfsg-1) unstable; urgency=medium * Import upstream version 8.11+dfsg. diff -Nru libmojolicious-perl-8.11+dfsg/debian/NEWS libmojolicious-perl-8.12+dfsg/debian/NEWS --- libmojolicious-perl-8.11+dfsg/debian/NEWS 2019-01-03 22:47:31.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/debian/NEWS 2019-02-05 17:58:40.000000000 +0000 @@ -1,3 +1,12 @@ +libmojolicious-perl (8.12+dfsg-1) unstable; urgency=medium + + From upstream Changes for 8.12: + + - Removed deprecated module Mojolicious::Plugin::PODRenderer. + - Removed deprecated method mojo_lib_dir from Mojo::Home. + + -- gregor herrmann Tue, 05 Feb 2019 18:57:03 +0100 + libmojolicious-perl (8.07+dfsg-1) unstable; urgency=medium Mojolicious 8.0 is a major release, code name "Supervillain" diff -Nru libmojolicious-perl-8.11+dfsg/lib/Mojo/Home.pm libmojolicious-perl-8.12+dfsg/lib/Mojo/Home.pm --- libmojolicious-perl-8.11+dfsg/lib/Mojo/Home.pm 2018-11-22 20:21:44.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/lib/Mojo/Home.pm 2019-01-27 21:24:59.000000000 +0000 @@ -1,7 +1,7 @@ package Mojo::Home; use Mojo::Base 'Mojo::File'; -use Mojo::Util qw(class_to_path deprecated); +use Mojo::Util 'class_to_path'; sub detect { my ($self, $class) = @_; @@ -21,12 +21,6 @@ return $self; } -# DEPRECATED! -sub mojo_lib_dir { - deprecated 'Mojo::Home::mojo_lib_dir is DEPRECATED'; - shift->new(__FILE__)->sibling('..'); -} - sub rel_file { shift->child(split('/', shift)) } 1; diff -Nru libmojolicious-perl-8.11+dfsg/lib/Mojo/Log.pm libmojolicious-perl-8.12+dfsg/lib/Mojo/Log.pm --- libmojolicious-perl-8.11+dfsg/lib/Mojo/Log.pm 2018-11-22 20:21:43.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/lib/Mojo/Log.pm 2019-01-31 00:40:50.000000000 +0000 @@ -56,7 +56,7 @@ my ($time, $level) = (shift, shift); my ($s, $m, $h, $day, $month, $year) = localtime $time; $time = sprintf '%04d-%02d-%02d %02d:%02d:%08.5f', $year + 1900, $month + 1, - $day, $h, $m, "$s." . (split /\./, $time)[1]; + $day, $h, $m, "$s." . ((split /\./, $time)[1] // 0); return "[$time] [$$] [$level] " . join "\n", @_, ''; } diff -Nru libmojolicious-perl-8.11+dfsg/lib/Mojo/Promise.pm libmojolicious-perl-8.12+dfsg/lib/Mojo/Promise.pm --- libmojolicious-perl-8.11+dfsg/lib/Mojo/Promise.pm 2018-12-10 20:43:34.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/lib/Mojo/Promise.pm 2019-01-29 13:41:50.000000000 +0000 @@ -63,6 +63,13 @@ return $new; } +sub timeout { + my ($self, $after, $err) + = (ref $_[0] ? shift : shift->new, @_, 'Promise timeout'); + $self->ioloop->timer($after => sub { $self->reject($err) }); + return $self; +} + sub wait { my $self = shift; return if (my $loop = $self->ioloop)->is_running; @@ -348,6 +355,17 @@ } ); +=head2 timeout + + my $new = Mojo::Promise->timeout(5 => 'Timeout!'); + $promise = $promise->timeout(5 => 'Timeout!'); + $promise = $promise->timeout(5); + +Create a new L object with a timeout or attach a timeout to an +existing promise. The promise will be rejected after the given amount of time in +seconds with a reason, which defaults to C. Note that this +method is EXPERIMENTAL and might change without warning! + =head2 wait $promise->wait; diff -Nru libmojolicious-perl-8.11+dfsg/lib/Mojo/Util.pm libmojolicious-perl-8.12+dfsg/lib/Mojo/Util.pm --- libmojolicious-perl-8.11+dfsg/lib/Mojo/Util.pm 2018-11-22 20:21:46.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/lib/Mojo/Util.pm 2019-01-27 21:36:11.000000000 +0000 @@ -602,7 +602,8 @@ deprecated 'foo is DEPRECATED in favor of bar'; Warn about deprecated feature from perspective of caller. You can also set the -C environment variable to make them die instead. +C environment variable to make them die instead with +L. =head2 dumper diff -Nru libmojolicious-perl-8.11+dfsg/lib/Mojo/WebSocket.pm libmojolicious-perl-8.12+dfsg/lib/Mojo/WebSocket.pm --- libmojolicious-perl-8.11+dfsg/lib/Mojo/WebSocket.pm 2018-11-22 20:21:54.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/lib/Mojo/WebSocket.pm 2019-01-30 10:23:22.000000000 +0000 @@ -276,6 +276,13 @@ Opcode for C frames. +=head1 DEBUGGING + +You can set the C environment variable to get some +advanced diagnostics information printed to C. + + MOJO_WEBSOCKET_DEBUG=1 + =head1 SEE ALSO L, L, L. diff -Nru libmojolicious-perl-8.11+dfsg/lib/Mojolicious/Plugin/PODRenderer.pm libmojolicious-perl-8.12+dfsg/lib/Mojolicious/Plugin/PODRenderer.pm --- libmojolicious-perl-8.11+dfsg/lib/Mojolicious/Plugin/PODRenderer.pm 2018-11-22 20:22:02.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/lib/Mojolicious/Plugin/PODRenderer.pm 1970-01-01 00:00:00.000000000 +0000 @@ -1,141 +0,0 @@ -# DEPRECATED! -package Mojolicious::Plugin::PODRenderer; -use Mojo::Base 'Mojolicious::Plugin'; - -use Mojo::Asset::File; -use Mojo::ByteStream; -use Mojo::DOM; -use Mojo::File 'path'; -use Mojo::URL; -use Mojo::Util 'deprecated'; -use Pod::Simple::XHTML; -use Pod::Simple::Search; - -sub register { - my ($self, $app, $conf) = @_; - - deprecated 'Mojolicious::Plugin::PODRenderer is DEPRECATED'; - - my $preprocess = $conf->{preprocess} || 'ep'; - $app->renderer->add_handler( - $conf->{name} || 'pod' => sub { - my ($renderer, $c, $output, $options) = @_; - $renderer->handlers->{$preprocess}($renderer, $c, $output, $options); - $$output = _pod_to_html($$output) if defined $$output; - } - ); - - $app->helper( - pod_to_html => sub { shift; Mojo::ByteStream->new(_pod_to_html(@_)) }); - - # Perldoc browser - return undef if $conf->{no_perldoc}; - my $defaults = {module => 'Mojolicious/Guides'}; - return $app->routes->any( - '/perldoc/:module' => $defaults => [module => qr/[^.]+/] => \&_perldoc); -} - -sub _indentation { - (sort map {/^(\s+)/} @{shift()})[0]; -} - -sub _html { - my ($c, $src) = @_; - - # Rewrite links - my $dom = Mojo::DOM->new(_pod_to_html($src)); - my $perldoc = $c->url_for('/perldoc/'); - $_->{href} =~ s!^https://metacpan\.org/pod/!$perldoc! - and $_->{href} =~ s!::!/!gi - for $dom->find('a[href]')->map('attr')->each; - - # Rewrite code blocks for syntax highlighting and correct indentation - for my $e ($dom->find('pre > code')->each) { - next if (my $str = $e->content) =~ /^\s*(?:\$|Usage:)\s+/m; - next unless $str =~ /[\$\@\%]\w|->\w|^use\s+\w/m; - my $attrs = $e->attr; - my $class = $attrs->{class}; - $attrs->{class} = defined $class ? "$class prettyprint" : 'prettyprint'; - } - - # Rewrite headers - my $toc = Mojo::URL->new->fragment('toc'); - my @parts; - for my $e ($dom->find('h1, h2, h3, h4')->each) { - - push @parts, [] if $e->tag eq 'h1' || !@parts; - my $link = Mojo::URL->new->fragment($e->{id}); - push @{$parts[-1]}, my $text = $e->all_text, $link; - my $permalink = $c->link_to('#' => $link, class => 'permalink'); - $e->content($permalink . $c->link_to($text => $toc)); - } - - # Try to find a title - my $title = 'Perldoc'; - $dom->find('h1 + p')->first(sub { $title = shift->text }); - - # Combine everything to a proper response - $c->content_for(perldoc => "$dom"); - $c->render('mojo/perldoc', title => $title, parts => \@parts); -} - -sub _perldoc { - my $c = shift; - - # Find module or redirect to CPAN - my $module = join '::', split('/', $c->param('module')); - $c->stash(cpan => "https://metacpan.org/pod/$module"); - my $path - = Pod::Simple::Search->new->find($module, map { $_, "$_/pods" } @INC); - return $c->redirect_to($c->stash('cpan')) unless $path && -r $path; - - my $src = path($path)->slurp; - $c->respond_to(txt => {data => $src}, html => sub { _html($c, $src) }); -} - -sub _pod_to_html { - return '' unless defined(my $pod = ref $_[0] eq 'CODE' ? shift->() : shift); - - my $parser = Pod::Simple::XHTML->new; - $parser->perldoc_url_prefix('https://metacpan.org/pod/'); - $parser->$_('') for qw(html_header html_footer); - $parser->strip_verbatim_indent(\&_indentation); - $parser->output_string(\(my $output)); - return $@ unless eval { $parser->parse_string_document("$pod"); 1 }; - - return $output; -} - -1; - -=encoding utf8 - -=head1 NAME - -Mojolicious::Plugin::PODRenderer - DEPRECATED! - -=head1 SYNOPSIS - - # DEPRECATED! - -=head1 DESCRIPTION - -This module is DEPRECATED! - -=head1 METHODS - -L inherits all methods from -L and implements the following new ones. - -=head2 register - - my $route = $plugin->register(Mojolicious->new); - my $route = $plugin->register(Mojolicious->new, {name => 'foo'}); - -Register renderer and helper in L application. - -=head1 SEE ALSO - -L, L, L. - -=cut diff -Nru libmojolicious-perl-8.11+dfsg/lib/Mojolicious/resources/templates/mojo/perldoc.html.ep libmojolicious-perl-8.12+dfsg/lib/Mojolicious/resources/templates/mojo/perldoc.html.ep --- libmojolicious-perl-8.11+dfsg/lib/Mojolicious/resources/templates/mojo/perldoc.html.ep 2019-01-01 16:39:10.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/lib/Mojolicious/resources/templates/mojo/perldoc.html.ep 1970-01-01 00:00:00.000000000 +0000 @@ -1,143 +0,0 @@ -%# DEPRECATED! - - - - <%= $title %> - %= javascript '/mojo/prettify/run_prettify.js' - - - -
-
- -

CONTENTS

-
    - % for my $part (@$parts) { -
  • - %= link_to splice(@$part, 0, 2) - % if (@$part) { -
      - % while (@$part) { -
    • <%= link_to splice(@$part, 0, 2) %>
    • - % } -
    - % } -
  • - % } -
- %= content 'perldoc' -
-
- - - diff -Nru libmojolicious-perl-8.11+dfsg/lib/Mojolicious.pm libmojolicious-perl-8.12+dfsg/lib/Mojolicious.pm --- libmojolicious-perl-8.11+dfsg/lib/Mojolicious.pm 2019-01-01 12:04:10.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/lib/Mojolicious.pm 2019-01-02 18:04:39.000000000 +0000 @@ -59,7 +59,7 @@ has validator => sub { Mojolicious::Validator->new }; our $CODENAME = 'Supervillain'; -our $VERSION = '8.11'; +our $VERSION = '8.12'; sub BUILD_DYNAMIC { my ($class, $method, $dyn_methods) = @_; diff -Nru libmojolicious-perl-8.11+dfsg/MANIFEST libmojolicious-perl-8.12+dfsg/MANIFEST --- libmojolicious-perl-8.11+dfsg/MANIFEST 2019-01-02 18:03:59.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/MANIFEST 2019-02-01 16:33:33.000000000 +0000 @@ -113,7 +113,6 @@ lib/Mojolicious/Plugin/HeaderCondition.pm lib/Mojolicious/Plugin/JSONConfig.pm lib/Mojolicious/Plugin/Mount.pm -lib/Mojolicious/Plugin/PODRenderer.pm lib/Mojolicious/Plugin/TagHelpers.pm lib/Mojolicious/Plugins.pm lib/Mojolicious/Renderer.pm @@ -134,7 +133,6 @@ lib/Mojolicious/resources/templates/mojo/debug.html.ep lib/Mojolicious/resources/templates/mojo/exception.html.ep lib/Mojolicious/resources/templates/mojo/not_found.html.ep -lib/Mojolicious/resources/templates/mojo/perldoc.html.ep lib/Mojolicious/Routes.pm lib/Mojolicious/Routes/Match.pm lib/Mojolicious/Routes/Pattern.pm diff -Nru libmojolicious-perl-8.11+dfsg/META.json libmojolicious-perl-8.12+dfsg/META.json --- libmojolicious-perl-8.11+dfsg/META.json 2019-01-02 18:03:59.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/META.json 2019-02-01 16:33:33.000000000 +0000 @@ -58,6 +58,6 @@ }, "x_IRC" : "irc://irc.freenode.net/#mojo" }, - "version" : "8.11", + "version" : "8.12", "x_serialization_backend" : "JSON::PP version 4.00" } diff -Nru libmojolicious-perl-8.11+dfsg/META.yml libmojolicious-perl-8.12+dfsg/META.yml --- libmojolicious-perl-8.11+dfsg/META.yml 2019-01-02 18:03:59.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/META.yml 2019-02-01 16:33:33.000000000 +0000 @@ -31,5 +31,5 @@ homepage: https://mojolicious.org license: http://www.opensource.org/licenses/artistic-license-2.0 repository: https://github.com/mojolicious/mojo.git -version: '8.11' +version: '8.12' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -Nru libmojolicious-perl-8.11+dfsg/t/mojo/log.t libmojolicious-perl-8.12+dfsg/t/mojo/log.t --- libmojolicious-perl-8.11+dfsg/t/mojo/log.t 2018-11-22 20:22:58.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/t/mojo/log.t 2019-01-31 00:41:15.000000000 +0000 @@ -52,6 +52,8 @@ qr/^\[.*\] \[debug\] Test\n1\n2\n3\n$/, 'right format'; like $log->format->(time, 'error', 'I ♥ Mojolicious'), qr/^\[.*\] \[error\] I ♥ Mojolicious\n$/, 'right format'; +like $log->format->(CORE::time, 'error', 'I ♥ Mojolicious'), + qr/^\[.*\] \[error\] I ♥ Mojolicious\n$/, 'right format'; $log->format(sub { my ($time, $level, @lines) = @_; return join ':', $level, $time, @lines; diff -Nru libmojolicious-perl-8.11+dfsg/t/mojo/promise.t libmojolicious-perl-8.12+dfsg/t/mojo/promise.t --- libmojolicious-perl-8.11+dfsg/t/mojo/promise.t 2018-11-22 20:23:00.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/t/mojo/promise.t 2019-01-29 13:40:35.000000000 +0000 @@ -181,6 +181,21 @@ is_deeply \@results, [], 'promises not resolved'; is_deeply \@errors, ['second'], 'promise rejected'; +# Timeout +(@errors, @results) = @_; +$promise = Mojo::Promise->timeout(0.25 => 'Timeout1'); +$promise2 = Mojo::Promise->new->timeout(0.025 => 'Timeout2'); +$promise3 + = Mojo::Promise->race($promise, $promise2)->then(sub { @results = @_ }) + ->catch(sub { @errors = @_ })->wait; +is_deeply \@results, [], 'promises not resolved'; +is_deeply \@errors, ['Timeout2'], 'promise rejected'; + +# Timeout with default message +@errors = (); +Mojo::Promise->timeout(0.025)->catch(sub { @errors = @_ })->wait; +is_deeply \@errors, ['Promise timeout'], 'default timeout message'; + # All $promise = Mojo::Promise->new->then(sub {@_}); $promise2 = Mojo::Promise->new->then(sub {@_}); diff -Nru libmojolicious-perl-8.11+dfsg/t/pod_coverage.t libmojolicious-perl-8.12+dfsg/t/pod_coverage.t --- libmojolicious-perl-8.11+dfsg/t/pod_coverage.t 2018-11-22 20:23:09.000000000 +0000 +++ libmojolicious-perl-8.12+dfsg/t/pod_coverage.t 2019-01-27 21:26:17.000000000 +0000 @@ -7,5 +7,4 @@ plan skip_all => 'Test::Pod::Coverage 1.04+ required for this test!' unless eval 'use Test::Pod::Coverage 1.04; 1'; -all_pod_coverage_ok( - {also_private => ['BUILD_DYNAMIC', 'success', 'mojo_lib_dir']}); +all_pod_coverage_ok({also_private => ['BUILD_DYNAMIC', 'success']});