mayu-live 0.0.4 → 0.0.6

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: 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