Hello community,

here is the log from the commit of package perl-Mojolicious-Plugin-AssetPack 
for openSUSE:Factory checked in at 2017-01-18 21:43:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Mojolicious-Plugin-AssetPack (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Mojolicious-Plugin-AssetPack.new 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Mojolicious-Plugin-AssetPack"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/perl-Mojolicious-Plugin-AssetPack/perl-Mojolicious-Plugin-AssetPack.changes
      2017-01-16 11:14:53.621105841 +0100
+++ 
/work/SRC/openSUSE:Factory/.perl-Mojolicious-Plugin-AssetPack.new/perl-Mojolicious-Plugin-AssetPack.changes
 2017-01-18 21:43:34.913517629 +0100
@@ -1,0 +2,10 @@
+Sat Jan 14 06:06:31 UTC 2017 - co...@suse.com
+
+- updated to 1.37
+   see /usr/share/doc/packages/perl-Mojolicious-Plugin-AssetPack/Changes
+
+  1.37 2017-01-12T20:52:18+0100
+   - Add support for sass source maps
+   - No need to delete known media types in AssetPack::Store
+
+-------------------------------------------------------------------

Old:
----
  Mojolicious-Plugin-AssetPack-1.36.tar.gz

New:
----
  Mojolicious-Plugin-AssetPack-1.37.tar.gz

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

Other differences:
------------------
++++++ perl-Mojolicious-Plugin-AssetPack.spec ++++++
--- /var/tmp/diff_new_pack.SIT83w/_old  2017-01-18 21:43:35.305462192 +0100
+++ /var/tmp/diff_new_pack.SIT83w/_new  2017-01-18 21:43:35.305462192 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           perl-Mojolicious-Plugin-AssetPack
-Version:        1.36
+Version:        1.37
 Release:        0
 %define cpan_name Mojolicious-Plugin-AssetPack
 Summary:        Compress and convert css, less, sass, javascript and 
coffeescript files

++++++ Mojolicious-Plugin-AssetPack-1.36.tar.gz -> 
Mojolicious-Plugin-AssetPack-1.37.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-Plugin-AssetPack-1.36/Changes 
new/Mojolicious-Plugin-AssetPack-1.37/Changes
--- old/Mojolicious-Plugin-AssetPack-1.36/Changes       2017-01-11 
11:18:45.000000000 +0100
+++ new/Mojolicious-Plugin-AssetPack-1.37/Changes       2017-01-12 
20:52:18.000000000 +0100
@@ -1,5 +1,9 @@
 Revision history for perl distribution Mojolicious-Plugin-AssetPack
 
+1.37 2017-01-12T20:52:18+0100
+ - Add support for sass source maps
+ - No need to delete known media types in AssetPack::Store
+
 1.36 2017-01-11T11:18:45+0100
  - Fix bug in Fetch pipe, fixing t/font-awesome.t
  - Change Mojolicious::Plugin::AssetPack::Asset::path() to return a Mojo::File 
object
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-Plugin-AssetPack-1.36/MANIFEST 
new/Mojolicious-Plugin-AssetPack-1.37/MANIFEST
--- old/Mojolicious-Plugin-AssetPack-1.36/MANIFEST      2017-01-11 
11:18:46.000000000 +0100
+++ new/Mojolicious-Plugin-AssetPack-1.37/MANIFEST      2017-01-12 
20:52:20.000000000 +0100
@@ -88,6 +88,7 @@
 t/sass-bin.t
 t/sass-dynamic-include.t
 t/sass-functions.t
+t/sass-source-map.t
 t/sass-unable-to-download.t
 t/sass-utf8.t
 t/sass.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-Plugin-AssetPack-1.36/META.json 
new/Mojolicious-Plugin-AssetPack-1.37/META.json
--- old/Mojolicious-Plugin-AssetPack-1.36/META.json     2017-01-11 
11:18:46.000000000 +0100
+++ new/Mojolicious-Plugin-AssetPack-1.37/META.json     2017-01-12 
20:52:19.000000000 +0100
@@ -48,6 +48,6 @@
          "url" : 
"https://github.com/jhthorsen/mojolicious-plugin-assetpack.git";
       }
    },
-   "version" : "1.36",
+   "version" : "1.37",
    "x_serialization_backend" : "JSON::PP version 2.27300"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-Plugin-AssetPack-1.36/META.yml 
new/Mojolicious-Plugin-AssetPack-1.37/META.yml
--- old/Mojolicious-Plugin-AssetPack-1.36/META.yml      2017-01-11 
11:18:46.000000000 +0100
+++ new/Mojolicious-Plugin-AssetPack-1.37/META.yml      2017-01-12 
20:52:19.000000000 +0100
@@ -25,5 +25,5 @@
   bugtracker: https://github.com/jhthorsen/mojolicious-plugin-assetpack/issues
   homepage: https://github.com/jhthorsen/mojolicious-plugin-assetpack
   repository: https://github.com/jhthorsen/mojolicious-plugin-assetpack.git
-version: '1.36'
+version: '1.37'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-Plugin-AssetPack-1.36/README 
new/Mojolicious-Plugin-AssetPack-1.37/README
--- old/Mojolicious-Plugin-AssetPack-1.36/README        2017-01-11 
11:18:45.000000000 +0100
+++ new/Mojolicious-Plugin-AssetPack-1.37/README        2017-01-12 
20:52:19.000000000 +0100
@@ -3,7 +3,7 @@
     javascript and coffeescript files
 
 VERSION
-    1.36
+    1.37
 
 SYNOPSIS
   Application
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mojolicious-Plugin-AssetPack-1.36/lib/Mojolicious/Plugin/AssetPack/Pipe/Sass.pm
 
new/Mojolicious-Plugin-AssetPack-1.37/lib/Mojolicious/Plugin/AssetPack/Pipe/Sass.pm
--- 
old/Mojolicious-Plugin-AssetPack-1.36/lib/Mojolicious/Plugin/AssetPack/Pipe/Sass.pm
 2017-01-11 11:16:59.000000000 +0100
+++ 
new/Mojolicious-Plugin-AssetPack-1.37/lib/Mojolicious/Plugin/AssetPack/Pipe/Sass.pm
 2017-01-12 20:45:08.000000000 +0100
@@ -1,12 +1,18 @@
 package Mojolicious::Plugin::AssetPack::Pipe::Sass;
 use Mojo::Base 'Mojolicious::Plugin::AssetPack::Pipe';
+
 use Mojolicious::Plugin::AssetPack::Util qw(checksum diag dumper load_module 
DEBUG);
+use Mojo::JSON qw(decode_json encode_json);
 use Mojo::Util;
 
-my $FORMAT_RE = qr{^s[ac]ss$};
-my $IMPORT_RE = qr{( \@import \s+ (["']) (.*?) \2 \s* ; )}x;
+my $FORMAT_RE              = qr{^s[ac]ss$};
+my $IMPORT_RE              = qr{( \@import \s+ (["']) (.*?) \2 \s* ; )}x;
+my $SOURCE_MAP_PLACEHOLDER = sprintf '__%s__', __PACKAGE__;
+
+$SOURCE_MAP_PLACEHOLDER =~ s!::!_!g;
 
 has functions => sub { +{} };
+has generate_source_map => sub { shift->app->mode eq 'development' ? 1 : 0 };
 
 sub process {
   my ($self, $assets) = @_;
@@ -19,6 +25,11 @@
     $opts{sass_functions}{$name} = sub { $self->$cb(@_); };
   }
 
+  if ($self->generate_source_map) {
+    $opts{source_map_file} = $SOURCE_MAP_PLACEHOLDER;
+    $opts{source_map_file_urls} = $self->app->mode eq 'development' ? 1 : 0;
+  }
+
   return $assets->each(
     sub {
       my ($asset, $index) = @_;
@@ -47,6 +58,8 @@
             $asset->url, dumper(\%opts), $err;
         }
         $css = Mojo::Util::encode('UTF-8', $css);
+        $self->_add_source_map_asset($asset, \$css, $stats)
+          if $stats->{source_map_string};
         $asset->content($store->save(\$css, $attrs))->FROM_JSON($attrs);
       }
       else {
@@ -59,6 +72,25 @@
   );
 }
 
+sub _add_source_map_asset {
+  my ($self, $asset, $css, $stats) = @_;
+  my $data       = decode_json $stats->{source_map_string};
+  my $source_map = Mojolicious::Plugin::AssetPack::Asset->new(
+    url => sprintf('%s.css.map', $asset->name));
+
+  # override "stdin" with real file
+  $data->{file} = sprintf 'file://%s', $asset->path if $asset->path;
+  $data->{sources}[0] = $data->{file};
+  $source_map->content(encode_json $data);
+
+  my $relative = join '/', '..', $source_map->checksum, $source_map->url;
+  $$css =~ s!$SOURCE_MAP_PLACEHOLDER!$relative!;
+
+  # TODO
+  $self->assetpack->{by_checksum}{$source_map->checksum} = $source_map;
+  $self->assetpack->{by_topic}{$source_map->url} = 
Mojo::Collection->new($source_map);
+}
+
 sub _checksum {
   my ($self, $ref, $asset, $paths) = @_;
   my $ext   = $asset->format;
@@ -177,6 +209,22 @@
 
 See L</SYNOPSIS> for example.
 
+=head2 generate_source_map
+
+  $bool = $self->generate_source_map;
+  $self = $self->generate_source_map(1);
+
+This pipe will generate source maps if true. Default is "1" if
+L<Mojolicious/mode> is "development".
+
+See also L<http://thesassway.com/intermediate/using-source-maps-with-sass> and
+L<https://robots.thoughtbot.com/sass-source-maps-chrome-magic> for more
+information about the usefulness.
+
+See also L<Mojolicious::Plugin::AssetPack/MOJO_ASSETPACK_LAZY> and
+L<Mojolicious::Plugin::AssetPack::Pipe::Reloader> for how to reload the page
+when changes are done inside the browser's dev tools.
+
 =head1 METHODS
 
 =head2 process
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mojolicious-Plugin-AssetPack-1.36/lib/Mojolicious/Plugin/AssetPack/Store.pm 
new/Mojolicious-Plugin-AssetPack-1.37/lib/Mojolicious/Plugin/AssetPack/Store.pm
--- 
old/Mojolicious-Plugin-AssetPack-1.36/lib/Mojolicious/Plugin/AssetPack/Store.pm 
    2017-01-11 11:16:59.000000000 +0100
+++ 
new/Mojolicious-Plugin-AssetPack-1.37/lib/Mojolicious/Plugin/AssetPack/Store.pm 
    2017-01-12 20:34:40.000000000 +0100
@@ -103,21 +103,12 @@
   my ($self, $c, $asset) = @_;
   my $d  = $self->default_headers;
   my $h  = $c->res->headers;
-  my $ct = $self->_types->type($asset->format);
+  my $ct = $self->_types->type($asset->format) || 'application/octet-stream';
 
-  if ($ct) {
-    $h->header($_ => $d->{$_}) for keys %$d;
-    $h->content_type($ct);
-    $self->SUPER::serve_asset($c, $asset->can('asset') ? $asset->asset : 
$asset);
-  }
-  else {
-    $h->content_type('text/css');
-    $c->render(text =>
-        qq(body:before{content:'"@{[$asset->url]}" is not 
processed.';font-size:32px;position:absolute;top:0;left:0;background:red;color:white;}\n)
-    );
-  }
-
-  return $self;
+  $h->header($_ => $d->{$_}) for keys %$d;
+  $h->content_type($ct);
+  $self->SUPER::serve_asset($c, $asset->can('asset') ? $asset->asset : $asset);
+  $self;
 }
 
 sub _already_downloaded {
@@ -198,7 +189,7 @@
   my $tx  = $self->ua->get($req_url);
   my $h   = $tx->res->headers;
 
-  if ($tx->error) {
+  if ($tx->res->is_error or $tx->error) {
     $self->ua->server->app->log->warn(
       "[AssetPack] Unable to download $req_url: @{[$tx->error->{message}]}");
     return undef;
@@ -216,7 +207,7 @@
   }
   if (my $ct = $h->content_type) {
     $ct =~ s!;.*$!!;
-    $attrs->{format} = $self->_types->detect($ct)->[0];
+    $attrs->{format} = $self->_types->detect($ct)->[0] unless $ct eq 
'text/plain';
   }
 
   $attrs->{format} ||= $tx->req->url->path->[-1] =~ /\.(\w+)$/ ? $1 : undef;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mojolicious-Plugin-AssetPack-1.36/lib/Mojolicious/Plugin/AssetPack.pm 
new/Mojolicious-Plugin-AssetPack-1.37/lib/Mojolicious/Plugin/AssetPack.pm
--- old/Mojolicious-Plugin-AssetPack-1.36/lib/Mojolicious/Plugin/AssetPack.pm   
2017-01-11 11:18:45.000000000 +0100
+++ new/Mojolicious-Plugin-AssetPack-1.37/lib/Mojolicious/Plugin/AssetPack.pm   
2017-01-12 20:52:18.000000000 +0100
@@ -6,7 +6,7 @@
 use Mojolicious::Plugin::AssetPack::Store;
 use Mojolicious::Plugin::AssetPack::Util qw(diag has_ro load_module DEBUG);
 
-our $VERSION = '1.36';
+our $VERSION = '1.37';
 
 my %TAG_TEMPLATE;
 $TAG_TEMPLATE{css} = [qw(link rel stylesheet href)];
@@ -277,7 +277,7 @@
 
 =head1 VERSION
 
-1.36
+1.37
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mojolicious-Plugin-AssetPack-1.36/t/riotjs-not-loaded.t 
new/Mojolicious-Plugin-AssetPack-1.37/t/riotjs-not-loaded.t
--- old/Mojolicious-Plugin-AssetPack-1.36/t/riotjs-not-loaded.t 2016-11-14 
19:55:19.000000000 +0100
+++ new/Mojolicious-Plugin-AssetPack-1.37/t/riotjs-not-loaded.t 2017-01-12 
20:34:40.000000000 +0100
@@ -6,6 +6,8 @@
 $t->get_ok('/')->status_is(200)
   ->element_exists(qq(link[href="/asset/7373328564/r1.tag"]));
 
+local $TODO = 'removed support for detecting unprocessed in 1.37';
+
 $t->get_ok($t->tx->res->dom->at('link')->{href})->status_is(200)
   ->header_is('Content-Type', 'text/css')
   ->content_like(qr{content:'"r1.tag" is not processed.';}s);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mojolicious-Plugin-AssetPack-1.36/t/sass-source-map.t 
new/Mojolicious-Plugin-AssetPack-1.37/t/sass-source-map.t
--- old/Mojolicious-Plugin-AssetPack-1.36/t/sass-source-map.t   1970-01-01 
01:00:00.000000000 +0100
+++ new/Mojolicious-Plugin-AssetPack-1.37/t/sass-source-map.t   2017-01-12 
20:45:44.000000000 +0100
@@ -0,0 +1,27 @@
+use lib '.';
+use t::Helper;
+plan skip_all => 'cpanm CSS::Sass' unless eval 'use CSS::Sass 3.3.0;1';
+
+my $t = t::Helper->t(pipes => [qw(Sass)]);
+$t->app->asset->process('app.css' => 'sass/sass-1.scss');
+$t->get_ok('/')->status_is(200)
+  ->element_exists(qq(link[href="/asset/71dcf0669a/sass-1.css"]));
+
+$t->get_ok('/asset/71dcf0669a/sass-1.css')->status_is(200)
+  ->content_like(qr{sourceMappingURL=\.\./8f89310ec6/sass-1\.css\.map});
+$t->get_ok('/asset/8f89310ec6/sass-1.css.map')->json_like('/file', 
qr{sass-1\.scss})
+  ->json_has('/mappings')->json_has('/sources')->json_has('/version');
+
+$ENV{MOJO_MODE} = 'development_required';
+$t = t::Helper->t(pipes => [qw(Sass)]);
+$t->app->asset->process('app.css' => 'sass/sass-1.scss');
+$t->get_ok('/')->status_is(200)
+  ->element_exists(qq(link[href="/asset/71dcf0669a/sass-1.css"]));
+$t->get_ok('/asset/71dcf0669a/sass-1.css')->status_is(200)
+  ->content_unlike(qr{sourceMappingURL});
+
+done_testing;
+
+__DATA__
+@@ index.html.ep
+%= asset 'app.css'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mojolicious-Plugin-AssetPack-1.36/t/sass-unable-to-download.t 
new/Mojolicious-Plugin-AssetPack-1.37/t/sass-unable-to-download.t
--- old/Mojolicious-Plugin-AssetPack-1.36/t/sass-unable-to-download.t   
2016-12-16 09:50:46.000000000 +0100
+++ new/Mojolicious-Plugin-AssetPack-1.37/t/sass-unable-to-download.t   
2017-01-12 20:34:40.000000000 +0100
@@ -6,7 +6,7 @@
 my @message;
 my $url = 
'https://raw.githubusercontent.com/select2/select2/master/src/scss/core.scss';
 my $t = t::Helper->t(pipes => [qw(Sass Css)]);
-$t->app->log->on(message => sub { shift; push @message, @_ });
+$t->app->log->on(message => sub { shift; push @message, join ' ', @_ });
 $t->app->asset->process('app.css' => $url);
 $t->get_ok('/')->status_is(200);
 $t->get_ok($t->tx->res->dom->at('link[href]')->{href} || 
'/nope')->status_is(200)
@@ -14,7 +14,7 @@
 
 ok + (grep {/Caching/} @message), 'cached assets' or diag join ',', @message;
 ok + (grep {/Unable to download.*_layout\.scss/} @message), 'unable to 
download'
-  or diag join ',', @message;
+  or map { diag $_ } @message;
 
 $ENV{MOJO_ASSETPACK_CLEANUP} = 0;
 


Reply via email to