klenod-plugin-css 0.0.13-x86_64-linux-gnu → 0.0.15-x86_64-linux-gnu
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fe1789c01f1ccdf4eeddc7435680fac2fba16c891954ee44112a0e5e9ae0e25d
|
|
4
|
+
data.tar.gz: b1ceebe7d451b5a6fc0e5aa542d9ccc0dafe277bbdddd6b336bbeb5f5c5bfb2e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5e0c80f8fdc34429ebb0550fd0e37f254b707e4fb9a728d63cf5d93b8b29a99e2c510543061cbf6d6bec4a5dc2bb9822ea4ab817f5f90bdcab4235ab78b3235d
|
|
7
|
+
data.tar.gz: fd329ddccea61fec2496186e374d18f69723ffa9e95e735ae7a9ded3eafc71b34be7d22aac963f191bcab1fe8213da5b2ea9df89f8cb886620e64b695800da47
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "klenod/plugin/css/errors"
|
|
3
4
|
require "klenod/plugin/css/transformer"
|
|
4
5
|
require "uri"
|
|
5
6
|
|
|
@@ -107,6 +108,7 @@ module Klenod
|
|
|
107
108
|
css_result = result.metadata[:css_result]
|
|
108
109
|
javascript_only = result.metadata[:css_javascript_only]
|
|
109
110
|
return result unless css_result || javascript_only
|
|
111
|
+
return analysis_finalize(module_id, result, resolved_dependencies, dependency_records, context) if context.analysis?
|
|
110
112
|
|
|
111
113
|
if javascript_only
|
|
112
114
|
javascript_css_edit = finalized_css_edit(
|
|
@@ -202,6 +204,8 @@ module Klenod
|
|
|
202
204
|
end
|
|
203
205
|
|
|
204
206
|
def transform_css(module_id, code, transform_names:, context:)
|
|
207
|
+
# The filename also names the source in the emitted source map, so
|
|
208
|
+
# it stays the plain path. The error report uses module_id instead.
|
|
205
209
|
Transformer.transform(
|
|
206
210
|
module_id.path,
|
|
207
211
|
code,
|
|
@@ -212,6 +216,10 @@ module Klenod
|
|
|
212
216
|
local_css_variables: @local_css_variables && transform_names,
|
|
213
217
|
variable_pattern: @variable_pattern
|
|
214
218
|
)
|
|
219
|
+
rescue ParseError => error
|
|
220
|
+
# The native extension raises with only a message. Re-raise with the
|
|
221
|
+
# source so the report carries an excerpt like every other format.
|
|
222
|
+
raise ParseError.new(error, source: code, module_id: module_id)
|
|
215
223
|
end
|
|
216
224
|
|
|
217
225
|
def minify_enabled?(context)
|
|
@@ -404,6 +412,38 @@ module Klenod
|
|
|
404
412
|
CssEdit.new(edited.code, edited.source_map)
|
|
405
413
|
end
|
|
406
414
|
|
|
415
|
+
# Analysis keeps the resolved class map and an asset reference for
|
|
416
|
+
# importers, but skips import rewriting and source maps.
|
|
417
|
+
def analysis_finalize(module_id, result, resolved_dependencies, dependency_records, context)
|
|
418
|
+
if result.metadata[:css_javascript_only]
|
|
419
|
+
asset = analysis_css_asset(module_id, result.metadata.fetch(:css_javascript_result).code, :css_javascript_stylesheet, {})
|
|
420
|
+
asset.url = context.asset_url(asset.output_path)
|
|
421
|
+
|
|
422
|
+
return result.with(
|
|
423
|
+
code: "Default = #{asset.url.inspect}\n",
|
|
424
|
+
assets: [asset, *result.assets],
|
|
425
|
+
metadata: result.metadata.merge(css_javascript_stylesheet_path: asset.url)
|
|
426
|
+
)
|
|
427
|
+
end
|
|
428
|
+
|
|
429
|
+
css_result = result.metadata.fetch(:css_result)
|
|
430
|
+
classes = finalized_css_selectors(css_result, resolved_dependencies, dependency_records)
|
|
431
|
+
asset = analysis_css_asset(module_id, css_result.code, :css, {classes: classes, variables: css_result.variables})
|
|
432
|
+
asset.url = context.asset_url(asset.output_path)
|
|
433
|
+
|
|
434
|
+
result.with(
|
|
435
|
+
code: ruby_module_source(classes, asset.url, styles_dependency: result.dependencies.fetch(0)),
|
|
436
|
+
assets: [asset, *result.assets],
|
|
437
|
+
metadata: result.metadata.merge(css_asset_path: asset.url, css_classes: classes)
|
|
438
|
+
)
|
|
439
|
+
end
|
|
440
|
+
|
|
441
|
+
def analysis_css_asset(module_id, css, type, metadata)
|
|
442
|
+
hash = Hashing.short(css)
|
|
443
|
+
suffix = (type == :css) ? "" : ".javascript"
|
|
444
|
+
Asset.new(module_id.path, hash, "/#{asset_name(module_id)}#{suffix}.#{hash}.css", nil, css, "text/css", metadata.merge(type: type))
|
|
445
|
+
end
|
|
446
|
+
|
|
407
447
|
def css_asset_pair(module_id, css_edit, type, metadata, context)
|
|
408
448
|
source_map_asset = nil
|
|
409
449
|
css = css_edit.code
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "klenod/build/source_error"
|
|
4
|
+
|
|
5
|
+
module Klenod
|
|
6
|
+
module Build
|
|
7
|
+
module Plugins
|
|
8
|
+
module CSSPlugin
|
|
9
|
+
# The native extension looks this class up by name and raises it with
|
|
10
|
+
# only a message, so it has to tolerate being constructed that way. The
|
|
11
|
+
# plugin catches that bare error and re-raises it with the source and
|
|
12
|
+
# module attached, which is what fills in the excerpt.
|
|
13
|
+
class ParseError < Klenod::Build::SourceError
|
|
14
|
+
# "Unexpected token Colon at app:/styles.css:11:5"
|
|
15
|
+
LOCATION = /\A(?<message>.*)\s+at\s+(?<file>.+):(?<line>\d+):(?<column>\d+)\s*\z/m
|
|
16
|
+
|
|
17
|
+
def initialize(error, source: nil, module_id: nil)
|
|
18
|
+
super
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def kind
|
|
22
|
+
"CSS parse error"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def location(error)
|
|
28
|
+
found = LOCATION.match(message_for(error))
|
|
29
|
+
return nil unless found
|
|
30
|
+
|
|
31
|
+
Location.new(
|
|
32
|
+
# lightningcss reports a zero-based line and a one-based column.
|
|
33
|
+
line: found[:line].to_i + 1,
|
|
34
|
+
column: found[:column].to_i,
|
|
35
|
+
detail: found[:message]
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
Binary file
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
require "json"
|
|
4
4
|
|
|
5
|
+
require "klenod/plugin/css/errors"
|
|
6
|
+
|
|
5
7
|
begin
|
|
6
8
|
require "klenod/plugin/css/native"
|
|
7
9
|
rescue LoadError
|
|
@@ -13,7 +15,6 @@ module Klenod
|
|
|
13
15
|
module Plugins
|
|
14
16
|
module CSSPlugin
|
|
15
17
|
class Error < StandardError; end
|
|
16
|
-
class ParseError < Error; end
|
|
17
18
|
|
|
18
19
|
ImportDependency = Data.define(:url, :placeholder, :supports, :media, :loc)
|
|
19
20
|
UrlDependency = Data.define(:url, :placeholder, :loc)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: klenod-plugin-css
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.15
|
|
5
5
|
platform: x86_64-linux-gnu
|
|
6
6
|
authors:
|
|
7
7
|
- Andrés Alin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-09-
|
|
11
|
+
date: 2026-09-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: klenod-build
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - '='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.0.
|
|
19
|
+
version: 0.0.15
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - '='
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 0.0.
|
|
26
|
+
version: 0.0.15
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rake-compiler
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -48,6 +48,7 @@ files:
|
|
|
48
48
|
- README.md
|
|
49
49
|
- lib/klenod/build/plugins/css_plugin.rb
|
|
50
50
|
- lib/klenod/plugin/css.rb
|
|
51
|
+
- lib/klenod/plugin/css/errors.rb
|
|
51
52
|
- lib/klenod/plugin/css/native.so
|
|
52
53
|
- lib/klenod/plugin/css/transformer.rb
|
|
53
54
|
- lib/klenod/plugin/css/version.rb
|