mayu-live 0.0.4 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3f819e4512b624c496e60ad22b2461db0ed9afbe13b2b5b528358266dd83cbe7
4
- data.tar.gz: 4185727d1855c3eb019d27c0f2ab82d17d2941d3b8101043cb55d6fa9d31d350
3
+ metadata.gz: d60c146397cbe38cfc7e659f0681d90e6bbac5e278ba95a60527ff8f66ba1280
4
+ data.tar.gz: d4f35ae4cdfa457b9ac1bca877626b8e045a870cfb723699bae500a54293938a
5
5
  SHA512:
6
- metadata.gz: 314a09735d9870f64c4ce7635ff072281c87e11dc6414786957188158f047e70bef8757b5bb9bc038b0de7a4d298e5f4ea1a0fecd3ffeb485fc01c6b1f4ac54a
7
- data.tar.gz: 3ec46f730741fcb7d6918b3a997704a298eef23572e3ffcf57903f97c2809bf82591bec9d70da4f33f0f9ce992bcc802a55df626dcc1ae1f7e83c57cba64466e
6
+ metadata.gz: dbf52fb2fe61b49ffef476d8ce75edc96904d7f0a9372f3ee2949137068f1932db51b502e254de932cb06dbdd6f2057152057b780d2774a2ce4c53743be5624c
7
+ data.tar.gz: a33c40fb0f20f7643979e5486ad2c83c1798d2ce042511bb3d143cf127f8a822b3ab7da3f8ac94df968a2c0de559e20cd28680299c9410d3d113d4aea032c179
data/exe/mayu CHANGED
@@ -23,10 +23,6 @@ else
23
23
  puts "\e[2mYJIT is not supported!\e[0m"
24
24
  end
25
25
 
26
- if RubyVM::MJIT.enabled?
27
- puts "\e[1mMJIT is enabled!\e[0m"
28
- end
29
-
30
26
  require "mayu/banner"
31
27
  require "mayu/commands"
32
28
 
data/lib/mayu/commands.rb CHANGED
@@ -16,6 +16,10 @@ module Mayu
16
16
 
17
17
  case argv
18
18
  in ["dev", *rest]
19
+ # Initialize RMagick on start to avoid the following error:
20
+ # objc[88493]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called.
21
+ # We cannot safely call it or ignore it in the fork() child process. Crashing instead.
22
+ require "rmagick"
19
23
  require_relative "server"
20
24
  Server.start(load_config(:dev))
21
25
  in ["devbundle", *rest]
@@ -27,78 +27,18 @@ module Mayu
27
27
  def process(target_path)
28
28
  return if File.exist?(target_path)
29
29
 
30
+ require "rmagick"
31
+
30
32
  Console.logger.info(
31
33
  self,
32
34
  "Generating #{target_path} from #{@source_path}"
33
35
  )
34
36
 
35
- case @version.format
36
- when :webp
37
- convert_webp(
38
- source_path: @source_path,
39
- quality: 80, # typical quality,
40
- width: @version.width,
41
- target_path: target_path
42
- )
43
- else
44
- convert_generic(
45
- source_path: @source_path,
46
- quality: 80, # typical quality,
47
- width: @version.width,
48
- target_path: target_path
49
- )
50
- end
51
- end
52
-
53
- private
54
-
55
- sig do
56
- params(
57
- source_path: String,
58
- quality: Integer,
59
- width: Integer,
60
- target_path: String
61
- ).void
62
- end
63
- def convert_webp(source_path:, quality:, width:, target_path:)
64
- system(
65
- Shellwords.shelljoin(
66
- [
67
- "cwebp",
68
- "-q",
69
- "#{quality}",
70
- "-resize",
71
- "#{width}",
72
- "0",
73
- source_path,
74
- "-o",
75
- target_path
76
- ]
77
- ) + " 2> /dev/null"
78
- ) or raise "Could not generate #{target_path} from #{source_path}"
79
- end
80
-
81
- sig do
82
- params(
83
- source_path: String,
84
- quality: Integer,
85
- width: Integer,
86
- target_path: String
87
- ).void
88
- end
89
- def convert_generic(source_path:, quality:, width:, target_path:)
90
- system(
91
- Shellwords.shelljoin(
92
- [
93
- "convert",
94
- source_path,
95
- "-adaptive-resize",
96
- "#{width}",
97
- "-strip",
98
- target_path
99
- ]
100
- ) + " 2> /dev/null"
101
- ) or raise "Could not generate #{target_path} from #{source_path}"
37
+ Magick::Image
38
+ .read(@source_path)
39
+ .first
40
+ .resize_to_fit(@version.width)
41
+ .write(target_path) { |options| options.quality = 80 }
102
42
  end
103
43
  end
104
44
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  Self =
3
3
  setup_component(
4
- assets: ["rKxGn-R511h2m1nlvs18PwsPwrzW-iGCNVojf-x0LRg=.css"],
4
+ assets: ["Cd9Qx4lhkbeZyruovAokW1FL3tHSmMOxOc-2y1h7Zvc=.css"],
5
5
  styles: {
6
6
  button: "app/components/MyComponent.button?dhhHwAZl"
7
7
  }
@@ -41,10 +41,11 @@ module Mayu
41
41
  params(
42
42
  source: String,
43
43
  source_path: String,
44
- source_line: Integer
44
+ source_line: Integer,
45
+ minify: T::Boolean
45
46
  ).returns(TransformResult)
46
47
  end
47
- def self.transform(source:, source_path:, source_line: 1)
48
+ def self.transform(source:, source_path:, source_line: 1, minify: true)
48
49
  # Required here because it's not necessary in production..
49
50
  # kinda messy. need to rewrite the entire "resources" thing...
50
51
  require "mayu/css"
@@ -55,7 +56,8 @@ module Mayu
55
56
  File.basename(source_path, ".*")
56
57
  ).delete_prefix("./")
57
58
 
58
- result = Mayu::CSS.transform(source_path_without_extension, source)
59
+ result =
60
+ Mayu::CSS.transform(source_path_without_extension, source, minify:)
59
61
 
60
62
  output = result.code.encode("utf-8")
61
63
 
@@ -94,9 +96,9 @@ module Mayu
94
96
 
95
97
  sig do
96
98
  params(
97
- classes: T::Hash[String, String],
98
- elements: T::Hash[String, String],
99
- exports: T::Hash[Symbol, T.untyped]
99
+ classes: T::Hash[Symbol, String],
100
+ elements: T::Hash[Symbol, String],
101
+ exports: T::Hash[String, T.untyped]
100
102
  ).returns(T::Hash[Symbol, String])
101
103
  end
102
104
  def self.join_classes(classes, elements, exports)
@@ -113,19 +115,18 @@ module Mayu
113
115
  sig do
114
116
  params(
115
117
  klass: String,
116
- exports: T::Hash[Symbol, T.untyped],
117
- classes: T::Hash[String, String]
118
+ exports: T::Hash[String, T.untyped],
119
+ classes: T::Hash[Symbol, String]
118
120
  ).returns(String)
119
121
  end
120
122
  def self.join_class(klass, exports, classes)
121
- case exports[klass.to_sym]
122
- in composes:
123
+ if composes = exports[klass]&.composes
123
124
  [
124
125
  klass,
125
- *composes.map do
126
- case _1
127
- in { type: "local", name: }
128
- classes[name]
126
+ *composes.map do |compose|
127
+ case compose
128
+ in Mayu::CSS::ComposeLocal
129
+ classes[compose.name.to_sym]
129
130
  end
130
131
  end
131
132
  ].join(" ")
@@ -3,6 +3,7 @@
3
3
 
4
4
  require "ripper"
5
5
  require "syntax_suggest"
6
+ require "syntax_suggest/api"
6
7
  require "syntax_suggest/code_line"
7
8
  require "syntax_suggest/explain_syntax"
8
9
  require "syntax_suggest/lex_all"
data/lib/mayu/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Mayu
5
- VERSION = "0.0.4"
5
+ VERSION = "0.0.6"
6
6
  end
data/mayu-live.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.homepage = "https://mayu.live/"
19
19
  spec.license = "AGPL-3.0"
20
- spec.required_ruby_version = ">= 3.2.0"
20
+ spec.required_ruby_version = ">= 3.3.0"
21
21
 
22
22
  spec.metadata["homepage_uri"] = spec.homepage
23
23
  spec.metadata["source_code_uri"] = "https://github.com/mayu-live/framework"
@@ -43,15 +43,15 @@ Gem::Specification.new do |spec|
43
43
  spec.require_paths = ["lib"]
44
44
 
45
45
  # Core dependencies
46
- spec.add_dependency "async", "~> 2.3.0"
46
+ spec.add_dependency "async", "~> 2.8.0"
47
47
  spec.add_dependency "async-container", "~> 0.16.12"
48
- spec.add_dependency "async-http", "~> 0.59.4"
48
+ spec.add_dependency "async-http", "~> 0.61.0"
49
49
  spec.add_dependency "brotli", "~> 0.4.0"
50
50
  spec.add_dependency "mime-types", "~> 3.4.1"
51
51
  spec.add_dependency "msgpack", "~> 1.6.0"
52
52
  spec.add_dependency "nanoid", "~> 2.0.0"
53
53
  spec.add_dependency "prometheus-client", "~> 4.0.0"
54
- spec.add_dependency "protocol-http", "~> 0.23.12"
54
+ spec.add_dependency "protocol-http", "~> 0.25.0"
55
55
  spec.add_dependency "pry", "~> 0.14.2"
56
56
  spec.add_dependency "rack", ">= 3.0.4.1", "< 3.0.9.0"
57
57
  spec.add_dependency "rake", "~> 13.0.6"
@@ -68,9 +68,11 @@ Gem::Specification.new do |spec|
68
68
  spec.add_dependency "image_size", "~> 3.2.0"
69
69
  spec.add_dependency "kramdown", "~> 2.4.0"
70
70
  spec.add_dependency "rouge", "~> 4.0.0"
71
- spec.add_dependency "mayu-css", "~> 0.0.3"
71
+ spec.add_dependency "mayu-css", "~> 0.1.2"
72
+ spec.add_dependency "rmagick", "~> 5.3.0"
72
73
  spec.add_dependency "source_map", "~> 3.0.1"
73
74
  spec.add_dependency "syntax_tree", "~> 5.3.0"
74
75
  spec.add_dependency "syntax_tree-haml", "~> 3.0.0"
75
76
  spec.add_dependency "syntax_tree-xml", "~> 0.1.0"
77
+ spec.add_dependency "base64", "~> 0.2.0"
76
78
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mayu-live
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Alin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-10 00:00:00.000000000 Z
11
+ date: 2024-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.3.0
19
+ version: 2.8.0
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: 2.3.0
26
+ version: 2.8.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: async-container
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.59.4
47
+ version: 0.61.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.59.4
54
+ version: 0.61.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: brotli
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.23.12
131
+ version: 0.25.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.23.12
138
+ version: 0.25.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: pry
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -316,14 +316,28 @@ dependencies:
316
316
  requirements:
317
317
  - - "~>"
318
318
  - !ruby/object:Gem::Version
319
- version: 0.0.3
319
+ version: 0.1.2
320
320
  type: :runtime
321
321
  prerelease: false
322
322
  version_requirements: !ruby/object:Gem::Requirement
323
323
  requirements:
324
324
  - - "~>"
325
325
  - !ruby/object:Gem::Version
326
- version: 0.0.3
326
+ version: 0.1.2
327
+ - !ruby/object:Gem::Dependency
328
+ name: rmagick
329
+ requirement: !ruby/object:Gem::Requirement
330
+ requirements:
331
+ - - "~>"
332
+ - !ruby/object:Gem::Version
333
+ version: 5.3.0
334
+ type: :runtime
335
+ prerelease: false
336
+ version_requirements: !ruby/object:Gem::Requirement
337
+ requirements:
338
+ - - "~>"
339
+ - !ruby/object:Gem::Version
340
+ version: 5.3.0
327
341
  - !ruby/object:Gem::Dependency
328
342
  name: source_map
329
343
  requirement: !ruby/object:Gem::Requirement
@@ -380,6 +394,20 @@ dependencies:
380
394
  - - "~>"
381
395
  - !ruby/object:Gem::Version
382
396
  version: 0.1.0
397
+ - !ruby/object:Gem::Dependency
398
+ name: base64
399
+ requirement: !ruby/object:Gem::Requirement
400
+ requirements:
401
+ - - "~>"
402
+ - !ruby/object:Gem::Version
403
+ version: 0.2.0
404
+ type: :runtime
405
+ prerelease: false
406
+ version_requirements: !ruby/object:Gem::Requirement
407
+ requirements:
408
+ - - "~>"
409
+ - !ruby/object:Gem::Version
410
+ version: 0.2.0
383
411
  description: |
384
412
  Mayu Live is a live updating server side VirtualDOM framework for Ruby,
385
413
  inspired by modern frontend tools that exist in the JavaScript ecosystem.
@@ -597,14 +625,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
597
625
  requirements:
598
626
  - - ">="
599
627
  - !ruby/object:Gem::Version
600
- version: 3.2.0
628
+ version: 3.3.0
601
629
  required_rubygems_version: !ruby/object:Gem::Requirement
602
630
  requirements:
603
631
  - - ">="
604
632
  - !ruby/object:Gem::Version
605
633
  version: '0'
606
634
  requirements: []
607
- rubygems_version: 3.4.1
635
+ rubygems_version: 3.5.3
608
636
  signing_key:
609
637
  specification_version: 4
610
638
  summary: Server side VDOM framework