jekyll 4.0.0.pre.alpha1 → 4.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +58 -17
- data/lib/jekyll.rb +5 -1
- data/lib/jekyll/cache.rb +71 -64
- data/lib/jekyll/cleaner.rb +5 -5
- data/lib/jekyll/collection.rb +6 -4
- data/lib/jekyll/command.rb +4 -2
- data/lib/jekyll/commands/new.rb +4 -4
- data/lib/jekyll/commands/serve.rb +9 -1
- data/lib/jekyll/commands/serve/servlet.rb +13 -14
- data/lib/jekyll/commands/serve/websockets.rb +1 -1
- data/lib/jekyll/configuration.rb +40 -129
- data/lib/jekyll/converters/identity.rb +2 -2
- data/lib/jekyll/converters/markdown/kramdown_parser.rb +70 -9
- data/lib/jekyll/convertible.rb +21 -20
- data/lib/jekyll/document.rb +56 -31
- data/lib/jekyll/drops/document_drop.rb +12 -0
- data/lib/jekyll/drops/drop.rb +14 -8
- data/lib/jekyll/drops/site_drop.rb +11 -1
- data/lib/jekyll/drops/url_drop.rb +52 -1
- data/lib/jekyll/entry_filter.rb +38 -44
- data/lib/jekyll/excerpt.rb +3 -3
- data/lib/jekyll/filters.rb +140 -22
- data/lib/jekyll/filters/url_filters.rb +41 -14
- data/lib/jekyll/frontmatter_defaults.rb +15 -20
- data/lib/jekyll/hooks.rb +2 -5
- data/lib/jekyll/inclusion.rb +32 -0
- data/lib/jekyll/liquid_renderer.rb +18 -15
- data/lib/jekyll/liquid_renderer/file.rb +10 -0
- data/lib/jekyll/liquid_renderer/table.rb +18 -61
- data/lib/jekyll/mime.types +53 -11
- data/lib/jekyll/page.rb +26 -2
- data/lib/jekyll/page_excerpt.rb +25 -0
- data/lib/jekyll/path_manager.rb +31 -0
- data/lib/jekyll/profiler.rb +58 -0
- data/lib/jekyll/reader.rb +4 -1
- data/lib/jekyll/readers/collection_reader.rb +1 -0
- data/lib/jekyll/readers/data_reader.rb +1 -0
- data/lib/jekyll/readers/layout_reader.rb +1 -0
- data/lib/jekyll/readers/page_reader.rb +5 -5
- data/lib/jekyll/readers/post_reader.rb +2 -1
- data/lib/jekyll/readers/static_file_reader.rb +3 -3
- data/lib/jekyll/readers/theme_assets_reader.rb +1 -0
- data/lib/jekyll/renderer.rb +9 -15
- data/lib/jekyll/site.rb +21 -12
- data/lib/jekyll/static_file.rb +15 -10
- data/lib/jekyll/tags/highlight.rb +2 -4
- data/lib/jekyll/tags/include.rb +67 -11
- data/lib/jekyll/tags/post_url.rb +8 -5
- data/lib/jekyll/theme.rb +19 -10
- data/lib/jekyll/url.rb +7 -3
- data/lib/jekyll/utils.rb +14 -18
- data/lib/jekyll/utils/platforms.rb +1 -1
- data/lib/jekyll/utils/win_tz.rb +1 -1
- data/lib/jekyll/version.rb +1 -1
- data/lib/theme_template/theme.gemspec.erb +1 -4
- metadata +33 -36
@@ -11,15 +11,16 @@ module Jekyll
|
|
11
11
|
def absolute_url(input)
|
12
12
|
return if input.nil?
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
cache = if input.is_a?(String)
|
15
|
+
(@context.registers[:site].filter_cache[:absolute_url] ||= {})
|
16
|
+
else
|
17
|
+
(@context.registers[:cached_absolute_url] ||= {})
|
18
|
+
end
|
19
|
+
cache[input] ||= compute_absolute_url(input)
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
# Duplicate cached string so that the cached value is never mutated by
|
22
|
+
# a subsequent filter.
|
23
|
+
cache[input].dup
|
23
24
|
end
|
24
25
|
|
25
26
|
# Produces a URL relative to the domain root based on site.baseurl
|
@@ -31,13 +32,16 @@ module Jekyll
|
|
31
32
|
def relative_url(input)
|
32
33
|
return if input.nil?
|
33
34
|
|
34
|
-
|
35
|
-
|
35
|
+
cache = if input.is_a?(String)
|
36
|
+
(@context.registers[:site].filter_cache[:relative_url] ||= {})
|
37
|
+
else
|
38
|
+
(@context.registers[:cached_relative_url] ||= {})
|
39
|
+
end
|
40
|
+
cache[input] ||= compute_relative_url(input)
|
36
41
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
).normalize.to_s
|
42
|
+
# Duplicate cached string so that the cached value is never mutated by
|
43
|
+
# a subsequent filter.
|
44
|
+
cache[input].dup
|
41
45
|
end
|
42
46
|
|
43
47
|
# Strips trailing `/index.html` from URLs to create pretty permalinks
|
@@ -53,6 +57,29 @@ module Jekyll
|
|
53
57
|
|
54
58
|
private
|
55
59
|
|
60
|
+
def compute_absolute_url(input)
|
61
|
+
input = input.url if input.respond_to?(:url)
|
62
|
+
return input if Addressable::URI.parse(input.to_s).absolute?
|
63
|
+
|
64
|
+
site = @context.registers[:site]
|
65
|
+
site_url = site.config["url"]
|
66
|
+
return relative_url(input) if site_url.nil? || site_url == ""
|
67
|
+
|
68
|
+
Addressable::URI.parse(
|
69
|
+
site_url.to_s + relative_url(input)
|
70
|
+
).normalize.to_s
|
71
|
+
end
|
72
|
+
|
73
|
+
def compute_relative_url(input)
|
74
|
+
input = input.url if input.respond_to?(:url)
|
75
|
+
return input if Addressable::URI.parse(input.to_s).absolute?
|
76
|
+
|
77
|
+
parts = [sanitized_baseurl, input]
|
78
|
+
Addressable::URI.parse(
|
79
|
+
parts.compact.map { |part| ensure_leading_slash(part.to_s) }.join
|
80
|
+
).normalize.to_s
|
81
|
+
end
|
82
|
+
|
56
83
|
def sanitized_baseurl
|
57
84
|
site = @context.registers[:site]
|
58
85
|
site.config["baseurl"].to_s.chomp("/")
|
@@ -10,11 +10,10 @@ module Jekyll
|
|
10
10
|
# Initializes a new instance.
|
11
11
|
def initialize(site)
|
12
12
|
@site = site
|
13
|
-
reset
|
14
13
|
end
|
15
14
|
|
16
15
|
def reset
|
17
|
-
@glob_cache = {}
|
16
|
+
@glob_cache = {} if @glob_cache
|
18
17
|
end
|
19
18
|
|
20
19
|
def update_deprecated_types(set)
|
@@ -104,12 +103,12 @@ module Jekyll
|
|
104
103
|
end
|
105
104
|
|
106
105
|
def applies_path?(scope, path)
|
107
|
-
|
106
|
+
rel_scope_path = scope["path"]
|
107
|
+
return true if !rel_scope_path.is_a?(String) || rel_scope_path.empty?
|
108
108
|
|
109
|
-
sanitized_path =
|
110
|
-
rel_scope_path = Pathname.new(scope["path"])
|
109
|
+
sanitized_path = sanitize_path(path)
|
111
110
|
|
112
|
-
if
|
111
|
+
if rel_scope_path.include?("*")
|
113
112
|
glob_scope(sanitized_path, rel_scope_path)
|
114
113
|
else
|
115
114
|
path_is_subpath?(sanitized_path, strip_collections_dir(rel_scope_path))
|
@@ -121,7 +120,7 @@ module Jekyll
|
|
121
120
|
abs_scope_path = site_source.join(rel_scope_path).to_s
|
122
121
|
|
123
122
|
glob_cache(abs_scope_path).each do |scope_path|
|
124
|
-
scope_path = Pathname.new(scope_path).relative_path_from(site_source)
|
123
|
+
scope_path = Pathname.new(scope_path).relative_path_from(site_source).to_s
|
125
124
|
scope_path = strip_collections_dir(scope_path)
|
126
125
|
Jekyll.logger.debug "Globbed Scope Path:", scope_path
|
127
126
|
return true if path_is_subpath?(sanitized_path, scope_path)
|
@@ -130,20 +129,17 @@ module Jekyll
|
|
130
129
|
end
|
131
130
|
|
132
131
|
def glob_cache(path)
|
132
|
+
@glob_cache ||= {}
|
133
133
|
@glob_cache[path] ||= Dir.glob(path)
|
134
134
|
end
|
135
135
|
|
136
136
|
def path_is_subpath?(path, parent_path)
|
137
|
-
path.
|
138
|
-
return true if ascended_path.to_s == parent_path.to_s
|
139
|
-
end
|
140
|
-
|
141
|
-
false
|
137
|
+
path.start_with?(parent_path)
|
142
138
|
end
|
143
139
|
|
144
140
|
def strip_collections_dir(path)
|
145
141
|
collections_dir = @site.config["collections_dir"]
|
146
|
-
slashed_coll_dir = "#{collections_dir}/"
|
142
|
+
slashed_coll_dir = collections_dir.empty? ? "/" : "#{collections_dir}/"
|
147
143
|
return path if collections_dir.empty? || !path.to_s.start_with?(slashed_coll_dir)
|
148
144
|
|
149
145
|
path.sub(slashed_coll_dir, "")
|
@@ -179,7 +175,7 @@ module Jekyll
|
|
179
175
|
# new_scope - the new scope hash
|
180
176
|
#
|
181
177
|
# Returns true if the new scope has precedence over the older
|
182
|
-
# rubocop: disable PredicateName
|
178
|
+
# rubocop: disable Naming/PredicateName
|
183
179
|
def has_precedence?(old_scope, new_scope)
|
184
180
|
return true if old_scope.nil?
|
185
181
|
|
@@ -194,7 +190,7 @@ module Jekyll
|
|
194
190
|
!old_scope.key? "type"
|
195
191
|
end
|
196
192
|
end
|
197
|
-
# rubocop: enable PredicateName
|
193
|
+
# rubocop: enable Naming/PredicateName
|
198
194
|
|
199
195
|
# Collects a list of sets that match the given path and type
|
200
196
|
#
|
@@ -230,15 +226,14 @@ module Jekyll
|
|
230
226
|
end.compact
|
231
227
|
end
|
232
228
|
|
233
|
-
# Sanitizes the given path by removing a leading
|
234
|
-
|
235
|
-
SANITIZATION_REGEX = %r!\A/|(?<=[^/])\z!.freeze
|
236
|
-
|
229
|
+
# Sanitizes the given path by removing a leading slash
|
237
230
|
def sanitize_path(path)
|
238
231
|
if path.nil? || path.empty?
|
239
232
|
""
|
233
|
+
elsif path.start_with?("/")
|
234
|
+
path.gsub(%r!\A/|(?<=[^/])\z!, "")
|
240
235
|
else
|
241
|
-
path
|
236
|
+
path
|
242
237
|
end
|
243
238
|
end
|
244
239
|
end
|
data/lib/jekyll/hooks.rb
CHANGED
@@ -91,11 +91,8 @@ module Jekyll
|
|
91
91
|
# interface for Jekyll core components to trigger hooks
|
92
92
|
def self.trigger(owner, event, *args)
|
93
93
|
# proceed only if there are hooks to call
|
94
|
-
|
95
|
-
return
|
96
|
-
|
97
|
-
# hooks to call for this owner and event
|
98
|
-
hooks = @registry[owner][event]
|
94
|
+
hooks = @registry.dig(owner, event)
|
95
|
+
return if hooks.nil? || hooks.empty?
|
99
96
|
|
100
97
|
# sort and call hooks according to priority and load order
|
101
98
|
hooks.sort_by { |h| @hook_priority[h] }.each do |hook|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
class Inclusion
|
5
|
+
attr_reader :site, :name, :path
|
6
|
+
private :site
|
7
|
+
|
8
|
+
def initialize(site, base, name)
|
9
|
+
@site = site
|
10
|
+
@name = name
|
11
|
+
@path = PathManager.join(base, name)
|
12
|
+
end
|
13
|
+
|
14
|
+
def render(context)
|
15
|
+
@template ||= site.liquid_renderer.file(path).parse(content)
|
16
|
+
@template.render!(context)
|
17
|
+
rescue Liquid::Error => e
|
18
|
+
e.template_name = path
|
19
|
+
e.markup_context = "included " if e.markup_context.nil?
|
20
|
+
raise e
|
21
|
+
end
|
22
|
+
|
23
|
+
def content
|
24
|
+
@content ||= File.read(path, **site.file_read_opts)
|
25
|
+
end
|
26
|
+
|
27
|
+
def inspect
|
28
|
+
"#{self.class} #{path.inspect}"
|
29
|
+
end
|
30
|
+
alias_method :to_s, :inspect
|
31
|
+
end
|
32
|
+
end
|
@@ -5,11 +5,6 @@ require_relative "liquid_renderer/table"
|
|
5
5
|
|
6
6
|
module Jekyll
|
7
7
|
class LiquidRenderer
|
8
|
-
extend Forwardable
|
9
|
-
|
10
|
-
private def_delegator :@site, :in_source_dir, :source_dir
|
11
|
-
private def_delegator :@site, :in_theme_dir, :theme_dir
|
12
|
-
|
13
8
|
def initialize(site)
|
14
9
|
@site = site
|
15
10
|
Liquid::Template.error_mode = @site.config["liquid"]["error_mode"].to_sym
|
@@ -22,13 +17,7 @@ module Jekyll
|
|
22
17
|
end
|
23
18
|
|
24
19
|
def file(filename)
|
25
|
-
filename
|
26
|
-
filename =
|
27
|
-
if Regexp.last_match(1) == theme_dir("")
|
28
|
-
::File.join(::File.basename(Regexp.last_match(1)), Regexp.last_match(2))
|
29
|
-
else
|
30
|
-
Regexp.last_match(2)
|
31
|
-
end
|
20
|
+
filename = normalize_path(filename)
|
32
21
|
LiquidRenderer::File.new(self, filename).tap do
|
33
22
|
@stats[filename] ||= new_profile_hash
|
34
23
|
end
|
@@ -64,9 +53,23 @@ module Jekyll
|
|
64
53
|
|
65
54
|
private
|
66
55
|
|
67
|
-
def
|
68
|
-
@
|
69
|
-
|
56
|
+
def normalize_path(filename)
|
57
|
+
@normalize_path ||= {}
|
58
|
+
@normalize_path[filename] ||= begin
|
59
|
+
theme_dir = @site.theme&.root
|
60
|
+
case filename
|
61
|
+
when %r!\A(#{Regexp.escape(@site.source)}/)(?<rest>.*)!io
|
62
|
+
Regexp.last_match(:rest)
|
63
|
+
when %r!(/gems/.*)*/gems/(?<dirname>[^/]+)(?<rest>.*)!,
|
64
|
+
%r!(?<dirname>[^/]+/lib)(?<rest>.*)!
|
65
|
+
"#{Regexp.last_match(:dirname)}#{Regexp.last_match(:rest)}"
|
66
|
+
when theme_dir && %r!\A#{Regexp.escape(theme_dir)}/(?<rest>.*)!io
|
67
|
+
PathManager.join(@site.theme.basename, Regexp.last_match(:rest))
|
68
|
+
when %r!\A/(.*)!
|
69
|
+
Regexp.last_match(1)
|
70
|
+
else
|
71
|
+
filename
|
72
|
+
end
|
70
73
|
end
|
71
74
|
end
|
72
75
|
|
@@ -18,6 +18,8 @@ module Jekyll
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def render(*args)
|
21
|
+
reset_template_assigns
|
22
|
+
|
21
23
|
measure_time do
|
22
24
|
measure_bytes do
|
23
25
|
measure_counts do
|
@@ -29,6 +31,8 @@ module Jekyll
|
|
29
31
|
|
30
32
|
# This method simply 'rethrows any error' before attempting to render the template.
|
31
33
|
def render!(*args)
|
34
|
+
reset_template_assigns
|
35
|
+
|
32
36
|
measure_time do
|
33
37
|
measure_bytes do
|
34
38
|
measure_counts do
|
@@ -44,6 +48,12 @@ module Jekyll
|
|
44
48
|
|
45
49
|
private
|
46
50
|
|
51
|
+
# clear assigns to `Liquid::Template` instance prior to rendering since
|
52
|
+
# `Liquid::Template` instances are cached in Jekyll 4.
|
53
|
+
def reset_template_assigns
|
54
|
+
@template.instance_assigns.clear
|
55
|
+
end
|
56
|
+
|
47
57
|
def measure_counts
|
48
58
|
@renderer.increment_count(@filename)
|
49
59
|
yield
|
@@ -3,81 +3,28 @@
|
|
3
3
|
module Jekyll
|
4
4
|
class LiquidRenderer
|
5
5
|
class Table
|
6
|
+
GAUGES = [:count, :bytes, :time].freeze
|
7
|
+
|
6
8
|
def initialize(stats)
|
7
9
|
@stats = stats
|
8
10
|
end
|
9
11
|
|
10
12
|
def to_s(num_of_rows = 50)
|
11
|
-
|
12
|
-
widths = table_widths(data)
|
13
|
-
generate_table(data, widths)
|
13
|
+
Jekyll::Profiler.tabulate(data_for_table(num_of_rows))
|
14
14
|
end
|
15
15
|
|
16
16
|
private
|
17
17
|
|
18
|
-
|
19
|
-
str = +"\n"
|
20
|
-
|
21
|
-
table_head = data.shift
|
22
|
-
str << generate_row(table_head, widths)
|
23
|
-
str << generate_table_head_border(table_head, widths)
|
24
|
-
|
25
|
-
data.each do |row_data|
|
26
|
-
str << generate_row(row_data, widths)
|
27
|
-
end
|
28
|
-
|
29
|
-
str << "\n"
|
30
|
-
str
|
31
|
-
end
|
32
|
-
|
33
|
-
def generate_table_head_border(row_data, widths)
|
34
|
-
str = +""
|
35
|
-
|
36
|
-
row_data.each_index do |cell_index|
|
37
|
-
str << "-" * widths[cell_index]
|
38
|
-
str << "-+-" unless cell_index == row_data.length - 1
|
39
|
-
end
|
40
|
-
|
41
|
-
str << "\n"
|
42
|
-
str
|
43
|
-
end
|
44
|
-
|
45
|
-
def generate_row(row_data, widths)
|
46
|
-
str = +""
|
47
|
-
|
48
|
-
row_data.each_with_index do |cell_data, cell_index|
|
49
|
-
str << if cell_index.zero?
|
50
|
-
cell_data.ljust(widths[cell_index], " ")
|
51
|
-
else
|
52
|
-
cell_data.rjust(widths[cell_index], " ")
|
53
|
-
end
|
54
|
-
|
55
|
-
str << " | " unless cell_index == row_data.length - 1
|
56
|
-
end
|
57
|
-
|
58
|
-
str << "\n"
|
59
|
-
str
|
60
|
-
end
|
61
|
-
|
62
|
-
def table_widths(data)
|
63
|
-
widths = []
|
64
|
-
|
65
|
-
data.each do |row|
|
66
|
-
row.each_with_index do |cell, index|
|
67
|
-
widths[index] = [cell.length, widths[index]].compact.max
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
widths
|
72
|
-
end
|
73
|
-
|
18
|
+
# rubocop:disable Metrics/AbcSize
|
74
19
|
def data_for_table(num_of_rows)
|
75
20
|
sorted = @stats.sort_by { |_, file_stats| -file_stats[:time] }
|
76
21
|
sorted = sorted.slice(0, num_of_rows)
|
77
22
|
|
78
|
-
table
|
23
|
+
table = [header_labels]
|
24
|
+
totals = Hash.new { |hash, key| hash[key] = 0 }
|
79
25
|
|
80
26
|
sorted.each do |filename, file_stats|
|
27
|
+
GAUGES.each { |gauge| totals[gauge] += file_stats[gauge] }
|
81
28
|
row = []
|
82
29
|
row << filename
|
83
30
|
row << file_stats[:count].to_s
|
@@ -86,7 +33,17 @@ module Jekyll
|
|
86
33
|
table << row
|
87
34
|
end
|
88
35
|
|
89
|
-
|
36
|
+
footer = []
|
37
|
+
footer << "TOTAL (for #{sorted.size} files)"
|
38
|
+
footer << totals[:count].to_s
|
39
|
+
footer << format_bytes(totals[:bytes])
|
40
|
+
footer << format("%.3f", totals[:time])
|
41
|
+
table << footer
|
42
|
+
end
|
43
|
+
# rubocop:enable Metrics/AbcSize
|
44
|
+
|
45
|
+
def header_labels
|
46
|
+
GAUGES.map { |gauge| gauge.to_s.capitalize }.unshift("Filename")
|
90
47
|
end
|
91
48
|
|
92
49
|
def format_bytes(bytes)
|
data/lib/jekyll/mime.types
CHANGED
@@ -19,18 +19,17 @@ application/davmount+xml davmou
|
|
19
19
|
application/docbook+xml dbk
|
20
20
|
application/dssc+der dssc
|
21
21
|
application/dssc+xml xdssc
|
22
|
-
application/ecmascript ecma
|
22
|
+
application/ecmascript ecma es
|
23
23
|
application/emma+xml emma
|
24
24
|
application/epub+zip epub
|
25
25
|
application/exi exi
|
26
26
|
application/font-tdpfr pfr
|
27
|
-
application/font-woff woff
|
28
|
-
application/font-woff2 woff2
|
29
27
|
application/geo+json geojson
|
30
28
|
application/gml+xml gml
|
31
29
|
application/gpx+xml gpx
|
32
30
|
application/gxf gxf
|
33
31
|
application/gzip gz
|
32
|
+
application/hjson hjson
|
34
33
|
application/hyperstudio stk
|
35
34
|
application/inkml+xml ink inkml
|
36
35
|
application/ipfix ipfix
|
@@ -61,6 +60,8 @@ application/mp21 m21 mp
|
|
61
60
|
application/mp4 mp4s m4p
|
62
61
|
application/msword doc dot
|
63
62
|
application/mxf mxf
|
63
|
+
application/n-quads nq
|
64
|
+
application/n-triples nt
|
64
65
|
application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy exe dll deb dmg iso img msi msp msm buffer
|
65
66
|
application/oda oda
|
66
67
|
application/oebps-package+xml opf
|
@@ -86,7 +87,8 @@ application/pls+xml pls
|
|
86
87
|
application/postscript ai eps ps
|
87
88
|
application/prs.cww cww
|
88
89
|
application/pskc+xml pskcxml
|
89
|
-
application/
|
90
|
+
application/raml+yaml raml
|
91
|
+
application/rdf+xml rdf owl
|
90
92
|
application/reginfo+xml rif
|
91
93
|
application/relax-ng-compact-syntax rnc
|
92
94
|
application/resource-lists+xml rl
|
@@ -107,6 +109,7 @@ application/sdp sdp
|
|
107
109
|
application/set-payment-initiation setpay
|
108
110
|
application/set-registration-initiation setreg
|
109
111
|
application/shf+xml shf
|
112
|
+
application/sieve siv sieve
|
110
113
|
application/smil+xml smi smil
|
111
114
|
application/sparql-query rq
|
112
115
|
application/sparql-results+xml srx
|
@@ -143,7 +146,10 @@ application/vnd.anser-web-certificate-issue-initiation cii
|
|
143
146
|
application/vnd.anser-web-funds-transfer-initiation fti
|
144
147
|
application/vnd.antix.game-component atx
|
145
148
|
application/vnd.apple.installer+xml mpkg
|
149
|
+
application/vnd.apple.keynote keynote
|
146
150
|
application/vnd.apple.mpegurl m3u8
|
151
|
+
application/vnd.apple.numbers numbers
|
152
|
+
application/vnd.apple.pages pages
|
147
153
|
application/vnd.apple.pkpass pkpass
|
148
154
|
application/vnd.aristanetworks.swi swi
|
149
155
|
application/vnd.astraea-software.iota iota
|
@@ -154,6 +160,7 @@ application/vnd.businessobjects rep
|
|
154
160
|
application/vnd.chemdraw+xml cdxml
|
155
161
|
application/vnd.chipnuts.karaoke-mmd mmd
|
156
162
|
application/vnd.cinderella cdy
|
163
|
+
application/vnd.citationstyles.style+xml csl
|
157
164
|
application/vnd.claymore cla
|
158
165
|
application/vnd.cloanto.rp9 rp9
|
159
166
|
application/vnd.clonk.c4group c4g c4d c4f c4p c4u
|
@@ -482,6 +489,7 @@ application/vnd.yellowriver-custom-menu cmp
|
|
482
489
|
application/vnd.zul zir zirz
|
483
490
|
application/vnd.zzazz.deck+xml zaz
|
484
491
|
application/voicexml+xml vxml
|
492
|
+
application/wasm wasm
|
485
493
|
application/widget wgt
|
486
494
|
application/winhlp hlp
|
487
495
|
application/wsdl+xml wsdl
|
@@ -521,10 +529,8 @@ application/x-eva eva
|
|
521
529
|
application/x-font-bdf bdf
|
522
530
|
application/x-font-ghostscript gsf
|
523
531
|
application/x-font-linux-psf psf
|
524
|
-
application/x-font-otf otf
|
525
532
|
application/x-font-pcf pcf
|
526
533
|
application/x-font-snf snf
|
527
|
-
application/x-font-ttf ttf ttc
|
528
534
|
application/x-font-type1 pfa pfb pfm afm
|
529
535
|
application/x-freearc arc
|
530
536
|
application/x-futuresplash spl
|
@@ -661,20 +667,41 @@ chemical/x-cmdf cmdf
|
|
661
667
|
chemical/x-cml cml
|
662
668
|
chemical/x-csml csml
|
663
669
|
chemical/x-xyz xyz
|
670
|
+
font/collection ttc
|
671
|
+
font/otf otf
|
672
|
+
font/ttf ttf
|
673
|
+
font/woff woff
|
674
|
+
font/woff2 woff2
|
675
|
+
image/aces exr
|
664
676
|
image/apng apng
|
665
677
|
image/bmp bmp
|
666
678
|
image/cgm cgm
|
679
|
+
image/dicom-rle drle
|
680
|
+
image/fits fits
|
667
681
|
image/g3fax g3
|
668
682
|
image/gif gif
|
683
|
+
image/heic heic
|
684
|
+
image/heic-sequence heics
|
685
|
+
image/heif heif
|
686
|
+
image/heif-sequence heifs
|
669
687
|
image/ief ief
|
688
|
+
image/jls jls
|
689
|
+
image/jp2 jp2 jpg2
|
670
690
|
image/jpeg jpeg jpg jpe
|
691
|
+
image/jpm jpm
|
692
|
+
image/jpx jpx jpf
|
693
|
+
image/jxr jxr
|
671
694
|
image/ktx ktx
|
672
695
|
image/png png
|
673
696
|
image/prs.btif btif
|
697
|
+
image/prs.pti pti
|
674
698
|
image/sgi sgi
|
675
699
|
image/svg+xml svg svgz
|
676
|
-
image/
|
700
|
+
image/t38 t38
|
701
|
+
image/tiff tif tiff
|
702
|
+
image/tiff-fx tfx
|
677
703
|
image/vnd.adobe.photoshop psd
|
704
|
+
image/vnd.airzip.accelerator.azv azv
|
678
705
|
image/vnd.dece.graphic uvi uvvi uvg uvvg
|
679
706
|
image/vnd.djvu djvu djv
|
680
707
|
image/vnd.dvb.subtitle sub
|
@@ -685,20 +712,22 @@ image/vnd.fpx fpx
|
|
685
712
|
image/vnd.fst fst
|
686
713
|
image/vnd.fujixerox.edmics-mmr mmr
|
687
714
|
image/vnd.fujixerox.edmics-rlc rlc
|
715
|
+
image/vnd.microsoft.icon ico
|
688
716
|
image/vnd.ms-modi mdi
|
689
717
|
image/vnd.ms-photo wdp
|
690
718
|
image/vnd.net-fpx npx
|
719
|
+
image/vnd.tencent.tap tap
|
720
|
+
image/vnd.valve.source.texture vtf
|
691
721
|
image/vnd.wap.wbmp wbmp
|
692
722
|
image/vnd.xiff xif
|
723
|
+
image/vnd.zbrush.pcx pcx
|
693
724
|
image/webp webp
|
694
725
|
image/x-3ds 3ds
|
695
726
|
image/x-cmu-raster ras
|
696
727
|
image/x-cmx cmx
|
697
728
|
image/x-freehand fh fhc fh4 fh5 fh7
|
698
|
-
image/x-icon ico
|
699
729
|
image/x-jng jng
|
700
730
|
image/x-mrsid-image sid
|
701
|
-
image/x-pcx pcx
|
702
731
|
image/x-pict pic pct
|
703
732
|
image/x-portable-anymap pnm
|
704
733
|
image/x-portable-bitmap pbm
|
@@ -709,7 +738,14 @@ image/x-tga tga
|
|
709
738
|
image/x-xbitmap xbm
|
710
739
|
image/x-xpixmap xpm
|
711
740
|
image/x-xwindowdump xwd
|
741
|
+
message/disposition-notification disposition-notification
|
742
|
+
message/global u8msg
|
743
|
+
message/global-delivery-status u8dsn
|
744
|
+
message/global-disposition-notification u8mdn
|
745
|
+
message/global-headers u8hdr
|
712
746
|
message/rfc822 eml mime
|
747
|
+
message/vnd.wfa.wsc wsc
|
748
|
+
model/3mf 3mf
|
713
749
|
model/gltf+json gltf
|
714
750
|
model/gltf-binary glb
|
715
751
|
model/iges igs iges
|
@@ -719,6 +755,11 @@ model/vnd.dwf dwf
|
|
719
755
|
model/vnd.gdl gdl
|
720
756
|
model/vnd.gtw gtw
|
721
757
|
model/vnd.mts mts
|
758
|
+
model/vnd.opengex ogex
|
759
|
+
model/vnd.parasolid.transmit.binary x_b
|
760
|
+
model/vnd.parasolid.transmit.text x_t
|
761
|
+
model/vnd.usdz+zip usdz
|
762
|
+
model/vnd.valve.source.compiled-map bsp
|
722
763
|
model/vnd.vtu vtu
|
723
764
|
model/vrml wrl vrml
|
724
765
|
model/x3d+binary x3db x3dbz
|
@@ -729,18 +770,19 @@ text/calendar ics if
|
|
729
770
|
text/coffeescript coffee litcoffee
|
730
771
|
text/css css
|
731
772
|
text/csv csv
|
732
|
-
text/hjson hjson
|
733
773
|
text/html html htm shtml
|
734
774
|
text/jade jade
|
735
775
|
text/jsx jsx
|
736
776
|
text/less less
|
737
777
|
text/markdown markdown md
|
738
778
|
text/mathml mml
|
779
|
+
text/mdx mdx
|
739
780
|
text/n3 n3
|
740
781
|
text/plain txt text conf def list log in ini
|
741
782
|
text/prs.lines.tag dsc
|
742
783
|
text/richtext rtx
|
743
784
|
text/sgml sgml sgm
|
785
|
+
text/shex shex
|
744
786
|
text/slim slim slm
|
745
787
|
text/stylus stylus styl
|
746
788
|
text/tab-separated-values tsv
|
@@ -788,7 +830,7 @@ video/h261 h261
|
|
788
830
|
video/h263 h263
|
789
831
|
video/h264 h264
|
790
832
|
video/jpeg jpgv
|
791
|
-
video/jpm
|
833
|
+
video/jpm jpgm
|
792
834
|
video/mj2 mj2 mjp2
|
793
835
|
video/mp2t ts
|
794
836
|
video/mp4 mp4 mp4v mpg4
|