theme-check 1.0.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/theme-check.yml +2 -6
  3. data/CHANGELOG.md +50 -0
  4. data/CONTRIBUTING.md +1 -1
  5. data/README.md +39 -0
  6. data/RELEASING.md +34 -2
  7. data/bin/theme-check +29 -0
  8. data/bin/theme-check-language-server +29 -0
  9. data/config/default.yml +28 -1
  10. data/config/nothing.yml +11 -0
  11. data/config/theme_app_extension.yml +168 -0
  12. data/data/shopify_liquid/objects.yml +1 -0
  13. data/docs/checks/app_block_valid_tags.md +40 -0
  14. data/docs/checks/asset_size_app_block_css.md +52 -0
  15. data/docs/checks/asset_size_app_block_javascript.md +57 -0
  16. data/docs/checks/deprecate_lazysizes.md +0 -3
  17. data/docs/checks/missing_template.md +25 -0
  18. data/docs/checks/pagination_size.md +44 -0
  19. data/docs/checks/template_length.md +1 -1
  20. data/docs/checks/undefined_object.md +5 -0
  21. data/lib/theme_check/analyzer.rb +26 -21
  22. data/lib/theme_check/asset_file.rb +3 -15
  23. data/lib/theme_check/bug.rb +3 -1
  24. data/lib/theme_check/check.rb +26 -4
  25. data/lib/theme_check/checks/app_block_valid_tags.rb +36 -0
  26. data/lib/theme_check/checks/asset_size_app_block_css.rb +44 -0
  27. data/lib/theme_check/checks/asset_size_app_block_javascript.rb +44 -0
  28. data/lib/theme_check/checks/asset_size_css.rb +3 -3
  29. data/lib/theme_check/checks/asset_size_javascript.rb +2 -2
  30. data/lib/theme_check/checks/convert_include_to_render.rb +3 -1
  31. data/lib/theme_check/checks/default_locale.rb +3 -1
  32. data/lib/theme_check/checks/deprecate_bgsizes.rb +1 -1
  33. data/lib/theme_check/checks/deprecate_lazysizes.rb +7 -4
  34. data/lib/theme_check/checks/img_lazy_loading.rb +1 -1
  35. data/lib/theme_check/checks/img_width_and_height.rb +3 -3
  36. data/lib/theme_check/checks/missing_template.rb +21 -5
  37. data/lib/theme_check/checks/pagination_size.rb +65 -0
  38. data/lib/theme_check/checks/parser_blocking_javascript.rb +1 -1
  39. data/lib/theme_check/checks/remote_asset.rb +3 -3
  40. data/lib/theme_check/checks/space_inside_braces.rb +27 -7
  41. data/lib/theme_check/checks/template_length.rb +1 -1
  42. data/lib/theme_check/checks/undefined_object.rb +1 -1
  43. data/lib/theme_check/checks/valid_html_translation.rb +1 -1
  44. data/lib/theme_check/checks.rb +11 -1
  45. data/lib/theme_check/cli.rb +52 -15
  46. data/lib/theme_check/config.rb +56 -10
  47. data/lib/theme_check/corrector.rb +9 -0
  48. data/lib/theme_check/exceptions.rb +29 -27
  49. data/lib/theme_check/file_system_storage.rb +12 -0
  50. data/lib/theme_check/html_check.rb +0 -1
  51. data/lib/theme_check/html_node.rb +37 -16
  52. data/lib/theme_check/html_visitor.rb +17 -3
  53. data/lib/theme_check/json_check.rb +2 -2
  54. data/lib/theme_check/json_file.rb +11 -27
  55. data/lib/theme_check/json_printer.rb +26 -0
  56. data/lib/theme_check/language_server/constants.rb +21 -6
  57. data/lib/theme_check/language_server/document_link_engine.rb +3 -31
  58. data/lib/theme_check/language_server/document_link_provider.rb +70 -0
  59. data/lib/theme_check/language_server/document_link_providers/asset_document_link_provider.rb +11 -0
  60. data/lib/theme_check/language_server/document_link_providers/include_document_link_provider.rb +11 -0
  61. data/lib/theme_check/language_server/document_link_providers/render_document_link_provider.rb +11 -0
  62. data/lib/theme_check/language_server/document_link_providers/section_document_link_provider.rb +11 -0
  63. data/lib/theme_check/language_server/handler.rb +7 -4
  64. data/lib/theme_check/language_server/server.rb +13 -2
  65. data/lib/theme_check/language_server.rb +5 -0
  66. data/lib/theme_check/node.rb +6 -4
  67. data/lib/theme_check/offense.rb +56 -3
  68. data/lib/theme_check/parsing_helpers.rb +4 -3
  69. data/lib/theme_check/position.rb +98 -14
  70. data/lib/theme_check/regex_helpers.rb +5 -2
  71. data/lib/theme_check/tags.rb +26 -9
  72. data/lib/theme_check/template.rb +3 -32
  73. data/lib/theme_check/theme.rb +3 -0
  74. data/lib/theme_check/theme_file.rb +40 -0
  75. data/lib/theme_check/version.rb +1 -1
  76. data/lib/theme_check.rb +16 -0
  77. data/theme-check.gemspec +1 -1
  78. metadata +24 -6
  79. data/bin/liquid-server +0 -4
@@ -7,6 +7,9 @@ module ThemeCheck
7
7
  LIQUID_REGEX = /\.liquid$/i
8
8
  JSON_REGEX = /\.json$/i
9
9
 
10
+ attr_reader :storage
11
+ attr_writer :default_locale_json
12
+
10
13
  def initialize(storage)
11
14
  @storage = storage
12
15
  end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+ require "pathname"
3
+
4
+ module ThemeCheck
5
+ class ThemeFile
6
+ def initialize(relative_path, storage)
7
+ @relative_path = relative_path
8
+ @storage = storage
9
+ end
10
+
11
+ def path
12
+ @storage.path(@relative_path)
13
+ end
14
+
15
+ def relative_path
16
+ @relative_pathname ||= Pathname.new(@relative_path)
17
+ end
18
+
19
+ def name
20
+ relative_path.sub_ext('').to_s
21
+ end
22
+
23
+ def source
24
+ @source ||= @storage.read(@relative_path)
25
+ end
26
+
27
+ def json?
28
+ false
29
+ end
30
+
31
+ def liquid?
32
+ false
33
+ end
34
+
35
+ def ==(other)
36
+ other.is_a?(self.class) && relative_path == other.relative_path
37
+ end
38
+ alias_method :eql?, :==
39
+ end
40
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module ThemeCheck
3
- VERSION = "1.0.0"
3
+ VERSION = "1.4.0"
4
4
  end
data/lib/theme_check.rb CHANGED
@@ -4,6 +4,7 @@ require "liquid"
4
4
  require_relative "theme_check/version"
5
5
  require_relative "theme_check/bug"
6
6
  require_relative "theme_check/exceptions"
7
+ require_relative "theme_check/theme_file"
7
8
  require_relative "theme_check/analyzer"
8
9
  require_relative "theme_check/check"
9
10
  require_relative "theme_check/checks_tracking"
@@ -26,6 +27,7 @@ require_relative "theme_check/config"
26
27
  require_relative "theme_check/node"
27
28
  require_relative "theme_check/offense"
28
29
  require_relative "theme_check/printer"
30
+ require_relative "theme_check/json_printer"
29
31
  require_relative "theme_check/shopify_liquid"
30
32
  require_relative "theme_check/storage"
31
33
  require_relative "theme_check/string_helpers"
@@ -45,3 +47,17 @@ Dir[__dir__ + "/theme_check/checks/*.rb"].each { |file| require file }
45
47
  # UTF-8 is the default internal and external encoding, like in Rails & Shopify.
46
48
  Encoding.default_external = Encoding::UTF_8
47
49
  Encoding.default_internal = Encoding::UTF_8
50
+
51
+ module ThemeCheck
52
+ def self.with_liquid_c_disabled
53
+ if defined?(Liquid::C)
54
+ was_enabled = Liquid::C.enabled
55
+ Liquid::C.enabled = false if was_enabled
56
+ end
57
+ yield
58
+ ensure
59
+ if defined?(Liquid::C) && was_enabled
60
+ Liquid::C.enabled = true
61
+ end
62
+ end
63
+ end
data/theme-check.gemspec CHANGED
@@ -25,5 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.require_paths = ["lib"]
26
26
 
27
27
  spec.add_dependency('liquid', '>= 5.0.1')
28
- spec.add_dependency('nokogumbo')
28
+ spec.add_dependency('nokogiri', '>= 1.12')
29
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: theme-check
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc-André Cournoyer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-28 00:00:00.000000000 Z
11
+ date: 2021-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: liquid
@@ -25,19 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 5.0.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: nokogumbo
28
+ name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '1.12'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '1.12'
41
41
  description:
42
42
  email:
43
43
  - marcandre.cournoyer@shopify.com
@@ -60,8 +60,11 @@ files:
60
60
  - README.md
61
61
  - RELEASING.md
62
62
  - Rakefile
63
- - bin/liquid-server
63
+ - bin/theme-check
64
+ - bin/theme-check-language-server
64
65
  - config/default.yml
66
+ - config/nothing.yml
67
+ - config/theme_app_extension.yml
65
68
  - data/shopify_liquid/deprecated_filters.yml
66
69
  - data/shopify_liquid/filters.yml
67
70
  - data/shopify_liquid/objects.yml
@@ -74,6 +77,9 @@ files:
74
77
  - docs/api/json_check.md
75
78
  - docs/api/liquid_check.md
76
79
  - docs/checks/TEMPLATE.md.erb
80
+ - docs/checks/app_block_valid_tags.md
81
+ - docs/checks/asset_size_app_block_css.md
82
+ - docs/checks/asset_size_app_block_javascript.md
77
83
  - docs/checks/asset_size_css.md
78
84
  - docs/checks/asset_size_css_stylesheet_tag.md
79
85
  - docs/checks/asset_size_javascript.md
@@ -94,6 +100,7 @@ files:
94
100
  - docs/checks/missing_required_template_files.md
95
101
  - docs/checks/missing_template.md
96
102
  - docs/checks/nested_snippet.md
103
+ - docs/checks/pagination_size.md
97
104
  - docs/checks/parser_blocking_javascript.md
98
105
  - docs/checks/parser_blocking_script_tag.md
99
106
  - docs/checks/remote_asset.md
@@ -120,6 +127,9 @@ files:
120
127
  - lib/theme_check/check.rb
121
128
  - lib/theme_check/checks.rb
122
129
  - lib/theme_check/checks/TEMPLATE.rb.erb
130
+ - lib/theme_check/checks/app_block_valid_tags.rb
131
+ - lib/theme_check/checks/asset_size_app_block_css.rb
132
+ - lib/theme_check/checks/asset_size_app_block_javascript.rb
123
133
  - lib/theme_check/checks/asset_size_css.rb
124
134
  - lib/theme_check/checks/asset_size_css_stylesheet_tag.rb
125
135
  - lib/theme_check/checks/asset_size_javascript.rb
@@ -140,6 +150,7 @@ files:
140
150
  - lib/theme_check/checks/missing_required_template_files.rb
141
151
  - lib/theme_check/checks/missing_template.rb
142
152
  - lib/theme_check/checks/nested_snippet.rb
153
+ - lib/theme_check/checks/pagination_size.rb
143
154
  - lib/theme_check/checks/parser_blocking_javascript.rb
144
155
  - lib/theme_check/checks/parser_blocking_script_tag.rb
145
156
  - lib/theme_check/checks/remote_asset.rb
@@ -171,6 +182,7 @@ files:
171
182
  - lib/theme_check/json_check.rb
172
183
  - lib/theme_check/json_file.rb
173
184
  - lib/theme_check/json_helpers.rb
185
+ - lib/theme_check/json_printer.rb
174
186
  - lib/theme_check/language_server.rb
175
187
  - lib/theme_check/language_server/completion_engine.rb
176
188
  - lib/theme_check/language_server/completion_helper.rb
@@ -182,6 +194,11 @@ files:
182
194
  - lib/theme_check/language_server/constants.rb
183
195
  - lib/theme_check/language_server/diagnostics_tracker.rb
184
196
  - lib/theme_check/language_server/document_link_engine.rb
197
+ - lib/theme_check/language_server/document_link_provider.rb
198
+ - lib/theme_check/language_server/document_link_providers/asset_document_link_provider.rb
199
+ - lib/theme_check/language_server/document_link_providers/include_document_link_provider.rb
200
+ - lib/theme_check/language_server/document_link_providers/render_document_link_provider.rb
201
+ - lib/theme_check/language_server/document_link_providers/section_document_link_provider.rb
185
202
  - lib/theme_check/language_server/handler.rb
186
203
  - lib/theme_check/language_server/protocol.rb
187
204
  - lib/theme_check/language_server/server.rb
@@ -209,6 +226,7 @@ files:
209
226
  - lib/theme_check/tags.rb
210
227
  - lib/theme_check/template.rb
211
228
  - lib/theme_check/theme.rb
229
+ - lib/theme_check/theme_file.rb
212
230
  - lib/theme_check/version.rb
213
231
  - lib/theme_check/visitor.rb
214
232
  - packaging/homebrew/theme_check.base.rb
data/bin/liquid-server DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env bash
2
- dev="/opt/dev/bin/dev"
3
- cd "$($dev project-path theme-check)"
4
- "$dev" language-server