bridgetown-core 2.0.0.beta2 → 2.0.0.beta4

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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/bridgetown-core.gemspec +43 -42
  4. data/lib/bridgetown-core/cache.rb +3 -19
  5. data/lib/bridgetown-core/cleaner.rb +17 -19
  6. data/lib/bridgetown-core/collection.rb +6 -5
  7. data/lib/bridgetown-core/commands/base.rb +7 -0
  8. data/lib/bridgetown-core/commands/build.rb +35 -22
  9. data/lib/bridgetown-core/commands/concerns/actions.rb +4 -0
  10. data/lib/bridgetown-core/commands/console.rb +0 -1
  11. data/lib/bridgetown-core/commands/esbuild/esbuild.config.js +7 -6
  12. data/lib/bridgetown-core/commands/esbuild/esbuild.defaults.js.erb +14 -13
  13. data/lib/bridgetown-core/commands/esbuild/migrate-from-webpack.rb +1 -1
  14. data/lib/bridgetown-core/commands/esbuild/update.rb +17 -3
  15. data/lib/bridgetown-core/commands/esbuild.rb +1 -1
  16. data/lib/bridgetown-core/commands/start.rb +12 -2
  17. data/lib/bridgetown-core/component.rb +1 -1
  18. data/lib/bridgetown-core/concerns/intuitive_expectations.rb +67 -0
  19. data/lib/bridgetown-core/concerns/layout_placeable.rb +1 -1
  20. data/lib/bridgetown-core/concerns/publishable.rb +2 -0
  21. data/lib/bridgetown-core/concerns/site/content.rb +4 -1
  22. data/lib/bridgetown-core/concerns/site/extensible.rb +6 -1
  23. data/lib/bridgetown-core/concerns/site/fast_refreshable.rb +33 -18
  24. data/lib/bridgetown-core/concerns/site/localizable.rb +2 -0
  25. data/lib/bridgetown-core/concerns/site/processable.rb +2 -0
  26. data/lib/bridgetown-core/concerns/site/renderable.rb +3 -0
  27. data/lib/bridgetown-core/concerns/site/ssr.rb +1 -2
  28. data/lib/bridgetown-core/concerns/site/writable.rb +1 -0
  29. data/lib/bridgetown-core/concerns/viewable.rb +46 -0
  30. data/lib/bridgetown-core/configuration.rb +29 -23
  31. data/lib/bridgetown-core/configurations/gh-pages/gh-pages.yml +5 -5
  32. data/lib/bridgetown-core/configurations/minitesting.rb +24 -64
  33. data/lib/bridgetown-core/converter.rb +2 -7
  34. data/lib/bridgetown-core/converters/erb_templates.rb +11 -7
  35. data/lib/bridgetown-core/converters/identity.rb +3 -11
  36. data/lib/bridgetown-core/converters/liquid_templates.rb +3 -5
  37. data/lib/bridgetown-core/converters/markdown/kramdown_parser.rb +1 -1
  38. data/lib/bridgetown-core/converters/markdown.rb +11 -14
  39. data/lib/bridgetown-core/converters/serbea_templates.rb +10 -8
  40. data/lib/bridgetown-core/drops/drop.rb +29 -42
  41. data/lib/bridgetown-core/drops/resource_drop.rb +3 -12
  42. data/lib/bridgetown-core/errors.rb +2 -8
  43. data/lib/bridgetown-core/filters/condition_helpers.rb +6 -9
  44. data/lib/bridgetown-core/filters/date_filters.rb +22 -35
  45. data/lib/bridgetown-core/filters/grouping_filters.rb +11 -11
  46. data/lib/bridgetown-core/filters.rb +53 -72
  47. data/lib/bridgetown-core/front_matter/defaults.rb +14 -19
  48. data/lib/bridgetown-core/generated_page.rb +6 -6
  49. data/lib/bridgetown-core/generators/prototype_generator.rb +0 -2
  50. data/lib/bridgetown-core/helpers.rb +2 -2
  51. data/lib/bridgetown-core/hooks.rb +0 -1
  52. data/lib/bridgetown-core/layout.rb +3 -4
  53. data/lib/bridgetown-core/liquid_extensions.rb +3 -5
  54. data/lib/bridgetown-core/log_adapter.rb +37 -56
  55. data/lib/bridgetown-core/plugin_manager.rb +7 -3
  56. data/lib/bridgetown-core/rack/boot.rb +7 -57
  57. data/lib/bridgetown-core/rack/default_config.ru +14 -0
  58. data/lib/bridgetown-core/rack/loader_hooks.rb +83 -0
  59. data/lib/bridgetown-core/rack/logger.rb +0 -2
  60. data/lib/bridgetown-core/rack/routes.rb +3 -2
  61. data/lib/bridgetown-core/resource/base.rb +8 -8
  62. data/lib/bridgetown-core/resource/permalink_processor.rb +1 -1
  63. data/lib/bridgetown-core/resource/relations.rb +3 -1
  64. data/lib/bridgetown-core/ruby_template_view.rb +0 -1
  65. data/lib/bridgetown-core/static_file.rb +15 -20
  66. data/lib/bridgetown-core/tags/class_map.rb +1 -1
  67. data/lib/bridgetown-core/tags/post_url.rb +2 -32
  68. data/lib/bridgetown-core/utils/initializers.rb +2 -2
  69. data/lib/bridgetown-core/utils/require_gems.rb +1 -3
  70. data/lib/bridgetown-core/utils.rb +41 -44
  71. data/lib/bridgetown-core/watcher.rb +2 -3
  72. data/lib/bridgetown-core.rb +29 -10
  73. data/lib/roda/plugins/bridgetown_server.rb +13 -25
  74. data/lib/roda/plugins/bridgetown_ssr.rb +21 -3
  75. data/lib/roda/plugins/flashier.rb +57 -0
  76. data/lib/roda/plugins/generic_index.html +127 -0
  77. data/lib/roda/plugins/ssg.rb +3 -2
  78. data/lib/site_template/config/initializers.rb +2 -0
  79. data/lib/site_template/package.json.erb +1 -0
  80. data/lib/site_template/postcss.config.js.erb +1 -1
  81. metadata +26 -7
  82. data/lib/bridgetown-core/commands/doctor.rb +0 -147
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bridgetown-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta2
4
+ version: 2.0.0.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bridgetown Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-18 00:00:00.000000000 Z
11
+ date: 2025-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -64,14 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - '='
66
66
  - !ruby/object:Gem::Version
67
- version: 2.0.0.beta2
67
+ version: 2.0.0.beta4
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - '='
73
73
  - !ruby/object:Gem::Version
74
- version: 2.0.0.beta2
74
+ version: 2.0.0.beta4
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: csv
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -156,6 +156,20 @@ dependencies:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
158
  version: '1.0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: irb
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '1.14'
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '1.14'
159
173
  - !ruby/object:Gem::Dependency
160
174
  name: kramdown
161
175
  requirement: !ruby/object:Gem::Requirement
@@ -328,14 +342,14 @@ dependencies:
328
342
  requirements:
329
343
  - - ">="
330
344
  - !ruby/object:Gem::Version
331
- version: 0.5.2
345
+ version: 0.6.0
332
346
  type: :runtime
333
347
  prerelease: false
334
348
  version_requirements: !ruby/object:Gem::Requirement
335
349
  requirements:
336
350
  - - ">="
337
351
  - !ruby/object:Gem::Version
338
- version: 0.5.2
352
+ version: 0.6.0
339
353
  - !ruby/object:Gem::Dependency
340
354
  name: thor
341
355
  requirement: !ruby/object:Gem::Requirement
@@ -408,7 +422,6 @@ files:
408
422
  - lib/bridgetown-core/commands/concerns/summarizable.rb
409
423
  - lib/bridgetown-core/commands/configure.rb
410
424
  - lib/bridgetown-core/commands/console.rb
411
- - lib/bridgetown-core/commands/doctor.rb
412
425
  - lib/bridgetown-core/commands/esbuild.rb
413
426
  - lib/bridgetown-core/commands/esbuild/esbuild.config.js
414
427
  - lib/bridgetown-core/commands/esbuild/esbuild.defaults.js.erb
@@ -421,6 +434,7 @@ files:
421
434
  - lib/bridgetown-core/commands/registrations.rb
422
435
  - lib/bridgetown-core/commands/start.rb
423
436
  - lib/bridgetown-core/component.rb
437
+ - lib/bridgetown-core/concerns/intuitive_expectations.rb
424
438
  - lib/bridgetown-core/concerns/layout_placeable.rb
425
439
  - lib/bridgetown-core/concerns/localizable.rb
426
440
  - lib/bridgetown-core/concerns/prioritizable.rb
@@ -435,6 +449,7 @@ files:
435
449
  - lib/bridgetown-core/concerns/site/ssr.rb
436
450
  - lib/bridgetown-core/concerns/site/writable.rb
437
451
  - lib/bridgetown-core/concerns/transformable.rb
452
+ - lib/bridgetown-core/concerns/viewable.rb
438
453
  - lib/bridgetown-core/configuration.rb
439
454
  - lib/bridgetown-core/configuration/configuration_dsl.rb
440
455
  - lib/bridgetown-core/configurations/.keep
@@ -536,6 +551,8 @@ files:
536
551
  - lib/bridgetown-core/plugin.rb
537
552
  - lib/bridgetown-core/plugin_manager.rb
538
553
  - lib/bridgetown-core/rack/boot.rb
554
+ - lib/bridgetown-core/rack/default_config.ru
555
+ - lib/bridgetown-core/rack/loader_hooks.rb
539
556
  - lib/bridgetown-core/rack/logger.rb
540
557
  - lib/bridgetown-core/rack/routes.rb
541
558
  - lib/bridgetown-core/reader.rb
@@ -578,6 +595,8 @@ files:
578
595
  - lib/bridgetown-core/yaml_parser.rb
579
596
  - lib/roda/plugins/bridgetown_server.rb
580
597
  - lib/roda/plugins/bridgetown_ssr.rb
598
+ - lib/roda/plugins/flashier.rb
599
+ - lib/roda/plugins/generic_index.html
581
600
  - lib/roda/plugins/initializers.rb
582
601
  - lib/roda/plugins/method_override.rb
583
602
  - lib/roda/plugins/ssg.rb
@@ -1,147 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Bridgetown
4
- module Commands
5
- class Doctor < Thor::Group
6
- extend BuildOptions
7
- extend Summarizable
8
- include ConfigurationOverridable
9
-
10
- Registrations.register do
11
- register(Doctor, "doctor", "doctor", Doctor.summary)
12
- end
13
-
14
- def self.banner
15
- "bridgetown doctor [options]"
16
- end
17
- summary "Search site and print specific deprecation warnings"
18
-
19
- def doctor
20
- site = Bridgetown::Site.new(configuration_with_overrides(options))
21
- site.reset
22
- site.read
23
- site.generate
24
-
25
- if healthy?(site)
26
- Bridgetown.logger.info "Your test results", "are in. Everything looks fine."
27
- else
28
- abort
29
- end
30
- end
31
-
32
- protected
33
-
34
- def healthy?(site)
35
- [
36
- !conflicting_urls(site),
37
- !urls_only_differ_by_case(site),
38
- proper_site_url?(site),
39
- properly_gathered_posts?(site),
40
- ].all?
41
- end
42
-
43
- def properly_gathered_posts?(site)
44
- return true if site.config["collections_dir"].empty?
45
-
46
- posts_at_root = site.in_source_dir("_posts")
47
- return true unless File.directory?(posts_at_root)
48
-
49
- Bridgetown.logger.warn "Warning:",
50
- "Detected '_posts' directory outside custom `collections_dir`!"
51
- Bridgetown.logger.warn "",
52
- "Please move '#{posts_at_root}' into the custom directory at " \
53
- "'#{site.in_source_dir(site.config["collections_dir"])}'"
54
- false
55
- end
56
-
57
- def conflicting_urls(site)
58
- conflicting_urls = false
59
- urls = {}
60
- urls = collect_urls(urls, site.contents, site.dest)
61
- urls.each do |url, paths|
62
- next unless paths.size > 1
63
-
64
- conflicting_urls = true
65
- Bridgetown.logger.warn "Conflict:", "The URL '#{url}' is the destination " \
66
- "for the following pages: #{paths.join(", ")}"
67
- end
68
- conflicting_urls
69
- end
70
-
71
- def urls_only_differ_by_case(site)
72
- urls_only_differ_by_case = false
73
- urls = case_insensitive_urls(site.resources, site.dest)
74
- urls.each_value do |real_urls|
75
- next unless real_urls.uniq.size > 1
76
-
77
- urls_only_differ_by_case = true
78
- Bridgetown.logger.warn(
79
- "Warning:",
80
- "The following URLs only differ by case. On a case-insensitive file system one of " \
81
- "the URLs will be overwritten by the other: #{real_urls.join(", ")}"
82
- )
83
- end
84
- urls_only_differ_by_case
85
- end
86
-
87
- def proper_site_url?(site)
88
- url = site.config["url"]
89
- [
90
- url_exists?(url),
91
- url_valid?(url),
92
- url_absolute(url),
93
- ].all?
94
- end
95
-
96
- private
97
-
98
- def collect_urls(urls, things, destination)
99
- things.each do |thing|
100
- dest = thing.method(:destination).arity == 1 ?
101
- thing.destination(destination) :
102
- thing.destination
103
- if urls[dest]
104
- urls[dest] << thing.path
105
- else
106
- urls[dest] = [thing.path]
107
- end
108
- end
109
- urls
110
- end
111
-
112
- def case_insensitive_urls(things, _destination)
113
- things.each_with_object({}) do |thing, memo|
114
- dest = thing.destination&.output_path
115
- (memo[dest.downcase] ||= []) << dest if dest
116
- end
117
- end
118
-
119
- def url_exists?(url)
120
- return true unless url.nil? || url.empty?
121
-
122
- Bridgetown.logger.warn "Warning:", "You didn't set an URL in the config file, " \
123
- "you may encounter problems with some plugins."
124
- false
125
- end
126
-
127
- def url_valid?(url)
128
- Addressable::URI.parse(url)
129
- true
130
- # Addressable::URI#parse only raises a TypeError
131
- # https://git.io/vFfbx
132
- rescue TypeError
133
- Bridgetown.logger.warn "Warning:", "The site URL does not seem to be valid, " \
134
- "check the value of `url` in your config file."
135
- false
136
- end
137
-
138
- def url_absolute(url)
139
- return true if url.is_a?(String) && Addressable::URI.parse(url).absolute?
140
-
141
- Bridgetown.logger.warn "Warning:", "Your site URL does not seem to be absolute, " \
142
- "check the value of `url` in your config file."
143
- false
144
- end
145
- end
146
- end
147
- end