diff --git a/modules/fileicon/material.go b/modules/fileicon/material.go
index 54666c76b2..201cf6f455 100644
--- a/modules/fileicon/material.go
+++ b/modules/fileicon/material.go
@@ -18,13 +18,9 @@ import (
)
type materialIconRulesData struct {
- IconDefinitions map[string]*struct {
- IconPath string `json:"iconPath"`
- } `json:"iconDefinitions"`
FileNames map[string]string `json:"fileNames"`
FolderNames map[string]string `json:"folderNames"`
FileExtensions map[string]string `json:"fileExtensions"`
- LanguageIDs map[string]string `json:"languageIds"`
}
type MaterialIconProvider struct {
@@ -36,6 +32,7 @@ type MaterialIconProvider struct {
var materialIconProvider MaterialIconProvider
func DefaultMaterialIconProvider() *MaterialIconProvider {
+ materialIconProvider.once.Do(materialIconProvider.loadData)
return &materialIconProvider
}
@@ -88,8 +85,6 @@ func (m *MaterialIconProvider) renderFileIconSVG(ctx reqctx.RequestContext, name
}
func (m *MaterialIconProvider) FileIcon(ctx reqctx.RequestContext, entry *git.TreeEntry) template.HTML {
- m.once.Do(m.loadData)
-
if m.rules == nil {
return BasicThemeIcon(entry)
}
@@ -101,7 +96,7 @@ func (m *MaterialIconProvider) FileIcon(ctx reqctx.RequestContext, entry *git.Tr
return svg.RenderHTML("octicon-file-symlink-file") // TODO: find some better icons for them
}
- name := m.findIconName(entry)
+ name := m.findIconNameByGit(entry)
if name == "folder" {
// the material icon pack's "folder" icon doesn't look good, so use our built-in one
return svg.RenderHTML("material-folder-generic")
@@ -112,34 +107,23 @@ func (m *MaterialIconProvider) FileIcon(ctx reqctx.RequestContext, entry *git.Tr
return svg.RenderHTML("octicon-file")
}
-func (m *MaterialIconProvider) findIconName(entry *git.TreeEntry) string {
- if entry.IsSubModule() {
- return "folder-git"
- }
-
+func (m *MaterialIconProvider) FindIconName(name string, isDir bool) string {
iconsData := m.rules
- fileName := path.Base(entry.Name())
-
- if entry.IsDir() {
- if s, ok := iconsData.FolderNames[fileName]; ok {
- return s
- }
- if s, ok := iconsData.FolderNames[strings.ToLower(fileName)]; ok {
+ fileNameLower := strings.ToLower(path.Base(name))
+ if isDir {
+ if s, ok := iconsData.FolderNames[fileNameLower]; ok {
return s
}
return "folder"
}
- if s, ok := iconsData.FileNames[fileName]; ok {
- return s
- }
- if s, ok := iconsData.FileNames[strings.ToLower(fileName)]; ok {
+ if s, ok := iconsData.FileNames[fileNameLower]; ok {
return s
}
- for i := len(fileName) - 1; i >= 0; i-- {
- if fileName[i] == '.' {
- ext := fileName[i+1:]
+ for i := len(fileNameLower) - 1; i >= 0; i-- {
+ if fileNameLower[i] == '.' {
+ ext := fileNameLower[i+1:]
if s, ok := iconsData.FileExtensions[ext]; ok {
return s
}
@@ -148,3 +132,10 @@ func (m *MaterialIconProvider) findIconName(entry *git.TreeEntry) string {
return "file"
}
+
+func (m *MaterialIconProvider) findIconNameByGit(entry *git.TreeEntry) string {
+ if entry.IsSubModule() {
+ return "folder-git"
+ }
+ return m.FindIconName(entry.Name(), entry.IsDir())
+}
diff --git a/modules/fileicon/material_test.go b/modules/fileicon/material_test.go
new file mode 100644
index 0000000000..bce316c692
--- /dev/null
+++ b/modules/fileicon/material_test.go
@@ -0,0 +1,24 @@
+// Copyright 2025 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package fileicon_test
+
+import (
+ "testing"
+
+ "code.gitea.io/gitea/models/unittest"
+ "code.gitea.io/gitea/modules/fileicon"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestMain(m *testing.M) {
+ unittest.MainTest(m, &unittest.TestOptions{FixtureFiles: []string{}})
+}
+
+func TestFindIconName(t *testing.T) {
+ unittest.PrepareTestEnv(t)
+ p := fileicon.DefaultMaterialIconProvider()
+ assert.Equal(t, "php", p.FindIconName("foo.php", false))
+ assert.Equal(t, "php", p.FindIconName("foo.PHP", false))
+}
diff --git a/modules/git/commit_info_nogogit.go b/modules/git/commit_info_nogogit.go
index ef2df0b133..7a6af0410b 100644
--- a/modules/git/commit_info_nogogit.go
+++ b/modules/git/commit_info_nogogit.go
@@ -65,7 +65,7 @@ func (tes Entries) GetCommitsInfo(ctx context.Context, commit *Commit, treePath
log.Debug("missing commit for %s", entry.Name())
}
- // If the entry if a submodule add a submodule file for this
+ // If the entry is a submodule add a submodule file for this
if entry.IsSubModule() {
subModuleURL := ""
var fullPath string
@@ -85,8 +85,8 @@ func (tes Entries) GetCommitsInfo(ctx context.Context, commit *Commit, treePath
}
// Retrieve the commit for the treePath itself (see above). We basically
- // get it for free during the tree traversal and it's used for listing
- // pages to display information about newest commit for a given path.
+ // get it for free during the tree traversal, and it's used for listing
+ // pages to display information about the newest commit for a given path.
var treeCommit *Commit
var ok bool
if treePath == "" {
diff --git a/options/fileicon/material-icon-rules.json b/options/fileicon/material-icon-rules.json
index b14867efea..05d56cc546 100644
--- a/options/fileicon/material-icon-rules.json
+++ b/options/fileicon/material-icon-rules.json
@@ -1,3222 +1,4 @@
{
- "iconDefinitions": {
- "git": {
- "iconPath": "./../icons/git.svg"
- },
- "github-actions-workflow": {
- "iconPath": "./../icons/github-actions-workflow.svg"
- },
- "yaml": {
- "iconPath": "./../icons/yaml.svg"
- },
- "xml": {
- "iconPath": "./../icons/xml.svg"
- },
- "matlab": {
- "iconPath": "./../icons/matlab.svg"
- },
- "settings": {
- "iconPath": "./../icons/settings.svg"
- },
- "toml": {
- "iconPath": "./../icons/toml.svg"
- },
- "toml_light": {
- "iconPath": "./../icons/toml_light.svg"
- },
- "diff": {
- "iconPath": "./../icons/diff.svg"
- },
- "json": {
- "iconPath": "./../icons/json.svg"
- },
- "blink": {
- "iconPath": "./../icons/blink.svg"
- },
- "java": {
- "iconPath": "./../icons/java.svg"
- },
- "razor": {
- "iconPath": "./../icons/razor.svg"
- },
- "python": {
- "iconPath": "./../icons/python.svg"
- },
- "mojo": {
- "iconPath": "./../icons/mojo.svg"
- },
- "javascript": {
- "iconPath": "./../icons/javascript.svg"
- },
- "typescript": {
- "iconPath": "./../icons/typescript.svg"
- },
- "scala": {
- "iconPath": "./../icons/scala.svg"
- },
- "handlebars": {
- "iconPath": "./../icons/handlebars.svg"
- },
- "perl": {
- "iconPath": "./../icons/perl.svg"
- },
- "haxe": {
- "iconPath": "./../icons/haxe.svg"
- },
- "puppet": {
- "iconPath": "./../icons/puppet.svg"
- },
- "elixir": {
- "iconPath": "./../icons/elixir.svg"
- },
- "livescript": {
- "iconPath": "./../icons/livescript.svg"
- },
- "erlang": {
- "iconPath": "./../icons/erlang.svg"
- },
- "twig": {
- "iconPath": "./../icons/twig.svg"
- },
- "julia": {
- "iconPath": "./../icons/julia.svg"
- },
- "elm": {
- "iconPath": "./../icons/elm.svg"
- },
- "purescript": {
- "iconPath": "./../icons/purescript.svg"
- },
- "stylus": {
- "iconPath": "./../icons/stylus.svg"
- },
- "nunjucks": {
- "iconPath": "./../icons/nunjucks.svg"
- },
- "pug": {
- "iconPath": "./../icons/pug.svg"
- },
- "robot": {
- "iconPath": "./../icons/robot.svg"
- },
- "sass": {
- "iconPath": "./../icons/sass.svg"
- },
- "less": {
- "iconPath": "./../icons/less.svg"
- },
- "css": {
- "iconPath": "./../icons/css.svg"
- },
- "visualstudio": {
- "iconPath": "./../icons/visualstudio.svg"
- },
- "angular": {
- "iconPath": "./../icons/angular.svg"
- },
- "graphql": {
- "iconPath": "./../icons/graphql.svg"
- },
- "solidity": {
- "iconPath": "./../icons/solidity.svg"
- },
- "autoit": {
- "iconPath": "./../icons/autoit.svg"
- },
- "haml": {
- "iconPath": "./../icons/haml.svg"
- },
- "yang": {
- "iconPath": "./../icons/yang.svg"
- },
- "terraform": {
- "iconPath": "./../icons/terraform.svg"
- },
- "applescript": {
- "iconPath": "./../icons/applescript.svg"
- },
- "cake": {
- "iconPath": "./../icons/cake.svg"
- },
- "cucumber": {
- "iconPath": "./../icons/cucumber.svg"
- },
- "nim": {
- "iconPath": "./../icons/nim.svg"
- },
- "apiblueprint": {
- "iconPath": "./../icons/apiblueprint.svg"
- },
- "riot": {
- "iconPath": "./../icons/riot.svg"
- },
- "postcss": {
- "iconPath": "./../icons/postcss.svg"
- },
- "coldfusion": {
- "iconPath": "./../icons/coldfusion.svg"
- },
- "haskell": {
- "iconPath": "./../icons/haskell.svg"
- },
- "dhall": {
- "iconPath": "./../icons/dhall.svg"
- },
- "cabal": {
- "iconPath": "./../icons/cabal.svg"
- },
- "nix": {
- "iconPath": "./../icons/nix.svg"
- },
- "ruby": {
- "iconPath": "./../icons/ruby.svg"
- },
- "slim": {
- "iconPath": "./../icons/slim.svg"
- },
- "php": {
- "iconPath": "./../icons/php.svg"
- },
- "php_elephant": {
- "iconPath": "./../icons/php_elephant.svg"
- },
- "php_elephant_pink": {
- "iconPath": "./../icons/php_elephant_pink.svg"
- },
- "hack": {
- "iconPath": "./../icons/hack.svg"
- },
- "react": {
- "iconPath": "./../icons/react.svg"
- },
- "mjml": {
- "iconPath": "./../icons/mjml.svg"
- },
- "processing": {
- "iconPath": "./../icons/processing.svg"
- },
- "hcl": {
- "iconPath": "./../icons/hcl.svg"
- },
- "go": {
- "iconPath": "./../icons/go.svg"
- },
- "go_gopher": {
- "iconPath": "./../icons/go_gopher.svg"
- },
- "nodejs_alt": {
- "iconPath": "./../icons/nodejs_alt.svg"
- },
- "django": {
- "iconPath": "./../icons/django.svg"
- },
- "html": {
- "iconPath": "./../icons/html.svg"
- },
- "godot": {
- "iconPath": "./../icons/godot.svg"
- },
- "godot-assets": {
- "iconPath": "./../icons/godot-assets.svg"
- },
- "vim": {
- "iconPath": "./../icons/vim.svg"
- },
- "silverstripe": {
- "iconPath": "./../icons/silverstripe.svg"
- },
- "prolog": {
- "iconPath": "./../icons/prolog.svg"
- },
- "pawn": {
- "iconPath": "./../icons/pawn.svg"
- },
- "reason": {
- "iconPath": "./../icons/reason.svg"
- },
- "sml": {
- "iconPath": "./../icons/sml.svg"
- },
- "tex": {
- "iconPath": "./../icons/tex.svg"
- },
- "salesforce": {
- "iconPath": "./../icons/salesforce.svg"
- },
- "sas": {
- "iconPath": "./../icons/sas.svg"
- },
- "docker": {
- "iconPath": "./../icons/docker.svg"
- },
- "table": {
- "iconPath": "./../icons/table.svg"
- },
- "csharp": {
- "iconPath": "./../icons/csharp.svg"
- },
- "console": {
- "iconPath": "./../icons/console.svg"
- },
- "c": {
- "iconPath": "./../icons/c.svg"
- },
- "cpp": {
- "iconPath": "./../icons/cpp.svg"
- },
- "objective-c": {
- "iconPath": "./../icons/objective-c.svg"
- },
- "objective-cpp": {
- "iconPath": "./../icons/objective-cpp.svg"
- },
- "c3": {
- "iconPath": "./../icons/c3.svg"
- },
- "coffee": {
- "iconPath": "./../icons/coffee.svg"
- },
- "fsharp": {
- "iconPath": "./../icons/fsharp.svg"
- },
- "editorconfig": {
- "iconPath": "./../icons/editorconfig.svg"
- },
- "clojure": {
- "iconPath": "./../icons/clojure.svg"
- },
- "groovy": {
- "iconPath": "./../icons/groovy.svg"
- },
- "markdoc": {
- "iconPath": "./../icons/markdoc.svg"
- },
- "markdown": {
- "iconPath": "./../icons/markdown.svg"
- },
- "jinja": {
- "iconPath": "./../icons/jinja.svg"
- },
- "proto": {
- "iconPath": "./../icons/proto.svg"
- },
- "python-misc": {
- "iconPath": "./../icons/python-misc.svg"
- },
- "vue": {
- "iconPath": "./../icons/vue.svg"
- },
- "lua": {
- "iconPath": "./../icons/lua.svg"
- },
- "lib": {
- "iconPath": "./../icons/lib.svg"
- },
- "log": {
- "iconPath": "./../icons/log.svg"
- },
- "jupyter": {
- "iconPath": "./../icons/jupyter.svg"
- },
- "document": {
- "iconPath": "./../icons/document.svg"
- },
- "pdf": {
- "iconPath": "./../icons/pdf.svg"
- },
- "powershell": {
- "iconPath": "./../icons/powershell.svg"
- },
- "r": {
- "iconPath": "./../icons/r.svg"
- },
- "rust": {
- "iconPath": "./../icons/rust.svg"
- },
- "database": {
- "iconPath": "./../icons/database.svg"
- },
- "kusto": {
- "iconPath": "./../icons/kusto.svg"
- },
- "lock": {
- "iconPath": "./../icons/lock.svg"
- },
- "svg": {
- "iconPath": "./../icons/svg.svg"
- },
- "swift": {
- "iconPath": "./../icons/swift.svg"
- },
- "react_ts": {
- "iconPath": "./../icons/react_ts.svg"
- },
- "search": {
- "iconPath": "./../icons/search.svg"
- },
- "minecraft": {
- "iconPath": "./../icons/minecraft.svg"
- },
- "rescript": {
- "iconPath": "./../icons/rescript.svg"
- },
- "otne": {
- "iconPath": "./../icons/otne.svg"
- },
- "twine": {
- "iconPath": "./../icons/twine.svg"
- },
- "grain": {
- "iconPath": "./../icons/grain.svg"
- },
- "lolcode": {
- "iconPath": "./../icons/lolcode.svg"
- },
- "idris": {
- "iconPath": "./../icons/idris.svg"
- },
- "chess": {
- "iconPath": "./../icons/chess.svg"
- },
- "gemini": {
- "iconPath": "./../icons/gemini.svg"
- },
- "vlang": {
- "iconPath": "./../icons/vlang.svg"
- },
- "wolframlanguage": {
- "iconPath": "./../icons/wolframlanguage.svg"
- },
- "shader": {
- "iconPath": "./../icons/shader.svg"
- },
- "tree": {
- "iconPath": "./../icons/tree.svg"
- },
- "svelte": {
- "iconPath": "./../icons/svelte.svg"
- },
- "dart": {
- "iconPath": "./../icons/dart.svg"
- },
- "cadence": {
- "iconPath": "./../icons/cadence.svg"
- },
- "stylable": {
- "iconPath": "./../icons/stylable.svg"
- },
- "hjson": {
- "iconPath": "./../icons/hjson.svg"
- },
- "huff": {
- "iconPath": "./../icons/huff.svg"
- },
- "cds": {
- "iconPath": "./../icons/cds.svg"
- },
- "concourse": {
- "iconPath": "./../icons/concourse.svg"
- },
- "systemd": {
- "iconPath": "./../icons/systemd.svg"
- },
- "systemd_light": {
- "iconPath": "./../icons/systemd_light.svg"
- },
- "slint": {
- "iconPath": "./../icons/slint.svg"
- },
- "luau": {
- "iconPath": "./../icons/luau.svg"
- },
- "hosts": {
- "iconPath": "./../icons/hosts.svg"
- },
- "beancount": {
- "iconPath": "./../icons/beancount.svg"
- },
- "ahk2": {
- "iconPath": "./../icons/ahk2.clone.svg"
- },
- "gnuplot": {
- "iconPath": "./../icons/gnuplot.svg"
- },
- "blink_light": {
- "iconPath": "./../icons/blink_light.svg"
- },
- "just": {
- "iconPath": "./../icons/just.svg"
- },
- "jinja_light": {
- "iconPath": "./../icons/jinja_light.svg"
- },
- "playwright": {
- "iconPath": "./../icons/playwright.svg"
- },
- "sublime": {
- "iconPath": "./../icons/sublime.svg"
- },
- "simulink": {
- "iconPath": "./../icons/simulink.svg"
- },
- "image": {
- "iconPath": "./../icons/image.svg"
- },
- "palette": {
- "iconPath": "./../icons/palette.svg"
- },
- "rocket": {
- "iconPath": "./../icons/rocket.svg"
- },
- "routing": {
- "iconPath": "./../icons/routing.svg"
- },
- "redux-action": {
- "iconPath": "./../icons/redux-action.svg"
- },
- "redux-reducer": {
- "iconPath": "./../icons/redux-reducer.svg"
- },
- "redux-selector": {
- "iconPath": "./../icons/redux-selector.svg"
- },
- "redux-store": {
- "iconPath": "./../icons/redux-store.svg"
- },
- "typescript-def": {
- "iconPath": "./../icons/typescript-def.svg"
- },
- "markdoc-config": {
- "iconPath": "./../icons/markdoc-config.svg"
- },
- "markojs": {
- "iconPath": "./../icons/markojs.svg"
- },
- "astro": {
- "iconPath": "./../icons/astro.svg"
- },
- "astro-config": {
- "iconPath": "./../icons/astro-config.svg"
- },
- "vscode": {
- "iconPath": "./../icons/vscode.svg"
- },
- "qsharp": {
- "iconPath": "./../icons/qsharp.svg"
- },
- "zip": {
- "iconPath": "./../icons/zip.svg"
- },
- "vala": {
- "iconPath": "./../icons/vala.svg"
- },
- "zig": {
- "iconPath": "./../icons/zig.svg"
- },
- "exe": {
- "iconPath": "./../icons/exe.svg"
- },
- "hex": {
- "iconPath": "./../icons/hex.svg"
- },
- "jar": {
- "iconPath": "./../icons/jar.svg"
- },
- "javaclass": {
- "iconPath": "./../icons/javaclass.svg"
- },
- "h": {
- "iconPath": "./../icons/h.svg"
- },
- "hpp": {
- "iconPath": "./../icons/hpp.svg"
- },
- "rc": {
- "iconPath": "./../icons/rc.svg"
- },
- "go-mod": {
- "iconPath": "./../icons/go-mod.svg"
- },
- "ruff": {
- "iconPath": "./../icons/ruff.svg"
- },
- "uv": {
- "iconPath": "./../icons/uv.svg"
- },
- "scons": {
- "iconPath": "./../icons/scons.svg"
- },
- "scons_light": {
- "iconPath": "./../icons/scons_light.svg"
- },
- "url": {
- "iconPath": "./../icons/url.svg"
- },
- "gradle": {
- "iconPath": "./../icons/gradle.svg"
- },
- "word": {
- "iconPath": "./../icons/word.svg"
- },
- "certificate": {
- "iconPath": "./../icons/certificate.svg"
- },
- "key": {
- "iconPath": "./../icons/key.svg"
- },
- "keystatic": {
- "iconPath": "./../icons/keystatic.svg"
- },
- "font": {
- "iconPath": "./../icons/font.svg"
- },
- "dll": {
- "iconPath": "./../icons/dll.svg"
- },
- "gemfile": {
- "iconPath": "./../icons/gemfile.svg"
- },
- "rubocop": {
- "iconPath": "./../icons/rubocop.svg"
- },
- "rubocop_light": {
- "iconPath": "./../icons/rubocop_light.svg"
- },
- "rspec": {
- "iconPath": "./../icons/rspec.svg"
- },
- "arduino": {
- "iconPath": "./../icons/arduino.svg"
- },
- "powerpoint": {
- "iconPath": "./../icons/powerpoint.svg"
- },
- "video": {
- "iconPath": "./../icons/video.svg"
- },
- "virtual": {
- "iconPath": "./../icons/virtual.svg"
- },
- "vedic": {
- "iconPath": "./../icons/vedic.svg"
- },
- "email": {
- "iconPath": "./../icons/email.svg"
- },
- "audio": {
- "iconPath": "./../icons/audio.svg"
- },
- "lyric": {
- "iconPath": "./../icons/lyric.svg"
- },
- "raml": {
- "iconPath": "./../icons/raml.svg"
- },
- "xaml": {
- "iconPath": "./../icons/xaml.svg"
- },
- "kotlin": {
- "iconPath": "./../icons/kotlin.svg"
- },
- "mist": {
- "iconPath": "./../icons/mist.clone.svg"
- },
- "dart_generated": {
- "iconPath": "./../icons/dart_generated.svg"
- },
- "actionscript": {
- "iconPath": "./../icons/actionscript.svg"
- },
- "mxml": {
- "iconPath": "./../icons/mxml.svg"
- },
- "autohotkey": {
- "iconPath": "./../icons/autohotkey.svg"
- },
- "flash": {
- "iconPath": "./../icons/flash.svg"
- },
- "adobe-swc": {
- "iconPath": "./../icons/adobe-swc.svg"
- },
- "swc": {
- "iconPath": "./../icons/swc.svg"
- },
- "cmake": {
- "iconPath": "./../icons/cmake.svg"
- },
- "assembly": {
- "iconPath": "./../icons/assembly.svg"
- },
- "semgrep": {
- "iconPath": "./../icons/semgrep.svg"
- },
- "vue-config": {
- "iconPath": "./../icons/vue-config.svg"
- },
- "vuex-store": {
- "iconPath": "./../icons/vuex-store.svg"
- },
- "nuxt": {
- "iconPath": "./../icons/nuxt.svg"
- },
- "harmonix": {
- "iconPath": "./../icons/harmonix.svg"
- },
- "ocaml": {
- "iconPath": "./../icons/ocaml.svg"
- },
- "odin": {
- "iconPath": "./../icons/odin.svg"
- },
- "javascript-map": {
- "iconPath": "./../icons/javascript-map.svg"
- },
- "css-map": {
- "iconPath": "./../icons/css-map.svg"
- },
- "test-ts": {
- "iconPath": "./../icons/test-ts.svg"
- },
- "test-jsx": {
- "iconPath": "./../icons/test-jsx.svg"
- },
- "test-js": {
- "iconPath": "./../icons/test-js.svg"
- },
- "angular-component": {
- "iconPath": "./../icons/angular-component.clone.svg"
- },
- "angular-guard": {
- "iconPath": "./../icons/angular-guard.clone.svg"
- },
- "angular-service": {
- "iconPath": "./../icons/angular-service.clone.svg"
- },
- "angular-pipe": {
- "iconPath": "./../icons/angular-pipe.clone.svg"
- },
- "angular-directive": {
- "iconPath": "./../icons/angular-directive.clone.svg"
- },
- "angular-resolver": {
- "iconPath": "./../icons/angular-resolver.clone.svg"
- },
- "angular-interceptor": {
- "iconPath": "./../icons/angular-interceptor.clone.svg"
- },
- "smarty": {
- "iconPath": "./../icons/smarty.svg"
- },
- "bucklescript": {
- "iconPath": "./../icons/bucklescript.svg"
- },
- "merlin": {
- "iconPath": "./../icons/merlin.svg"
- },
- "verilog": {
- "iconPath": "./../icons/verilog.svg"
- },
- "mathematica": {
- "iconPath": "./../icons/mathematica.svg"
- },
- "vercel": {
- "iconPath": "./../icons/vercel.svg"
- },
- "vercel_light": {
- "iconPath": "./../icons/vercel_light.svg"
- },
- "liara": {
- "iconPath": "./../icons/liara.svg"
- },
- "verdaccio": {
- "iconPath": "./../icons/verdaccio.svg"
- },
- "payload": {
- "iconPath": "./../icons/payload.svg"
- },
- "payload_light": {
- "iconPath": "./../icons/payload_light.svg"
- },
- "next": {
- "iconPath": "./../icons/next.svg"
- },
- "next_light": {
- "iconPath": "./../icons/next_light.svg"
- },
- "remark": {
- "iconPath": "./../icons/remark.svg"
- },
- "remix": {
- "iconPath": "./../icons/remix.svg"
- },
- "remix_light": {
- "iconPath": "./../icons/remix_light.svg"
- },
- "laravel": {
- "iconPath": "./../icons/laravel.svg"
- },
- "vfl": {
- "iconPath": "./../icons/vfl.svg"
- },
- "kl": {
- "iconPath": "./../icons/kl.svg"
- },
- "posthtml": {
- "iconPath": "./../icons/posthtml.svg"
- },
- "todo": {
- "iconPath": "./../icons/todo.svg"
- },
- "http": {
- "iconPath": "./../icons/http.svg"
- },
- "restql": {
- "iconPath": "./../icons/restql.svg"
- },
- "kivy": {
- "iconPath": "./../icons/kivy.svg"
- },
- "graphcool": {
- "iconPath": "./../icons/graphcool.svg"
- },
- "sbt": {
- "iconPath": "./../icons/sbt.svg"
- },
- "webpack": {
- "iconPath": "./../icons/webpack.svg"
- },
- "ionic": {
- "iconPath": "./../icons/ionic.svg"
- },
- "gulp": {
- "iconPath": "./../icons/gulp.svg"
- },
- "nodejs": {
- "iconPath": "./../icons/nodejs.svg"
- },
- "npm": {
- "iconPath": "./../icons/npm.svg"
- },
- "yarn": {
- "iconPath": "./../icons/yarn.svg"
- },
- "android": {
- "iconPath": "./../icons/android.svg"
- },
- "tune": {
- "iconPath": "./../icons/tune.svg"
- },
- "turborepo": {
- "iconPath": "./../icons/turborepo.svg"
- },
- "turborepo_light": {
- "iconPath": "./../icons/turborepo_light.svg"
- },
- "babel": {
- "iconPath": "./../icons/babel.svg"
- },
- "blitz": {
- "iconPath": "./../icons/blitz.svg"
- },
- "contributing": {
- "iconPath": "./../icons/contributing.svg"
- },
- "readme": {
- "iconPath": "./../icons/readme.svg"
- },
- "changelog": {
- "iconPath": "./../icons/changelog.svg"
- },
- "architecture": {
- "iconPath": "./../icons/architecture.svg"
- },
- "credits": {
- "iconPath": "./../icons/credits.svg"
- },
- "authors": {
- "iconPath": "./../icons/authors.svg"
- },
- "flow": {
- "iconPath": "./../icons/flow.svg"
- },
- "favicon": {
- "iconPath": "./../icons/favicon.svg"
- },
- "karma": {
- "iconPath": "./../icons/karma.svg"
- },
- "bithound": {
- "iconPath": "./../icons/bithound.svg"
- },
- "svgo": {
- "iconPath": "./../icons/svgo.svg"
- },
- "appveyor": {
- "iconPath": "./../icons/appveyor.svg"
- },
- "travis": {
- "iconPath": "./../icons/travis.svg"
- },
- "codecov": {
- "iconPath": "./../icons/codecov.svg"
- },
- "sonarcloud": {
- "iconPath": "./../icons/sonarcloud.svg"
- },
- "protractor": {
- "iconPath": "./../icons/protractor.svg"
- },
- "fusebox": {
- "iconPath": "./../icons/fusebox.svg"
- },
- "heroku": {
- "iconPath": "./../icons/heroku.svg"
- },
- "gitlab": {
- "iconPath": "./../icons/gitlab.svg"
- },
- "bower": {
- "iconPath": "./../icons/bower.svg"
- },
- "eslint": {
- "iconPath": "./../icons/eslint.svg"
- },
- "conduct": {
- "iconPath": "./../icons/conduct.svg"
- },
- "watchman": {
- "iconPath": "./../icons/watchman.svg"
- },
- "aurelia": {
- "iconPath": "./../icons/aurelia.svg"
- },
- "auto": {
- "iconPath": "./../icons/auto.svg"
- },
- "auto_light": {
- "iconPath": "./../icons/auto_light.svg"
- },
- "mocha": {
- "iconPath": "./../icons/mocha.svg"
- },
- "jenkins": {
- "iconPath": "./../icons/jenkins.svg"
- },
- "firebase": {
- "iconPath": "./../icons/firebase.svg"
- },
- "figma": {
- "iconPath": "./../icons/figma.svg"
- },
- "rollup": {
- "iconPath": "./../icons/rollup.svg"
- },
- "huff_light": {
- "iconPath": "./../icons/huff_light.svg"
- },
- "hardhat": {
- "iconPath": "./../icons/hardhat.svg"
- },
- "stylelint": {
- "iconPath": "./../icons/stylelint.svg"
- },
- "stylelint_light": {
- "iconPath": "./../icons/stylelint_light.svg"
- },
- "code-climate": {
- "iconPath": "./../icons/code-climate.svg"
- },
- "code-climate_light": {
- "iconPath": "./../icons/code-climate_light.svg"
- },
- "prettier": {
- "iconPath": "./../icons/prettier.svg"
- },
- "renovate": {
- "iconPath": "./../icons/renovate.svg"
- },
- "apollo": {
- "iconPath": "./../icons/apollo.svg"
- },
- "nodemon": {
- "iconPath": "./../icons/nodemon.svg"
- },
- "ngrx-reducer": {
- "iconPath": "./../icons/ngrx-reducer.svg"
- },
- "ngrx-state": {
- "iconPath": "./../icons/ngrx-state.svg"
- },
- "ngrx-actions": {
- "iconPath": "./../icons/ngrx-actions.svg"
- },
- "ngrx-effects": {
- "iconPath": "./../icons/ngrx-effects.svg"
- },
- "ngrx-entity": {
- "iconPath": "./../icons/ngrx-entity.svg"
- },
- "ngrx-selectors": {
- "iconPath": "./../icons/ngrx-selectors.svg"
- },
- "webhint": {
- "iconPath": "./../icons/webhint.svg"
- },
- "browserlist": {
- "iconPath": "./../icons/browserlist.svg"
- },
- "browserlist_light": {
- "iconPath": "./../icons/browserlist_light.svg"
- },
- "crystal": {
- "iconPath": "./../icons/crystal.svg"
- },
- "crystal_light": {
- "iconPath": "./../icons/crystal_light.svg"
- },
- "snyk": {
- "iconPath": "./../icons/snyk.svg"
- },
- "drone": {
- "iconPath": "./../icons/drone.svg"
- },
- "drone_light": {
- "iconPath": "./../icons/drone_light.svg"
- },
- "cuda": {
- "iconPath": "./../icons/cuda.svg"
- },
- "dotjs": {
- "iconPath": "./../icons/dotjs.svg"
- },
- "ejs": {
- "iconPath": "./../icons/ejs.svg"
- },
- "sequelize": {
- "iconPath": "./../icons/sequelize.svg"
- },
- "gatsby": {
- "iconPath": "./../icons/gatsby.svg"
- },
- "wakatime": {
- "iconPath": "./../icons/wakatime.svg"
- },
- "wakatime_light": {
- "iconPath": "./../icons/wakatime_light.svg"
- },
- "circleci": {
- "iconPath": "./../icons/circleci.svg"
- },
- "circleci_light": {
- "iconPath": "./../icons/circleci_light.svg"
- },
- "cloudfoundry": {
- "iconPath": "./../icons/cloudfoundry.svg"
- },
- "grunt": {
- "iconPath": "./../icons/grunt.svg"
- },
- "jest": {
- "iconPath": "./../icons/jest.svg"
- },
- "storybook": {
- "iconPath": "./../icons/storybook.svg"
- },
- "wepy": {
- "iconPath": "./../icons/wepy.svg"
- },
- "fastlane": {
- "iconPath": "./../icons/fastlane.svg"
- },
- "hcl_light": {
- "iconPath": "./../icons/hcl_light.svg"
- },
- "helm": {
- "iconPath": "./../icons/helm.svg"
- },
- "san": {
- "iconPath": "./../icons/san.svg"
- },
- "quokka": {
- "iconPath": "./../icons/quokka.svg"
- },
- "wallaby": {
- "iconPath": "./../icons/wallaby.svg"
- },
- "stencil": {
- "iconPath": "./../icons/stencil.svg"
- },
- "red": {
- "iconPath": "./../icons/red.svg"
- },
- "makefile": {
- "iconPath": "./../icons/makefile.svg"
- },
- "foxpro": {
- "iconPath": "./../icons/foxpro.svg"
- },
- "i18n": {
- "iconPath": "./../icons/i18n.svg"
- },
- "webassembly": {
- "iconPath": "./../icons/webassembly.svg"
- },
- "semantic-release": {
- "iconPath": "./../icons/semantic-release.svg"
- },
- "semantic-release_light": {
- "iconPath": "./../icons/semantic-release_light.svg"
- },
- "bitbucket": {
- "iconPath": "./../icons/bitbucket.svg"
- },
- "d": {
- "iconPath": "./../icons/d.svg"
- },
- "mdx": {
- "iconPath": "./../icons/mdx.svg"
- },
- "mdsvex": {
- "iconPath": "./../icons/mdsvex.svg"
- },
- "ballerina": {
- "iconPath": "./../icons/ballerina.svg"
- },
- "racket": {
- "iconPath": "./../icons/racket.svg"
- },
- "bazel": {
- "iconPath": "./../icons/bazel.svg"
- },
- "mint": {
- "iconPath": "./../icons/mint.svg"
- },
- "velocity": {
- "iconPath": "./../icons/velocity.svg"
- },
- "azure-pipelines": {
- "iconPath": "./../icons/azure-pipelines.svg"
- },
- "azure": {
- "iconPath": "./../icons/azure.svg"
- },
- "vagrant": {
- "iconPath": "./../icons/vagrant.svg"
- },
- "prisma": {
- "iconPath": "./../icons/prisma.svg"
- },
- "abc": {
- "iconPath": "./../icons/abc.svg"
- },
- "asciidoc": {
- "iconPath": "./../icons/asciidoc.svg"
- },
- "istanbul": {
- "iconPath": "./../icons/istanbul.svg"
- },
- "edge": {
- "iconPath": "./../icons/edge.svg"
- },
- "scheme": {
- "iconPath": "./../icons/scheme.svg"
- },
- "lisp": {
- "iconPath": "./../icons/lisp.svg"
- },
- "tailwindcss": {
- "iconPath": "./../icons/tailwindcss.svg"
- },
- "3d": {
- "iconPath": "./../icons/3d.svg"
- },
- "buildkite": {
- "iconPath": "./../icons/buildkite.svg"
- },
- "netlify": {
- "iconPath": "./../icons/netlify.svg"
- },
- "netlify_light": {
- "iconPath": "./../icons/netlify_light.svg"
- },
- "svelte_js": {
- "iconPath": "./../icons/svelte_js.clone.svg"
- },
- "svelte_ts": {
- "iconPath": "./../icons/svelte_ts.clone.svg"
- },
- "nest": {
- "iconPath": "./../icons/nest.svg"
- },
- "nest-controller": {
- "iconPath": "./../icons/nest-controller.clone.svg"
- },
- "nest-middleware": {
- "iconPath": "./../icons/nest-middleware.clone.svg"
- },
- "nest-module": {
- "iconPath": "./../icons/nest-module.clone.svg"
- },
- "nest-service": {
- "iconPath": "./../icons/nest-service.clone.svg"
- },
- "nest-decorator": {
- "iconPath": "./../icons/nest-decorator.clone.svg"
- },
- "nest-pipe": {
- "iconPath": "./../icons/nest-pipe.clone.svg"
- },
- "nest-filter": {
- "iconPath": "./../icons/nest-filter.clone.svg"
- },
- "nest-gateway": {
- "iconPath": "./../icons/nest-gateway.clone.svg"
- },
- "nest-guard": {
- "iconPath": "./../icons/nest-guard.clone.svg"
- },
- "nest-resolver": {
- "iconPath": "./../icons/nest-resolver.clone.svg"
- },
- "nest-interceptor": {
- "iconPath": "./../icons/nest-interceptor.clone.svg"
- },
- "moon": {
- "iconPath": "./../icons/moon.svg"
- },
- "moonscript": {
- "iconPath": "./../icons/moonscript.svg"
- },
- "percy": {
- "iconPath": "./../icons/percy.svg"
- },
- "gitpod": {
- "iconPath": "./../icons/gitpod.svg"
- },
- "stackblitz": {
- "iconPath": "./../icons/stackblitz.svg"
- },
- "advpl": {
- "iconPath": "./../icons/advpl.svg"
- },
- "advpl-ptm": {
- "iconPath": "./../icons/advpl-ptm.clone.svg"
- },
- "advpl-tlpp": {
- "iconPath": "./../icons/advpl-tlpp.clone.svg"
- },
- "advpl-include": {
- "iconPath": "./../icons/advpl-include.clone.svg"
- },
- "codeowners": {
- "iconPath": "./../icons/codeowners.svg"
- },
- "gcp": {
- "iconPath": "./../icons/gcp.svg"
- },
- "amplify": {
- "iconPath": "./../icons/amplify.svg"
- },
- "disc": {
- "iconPath": "./../icons/disc.svg"
- },
- "fortran": {
- "iconPath": "./../icons/fortran.svg"
- },
- "tcl": {
- "iconPath": "./../icons/tcl.svg"
- },
- "liquid": {
- "iconPath": "./../icons/liquid.svg"
- },
- "husky": {
- "iconPath": "./../icons/husky.svg"
- },
- "coconut": {
- "iconPath": "./../icons/coconut.svg"
- },
- "tilt": {
- "iconPath": "./../icons/tilt.svg"
- },
- "capacitor": {
- "iconPath": "./../icons/capacitor.svg"
- },
- "sketch": {
- "iconPath": "./../icons/sketch.svg"
- },
- "adonis": {
- "iconPath": "./../icons/adonis.svg"
- },
- "forth": {
- "iconPath": "./../icons/forth.svg"
- },
- "uml": {
- "iconPath": "./../icons/uml.svg"
- },
- "uml_light": {
- "iconPath": "./../icons/uml_light.svg"
- },
- "meson": {
- "iconPath": "./../icons/meson.svg"
- },
- "commitizen": {
- "iconPath": "./../icons/commitizen.svg"
- },
- "commitlint": {
- "iconPath": "./../icons/commitlint.svg"
- },
- "buck": {
- "iconPath": "./../icons/buck.svg"
- },
- "nx": {
- "iconPath": "./../icons/nx.svg"
- },
- "opam": {
- "iconPath": "./../icons/opam.svg"
- },
- "dune": {
- "iconPath": "./../icons/dune.svg"
- },
- "imba": {
- "iconPath": "./../icons/imba.svg"
- },
- "drawio": {
- "iconPath": "./../icons/drawio.svg"
- },
- "pascal": {
- "iconPath": "./../icons/pascal.svg"
- },
- "unity": {
- "iconPath": "./../icons/unity.svg"
- },
- "roadmap": {
- "iconPath": "./../icons/roadmap.svg"
- },
- "nuget": {
- "iconPath": "./../icons/nuget.svg"
- },
- "command": {
- "iconPath": "./../icons/command.svg"
- },
- "stryker": {
- "iconPath": "./../icons/stryker.svg"
- },
- "denizenscript": {
- "iconPath": "./../icons/denizenscript.svg"
- },
- "modernizr": {
- "iconPath": "./../icons/modernizr.svg"
- },
- "slug": {
- "iconPath": "./../icons/slug.svg"
- },
- "stitches": {
- "iconPath": "./../icons/stitches.svg"
- },
- "stitches_light": {
- "iconPath": "./../icons/stitches_light.svg"
- },
- "nginx": {
- "iconPath": "./../icons/nginx.svg"
- },
- "replit": {
- "iconPath": "./../icons/replit.svg"
- },
- "rescript-interface": {
- "iconPath": "./../icons/rescript-interface.svg"
- },
- "duc": {
- "iconPath": "./../icons/duc.svg"
- },
- "snowpack": {
- "iconPath": "./../icons/snowpack.svg"
- },
- "snowpack_light": {
- "iconPath": "./../icons/snowpack_light.svg"
- },
- "brainfuck": {
- "iconPath": "./../icons/brainfuck.svg"
- },
- "bicep": {
- "iconPath": "./../icons/bicep.svg"
- },
- "cobol": {
- "iconPath": "./../icons/cobol.svg"
- },
- "quasar": {
- "iconPath": "./../icons/quasar.svg"
- },
- "dependabot": {
- "iconPath": "./../icons/dependabot.svg"
- },
- "pipeline": {
- "iconPath": "./../icons/pipeline.svg"
- },
- "vite": {
- "iconPath": "./../icons/vite.svg"
- },
- "vitest": {
- "iconPath": "./../icons/vitest.svg"
- },
- "velite": {
- "iconPath": "./../icons/velite.svg"
- },
- "opa": {
- "iconPath": "./../icons/opa.svg"
- },
- "lerna": {
- "iconPath": "./../icons/lerna.svg"
- },
- "windicss": {
- "iconPath": "./../icons/windicss.svg"
- },
- "textlint": {
- "iconPath": "./../icons/textlint.svg"
- },
- "lilypond": {
- "iconPath": "./../icons/lilypond.svg"
- },
- "chess_light": {
- "iconPath": "./../icons/chess_light.svg"
- },
- "sentry": {
- "iconPath": "./../icons/sentry.svg"
- },
- "contentlayer": {
- "iconPath": "./../icons/contentlayer.svg"
- },
- "phpunit": {
- "iconPath": "./../icons/phpunit.svg"
- },
- "php-cs-fixer": {
- "iconPath": "./../icons/php-cs-fixer.svg"
- },
- "robots": {
- "iconPath": "./../icons/robots.svg"
- },
- "tsconfig": {
- "iconPath": "./../icons/tsconfig.svg"
- },
- "tauri": {
- "iconPath": "./../icons/tauri.svg"
- },
- "jsconfig": {
- "iconPath": "./../icons/jsconfig.svg"
- },
- "maven": {
- "iconPath": "./../icons/maven.svg"
- },
- "ada": {
- "iconPath": "./../icons/ada.svg"
- },
- "serverless": {
- "iconPath": "./../icons/serverless.svg"
- },
- "supabase": {
- "iconPath": "./../icons/supabase.svg"
- },
- "ember": {
- "iconPath": "./../icons/ember.svg"
- },
- "horusec": {
- "iconPath": "./../icons/horusec.svg"
- },
- "poetry": {
- "iconPath": "./../icons/poetry.svg"
- },
- "pdm": {
- "iconPath": "./../icons/pdm.svg"
- },
- "coala": {
- "iconPath": "./../icons/coala.svg"
- },
- "parcel": {
- "iconPath": "./../icons/parcel.svg"
- },
- "dinophp": {
- "iconPath": "./../icons/dinophp.svg"
- },
- "teal": {
- "iconPath": "./../icons/teal.svg"
- },
- "template": {
- "iconPath": "./../icons/template.svg"
- },
- "astyle": {
- "iconPath": "./../icons/astyle.svg"
- },
- "lighthouse": {
- "iconPath": "./../icons/lighthouse.svg"
- },
- "svgr": {
- "iconPath": "./../icons/svgr.svg"
- },
- "rome": {
- "iconPath": "./../icons/rome.svg"
- },
- "cypress": {
- "iconPath": "./../icons/cypress.svg"
- },
- "siyuan": {
- "iconPath": "./../icons/siyuan.svg"
- },
- "ndst": {
- "iconPath": "./../icons/ndst.svg"
- },
- "plop": {
- "iconPath": "./../icons/plop.svg"
- },
- "tobi": {
- "iconPath": "./../icons/tobi.svg"
- },
- "tobimake": {
- "iconPath": "./../icons/tobimake.svg"
- },
- "gleam": {
- "iconPath": "./../icons/gleam.svg"
- },
- "pnpm": {
- "iconPath": "./../icons/pnpm.svg"
- },
- "pnpm_light": {
- "iconPath": "./../icons/pnpm_light.svg"
- },
- "gridsome": {
- "iconPath": "./../icons/gridsome.svg"
- },
- "steadybit": {
- "iconPath": "./../icons/steadybit.svg"
- },
- "capnp": {
- "iconPath": "./../icons/capnp.svg"
- },
- "caddy": {
- "iconPath": "./../icons/caddy.svg"
- },
- "openapi": {
- "iconPath": "./../icons/openapi.svg"
- },
- "openapi_light": {
- "iconPath": "./../icons/openapi_light.svg"
- },
- "swagger": {
- "iconPath": "./../icons/swagger.svg"
- },
- "bun": {
- "iconPath": "./../icons/bun.svg"
- },
- "bun_light": {
- "iconPath": "./../icons/bun_light.svg"
- },
- "antlr": {
- "iconPath": "./../icons/antlr.svg"
- },
- "pinejs": {
- "iconPath": "./../icons/pinejs.svg"
- },
- "nano-staged": {
- "iconPath": "./../icons/nano-staged.svg"
- },
- "nano-staged_light": {
- "iconPath": "./../icons/nano-staged_light.svg"
- },
- "knip": {
- "iconPath": "./../icons/knip.svg"
- },
- "taskfile": {
- "iconPath": "./../icons/taskfile.svg"
- },
- "craco": {
- "iconPath": "./../icons/craco.svg"
- },
- "gamemaker": {
- "iconPath": "./../icons/gamemaker.svg"
- },
- "tldraw": {
- "iconPath": "./../icons/tldraw.svg"
- },
- "tldraw_light": {
- "iconPath": "./../icons/tldraw_light.svg"
- },
- "mercurial": {
- "iconPath": "./../icons/mercurial.svg"
- },
- "deno": {
- "iconPath": "./../icons/deno.svg"
- },
- "deno_light": {
- "iconPath": "./../icons/deno_light.svg"
- },
- "plastic": {
- "iconPath": "./../icons/plastic.svg"
- },
- "typst": {
- "iconPath": "./../icons/typst.svg"
- },
- "unocss": {
- "iconPath": "./../icons/unocss.svg"
- },
- "ifanr-cloud": {
- "iconPath": "./../icons/ifanr-cloud.svg"
- },
- "qwik": {
- "iconPath": "./../icons/qwik.svg"
- },
- "mermaid": {
- "iconPath": "./../icons/mermaid.svg"
- },
- "syncpack": {
- "iconPath": "./../icons/syncpack.svg"
- },
- "werf": {
- "iconPath": "./../icons/werf.svg"
- },
- "roblox": {
- "iconPath": "./../icons/roblox.svg"
- },
- "rojo": {
- "iconPath": "./../icons/rojo.svg"
- },
- "wally": {
- "iconPath": "./../icons/wally.svg"
- },
- "rbxmk": {
- "iconPath": "./../icons/rbxmk.svg"
- },
- "panda": {
- "iconPath": "./../icons/panda.svg"
- },
- "biome": {
- "iconPath": "./../icons/biome.svg"
- },
- "esbuild": {
- "iconPath": "./../icons/esbuild.svg"
- },
- "spwn": {
- "iconPath": "./../icons/spwn.svg"
- },
- "templ": {
- "iconPath": "./../icons/templ.svg"
- },
- "chrome": {
- "iconPath": "./../icons/chrome.svg"
- },
- "stan": {
- "iconPath": "./../icons/stan.svg"
- },
- "abap": {
- "iconPath": "./../icons/abap.svg"
- },
- "drizzle": {
- "iconPath": "./../icons/drizzle.svg"
- },
- "lottie": {
- "iconPath": "./../icons/lottie.svg"
- },
- "puppeteer": {
- "iconPath": "./../icons/puppeteer.svg"
- },
- "apps-script": {
- "iconPath": "./../icons/apps-script.svg"
- },
- "garden": {
- "iconPath": "./../icons/garden.svg"
- },
- "pkl": {
- "iconPath": "./../icons/pkl.svg"
- },
- "kubernetes": {
- "iconPath": "./../icons/kubernetes.svg"
- },
- "phpstan": {
- "iconPath": "./../icons/phpstan.svg"
- },
- "screwdriver": {
- "iconPath": "./../icons/screwdriver.svg"
- },
- "snapcraft": {
- "iconPath": "./../icons/snapcraft.svg"
- },
- "container": {
- "iconPath": "./../icons/container.clone.svg"
- },
- "kcl": {
- "iconPath": "./../icons/kcl.svg"
- },
- "verified": {
- "iconPath": "./../icons/verified.svg"
- },
- "bruno": {
- "iconPath": "./../icons/bruno.svg"
- },
- "cairo": {
- "iconPath": "./../icons/cairo.svg"
- },
- "grafana-alloy": {
- "iconPath": "./../icons/grafana-alloy.svg"
- },
- "clangd": {
- "iconPath": "./../icons/clangd.svg"
- },
- "freemarker": {
- "iconPath": "./../icons/freemarker.svg"
- },
- "markdownlint": {
- "iconPath": "./../icons/markdownlint.svg"
- },
- "tsil": {
- "iconPath": "./../icons/tsil.svg"
- },
- "trigger": {
- "iconPath": "./../icons/trigger.svg"
- },
- "deepsource": {
- "iconPath": "./../icons/deepsource.svg"
- },
- "tape": {
- "iconPath": "./../icons/tape.clone.svg"
- },
- "hurl": {
- "iconPath": "./../icons/hurl.svg"
- },
- "jsr": {
- "iconPath": "./../icons/jsr.svg"
- },
- "jsr_light": {
- "iconPath": "./../icons/jsr_light.svg"
- },
- "coderabbit-ai": {
- "iconPath": "./../icons/coderabbit-ai.svg"
- },
- "gemini-ai": {
- "iconPath": "./../icons/gemini-ai.svg"
- },
- "taze": {
- "iconPath": "./../icons/taze.svg"
- },
- "wxt": {
- "iconPath": "./../icons/wxt.svg"
- },
- "sway": {
- "iconPath": "./../icons/sway.svg"
- },
- "lefthook": {
- "iconPath": "./../icons/lefthook.svg"
- },
- "label": {
- "iconPath": "./../icons/label.svg"
- },
- "zeabur": {
- "iconPath": "./../icons/zeabur.svg"
- },
- "zeabur_light": {
- "iconPath": "./../icons/zeabur_light.svg"
- },
- "copilot": {
- "iconPath": "./../icons/copilot.svg"
- },
- "copilot_light": {
- "iconPath": "./../icons/copilot_light.svg"
- },
- "bench-ts": {
- "iconPath": "./../icons/bench-ts.svg"
- },
- "bench-jsx": {
- "iconPath": "./../icons/bench-jsx.svg"
- },
- "bench-js": {
- "iconPath": "./../icons/bench-js.svg"
- },
- "pre-commit": {
- "iconPath": "./../icons/pre-commit.svg"
- },
- "controller": {
- "iconPath": "./../icons/controller.svg"
- },
- "dependencies-update": {
- "iconPath": "./../icons/dependencies-update.svg"
- },
- "histoire": {
- "iconPath": "./../icons/histoire.svg"
- },
- "installation": {
- "iconPath": "./../icons/installation.svg"
- },
- "github-sponsors": {
- "iconPath": "./../icons/github-sponsors.svg"
- },
- "minecraft-fabric": {
- "iconPath": "./../icons/minecraft-fabric.svg"
- },
- "umi": {
- "iconPath": "./../icons/umi.svg"
- },
- "pm2-ecosystem": {
- "iconPath": "./../icons/pm2-ecosystem.svg"
- },
- "hosts_light": {
- "iconPath": "./../icons/hosts_light.svg"
- },
- "citation": {
- "iconPath": "./../icons/citation.svg"
- },
- "xmake": {
- "iconPath": "./../icons/xmake.svg"
- },
- "subtitles": {
- "iconPath": "./../icons/subtitles.svg"
- },
- "wrangler": {
- "iconPath": "./../icons/wrangler.svg"
- },
- "epub": {
- "iconPath": "./../icons/epub.svg"
- },
- "regedit": {
- "iconPath": "./../icons/regedit.svg"
- },
- "cline": {
- "iconPath": "./../icons/cline.svg"
- },
- "file": {
- "iconPath": "./../icons/file.svg"
- },
- "folder-rust": {
- "iconPath": "./../icons/folder-rust.svg"
- },
- "folder-rust-open": {
- "iconPath": "./../icons/folder-rust-open.svg"
- },
- "folder-robot": {
- "iconPath": "./../icons/folder-robot.svg"
- },
- "folder-robot-open": {
- "iconPath": "./../icons/folder-robot-open.svg"
- },
- "folder-src": {
- "iconPath": "./../icons/folder-src.svg"
- },
- "folder-src-open": {
- "iconPath": "./../icons/folder-src-open.svg"
- },
- "folder-dist": {
- "iconPath": "./../icons/folder-dist.svg"
- },
- "folder-dist-open": {
- "iconPath": "./../icons/folder-dist-open.svg"
- },
- "folder-css": {
- "iconPath": "./../icons/folder-css.svg"
- },
- "folder-css-open": {
- "iconPath": "./../icons/folder-css-open.svg"
- },
- "folder-sass": {
- "iconPath": "./../icons/folder-sass.svg"
- },
- "folder-sass-open": {
- "iconPath": "./../icons/folder-sass-open.svg"
- },
- "folder-television": {
- "iconPath": "./../icons/folder-television.svg"
- },
- "folder-television-open": {
- "iconPath": "./../icons/folder-television-open.svg"
- },
- "folder-desktop": {
- "iconPath": "./../icons/folder-desktop.svg"
- },
- "folder-desktop-open": {
- "iconPath": "./../icons/folder-desktop-open.svg"
- },
- "folder-console": {
- "iconPath": "./../icons/folder-console.svg"
- },
- "folder-console-open": {
- "iconPath": "./../icons/folder-console-open.svg"
- },
- "folder-images": {
- "iconPath": "./../icons/folder-images.svg"
- },
- "folder-images-open": {
- "iconPath": "./../icons/folder-images-open.svg"
- },
- "folder-scripts": {
- "iconPath": "./../icons/folder-scripts.svg"
- },
- "folder-scripts-open": {
- "iconPath": "./../icons/folder-scripts-open.svg"
- },
- "folder-node": {
- "iconPath": "./../icons/folder-node.svg"
- },
- "folder-node-open": {
- "iconPath": "./../icons/folder-node-open.svg"
- },
- "folder-javascript": {
- "iconPath": "./../icons/folder-javascript.svg"
- },
- "folder-javascript-open": {
- "iconPath": "./../icons/folder-javascript-open.svg"
- },
- "folder-json": {
- "iconPath": "./../icons/folder-json.svg"
- },
- "folder-json-open": {
- "iconPath": "./../icons/folder-json-open.svg"
- },
- "folder-font": {
- "iconPath": "./../icons/folder-font.svg"
- },
- "folder-font-open": {
- "iconPath": "./../icons/folder-font-open.svg"
- },
- "folder-bower": {
- "iconPath": "./../icons/folder-bower.svg"
- },
- "folder-bower-open": {
- "iconPath": "./../icons/folder-bower-open.svg"
- },
- "folder-test": {
- "iconPath": "./../icons/folder-test.svg"
- },
- "folder-test-open": {
- "iconPath": "./../icons/folder-test-open.svg"
- },
- "folder-directive": {
- "iconPath": "./../icons/folder-directive.svg"
- },
- "folder-directive-open": {
- "iconPath": "./../icons/folder-directive-open.svg"
- },
- "folder-jinja": {
- "iconPath": "./../icons/folder-jinja.svg"
- },
- "folder-jinja-open": {
- "iconPath": "./../icons/folder-jinja-open.svg"
- },
- "folder-jinja_light": {
- "iconPath": "./../icons/folder-jinja_light.svg"
- },
- "folder-jinja-open_light": {
- "iconPath": "./../icons/folder-jinja-open_light.svg"
- },
- "folder-markdown": {
- "iconPath": "./../icons/folder-markdown.svg"
- },
- "folder-markdown-open": {
- "iconPath": "./../icons/folder-markdown-open.svg"
- },
- "folder-pdm": {
- "iconPath": "./../icons/folder-pdm.svg"
- },
- "folder-pdm-open": {
- "iconPath": "./../icons/folder-pdm-open.svg"
- },
- "folder-php": {
- "iconPath": "./../icons/folder-php.svg"
- },
- "folder-php-open": {
- "iconPath": "./../icons/folder-php-open.svg"
- },
- "folder-phpmailer": {
- "iconPath": "./../icons/folder-phpmailer.svg"
- },
- "folder-phpmailer-open": {
- "iconPath": "./../icons/folder-phpmailer-open.svg"
- },
- "folder-sublime": {
- "iconPath": "./../icons/folder-sublime.svg"
- },
- "folder-sublime-open": {
- "iconPath": "./../icons/folder-sublime-open.svg"
- },
- "folder-docs": {
- "iconPath": "./../icons/folder-docs.svg"
- },
- "folder-docs-open": {
- "iconPath": "./../icons/folder-docs-open.svg"
- },
- "folder-gh-workflows": {
- "iconPath": "./../icons/folder-gh-workflows.svg"
- },
- "folder-gh-workflows-open": {
- "iconPath": "./../icons/folder-gh-workflows-open.svg"
- },
- "folder-git": {
- "iconPath": "./../icons/folder-git.svg"
- },
- "folder-git-open": {
- "iconPath": "./../icons/folder-git-open.svg"
- },
- "folder-github": {
- "iconPath": "./../icons/folder-github.svg"
- },
- "folder-github-open": {
- "iconPath": "./../icons/folder-github-open.svg"
- },
- "folder-gitea": {
- "iconPath": "./../icons/folder-gitea.svg"
- },
- "folder-gitea-open": {
- "iconPath": "./../icons/folder-gitea-open.svg"
- },
- "folder-gitlab": {
- "iconPath": "./../icons/folder-gitlab.svg"
- },
- "folder-gitlab-open": {
- "iconPath": "./../icons/folder-gitlab-open.svg"
- },
- "folder-forgejo": {
- "iconPath": "./../icons/folder-forgejo.svg"
- },
- "folder-forgejo-open": {
- "iconPath": "./../icons/folder-forgejo-open.svg"
- },
- "folder-vscode": {
- "iconPath": "./../icons/folder-vscode.svg"
- },
- "folder-vscode-open": {
- "iconPath": "./../icons/folder-vscode-open.svg"
- },
- "folder-views": {
- "iconPath": "./../icons/folder-views.svg"
- },
- "folder-views-open": {
- "iconPath": "./../icons/folder-views-open.svg"
- },
- "folder-vue": {
- "iconPath": "./../icons/folder-vue.svg"
- },
- "folder-vue-open": {
- "iconPath": "./../icons/folder-vue-open.svg"
- },
- "folder-vuepress": {
- "iconPath": "./../icons/folder-vuepress.svg"
- },
- "folder-vuepress-open": {
- "iconPath": "./../icons/folder-vuepress-open.svg"
- },
- "folder-expo": {
- "iconPath": "./../icons/folder-expo.svg"
- },
- "folder-expo-open": {
- "iconPath": "./../icons/folder-expo-open.svg"
- },
- "folder-config": {
- "iconPath": "./../icons/folder-config.svg"
- },
- "folder-config-open": {
- "iconPath": "./../icons/folder-config-open.svg"
- },
- "folder-i18n": {
- "iconPath": "./../icons/folder-i18n.svg"
- },
- "folder-i18n-open": {
- "iconPath": "./../icons/folder-i18n-open.svg"
- },
- "folder-components": {
- "iconPath": "./../icons/folder-components.svg"
- },
- "folder-components-open": {
- "iconPath": "./../icons/folder-components-open.svg"
- },
- "folder-verdaccio": {
- "iconPath": "./../icons/folder-verdaccio.svg"
- },
- "folder-verdaccio-open": {
- "iconPath": "./../icons/folder-verdaccio-open.svg"
- },
- "folder-aurelia": {
- "iconPath": "./../icons/folder-aurelia.svg"
- },
- "folder-aurelia-open": {
- "iconPath": "./../icons/folder-aurelia-open.svg"
- },
- "folder-resource": {
- "iconPath": "./../icons/folder-resource.svg"
- },
- "folder-resource-open": {
- "iconPath": "./../icons/folder-resource-open.svg"
- },
- "folder-lib": {
- "iconPath": "./../icons/folder-lib.svg"
- },
- "folder-lib-open": {
- "iconPath": "./../icons/folder-lib-open.svg"
- },
- "folder-theme": {
- "iconPath": "./../icons/folder-theme.svg"
- },
- "folder-theme-open": {
- "iconPath": "./../icons/folder-theme-open.svg"
- },
- "folder-webpack": {
- "iconPath": "./../icons/folder-webpack.svg"
- },
- "folder-webpack-open": {
- "iconPath": "./../icons/folder-webpack-open.svg"
- },
- "folder-global": {
- "iconPath": "./../icons/folder-global.svg"
- },
- "folder-global-open": {
- "iconPath": "./../icons/folder-global-open.svg"
- },
- "folder-public": {
- "iconPath": "./../icons/folder-public.svg"
- },
- "folder-public-open": {
- "iconPath": "./../icons/folder-public-open.svg"
- },
- "folder-include": {
- "iconPath": "./../icons/folder-include.svg"
- },
- "folder-include-open": {
- "iconPath": "./../icons/folder-include-open.svg"
- },
- "folder-docker": {
- "iconPath": "./../icons/folder-docker.svg"
- },
- "folder-docker-open": {
- "iconPath": "./../icons/folder-docker-open.svg"
- },
- "folder-ngrx-store": {
- "iconPath": "./../icons/folder-ngrx-store.svg"
- },
- "folder-ngrx-store-open": {
- "iconPath": "./../icons/folder-ngrx-store-open.svg"
- },
- "folder-ngrx-effects": {
- "iconPath": "./../icons/folder-ngrx-effects.clone.svg"
- },
- "folder-ngrx-effects-open": {
- "iconPath": "./../icons/folder-ngrx-effects-open.clone.svg"
- },
- "folder-ngrx-state": {
- "iconPath": "./../icons/folder-ngrx-state.clone.svg"
- },
- "folder-ngrx-state-open": {
- "iconPath": "./../icons/folder-ngrx-state-open.clone.svg"
- },
- "folder-ngrx-reducer": {
- "iconPath": "./../icons/folder-ngrx-reducer.clone.svg"
- },
- "folder-ngrx-reducer-open": {
- "iconPath": "./../icons/folder-ngrx-reducer-open.clone.svg"
- },
- "folder-ngrx-actions": {
- "iconPath": "./../icons/folder-ngrx-actions.clone.svg"
- },
- "folder-ngrx-actions-open": {
- "iconPath": "./../icons/folder-ngrx-actions-open.clone.svg"
- },
- "folder-ngrx-entities": {
- "iconPath": "./../icons/folder-ngrx-entities.clone.svg"
- },
- "folder-ngrx-entities-open": {
- "iconPath": "./../icons/folder-ngrx-entities-open.clone.svg"
- },
- "folder-ngrx-selectors": {
- "iconPath": "./../icons/folder-ngrx-selectors.clone.svg"
- },
- "folder-ngrx-selectors-open": {
- "iconPath": "./../icons/folder-ngrx-selectors-open.clone.svg"
- },
- "folder-redux-reducer": {
- "iconPath": "./../icons/folder-redux-reducer.svg"
- },
- "folder-redux-reducer-open": {
- "iconPath": "./../icons/folder-redux-reducer-open.svg"
- },
- "folder-redux-actions": {
- "iconPath": "./../icons/folder-redux-actions.clone.svg"
- },
- "folder-redux-actions-open": {
- "iconPath": "./../icons/folder-redux-actions-open.clone.svg"
- },
- "folder-redux-selector": {
- "iconPath": "./../icons/folder-redux-selector.clone.svg"
- },
- "folder-redux-selector-open": {
- "iconPath": "./../icons/folder-redux-selector-open.clone.svg"
- },
- "folder-redux-store": {
- "iconPath": "./../icons/folder-redux-store.clone.svg"
- },
- "folder-redux-store-open": {
- "iconPath": "./../icons/folder-redux-store-open.clone.svg"
- },
- "folder-react-components": {
- "iconPath": "./../icons/folder-react-components.svg"
- },
- "folder-react-components-open": {
- "iconPath": "./../icons/folder-react-components-open.svg"
- },
- "folder-astro": {
- "iconPath": "./../icons/folder-astro.svg"
- },
- "folder-astro-open": {
- "iconPath": "./../icons/folder-astro-open.svg"
- },
- "folder-database": {
- "iconPath": "./../icons/folder-database.svg"
- },
- "folder-database-open": {
- "iconPath": "./../icons/folder-database-open.svg"
- },
- "folder-log": {
- "iconPath": "./../icons/folder-log.svg"
- },
- "folder-log-open": {
- "iconPath": "./../icons/folder-log-open.svg"
- },
- "folder-target": {
- "iconPath": "./../icons/folder-target.svg"
- },
- "folder-target-open": {
- "iconPath": "./../icons/folder-target-open.svg"
- },
- "folder-temp": {
- "iconPath": "./../icons/folder-temp.svg"
- },
- "folder-temp-open": {
- "iconPath": "./../icons/folder-temp-open.svg"
- },
- "folder-aws": {
- "iconPath": "./../icons/folder-aws.svg"
- },
- "folder-aws-open": {
- "iconPath": "./../icons/folder-aws-open.svg"
- },
- "folder-audio": {
- "iconPath": "./../icons/folder-audio.svg"
- },
- "folder-audio-open": {
- "iconPath": "./../icons/folder-audio-open.svg"
- },
- "folder-video": {
- "iconPath": "./../icons/folder-video.svg"
- },
- "folder-video-open": {
- "iconPath": "./../icons/folder-video-open.svg"
- },
- "folder-kubernetes": {
- "iconPath": "./../icons/folder-kubernetes.svg"
- },
- "folder-kubernetes-open": {
- "iconPath": "./../icons/folder-kubernetes-open.svg"
- },
- "folder-import": {
- "iconPath": "./../icons/folder-import.svg"
- },
- "folder-import-open": {
- "iconPath": "./../icons/folder-import-open.svg"
- },
- "folder-export": {
- "iconPath": "./../icons/folder-export.svg"
- },
- "folder-export-open": {
- "iconPath": "./../icons/folder-export-open.svg"
- },
- "folder-wakatime": {
- "iconPath": "./../icons/folder-wakatime.svg"
- },
- "folder-wakatime-open": {
- "iconPath": "./../icons/folder-wakatime-open.svg"
- },
- "folder-circleci": {
- "iconPath": "./../icons/folder-circleci.svg"
- },
- "folder-circleci-open": {
- "iconPath": "./../icons/folder-circleci-open.svg"
- },
- "folder-wordpress": {
- "iconPath": "./../icons/folder-wordpress.svg"
- },
- "folder-wordpress-open": {
- "iconPath": "./../icons/folder-wordpress-open.svg"
- },
- "folder-gradle": {
- "iconPath": "./../icons/folder-gradle.svg"
- },
- "folder-gradle-open": {
- "iconPath": "./../icons/folder-gradle-open.svg"
- },
- "folder-coverage": {
- "iconPath": "./../icons/folder-coverage.svg"
- },
- "folder-coverage-open": {
- "iconPath": "./../icons/folder-coverage-open.svg"
- },
- "folder-class": {
- "iconPath": "./../icons/folder-class.svg"
- },
- "folder-class-open": {
- "iconPath": "./../icons/folder-class-open.svg"
- },
- "folder-other": {
- "iconPath": "./../icons/folder-other.svg"
- },
- "folder-other-open": {
- "iconPath": "./../icons/folder-other-open.svg"
- },
- "folder-lua": {
- "iconPath": "./../icons/folder-lua.svg"
- },
- "folder-lua-open": {
- "iconPath": "./../icons/folder-lua-open.svg"
- },
- "folder-turborepo": {
- "iconPath": "./../icons/folder-turborepo.svg"
- },
- "folder-turborepo-open": {
- "iconPath": "./../icons/folder-turborepo-open.svg"
- },
- "folder-typescript": {
- "iconPath": "./../icons/folder-typescript.svg"
- },
- "folder-typescript-open": {
- "iconPath": "./../icons/folder-typescript-open.svg"
- },
- "folder-graphql": {
- "iconPath": "./../icons/folder-graphql.svg"
- },
- "folder-graphql-open": {
- "iconPath": "./../icons/folder-graphql-open.svg"
- },
- "folder-routes": {
- "iconPath": "./../icons/folder-routes.svg"
- },
- "folder-routes-open": {
- "iconPath": "./../icons/folder-routes-open.svg"
- },
- "folder-ci": {
- "iconPath": "./../icons/folder-ci.svg"
- },
- "folder-ci-open": {
- "iconPath": "./../icons/folder-ci-open.svg"
- },
- "folder-benchmark": {
- "iconPath": "./../icons/folder-benchmark.svg"
- },
- "folder-benchmark-open": {
- "iconPath": "./../icons/folder-benchmark-open.svg"
- },
- "folder-messages": {
- "iconPath": "./../icons/folder-messages.svg"
- },
- "folder-messages-open": {
- "iconPath": "./../icons/folder-messages-open.svg"
- },
- "folder-less": {
- "iconPath": "./../icons/folder-less.svg"
- },
- "folder-less-open": {
- "iconPath": "./../icons/folder-less-open.svg"
- },
- "folder-gulp": {
- "iconPath": "./../icons/folder-gulp.svg"
- },
- "folder-gulp-open": {
- "iconPath": "./../icons/folder-gulp-open.svg"
- },
- "folder-python": {
- "iconPath": "./../icons/folder-python.svg"
- },
- "folder-python-open": {
- "iconPath": "./../icons/folder-python-open.svg"
- },
- "folder-sandbox": {
- "iconPath": "./../icons/folder-sandbox.svg"
- },
- "folder-sandbox-open": {
- "iconPath": "./../icons/folder-sandbox-open.svg"
- },
- "folder-scons": {
- "iconPath": "./../icons/folder-scons.svg"
- },
- "folder-scons-open": {
- "iconPath": "./../icons/folder-scons-open.svg"
- },
- "folder-mojo": {
- "iconPath": "./../icons/folder-mojo.svg"
- },
- "folder-mojo-open": {
- "iconPath": "./../icons/folder-mojo-open.svg"
- },
- "folder-moon": {
- "iconPath": "./../icons/folder-moon.svg"
- },
- "folder-moon-open": {
- "iconPath": "./../icons/folder-moon-open.svg"
- },
- "folder-debug": {
- "iconPath": "./../icons/folder-debug.svg"
- },
- "folder-debug-open": {
- "iconPath": "./../icons/folder-debug-open.svg"
- },
- "folder-fastlane": {
- "iconPath": "./../icons/folder-fastlane.svg"
- },
- "folder-fastlane-open": {
- "iconPath": "./../icons/folder-fastlane-open.svg"
- },
- "folder-plugin": {
- "iconPath": "./../icons/folder-plugin.svg"
- },
- "folder-plugin-open": {
- "iconPath": "./../icons/folder-plugin-open.svg"
- },
- "folder-middleware": {
- "iconPath": "./../icons/folder-middleware.svg"
- },
- "folder-middleware-open": {
- "iconPath": "./../icons/folder-middleware-open.svg"
- },
- "folder-controller": {
- "iconPath": "./../icons/folder-controller.svg"
- },
- "folder-controller-open": {
- "iconPath": "./../icons/folder-controller-open.svg"
- },
- "folder-ansible": {
- "iconPath": "./../icons/folder-ansible.svg"
- },
- "folder-ansible-open": {
- "iconPath": "./../icons/folder-ansible-open.svg"
- },
- "folder-server": {
- "iconPath": "./../icons/folder-server.svg"
- },
- "folder-server-open": {
- "iconPath": "./../icons/folder-server-open.svg"
- },
- "folder-client": {
- "iconPath": "./../icons/folder-client.svg"
- },
- "folder-client-open": {
- "iconPath": "./../icons/folder-client-open.svg"
- },
- "folder-tasks": {
- "iconPath": "./../icons/folder-tasks.svg"
- },
- "folder-tasks-open": {
- "iconPath": "./../icons/folder-tasks-open.svg"
- },
- "folder-android": {
- "iconPath": "./../icons/folder-android.svg"
- },
- "folder-android-open": {
- "iconPath": "./../icons/folder-android-open.svg"
- },
- "folder-ios": {
- "iconPath": "./../icons/folder-ios.svg"
- },
- "folder-ios-open": {
- "iconPath": "./../icons/folder-ios-open.svg"
- },
- "folder-ui": {
- "iconPath": "./../icons/folder-ui.svg"
- },
- "folder-ui-open": {
- "iconPath": "./../icons/folder-ui-open.svg"
- },
- "folder-upload": {
- "iconPath": "./../icons/folder-upload.svg"
- },
- "folder-upload-open": {
- "iconPath": "./../icons/folder-upload-open.svg"
- },
- "folder-download": {
- "iconPath": "./../icons/folder-download.svg"
- },
- "folder-download-open": {
- "iconPath": "./../icons/folder-download-open.svg"
- },
- "folder-tools": {
- "iconPath": "./../icons/folder-tools.svg"
- },
- "folder-tools-open": {
- "iconPath": "./../icons/folder-tools-open.svg"
- },
- "folder-helper": {
- "iconPath": "./../icons/folder-helper.svg"
- },
- "folder-helper-open": {
- "iconPath": "./../icons/folder-helper-open.svg"
- },
- "folder-serverless": {
- "iconPath": "./../icons/folder-serverless.svg"
- },
- "folder-serverless-open": {
- "iconPath": "./../icons/folder-serverless-open.svg"
- },
- "folder-api": {
- "iconPath": "./../icons/folder-api.svg"
- },
- "folder-api-open": {
- "iconPath": "./../icons/folder-api-open.svg"
- },
- "folder-app": {
- "iconPath": "./../icons/folder-app.svg"
- },
- "folder-app-open": {
- "iconPath": "./../icons/folder-app-open.svg"
- },
- "folder-apollo": {
- "iconPath": "./../icons/folder-apollo.svg"
- },
- "folder-apollo-open": {
- "iconPath": "./../icons/folder-apollo-open.svg"
- },
- "folder-archive": {
- "iconPath": "./../icons/folder-archive.svg"
- },
- "folder-archive-open": {
- "iconPath": "./../icons/folder-archive-open.svg"
- },
- "folder-batch": {
- "iconPath": "./../icons/folder-batch.svg"
- },
- "folder-batch-open": {
- "iconPath": "./../icons/folder-batch-open.svg"
- },
- "folder-buildkite": {
- "iconPath": "./../icons/folder-buildkite.svg"
- },
- "folder-buildkite-open": {
- "iconPath": "./../icons/folder-buildkite-open.svg"
- },
- "folder-cluster": {
- "iconPath": "./../icons/folder-cluster.svg"
- },
- "folder-cluster-open": {
- "iconPath": "./../icons/folder-cluster-open.svg"
- },
- "folder-command": {
- "iconPath": "./../icons/folder-command.svg"
- },
- "folder-command-open": {
- "iconPath": "./../icons/folder-command-open.svg"
- },
- "folder-constant": {
- "iconPath": "./../icons/folder-constant.svg"
- },
- "folder-constant-open": {
- "iconPath": "./../icons/folder-constant-open.svg"
- },
- "folder-container": {
- "iconPath": "./../icons/folder-container.svg"
- },
- "folder-container-open": {
- "iconPath": "./../icons/folder-container-open.svg"
- },
- "folder-content": {
- "iconPath": "./../icons/folder-content.svg"
- },
- "folder-content-open": {
- "iconPath": "./../icons/folder-content-open.svg"
- },
- "folder-context": {
- "iconPath": "./../icons/folder-context.svg"
- },
- "folder-context-open": {
- "iconPath": "./../icons/folder-context-open.svg"
- },
- "folder-core": {
- "iconPath": "./../icons/folder-core.svg"
- },
- "folder-core-open": {
- "iconPath": "./../icons/folder-core-open.svg"
- },
- "folder-delta": {
- "iconPath": "./../icons/folder-delta.svg"
- },
- "folder-delta-open": {
- "iconPath": "./../icons/folder-delta-open.svg"
- },
- "folder-dump": {
- "iconPath": "./../icons/folder-dump.svg"
- },
- "folder-dump-open": {
- "iconPath": "./../icons/folder-dump-open.svg"
- },
- "folder-examples": {
- "iconPath": "./../icons/folder-examples.svg"
- },
- "folder-examples-open": {
- "iconPath": "./../icons/folder-examples-open.svg"
- },
- "folder-environment": {
- "iconPath": "./../icons/folder-environment.svg"
- },
- "folder-environment-open": {
- "iconPath": "./../icons/folder-environment-open.svg"
- },
- "folder-functions": {
- "iconPath": "./../icons/folder-functions.svg"
- },
- "folder-functions-open": {
- "iconPath": "./../icons/folder-functions-open.svg"
- },
- "folder-generator": {
- "iconPath": "./../icons/folder-generator.svg"
- },
- "folder-generator-open": {
- "iconPath": "./../icons/folder-generator-open.svg"
- },
- "folder-hook": {
- "iconPath": "./../icons/folder-hook.svg"
- },
- "folder-hook-open": {
- "iconPath": "./../icons/folder-hook-open.svg"
- },
- "folder-job": {
- "iconPath": "./../icons/folder-job.svg"
- },
- "folder-job-open": {
- "iconPath": "./../icons/folder-job-open.svg"
- },
- "folder-keys": {
- "iconPath": "./../icons/folder-keys.svg"
- },
- "folder-keys-open": {
- "iconPath": "./../icons/folder-keys-open.svg"
- },
- "folder-layout": {
- "iconPath": "./../icons/folder-layout.svg"
- },
- "folder-layout-open": {
- "iconPath": "./../icons/folder-layout-open.svg"
- },
- "folder-mail": {
- "iconPath": "./../icons/folder-mail.svg"
- },
- "folder-mail-open": {
- "iconPath": "./../icons/folder-mail-open.svg"
- },
- "folder-mappings": {
- "iconPath": "./../icons/folder-mappings.svg"
- },
- "folder-mappings-open": {
- "iconPath": "./../icons/folder-mappings-open.svg"
- },
- "folder-meta": {
- "iconPath": "./../icons/folder-meta.svg"
- },
- "folder-meta-open": {
- "iconPath": "./../icons/folder-meta-open.svg"
- },
- "folder-changesets": {
- "iconPath": "./../icons/folder-changesets.svg"
- },
- "folder-changesets-open": {
- "iconPath": "./../icons/folder-changesets-open.svg"
- },
- "folder-packages": {
- "iconPath": "./../icons/folder-packages.svg"
- },
- "folder-packages-open": {
- "iconPath": "./../icons/folder-packages-open.svg"
- },
- "folder-shared": {
- "iconPath": "./../icons/folder-shared.svg"
- },
- "folder-shared-open": {
- "iconPath": "./../icons/folder-shared-open.svg"
- },
- "folder-shader": {
- "iconPath": "./../icons/folder-shader.svg"
- },
- "folder-shader-open": {
- "iconPath": "./../icons/folder-shader-open.svg"
- },
- "folder-stack": {
- "iconPath": "./../icons/folder-stack.svg"
- },
- "folder-stack-open": {
- "iconPath": "./../icons/folder-stack-open.svg"
- },
- "folder-template": {
- "iconPath": "./../icons/folder-template.svg"
- },
- "folder-template-open": {
- "iconPath": "./../icons/folder-template-open.svg"
- },
- "folder-utils": {
- "iconPath": "./../icons/folder-utils.svg"
- },
- "folder-utils-open": {
- "iconPath": "./../icons/folder-utils-open.svg"
- },
- "folder-supabase": {
- "iconPath": "./../icons/folder-supabase.svg"
- },
- "folder-supabase-open": {
- "iconPath": "./../icons/folder-supabase-open.svg"
- },
- "folder-private": {
- "iconPath": "./../icons/folder-private.svg"
- },
- "folder-private-open": {
- "iconPath": "./../icons/folder-private-open.svg"
- },
- "folder-linux": {
- "iconPath": "./../icons/folder-linux.svg"
- },
- "folder-linux-open": {
- "iconPath": "./../icons/folder-linux-open.svg"
- },
- "folder-windows": {
- "iconPath": "./../icons/folder-windows.svg"
- },
- "folder-windows-open": {
- "iconPath": "./../icons/folder-windows-open.svg"
- },
- "folder-macos": {
- "iconPath": "./../icons/folder-macos.svg"
- },
- "folder-macos-open": {
- "iconPath": "./../icons/folder-macos-open.svg"
- },
- "folder-error": {
- "iconPath": "./../icons/folder-error.svg"
- },
- "folder-error-open": {
- "iconPath": "./../icons/folder-error-open.svg"
- },
- "folder-event": {
- "iconPath": "./../icons/folder-event.svg"
- },
- "folder-event-open": {
- "iconPath": "./../icons/folder-event-open.svg"
- },
- "folder-secure": {
- "iconPath": "./../icons/folder-secure.svg"
- },
- "folder-secure-open": {
- "iconPath": "./../icons/folder-secure-open.svg"
- },
- "folder-custom": {
- "iconPath": "./../icons/folder-custom.svg"
- },
- "folder-custom-open": {
- "iconPath": "./../icons/folder-custom-open.svg"
- },
- "folder-mock": {
- "iconPath": "./../icons/folder-mock.svg"
- },
- "folder-mock-open": {
- "iconPath": "./../icons/folder-mock-open.svg"
- },
- "folder-syntax": {
- "iconPath": "./../icons/folder-syntax.svg"
- },
- "folder-syntax-open": {
- "iconPath": "./../icons/folder-syntax-open.svg"
- },
- "folder-vm": {
- "iconPath": "./../icons/folder-vm.svg"
- },
- "folder-vm-open": {
- "iconPath": "./../icons/folder-vm-open.svg"
- },
- "folder-stylus": {
- "iconPath": "./../icons/folder-stylus.svg"
- },
- "folder-stylus-open": {
- "iconPath": "./../icons/folder-stylus-open.svg"
- },
- "folder-flow": {
- "iconPath": "./../icons/folder-flow.svg"
- },
- "folder-flow-open": {
- "iconPath": "./../icons/folder-flow-open.svg"
- },
- "folder-rules": {
- "iconPath": "./../icons/folder-rules.svg"
- },
- "folder-rules-open": {
- "iconPath": "./../icons/folder-rules-open.svg"
- },
- "folder-review": {
- "iconPath": "./../icons/folder-review.svg"
- },
- "folder-review-open": {
- "iconPath": "./../icons/folder-review-open.svg"
- },
- "folder-animation": {
- "iconPath": "./../icons/folder-animation.svg"
- },
- "folder-animation-open": {
- "iconPath": "./../icons/folder-animation-open.svg"
- },
- "folder-guard": {
- "iconPath": "./../icons/folder-guard.svg"
- },
- "folder-guard-open": {
- "iconPath": "./../icons/folder-guard-open.svg"
- },
- "folder-prisma": {
- "iconPath": "./../icons/folder-prisma.svg"
- },
- "folder-prisma-open": {
- "iconPath": "./../icons/folder-prisma-open.svg"
- },
- "folder-pipe": {
- "iconPath": "./../icons/folder-pipe.svg"
- },
- "folder-pipe-open": {
- "iconPath": "./../icons/folder-pipe-open.svg"
- },
- "folder-svg": {
- "iconPath": "./../icons/folder-svg.svg"
- },
- "folder-svg-open": {
- "iconPath": "./../icons/folder-svg-open.svg"
- },
- "folder-vuex-store": {
- "iconPath": "./../icons/folder-vuex-store.svg"
- },
- "folder-vuex-store-open": {
- "iconPath": "./../icons/folder-vuex-store-open.svg"
- },
- "folder-nuxt": {
- "iconPath": "./../icons/folder-nuxt.svg"
- },
- "folder-nuxt-open": {
- "iconPath": "./../icons/folder-nuxt-open.svg"
- },
- "folder-vue-directives": {
- "iconPath": "./../icons/folder-vue-directives.svg"
- },
- "folder-vue-directives-open": {
- "iconPath": "./../icons/folder-vue-directives-open.svg"
- },
- "folder-terraform": {
- "iconPath": "./../icons/folder-terraform.svg"
- },
- "folder-terraform-open": {
- "iconPath": "./../icons/folder-terraform-open.svg"
- },
- "folder-mobile": {
- "iconPath": "./../icons/folder-mobile.svg"
- },
- "folder-mobile-open": {
- "iconPath": "./../icons/folder-mobile-open.svg"
- },
- "folder-stencil": {
- "iconPath": "./../icons/folder-stencil.svg"
- },
- "folder-stencil-open": {
- "iconPath": "./../icons/folder-stencil-open.svg"
- },
- "folder-firebase": {
- "iconPath": "./../icons/folder-firebase.svg"
- },
- "folder-firebase-open": {
- "iconPath": "./../icons/folder-firebase-open.svg"
- },
- "folder-svelte": {
- "iconPath": "./../icons/folder-svelte.svg"
- },
- "folder-svelte-open": {
- "iconPath": "./../icons/folder-svelte-open.svg"
- },
- "folder-update": {
- "iconPath": "./../icons/folder-update.svg"
- },
- "folder-update-open": {
- "iconPath": "./../icons/folder-update-open.svg"
- },
- "folder-intellij": {
- "iconPath": "./../icons/folder-intellij.svg"
- },
- "folder-intellij-open": {
- "iconPath": "./../icons/folder-intellij-open.svg"
- },
- "folder-intellij_light": {
- "iconPath": "./../icons/folder-intellij_light.svg"
- },
- "folder-intellij-open_light": {
- "iconPath": "./../icons/folder-intellij-open_light.svg"
- },
- "folder-azure-pipelines": {
- "iconPath": "./../icons/folder-azure-pipelines.svg"
- },
- "folder-azure-pipelines-open": {
- "iconPath": "./../icons/folder-azure-pipelines-open.svg"
- },
- "folder-mjml": {
- "iconPath": "./../icons/folder-mjml.svg"
- },
- "folder-mjml-open": {
- "iconPath": "./../icons/folder-mjml-open.svg"
- },
- "folder-admin": {
- "iconPath": "./../icons/folder-admin.svg"
- },
- "folder-admin-open": {
- "iconPath": "./../icons/folder-admin-open.svg"
- },
- "folder-jupyter": {
- "iconPath": "./../icons/folder-jupyter.svg"
- },
- "folder-jupyter-open": {
- "iconPath": "./../icons/folder-jupyter-open.svg"
- },
- "folder-scala": {
- "iconPath": "./../icons/folder-scala.svg"
- },
- "folder-scala-open": {
- "iconPath": "./../icons/folder-scala-open.svg"
- },
- "folder-connection": {
- "iconPath": "./../icons/folder-connection.svg"
- },
- "folder-connection-open": {
- "iconPath": "./../icons/folder-connection-open.svg"
- },
- "folder-quasar": {
- "iconPath": "./../icons/folder-quasar.svg"
- },
- "folder-quasar-open": {
- "iconPath": "./../icons/folder-quasar-open.svg"
- },
- "folder-next": {
- "iconPath": "./../icons/folder-next.svg"
- },
- "folder-next-open": {
- "iconPath": "./../icons/folder-next-open.svg"
- },
- "folder-cobol": {
- "iconPath": "./../icons/folder-cobol.svg"
- },
- "folder-cobol-open": {
- "iconPath": "./../icons/folder-cobol-open.svg"
- },
- "folder-yarn": {
- "iconPath": "./../icons/folder-yarn.svg"
- },
- "folder-yarn-open": {
- "iconPath": "./../icons/folder-yarn-open.svg"
- },
- "folder-husky": {
- "iconPath": "./../icons/folder-husky.svg"
- },
- "folder-husky-open": {
- "iconPath": "./../icons/folder-husky-open.svg"
- },
- "folder-storybook": {
- "iconPath": "./../icons/folder-storybook.svg"
- },
- "folder-storybook-open": {
- "iconPath": "./../icons/folder-storybook-open.svg"
- },
- "folder-base": {
- "iconPath": "./../icons/folder-base.svg"
- },
- "folder-base-open": {
- "iconPath": "./../icons/folder-base-open.svg"
- },
- "folder-cart": {
- "iconPath": "./../icons/folder-cart.svg"
- },
- "folder-cart-open": {
- "iconPath": "./../icons/folder-cart-open.svg"
- },
- "folder-home": {
- "iconPath": "./../icons/folder-home.svg"
- },
- "folder-home-open": {
- "iconPath": "./../icons/folder-home-open.svg"
- },
- "folder-project": {
- "iconPath": "./../icons/folder-project.svg"
- },
- "folder-project-open": {
- "iconPath": "./../icons/folder-project-open.svg"
- },
- "folder-interface": {
- "iconPath": "./../icons/folder-interface.svg"
- },
- "folder-interface-open": {
- "iconPath": "./../icons/folder-interface-open.svg"
- },
- "folder-netlify": {
- "iconPath": "./../icons/folder-netlify.svg"
- },
- "folder-netlify-open": {
- "iconPath": "./../icons/folder-netlify-open.svg"
- },
- "folder-enum": {
- "iconPath": "./../icons/folder-enum.svg"
- },
- "folder-enum-open": {
- "iconPath": "./../icons/folder-enum-open.svg"
- },
- "folder-contract": {
- "iconPath": "./../icons/folder-contract.svg"
- },
- "folder-contract-open": {
- "iconPath": "./../icons/folder-contract-open.svg"
- },
- "folder-helm": {
- "iconPath": "./../icons/folder-helm.svg"
- },
- "folder-helm-open": {
- "iconPath": "./../icons/folder-helm-open.svg"
- },
- "folder-queue": {
- "iconPath": "./../icons/folder-queue.svg"
- },
- "folder-queue-open": {
- "iconPath": "./../icons/folder-queue-open.svg"
- },
- "folder-vercel": {
- "iconPath": "./../icons/folder-vercel.svg"
- },
- "folder-vercel-open": {
- "iconPath": "./../icons/folder-vercel-open.svg"
- },
- "folder-cypress": {
- "iconPath": "./../icons/folder-cypress.svg"
- },
- "folder-cypress-open": {
- "iconPath": "./../icons/folder-cypress-open.svg"
- },
- "folder-decorators": {
- "iconPath": "./../icons/folder-decorators.svg"
- },
- "folder-decorators-open": {
- "iconPath": "./../icons/folder-decorators-open.svg"
- },
- "folder-java": {
- "iconPath": "./../icons/folder-java.svg"
- },
- "folder-java-open": {
- "iconPath": "./../icons/folder-java-open.svg"
- },
- "folder-resolver": {
- "iconPath": "./../icons/folder-resolver.svg"
- },
- "folder-resolver-open": {
- "iconPath": "./../icons/folder-resolver-open.svg"
- },
- "folder-angular": {
- "iconPath": "./../icons/folder-angular.svg"
- },
- "folder-angular-open": {
- "iconPath": "./../icons/folder-angular-open.svg"
- },
- "folder-unity": {
- "iconPath": "./../icons/folder-unity.svg"
- },
- "folder-unity-open": {
- "iconPath": "./../icons/folder-unity-open.svg"
- },
- "folder-pdf": {
- "iconPath": "./../icons/folder-pdf.svg"
- },
- "folder-pdf-open": {
- "iconPath": "./../icons/folder-pdf-open.svg"
- },
- "folder-proto": {
- "iconPath": "./../icons/folder-proto.svg"
- },
- "folder-proto-open": {
- "iconPath": "./../icons/folder-proto-open.svg"
- },
- "folder-plastic": {
- "iconPath": "./../icons/folder-plastic.svg"
- },
- "folder-plastic-open": {
- "iconPath": "./../icons/folder-plastic-open.svg"
- },
- "folder-gamemaker": {
- "iconPath": "./../icons/folder-gamemaker.svg"
- },
- "folder-gamemaker-open": {
- "iconPath": "./../icons/folder-gamemaker-open.svg"
- },
- "folder-mercurial": {
- "iconPath": "./../icons/folder-mercurial.svg"
- },
- "folder-mercurial-open": {
- "iconPath": "./../icons/folder-mercurial-open.svg"
- },
- "folder-godot": {
- "iconPath": "./../icons/folder-godot.svg"
- },
- "folder-godot-open": {
- "iconPath": "./../icons/folder-godot-open.svg"
- },
- "folder-lottie": {
- "iconPath": "./../icons/folder-lottie.svg"
- },
- "folder-lottie-open": {
- "iconPath": "./../icons/folder-lottie-open.svg"
- },
- "folder-taskfile": {
- "iconPath": "./../icons/folder-taskfile.svg"
- },
- "folder-taskfile-open": {
- "iconPath": "./../icons/folder-taskfile-open.svg"
- },
- "folder-drizzle": {
- "iconPath": "./../icons/folder-drizzle.svg"
- },
- "folder-drizzle-open": {
- "iconPath": "./../icons/folder-drizzle-open.svg"
- },
- "folder-cloudflare": {
- "iconPath": "./../icons/folder-cloudflare.svg"
- },
- "folder-cloudflare-open": {
- "iconPath": "./../icons/folder-cloudflare-open.svg"
- },
- "folder-seeders": {
- "iconPath": "./../icons/folder-seeders.svg"
- },
- "folder-seeders-open": {
- "iconPath": "./../icons/folder-seeders-open.svg"
- },
- "folder-store": {
- "iconPath": "./../icons/folder-store.svg"
- },
- "folder-store-open": {
- "iconPath": "./../icons/folder-store-open.svg"
- },
- "folder-bicep": {
- "iconPath": "./../icons/folder-bicep.svg"
- },
- "folder-bicep-open": {
- "iconPath": "./../icons/folder-bicep-open.svg"
- },
- "folder-snapcraft": {
- "iconPath": "./../icons/folder-snapcraft.svg"
- },
- "folder-snapcraft-open": {
- "iconPath": "./../icons/folder-snapcraft-open.svg"
- },
- "folder-development": {
- "iconPath": "./../icons/folder-development.clone.svg"
- },
- "folder-development-open": {
- "iconPath": "./../icons/folder-development-open.clone.svg"
- },
- "folder-flutter": {
- "iconPath": "./../icons/folder-flutter.svg"
- },
- "folder-flutter-open": {
- "iconPath": "./../icons/folder-flutter-open.svg"
- },
- "folder-snippet": {
- "iconPath": "./../icons/folder-snippet.svg"
- },
- "folder-snippet-open": {
- "iconPath": "./../icons/folder-snippet-open.svg"
- },
- "folder-element": {
- "iconPath": "./../icons/folder-element.svg"
- },
- "folder-element-open": {
- "iconPath": "./../icons/folder-element-open.svg"
- },
- "folder-src-tauri": {
- "iconPath": "./../icons/folder-src-tauri.svg"
- },
- "folder-src-tauri-open": {
- "iconPath": "./../icons/folder-src-tauri-open.svg"
- },
- "folder-favicon": {
- "iconPath": "./../icons/folder-favicon.svg"
- },
- "folder-favicon-open": {
- "iconPath": "./../icons/folder-favicon-open.svg"
- },
- "folder-lefthook": {
- "iconPath": "./../icons/folder-lefthook.svg"
- },
- "folder-lefthook-open": {
- "iconPath": "./../icons/folder-lefthook-open.svg"
- },
- "folder-bloc": {
- "iconPath": "./../icons/folder-bloc.svg"
- },
- "folder-bloc-open": {
- "iconPath": "./../icons/folder-bloc-open.svg"
- },
- "folder-powershell": {
- "iconPath": "./../icons/folder-powershell.svg"
- },
- "folder-powershell-open": {
- "iconPath": "./../icons/folder-powershell-open.svg"
- },
- "folder-repository": {
- "iconPath": "./../icons/folder-repository.svg"
- },
- "folder-repository-open": {
- "iconPath": "./../icons/folder-repository-open.svg"
- },
- "folder-luau": {
- "iconPath": "./../icons/folder-luau.svg"
- },
- "folder-luau-open": {
- "iconPath": "./../icons/folder-luau-open.svg"
- },
- "folder-obsidian": {
- "iconPath": "./../icons/folder-obsidian.svg"
- },
- "folder-obsidian-open": {
- "iconPath": "./../icons/folder-obsidian-open.svg"
- },
- "folder-trash": {
- "iconPath": "./../icons/folder-trash.svg"
- },
- "folder-trash-open": {
- "iconPath": "./../icons/folder-trash-open.svg"
- },
- "folder-cline": {
- "iconPath": "./../icons/folder-cline.svg"
- },
- "folder-cline-open": {
- "iconPath": "./../icons/folder-cline-open.svg"
- },
- "folder-liquibase": {
- "iconPath": "./../icons/folder-liquibase.svg"
- },
- "folder-liquibase-open": {
- "iconPath": "./../icons/folder-liquibase-open.svg"
- },
- "folder-dart": {
- "iconPath": "./../icons/folder-dart.svg"
- },
- "folder-dart-open": {
- "iconPath": "./../icons/folder-dart-open.svg"
- },
- "folder-zeabur": {
- "iconPath": "./../icons/folder-zeabur.svg"
- },
- "folder-zeabur-open": {
- "iconPath": "./../icons/folder-zeabur-open.svg"
- },
- "folder": {
- "iconPath": "./../icons/folder.svg"
- },
- "folder-open": {
- "iconPath": "./../icons/folder-open.svg"
- },
- "folder-root": {
- "iconPath": "./../icons/folder-root.svg"
- },
- "folder-root-open": {
- "iconPath": "./../icons/folder-root-open.svg"
- }
- },
"folderNames": {
"rust": "folder-rust",
".rust": "folder-rust",
@@ -6192,7 +2974,23 @@
"zeabur": "folder-zeabur",
".zeabur": "folder-zeabur",
"_zeabur": "folder-zeabur",
- "__zeabur__": "folder-zeabur"
+ "__zeabur__": "folder-zeabur",
+ "meta-inf": "folder-config",
+ ".meta-inf": "folder-config",
+ "_meta-inf": "folder-config",
+ "__meta-inf__": "folder-config",
+ "github/issue_template": "folder-template",
+ ".github/issue_template": "folder-template",
+ "_github/issue_template": "folder-template",
+ "__github/issue_template__": "folder-template",
+ "github/pull_request_template": "folder-template",
+ ".github/pull_request_template": "folder-template",
+ "_github/pull_request_template": "folder-template",
+ "__github/pull_request_template__": "folder-template",
+ "ds_store": "folder-macos",
+ ".ds_store": "folder-macos",
+ "_ds_store": "folder-macos",
+ "__ds_store__": "folder-macos"
},
"folderNamesExpanded": {
"rust": "folder-rust-open",
@@ -10237,7 +7035,110 @@
"bean": "beancount",
"epub": "epub",
"reg": "regedit",
- "gnu": "gnuplot"
+ "gnu": "gnuplot",
+ "yaml-tmlanguage": "yaml",
+ "tmlanguage": "xml",
+ "git": "git",
+ "git-commit": "git",
+ "git-rebase": "git",
+ "ignore": "git",
+ "github-actions-workflow": "github-actions-workflow",
+ "yaml": "yaml",
+ "spring-boot-properties-yaml": "yaml",
+ "ansible": "yaml",
+ "ansible-jinja": "yaml",
+ "matlab": "matlab",
+ "makefile": "settings",
+ "spring-boot-properties": "settings",
+ "diff": "diff",
+ "razor": "razor",
+ "aspnetcorerazor": "razor",
+ "python": "python",
+ "javascript": "javascript",
+ "typescript": "typescript",
+ "handlebars": "handlebars",
+ "perl": "perl",
+ "perl6": "perl",
+ "haxe": "haxe",
+ "hxml": "haxe",
+ "puppet": "puppet",
+ "elixir": "elixir",
+ "livescript": "livescript",
+ "erlang": "erlang",
+ "julia": "julia",
+ "purescript": "purescript",
+ "stylus": "stylus",
+ "robotframework": "robot",
+ "testoutput": "visualstudio",
+ "solidity": "solidity",
+ "autoit": "autoit",
+ "terraform": "terraform",
+ "cucumber": "cucumber",
+ "postcss": "postcss",
+ "lang-cfml": "coldfusion",
+ "haskell": "haskell",
+ "ruby": "ruby",
+ "php": "php",
+ "hack": "hack",
+ "javascriptreact": "react",
+ "processing": "processing",
+ "django-html": "django",
+ "django-txt": "django",
+ "html": "html",
+ "gdscript": "godot",
+ "gdresource": "godot-assets",
+ "viml": "vim",
+ "prolog": "prolog",
+ "pawn": "pawn",
+ "reason": "reason",
+ "reason_lisp": "reason",
+ "doctex": "tex",
+ "latex": "tex",
+ "latex-expl3": "tex",
+ "apex": "salesforce",
+ "dockercompose": "docker",
+ "shellscript": "console",
+ "objective-c": "objective-c",
+ "objective-cpp": "objective-cpp",
+ "coffeescript": "coffee",
+ "fsharp": "fsharp",
+ "editorconfig": "editorconfig",
+ "clojure": "clojure",
+ "pip-requirements": "python-misc",
+ "vue-postcss": "vue",
+ "vue-html": "vue",
+ "bibtex": "lib",
+ "bibtex-style": "lib",
+ "jupyter": "jupyter",
+ "plaintext": "document",
+ "powershell": "powershell",
+ "rsweave": "r",
+ "rust": "rust",
+ "ssh_config": "lock",
+ "typescriptreact": "react_ts",
+ "search-result": "search",
+ "rescript": "rescript",
+ "twee3": "twine",
+ "twee3-harlowe-3": "twine",
+ "twee3-chapbook-1": "twine",
+ "twee3-sugarcube-2": "twine",
+ "grain": "grain",
+ "lolcode": "lolcode",
+ "idris": "idris",
+ "text-gemini": "gemini",
+ "wolfram": "wolframlanguage",
+ "shaderlab": "shader",
+ "cadence": "cadence",
+ "stylable": "stylable",
+ "capnb": "cds",
+ "cds-markdown-injection": "cds",
+ "concourse-pipeline-yaml": "concourse",
+ "concourse-task-yaml": "concourse",
+ "systemd-conf": "systemd",
+ "systemd-unit-file": "systemd",
+ "hosts": "hosts",
+ "ahk2": "ahk2",
+ "gnuplot": "gnuplot"
},
"fileNames": {
".pug-lintrc": "pug",
@@ -12106,7 +9007,15 @@
"wrangler.toml": "wrangler",
"wrangler.json": "wrangler",
"wrangler.jsonc": "wrangler",
- ".clinerules": "cline"
+ ".clinerules": "cline",
+ ".rhistory": "r",
+ "cname": "http",
+ "sonarqube.analysis.xml": "sonarcloud",
+ "owners": "codeowners",
+ "caddyfile": "caddy",
+ "pklproject": "pkl",
+ "pklproject.deps.json": "pkl",
+ ".github/funding.yml": "github-sponsors"
},
"languageIds": {
"git": "git",
diff --git a/routers/web/repo/compare.go b/routers/web/repo/compare.go
index c1726d0790..a01cd753bf 100644
--- a/routers/web/repo/compare.go
+++ b/routers/web/repo/compare.go
@@ -900,7 +900,6 @@ func ExcerptBlob(ctx *context.Context) {
}
section := &gitdiff.DiffSection{
FileName: filePath,
- Name: filePath,
}
if direction == "up" && (idxLeft-lastLeft) > chunkSize {
idxLeft -= chunkSize
diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go
index 3a552547b8..53f50a018d 100644
--- a/services/gitdiff/gitdiff.go
+++ b/services/gitdiff/gitdiff.go
@@ -78,7 +78,7 @@ const (
type DiffLine struct {
LeftIdx int // line number, 1-based
RightIdx int // line number, 1-based
- Match int // line number, 1-based
+ Match int // the diff matched index. -1: no match. 0: plain and no need to match. >0: for add/del, "Lines" slice index of the other side
Type DiffLineType
Content string
Comments issues_model.CommentList // related PR code comments
@@ -203,12 +203,20 @@ func getLineContent(content string, locale translation.Locale) DiffInline {
type DiffSection struct {
file *DiffFile
FileName string
- Name string
Lines []*DiffLine
}
+func (diffSection *DiffSection) GetLine(idx int) *DiffLine {
+ if idx <= 0 {
+ return nil
+ }
+ return diffSection.Lines[idx]
+}
+
// GetLine gets a specific line by type (add or del) and file line number
-func (diffSection *DiffSection) GetLine(lineType DiffLineType, idx int) *DiffLine {
+// This algorithm is not quite right.
+// Actually now we have "Match" field, it is always right, so use it instead in new GetLine
+func (diffSection *DiffSection) getLineLegacy(lineType DiffLineType, idx int) *DiffLine { //nolint:unused
var (
difference = 0
addCount = 0
@@ -279,7 +287,7 @@ func (diffSection *DiffSection) getLineContentForRender(lineIdx int, diffLine *D
if setting.Git.DisableDiffHighlight {
return template.HTML(html.EscapeString(diffLine.Content[1:]))
}
- h, _ = highlight.Code(diffSection.Name, fileLanguage, diffLine.Content[1:])
+ h, _ = highlight.Code(diffSection.FileName, fileLanguage, diffLine.Content[1:])
return h
}
@@ -292,20 +300,31 @@ func (diffSection *DiffSection) getDiffLineForRender(diffLineType DiffLineType,
highlightedLeftLines, highlightedRightLines = diffSection.file.highlightedLeftLines, diffSection.file.highlightedRightLines
}
+ var lineHTML template.HTML
hcd := newHighlightCodeDiff()
- var diff1, diff2, lineHTML template.HTML
- if leftLine != nil {
- diff1 = diffSection.getLineContentForRender(leftLine.LeftIdx, leftLine, fileLanguage, highlightedLeftLines)
- lineHTML = util.Iif(diffLineType == DiffLinePlain, diff1, "")
- }
- if rightLine != nil {
- diff2 = diffSection.getLineContentForRender(rightLine.RightIdx, rightLine, fileLanguage, highlightedRightLines)
- lineHTML = util.Iif(diffLineType == DiffLinePlain, diff2, "")
- }
- if diffLineType != DiffLinePlain {
- // it seems that Gitea doesn't need the line wrapper of Chroma, so do not add them back
- // if the line wrappers are still needed in the future, it can be added back by "diffLineWithHighlightWrapper(hcd.lineWrapperTags. ...)"
- lineHTML = hcd.diffLineWithHighlight(diffLineType, diff1, diff2)
+ if diffLineType == DiffLinePlain {
+ // left and right are the same, no need to do line-level diff
+ if leftLine != nil {
+ lineHTML = diffSection.getLineContentForRender(leftLine.LeftIdx, leftLine, fileLanguage, highlightedLeftLines)
+ } else if rightLine != nil {
+ lineHTML = diffSection.getLineContentForRender(rightLine.RightIdx, rightLine, fileLanguage, highlightedRightLines)
+ }
+ } else {
+ var diff1, diff2 template.HTML
+ if leftLine != nil {
+ diff1 = diffSection.getLineContentForRender(leftLine.LeftIdx, leftLine, fileLanguage, highlightedLeftLines)
+ }
+ if rightLine != nil {
+ diff2 = diffSection.getLineContentForRender(rightLine.RightIdx, rightLine, fileLanguage, highlightedRightLines)
+ }
+ if diff1 != "" && diff2 != "" {
+ // if only some parts of a line are changed, highlight these changed parts as "deleted/added".
+ lineHTML = hcd.diffLineWithHighlight(diffLineType, diff1, diff2)
+ } else {
+ // if left is empty or right is empty (a line is fully deleted or added), then we do not need to diff anymore.
+ // the tmpl code already adds background colors for these cases.
+ lineHTML = util.Iif(diffLineType == DiffLineDel, diff1, diff2)
+ }
}
return DiffInlineWithUnicodeEscape(lineHTML, locale)
}
@@ -317,10 +336,10 @@ func (diffSection *DiffSection) GetComputedInlineDiffFor(diffLine *DiffLine, loc
case DiffLineSection:
return getLineContent(diffLine.Content[1:], locale)
case DiffLineAdd:
- compareDiffLine := diffSection.GetLine(DiffLineDel, diffLine.RightIdx)
+ compareDiffLine := diffSection.GetLine(diffLine.Match)
return diffSection.getDiffLineForRender(DiffLineAdd, compareDiffLine, diffLine, locale)
case DiffLineDel:
- compareDiffLine := diffSection.GetLine(DiffLineAdd, diffLine.LeftIdx)
+ compareDiffLine := diffSection.GetLine(diffLine.Match)
return diffSection.getDiffLineForRender(DiffLineDel, diffLine, compareDiffLine, locale)
default: // Plain
// TODO: there was an "if" check: `if diffLine.Content >strings.IndexByte(" +-", diffLine.Content[0]) > -1 { ... } else { ... }`
@@ -383,15 +402,22 @@ type DiffLimitedContent struct {
// GetTailSectionAndLimitedContent creates a fake DiffLineSection if the last section is not the end of the file
func (diffFile *DiffFile) GetTailSectionAndLimitedContent(leftCommit, rightCommit *git.Commit) (_ *DiffSection, diffLimitedContent DiffLimitedContent) {
- if len(diffFile.Sections) == 0 || leftCommit == nil || diffFile.Type != DiffFileChange || diffFile.IsBin || diffFile.IsLFSFile {
+ var leftLineCount, rightLineCount int
+ diffLimitedContent = DiffLimitedContent{}
+ if diffFile.IsBin || diffFile.IsLFSFile {
+ return nil, diffLimitedContent
+ }
+ if (diffFile.Type == DiffFileDel || diffFile.Type == DiffFileChange) && leftCommit != nil {
+ leftLineCount, diffLimitedContent.LeftContent = getCommitFileLineCountAndLimitedContent(leftCommit, diffFile.OldName)
+ }
+ if (diffFile.Type == DiffFileAdd || diffFile.Type == DiffFileChange) && rightCommit != nil {
+ rightLineCount, diffLimitedContent.RightContent = getCommitFileLineCountAndLimitedContent(rightCommit, diffFile.OldName)
+ }
+ if len(diffFile.Sections) == 0 || diffFile.Type != DiffFileChange {
return nil, diffLimitedContent
}
-
lastSection := diffFile.Sections[len(diffFile.Sections)-1]
lastLine := lastSection.Lines[len(lastSection.Lines)-1]
- leftLineCount, leftContent := getCommitFileLineCountAndLimitedContent(leftCommit, diffFile.Name)
- rightLineCount, rightContent := getCommitFileLineCountAndLimitedContent(rightCommit, diffFile.Name)
- diffLimitedContent = DiffLimitedContent{LeftContent: leftContent, RightContent: rightContent}
if leftLineCount <= lastLine.LeftIdx || rightLineCount <= lastLine.RightIdx {
return nil, diffLimitedContent
}
diff --git a/services/gitdiff/highlightdiff.go b/services/gitdiff/highlightdiff.go
index 5891e61249..6e18651d83 100644
--- a/services/gitdiff/highlightdiff.go
+++ b/services/gitdiff/highlightdiff.go
@@ -99,7 +99,7 @@ func (hcd *highlightCodeDiff) diffLineWithHighlightWrapper(lineWrapperTags []str
dmp := defaultDiffMatchPatch()
diffs := dmp.DiffMain(convertedCodeA, convertedCodeB, true)
- diffs = dmp.DiffCleanupEfficiency(diffs)
+ diffs = dmp.DiffCleanupSemantic(diffs)
buf := bytes.NewBuffer(nil)
diff --git a/services/gitdiff/highlightdiff_test.go b/services/gitdiff/highlightdiff_test.go
index 16649682b4..c2584dc622 100644
--- a/services/gitdiff/highlightdiff_test.go
+++ b/services/gitdiff/highlightdiff_test.go
@@ -23,6 +23,16 @@ func TestDiffWithHighlight(t *testing.T) {
assert.Equal(t, `x bar y`, string(outAdd))
})
+ t.Run("CleanUp", func(t *testing.T) {
+ hcd := newHighlightCodeDiff()
+ codeA := template.HTML(``)
+ outDel := hcd.diffLineWithHighlight(DiffLineDel, codeA, codeB)
+ assert.Equal(t, `a comment`, string(outDel))
+ outAdd := hcd.diffLineWithHighlight(DiffLineAdd, codeA, codeB)
+ assert.Equal(t, `updated comment`, string(outAdd))
+ })
+
t.Run("OpenCloseTags", func(t *testing.T) {
hcd := newHighlightCodeDiff()
hcd.placeholderTokenMap['O'], hcd.placeholderTokenMap['C'] = "", ""
diff --git a/services/repository/files/diff_test.go b/services/repository/files/diff_test.go
index 57920a2c4f..a8514791cc 100644
--- a/services/repository/files/diff_test.go
+++ b/services/repository/files/diff_test.go
@@ -47,7 +47,6 @@ func TestGetDiffPreview(t *testing.T) {
Sections: []*gitdiff.DiffSection{
{
FileName: "README.md",
- Name: "",
Lines: []*gitdiff.DiffLine{
{
LeftIdx: 0,
diff --git a/tools/generate-svg.js b/tools/generate-svg.js
index f1b09915d8..7368392d01 100755
--- a/tools/generate-svg.js
+++ b/tools/generate-svg.js
@@ -63,8 +63,18 @@ async function processMaterialFileIcons() {
}
fs.writeFileSync(fileURLToPath(new URL(`../options/fileicon/material-icon-svgs.json`, import.meta.url)), JSON.stringify(svgSymbols, null, 2));
- const iconRules = await readFile(fileURLToPath(new URL(`../node_modules/material-icon-theme/dist/material-icons.json`, import.meta.url)));
- const iconRulesPretty = JSON.stringify(JSON.parse(iconRules), null, 2);
+ const iconRulesJson = await readFile(fileURLToPath(new URL(`../node_modules/material-icon-theme/dist/material-icons.json`, import.meta.url)));
+ const iconRules = JSON.parse(iconRulesJson);
+ // The rules are from VSCode material-icon-theme, we need to adjust them to our needs
+ // 1. We only use lowercase filenames to match (it should be good enough for most cases and more efficient)
+ // 2. We do not have a "Language ID" system: https://code.visualstudio.com/docs/languages/identifiers#_known-language-identifiers
+ // * So we just treat the "Language ID" as file extension, it is not always true, but it is good enough for most cases.
+ delete iconRules.iconDefinitions;
+ for (const [k, v] of Object.entries(iconRules.fileNames)) iconRules.fileNames[k.toLowerCase()] = v;
+ for (const [k, v] of Object.entries(iconRules.folderNames)) iconRules.folderNames[k.toLowerCase()] = v;
+ for (const [k, v] of Object.entries(iconRules.fileExtensions)) iconRules.fileExtensions[k.toLowerCase()] = v;
+ for (const [k, v] of Object.entries(iconRules.languageIds)) iconRules.fileExtensions[k.toLowerCase()] = v;
+ const iconRulesPretty = JSON.stringify(iconRules, null, 2);
fs.writeFileSync(fileURLToPath(new URL(`../options/fileicon/material-icon-rules.json`, import.meta.url)), iconRulesPretty);
}