theme-check 0.3.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +13 -3
- data/CHANGELOG.md +61 -0
- data/CONTRIBUTING.md +5 -2
- data/Gemfile +5 -3
- data/README.md +11 -4
- data/RELEASING.md +2 -2
- data/config/default.yml +14 -0
- data/data/shopify_liquid/tags.yml +27 -0
- data/data/shopify_translation_keys.yml +850 -0
- data/docs/checks/CHECK_DOCS_TEMPLATE.md +47 -0
- data/docs/checks/asset_size_css.md +52 -0
- data/docs/checks/asset_size_javascript.md +79 -0
- data/docs/checks/convert_include_to_render.md +48 -0
- data/docs/checks/default_locale.md +46 -0
- data/docs/checks/deprecated_filter.md +46 -0
- data/docs/checks/img_width_and_height.md +79 -0
- data/docs/checks/liquid_tag.md +65 -0
- data/docs/checks/matching_schema_translations.md +93 -0
- data/docs/checks/matching_translations.md +72 -0
- data/docs/checks/missing_enable_comment.md +50 -0
- data/docs/checks/missing_required_template_files.md +26 -0
- data/docs/checks/missing_template.md +40 -0
- data/docs/checks/nested_snippet.md +69 -0
- data/docs/checks/parser_blocking_javascript.md +97 -0
- data/docs/checks/required_directories.md +25 -0
- data/docs/checks/required_layout_theme_object.md +28 -0
- data/docs/checks/space_inside_braces.md +63 -0
- data/docs/checks/syntax_error.md +49 -0
- data/docs/checks/template_length.md +50 -0
- data/docs/checks/translation_key_exists.md +63 -0
- data/docs/checks/undefined_object.md +53 -0
- data/docs/checks/unknown_filter.md +45 -0
- data/docs/checks/unused_assign.md +47 -0
- data/docs/checks/unused_snippet.md +32 -0
- data/docs/checks/valid_html_translation.md +53 -0
- data/docs/checks/valid_json.md +60 -0
- data/docs/checks/valid_schema.md +50 -0
- data/lib/theme_check.rb +3 -0
- data/lib/theme_check/asset_file.rb +34 -0
- data/lib/theme_check/check.rb +19 -9
- data/lib/theme_check/checks/asset_size_css.rb +89 -0
- data/lib/theme_check/checks/asset_size_javascript.rb +68 -0
- data/lib/theme_check/checks/convert_include_to_render.rb +1 -1
- data/lib/theme_check/checks/default_locale.rb +1 -0
- data/lib/theme_check/checks/deprecated_filter.rb +1 -1
- data/lib/theme_check/checks/img_width_and_height.rb +74 -0
- data/lib/theme_check/checks/liquid_tag.rb +3 -3
- data/lib/theme_check/checks/matching_schema_translations.rb +1 -0
- data/lib/theme_check/checks/matching_translations.rb +1 -0
- data/lib/theme_check/checks/missing_enable_comment.rb +1 -0
- data/lib/theme_check/checks/missing_required_template_files.rb +1 -2
- data/lib/theme_check/checks/missing_template.rb +1 -0
- data/lib/theme_check/checks/nested_snippet.rb +1 -0
- data/lib/theme_check/checks/parser_blocking_javascript.rb +7 -14
- data/lib/theme_check/checks/required_directories.rb +1 -1
- data/lib/theme_check/checks/required_layout_theme_object.rb +1 -1
- data/lib/theme_check/checks/space_inside_braces.rb +1 -0
- data/lib/theme_check/checks/syntax_error.rb +1 -0
- data/lib/theme_check/checks/template_length.rb +1 -0
- data/lib/theme_check/checks/translation_key_exists.rb +17 -1
- data/lib/theme_check/checks/undefined_object.rb +29 -10
- data/lib/theme_check/checks/unknown_filter.rb +1 -0
- data/lib/theme_check/checks/unused_assign.rb +5 -3
- data/lib/theme_check/checks/unused_snippet.rb +1 -0
- data/lib/theme_check/checks/valid_html_translation.rb +1 -0
- data/lib/theme_check/checks/valid_json.rb +1 -0
- data/lib/theme_check/checks/valid_schema.rb +1 -0
- data/lib/theme_check/cli.rb +39 -12
- data/lib/theme_check/config.rb +5 -2
- data/lib/theme_check/in_memory_storage.rb +11 -3
- data/lib/theme_check/language_server.rb +12 -0
- data/lib/theme_check/language_server/completion_engine.rb +38 -0
- data/lib/theme_check/language_server/completion_helper.rb +25 -0
- data/lib/theme_check/language_server/completion_provider.rb +28 -0
- data/lib/theme_check/language_server/completion_providers/filter_completion_provider.rb +51 -0
- data/lib/theme_check/language_server/completion_providers/object_completion_provider.rb +31 -0
- data/lib/theme_check/language_server/completion_providers/render_snippet_completion_provider.rb +43 -0
- data/lib/theme_check/language_server/completion_providers/tag_completion_provider.rb +31 -0
- data/lib/theme_check/language_server/constants.rb +10 -0
- data/lib/theme_check/language_server/document_link_engine.rb +47 -0
- data/lib/theme_check/language_server/handler.rb +93 -6
- data/lib/theme_check/language_server/position_helper.rb +27 -0
- data/lib/theme_check/language_server/protocol.rb +41 -0
- data/lib/theme_check/language_server/server.rb +8 -2
- data/lib/theme_check/language_server/tokens.rb +55 -0
- data/lib/theme_check/liquid_check.rb +11 -0
- data/lib/theme_check/offense.rb +51 -14
- data/lib/theme_check/regex_helpers.rb +15 -0
- data/lib/theme_check/remote_asset_file.rb +44 -0
- data/lib/theme_check/shopify_liquid.rb +1 -0
- data/lib/theme_check/shopify_liquid/deprecated_filter.rb +4 -0
- data/lib/theme_check/shopify_liquid/tag.rb +16 -0
- data/lib/theme_check/theme.rb +7 -1
- data/lib/theme_check/version.rb +1 -1
- metadata +52 -2
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "net/http"
|
3
|
+
require "pathname"
|
4
|
+
|
5
|
+
module ThemeCheck
|
6
|
+
class RemoteAssetFile
|
7
|
+
class << self
|
8
|
+
def cache
|
9
|
+
@cache ||= {}
|
10
|
+
end
|
11
|
+
|
12
|
+
def from_src(src)
|
13
|
+
key = uri(src).to_s
|
14
|
+
cache[key] = RemoteAssetFile.new(src) unless cache.key?(key)
|
15
|
+
cache[key]
|
16
|
+
end
|
17
|
+
|
18
|
+
def uri(src)
|
19
|
+
URI.parse(src.sub(%r{^//}, "https://"))
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize(src)
|
24
|
+
@uri = RemoteAssetFile.uri(src)
|
25
|
+
@content = nil
|
26
|
+
end
|
27
|
+
|
28
|
+
def content
|
29
|
+
return @content unless @content.nil?
|
30
|
+
|
31
|
+
res = Net::HTTP.start(@uri.hostname, @uri.port, use_ssl: @uri.scheme == 'https') do |http|
|
32
|
+
req = Net::HTTP::Get.new(@uri)
|
33
|
+
req['Accept-Encoding'] = 'gzip, deflate, br'
|
34
|
+
http.request(req)
|
35
|
+
end
|
36
|
+
|
37
|
+
@content = res.body
|
38
|
+
end
|
39
|
+
|
40
|
+
def gzipped_size
|
41
|
+
@gzipped_size ||= content.bytesize
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module ThemeCheck
|
5
|
+
module ShopifyLiquid
|
6
|
+
module Tag
|
7
|
+
extend self
|
8
|
+
|
9
|
+
def labels
|
10
|
+
@tags ||= begin
|
11
|
+
YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/tags.yml"))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/theme_check/theme.rb
CHANGED
@@ -11,6 +11,12 @@ module ThemeCheck
|
|
11
11
|
@storage = storage
|
12
12
|
end
|
13
13
|
|
14
|
+
def assets
|
15
|
+
@assets ||= @storage.files
|
16
|
+
.select { |path| path.starts_with?("assets/") }
|
17
|
+
.map { |path| AssetFile.new(path, @storage) }
|
18
|
+
end
|
19
|
+
|
14
20
|
def liquid
|
15
21
|
@liquid ||= @storage.files
|
16
22
|
.select { |path| LIQUID_REGEX.match?(path) }
|
@@ -43,7 +49,7 @@ module ThemeCheck
|
|
43
49
|
end
|
44
50
|
|
45
51
|
def all
|
46
|
-
@all ||= json + liquid
|
52
|
+
@all ||= json + liquid + assets
|
47
53
|
end
|
48
54
|
|
49
55
|
def [](name)
|
data/lib/theme_check/version.rb
CHANGED
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: 0.
|
4
|
+
version: 0.6.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-
|
11
|
+
date: 2021-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: liquid
|
@@ -65,6 +65,7 @@ files:
|
|
65
65
|
- ".github/workflows/theme-check.yml"
|
66
66
|
- ".gitignore"
|
67
67
|
- ".rubocop.yml"
|
68
|
+
- CHANGELOG.md
|
68
69
|
- CODE_OF_CONDUCT.md
|
69
70
|
- CONTRIBUTING.md
|
70
71
|
- Gemfile
|
@@ -79,17 +80,51 @@ files:
|
|
79
80
|
- data/shopify_liquid/filters.yml
|
80
81
|
- data/shopify_liquid/objects.yml
|
81
82
|
- data/shopify_liquid/plus_objects.yml
|
83
|
+
- data/shopify_liquid/tags.yml
|
84
|
+
- data/shopify_translation_keys.yml
|
82
85
|
- dev.yml
|
86
|
+
- docs/checks/CHECK_DOCS_TEMPLATE.md
|
87
|
+
- docs/checks/asset_size_css.md
|
88
|
+
- docs/checks/asset_size_javascript.md
|
89
|
+
- docs/checks/convert_include_to_render.md
|
90
|
+
- docs/checks/default_locale.md
|
91
|
+
- docs/checks/deprecated_filter.md
|
92
|
+
- docs/checks/img_width_and_height.md
|
93
|
+
- docs/checks/liquid_tag.md
|
94
|
+
- docs/checks/matching_schema_translations.md
|
95
|
+
- docs/checks/matching_translations.md
|
96
|
+
- docs/checks/missing_enable_comment.md
|
97
|
+
- docs/checks/missing_required_template_files.md
|
98
|
+
- docs/checks/missing_template.md
|
99
|
+
- docs/checks/nested_snippet.md
|
100
|
+
- docs/checks/parser_blocking_javascript.md
|
101
|
+
- docs/checks/required_directories.md
|
102
|
+
- docs/checks/required_layout_theme_object.md
|
103
|
+
- docs/checks/space_inside_braces.md
|
104
|
+
- docs/checks/syntax_error.md
|
105
|
+
- docs/checks/template_length.md
|
106
|
+
- docs/checks/translation_key_exists.md
|
107
|
+
- docs/checks/undefined_object.md
|
108
|
+
- docs/checks/unknown_filter.md
|
109
|
+
- docs/checks/unused_assign.md
|
110
|
+
- docs/checks/unused_snippet.md
|
111
|
+
- docs/checks/valid_html_translation.md
|
112
|
+
- docs/checks/valid_json.md
|
113
|
+
- docs/checks/valid_schema.md
|
83
114
|
- docs/preview.png
|
84
115
|
- exe/theme-check
|
85
116
|
- exe/theme-check-language-server
|
86
117
|
- lib/theme_check.rb
|
87
118
|
- lib/theme_check/analyzer.rb
|
119
|
+
- lib/theme_check/asset_file.rb
|
88
120
|
- lib/theme_check/check.rb
|
89
121
|
- lib/theme_check/checks.rb
|
122
|
+
- lib/theme_check/checks/asset_size_css.rb
|
123
|
+
- lib/theme_check/checks/asset_size_javascript.rb
|
90
124
|
- lib/theme_check/checks/convert_include_to_render.rb
|
91
125
|
- lib/theme_check/checks/default_locale.rb
|
92
126
|
- lib/theme_check/checks/deprecated_filter.rb
|
127
|
+
- lib/theme_check/checks/img_width_and_height.rb
|
93
128
|
- lib/theme_check/checks/liquid_tag.rb
|
94
129
|
- lib/theme_check/checks/matching_schema_translations.rb
|
95
130
|
- lib/theme_check/checks/matching_translations.rb
|
@@ -122,8 +157,20 @@ files:
|
|
122
157
|
- lib/theme_check/json_file.rb
|
123
158
|
- lib/theme_check/json_helpers.rb
|
124
159
|
- lib/theme_check/language_server.rb
|
160
|
+
- lib/theme_check/language_server/completion_engine.rb
|
161
|
+
- lib/theme_check/language_server/completion_helper.rb
|
162
|
+
- lib/theme_check/language_server/completion_provider.rb
|
163
|
+
- lib/theme_check/language_server/completion_providers/filter_completion_provider.rb
|
164
|
+
- lib/theme_check/language_server/completion_providers/object_completion_provider.rb
|
165
|
+
- lib/theme_check/language_server/completion_providers/render_snippet_completion_provider.rb
|
166
|
+
- lib/theme_check/language_server/completion_providers/tag_completion_provider.rb
|
167
|
+
- lib/theme_check/language_server/constants.rb
|
168
|
+
- lib/theme_check/language_server/document_link_engine.rb
|
125
169
|
- lib/theme_check/language_server/handler.rb
|
170
|
+
- lib/theme_check/language_server/position_helper.rb
|
171
|
+
- lib/theme_check/language_server/protocol.rb
|
126
172
|
- lib/theme_check/language_server/server.rb
|
173
|
+
- lib/theme_check/language_server/tokens.rb
|
127
174
|
- lib/theme_check/liquid_check.rb
|
128
175
|
- lib/theme_check/locale_diff.rb
|
129
176
|
- lib/theme_check/node.rb
|
@@ -131,10 +178,13 @@ files:
|
|
131
178
|
- lib/theme_check/packager.rb
|
132
179
|
- lib/theme_check/parsing_helpers.rb
|
133
180
|
- lib/theme_check/printer.rb
|
181
|
+
- lib/theme_check/regex_helpers.rb
|
182
|
+
- lib/theme_check/remote_asset_file.rb
|
134
183
|
- lib/theme_check/shopify_liquid.rb
|
135
184
|
- lib/theme_check/shopify_liquid/deprecated_filter.rb
|
136
185
|
- lib/theme_check/shopify_liquid/filter.rb
|
137
186
|
- lib/theme_check/shopify_liquid/object.rb
|
187
|
+
- lib/theme_check/shopify_liquid/tag.rb
|
138
188
|
- lib/theme_check/storage.rb
|
139
189
|
- lib/theme_check/tags.rb
|
140
190
|
- lib/theme_check/template.rb
|