Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/FoxxMD/multi-scrobbler. Scrobble plays from multiple sources to multiple clients docs.multi-scrobbler.app
deezer docker jellyfin koito lastfm listenbrainz maloja mopidy mpris music music-assistant plex scrobble self-hosted spotify subsonic tautulli youtube-music
Something went wrong. Try again.
9.8 kB · 365 lines
JSON
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366{ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "Caddyfile", "fileTypes": ["Caddyfile"], "scopeName": "source.Caddyfile",
"patterns": [ { "include": "#comments" }, { "include": "#strings" }, { "include": "#domains" }, { "include": "#status_codes" }, { "include": "#path" }, { "include": "#global_options" }, { "include": "#matchers" }, { "include": "#directive" }, { "include": "#site_block_common" } ],
"repository": { "comments": { "patterns": [ { "name": "comment.line.Caddyfile", "match": "\\s#.*" }, { "name": "comment.line.Caddyfile", "match": "^#.*" } ] },
"strings": { "patterns": [ { "comment": "Double Quoted Strings", "begin": "\"", "end": "\"", "name": "string.quoted.double.Caddyfile", "patterns": [ { "name": "constant.character.escape.Caddyfile", "match": "\\\\\"" } ] }, { "comment": "Backtick Strings", "begin": "`", "end": "`", "name": "string.quoted.single.Caddyfile" } ] },
"status_codes": { "patterns": [ { "name": "constant.numeric.decimal", "match": "\\s[0-9]{3}(?!\\.)" } ] },
"path": { "patterns": [ { "name": "keyword.control.caddyfile", "match": "(unix/)*/[a-zA-Z0-9_\\-./*]+" }, { "name": "variable.other.property.caddyfile", "match": "\\*.[a-z]{1,5}" }, { "name": "variable.other.property.caddyfile", "match": "\\*/?" }, { "name": "variable.other.property.caddyfile", "match": "\\?/" } ] },
"domains": { "patterns": [ { "comment": "Domains and URLs", "name": "keyword.control.caddyfile", "match": "(https?://)*[a-z0-9-\\*]*(?:\\.[a-zA-Z]{2,})+(:[0-9]+)*\\S*" }, { "comment": "localhost", "name": "keyword.control.caddyfile", "match": "localhost(:[0-9]+)*" }, { "comment": "IPv4", "name": "keyword.control.caddyfile", "match": "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" }, { "comment": "IPv6", "name": "keyword.control.caddyfile", "match": "(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))" }, { "comment": "Ports", "name": "keyword.control.caddyfile", "match": ":[0-9]+" } ] },
"global_options": { "patterns": [ { "begin": "^(\\{)$", "end": "^(\\})$",
"beginCaptures": { "0": { "name": "punctuation.definition.dictionary.begin" } },
"endCaptures": { "0": { "name": "punctuation.definition.dictionary.end" } },
"patterns": [ { "include": "#comments" }, { "name": "support.constant.Caddyfile", "match": "^\\s*(debug|https?_port|default_bind|order|storage|storage_clean_interval|renew_interval|ocsp_interval|admin|log|grace_period|shutdown_delay|auto_https|email|default_sni|local_certs|skip_install_trust|acme_ca|acme_ca_root|acme_eab|acme_dns|on_demand_tls|key_type|cert_issuer|ocsp_stapling|preferred_chains|servers|pki|events)" } ] } ] },
"site_block_common": { "patterns": [{ "include": "#placeholders" }, { "include": "#block" }] },
"matchers": { "patterns": [ { "comment": "Matchers", "name": "support.function.Caddyfile", "match": "@[^\\s]+(?=\\s)" } ] },
"placeholders": { "patterns": [ { "name": "keyword.control.Caddyfile", "match": "\\{[\\[\\]\\w.\\$+-]+\\}" } ] },
"directive": { "patterns": [ { "name": "entity.name.function.Caddyfile", "match": "^\\s*[a-zA-Z_\\-+]+" }, { "include": "#content_types" }, { "include": "#heredoc" } ] },
"content_types": { "patterns": [ { "comment": "Content Types", "name": "variable.other.property.caddyfile", "match": "(application|audio|example|font|image|message|model|multipart|text|video)/[a-zA-Z0-9*+\\-.]+;* *[a-zA-Z0-9=\\-]*" } ] },
"block": { "patterns": [ { "begin": "\\{", "end": "\\}",
"patterns": [{ "include": "#block_content" }] } ] },
"block_content": { "patterns": [ { "patterns": [ { "include": "#comments" }, { "include": "#strings" }, { "include": "#domains" }, { "include": "#status_codes" }, { "include": "#path" }, { "include": "#matchers" }, { "include": "#placeholders" }, { "include": "#directive" }, { "include": "#block" } ] } ] },
"heredoc": { "patterns": [ { "begin": "(?i)(?=<<\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*$)", "end": "(?!\\G)", "name": "string.unquoted.heredoc.caddyfile", "patterns": [{ "include": "#heredoc_interior" }] } ] },
"heredoc_interior": { "patterns": [ { "comment": "CSS",
"name": "meta.embedded.css", "contentName": "source.css",
"begin": "(<<)\\s*(CSS)(\\s*)$", "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.caddyfile" }, "1": { "name": "punctuation.definition.string.begin" }, "2": { "name": "keyword.operator.heredoc.caddyfile" }, "4": { "name": "invalid.illegal.trailing-whitespace.caddyfile" } },
"end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])", "endCaptures": { "0": { "name": "punctuation.section.embedded.end.caddyfile" }, "1": { "name": "keyword.operator.heredoc.caddyfile" } },
"patterns": [{ "include": "source.css" }] },
{ "comment": "HTML",
"name": "meta.embedded.html", "contentName": "text.html",
"begin": "(<<)\\s*(HTML)(\\s*)$", "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.caddyfile" }, "1": { "name": "punctuation.definition.string.begin" }, "2": { "name": "keyword.operator.heredoc.caddyfile" }, "4": { "name": "invalid.illegal.trailing-whitespace.caddyfile" } },
"end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])", "endCaptures": { "0": { "name": "punctuation.section.embedded.end.caddyfile" }, "1": { "name": "keyword.operator.heredoc.caddyfile" } },
"patterns": [{ "include": "text.html.basic" }] },
{ "comment": "JavaScript",
"name": "meta.embedded.js", "contentName": "source.js",
"begin": "(<<)\\s*(JAVASCRIPT|JS)(\\s*)$", "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.caddyfile" }, "1": { "name": "punctuation.definition.string.begin" }, "2": { "name": "keyword.operator.heredoc.caddyfile" }, "4": { "name": "invalid.illegal.trailing-whitespace.caddyfile" } },
"end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])", "endCaptures": { "0": { "name": "punctuation.section.embedded.end.caddyfile" }, "1": { "name": "keyword.operator.heredoc.caddyfile" } },
"patterns": [{ "include": "source.js" }] },
{ "comment": "JSON",
"name": "meta.embedded.json", "contentName": "source.json",
"begin": "(<<)\\s*(JSON)(\\s*)$", "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.caddyfile" }, "1": { "name": "punctuation.definition.string.begin" }, "2": { "name": "keyword.operator.heredoc.caddyfile" }, "4": { "name": "invalid.illegal.trailing-whitespace.caddyfile" } },
"end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])", "endCaptures": { "0": { "name": "punctuation.section.embedded.end.caddyfile" }, "1": { "name": "keyword.operator.heredoc.caddyfile" } },
"patterns": [{ "include": "source.json" }] },
{ "comment": "XML",
"name": "meta.embedded.xml", "contentName": "text.xml",
"begin": "(<<)\\s*(XML)(\\s*)$", "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.caddyfile" }, "1": { "name": "punctuation.definition.string.begin" }, "2": { "name": "keyword.operator.heredoc.caddyfile" }, "4": { "name": "invalid.illegal.trailing-whitespace.caddyfile" } },
"end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])", "endCaptures": { "0": { "name": "punctuation.section.embedded.end.caddyfile" }, "1": { "name": "keyword.operator.heredoc.caddyfile" } },
"patterns": [{ "include": "text.xml" }] },
{ "comment": "Any other heredoc",
"begin": "(?i)(<<)\\s*([a-z_\\x{7f}-\\x{10ffff}]+[a-z0-9_\\x{7f}-\\x{10ffff}]*)(\\s*)", "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.caddyfile" }, "1": { "name": "punctuation.definition.string.caddyfile" }, "2": { "name": "keyword.operator.heredoc.caddyfile" }, "4": { "name": "invalid.illegal.trailing-whitespace.caddyfile" } },
"end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])", "endCaptures": { "0": { "name": "punctuation.section.embedded.end.caddyfile" }, "1": { "name": "keyword.operator.heredoc.caddyfile" } },
"patterns": [] } ] } }}