diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ef62189 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.pnpm-debug.log diff --git a/.pnpm-debug.log b/.pnpm-debug.log deleted file mode 100644 index 9e26dfe..0000000 --- a/.pnpm-debug.log +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/configs/alacritty/alacritty.yml b/configs/alacritty/alacritty.yml index 8915b12..4833a53 100644 --- a/configs/alacritty/alacritty.yml +++ b/configs/alacritty/alacritty.yml @@ -1,49 +1,11 @@ -# Configuration for Alacritty, the GPU enhanced terminal emulator. - -# Import additional configuration files -# -# Imports are loaded in order, skipping all missing files, with the importing -# file being loaded last. If a field is already present in a previous import, it -# will be replaced. -# -# All imports must either be absolute paths starting with `/`, or paths relative -# to the user's home directory starting with `~/`. -#import: -# - /path/to/alacritty.yml - -# Any items in the `env` entry below will be added as -# environment variables. Some entries may override variables -# set by alacritty itself. #env: - # TERM variable - # - # This value is used to set the `$TERM` environment variable for - # each instance of Alacritty. If it is not present, alacritty will - # check the local terminfo database and use `alacritty` if it is - # available, otherwise `xterm-256color` is used. #TERM: alacritty - - # Window dimensions (changes require restart) - # - # Number of lines/columns (not pixels) in the terminal. The number of columns - # must be at least `2`, while using a value of `0` for columns and lines will - # fall back to the window manager's recommended size. #dimensions: # columns: 0 # lines: 0 - - # Window position (changes require restart) - # - # Specified in number of pixels. - # If the position is not set, the window manager will handle the placement. #position: # x: 0 # y: 0 - - # Window padding (changes require restart) - # - # Blank space added around the window in pixels. This padding is scaled - # by DPI and the specified value is always added at both opposing sides. window: padding: x: 10 @@ -175,7 +137,6 @@ font: # Colors (Tomorrow Night) colors: - # Default colors primary: background: '#000000' foreground: '#c5c8c6' diff --git a/configs/nvim/init.lua b/configs/nvim/init.lua index 16be235..e3aa88e 100644 --- a/configs/nvim/init.lua +++ b/configs/nvim/init.lua @@ -27,20 +27,10 @@ if u.has_plugin("cmp") then set tabstop=2 ]] - -- Debug indentations - if false then - vim.cmd [[ - set list - set listchars=eol:⏎,tab:->,trail:_,nbsp:⎵ - ]] - end - g.hidden = true --unload buffers when hidden g.filetype = true -- execute autocommands based on filetype o.autoread = true - o.lazyredraw = true - -- Search o.inccommand = 'nosplit' -- show substitutions incrementally o.ignorecase = true @@ -69,7 +59,7 @@ if u.has_plugin("cmp") then cmd [[command Format :lua vim.lsp.buf.formatting()]] cmd [[command FormatSync :lua vim.lsp.buf.formatting_sync()]] - + cmd [[set noshowmode]] --to get rid of thing like --INSERT-- cmd [[set noshowcmd]] --to get rid of display of last command cmd [[set shortmess+=F]] --to get rid of the file name displayed in the command line bar @@ -81,9 +71,11 @@ if u.has_plugin("cmp") then -- Enable Theming / Syntax o.syntax = "enable" o.termguicolors = true - cmd("colorscheme material") + cmd("colorscheme tokyonight") g.material_terminal_italics = 1 g.material_theme_style = "darker" + g.tokyonight_style = "night" + g.tokyonight_transparent_sidebar = true; -- Remove background color require("transparent").setup({enable = true}) @@ -151,7 +143,6 @@ if u.has_plugin("cmp") then g.wiki_link_extension = ".md" -- KeyBindings - g.mapleader = " " require "keymappings" require "nvim-tmux-navigation".setup { @@ -171,9 +162,8 @@ if u.has_plugin("cmp") then require "treesitter-conf" -- Autocompletion Setup - o.completeopt = "menuone,noselect,noinsert" - require "autocomplete" require "snippets" + require "cmp-conf" -- LSP Config require "lspinstaller-conf" @@ -198,13 +188,9 @@ if u.has_plugin("cmp") then } ) - -- Autocompletion Setup - o.completeopt = "menuone,noselect,noinsert" - require "autocomplete" - -- LSP Config require "lspinstaller-conf" - require "lsp-utils" + require "lsp-conf" else vim.cmd[[PackerSync]] diff --git a/configs/nvim/lua/autocommands.lua b/configs/nvim/lua/autocommands.lua index 6d48fe8..57ac743 100644 --- a/configs/nvim/lua/autocommands.lua +++ b/configs/nvim/lua/autocommands.lua @@ -1,11 +1,6 @@ local cmd = vim.cmd; cmd [[ - augroup auto_format - au! - au BufWritePre * silent! lua vim.lsp.buf.formatting_sync(nil, 300) - augroup END - augroup highlight_yank au! au TextYankPost * silent! lua vim.highlight.on_yank { timeout = 150 } diff --git a/configs/nvim/lua/autocomplete.lua b/configs/nvim/lua/autocomplete.lua deleted file mode 100644 index 507ccbc..0000000 --- a/configs/nvim/lua/autocomplete.lua +++ /dev/null @@ -1,51 +0,0 @@ --- luasnip setup -local luasnip = require "luasnip" - -local cmp = require "cmp" - -cmp.setup { - completion = { - completeopt = "menu,menuone,noselect" - }, - preselect = "none", - snippet = { - expand = function(args) - require("luasnip").lsp_expand(args.body) - end - }, - mapping = { - [""] = cmp.mapping.complete(), - [""] = cmp.mapping.close(), - [""] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = true - }, - [""] = function(fallback) - if vim.fn.pumvisible() == 1 then - vim.fn.feedkeys(vim.api.nvim_replace_termcodes("", true, true, true), "n") - elseif luasnip.expand_or_jumpable() then - vim.fn.feedkeys(vim.api.nvim_replace_termcodes("luasnip-expand-or-jump", true, true, true), "") - else - fallback() - end - end, - [""] = function(fallback) - if vim.fn.pumvisible() == 1 then - vim.fn.feedkeys(vim.api.nvim_replace_termcodes("", true, true, true), "n") - elseif luasnip.jumpable(-1) then - vim.fn.feedkeys(vim.api.nvim_replace_termcodes("luasnip-jump-prev", true, true, true), "") - else - fallback() - end - end - }, - sources = { - {name = "nvim_lsp"}, - {name = "luasnip"}, - {name = "path"} - } -} - --- The nvim-cmp almost supports LSP's capabilities so You should advertise it to LSP servers.. -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) diff --git a/configs/nvim/lua/cmp-conf.lua b/configs/nvim/lua/cmp-conf.lua new file mode 100644 index 0000000..a15ea71 --- /dev/null +++ b/configs/nvim/lua/cmp-conf.lua @@ -0,0 +1,92 @@ +-- luasnip setup +local luasnip = require "luasnip" +local lspkind = require "lspkind" +local cmp = require "cmp" +local cmp_autopairs = require('nvim-autopairs.completion.cmp') + +local has_words_before = function() + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil +end + +cmp.setup { + formatting = { + format = lspkind.cmp_format({with_text = true, menu = ({ + buffer = "[Buffer]", + nvim_lsp = "[LSP]", + luasnip = "[LuaSnip]", + nvim_lua = "[Lua]", + latex_symbols = "[Latex]", + })}), + }, + completion = { + completeopt = "menu,menuone", + }, + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end + }, + mapping = { + [''] = cmp.mapping.complete(), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + + [''] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }), + + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }, + sources = { + {name = "nvim_lsp"}, + {name = "luasnip"}, + {name = "path"}, + {name = "buffer"}, + {name = "calc"} + } +} + +-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline('/', { + sources = { + { name = 'buffer' } + } +}) + +-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline(':', { + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }) +}) + + +-- The nvim-cmp almost supports LSP's capabilities so You should advertise it to LSP servers.. +-- Setup lspconfig. +local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) +require'lspconfig'.html.setup { + capabilities = capabilities +} + +cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done({ map_char = { tex = '' } })) diff --git a/configs/nvim/lua/formatter-conf.lua b/configs/nvim/lua/formatter-conf.lua new file mode 100644 index 0000000..4c6f44f --- /dev/null +++ b/configs/nvim/lua/formatter-conf.lua @@ -0,0 +1,8 @@ +local cmd = vim.cmd; + +cmd [[ + augroup auto_format + au! + au BufWritePre * FormatSync + augroup END +]] diff --git a/configs/nvim/lua/keymappings.lua b/configs/nvim/lua/keymappings.lua index 29fc9b4..6614cc2 100644 --- a/configs/nvim/lua/keymappings.lua +++ b/configs/nvim/lua/keymappings.lua @@ -5,15 +5,11 @@ local cmd = vim.cmd; local options = {noremap = true} local remap = {noremap = false} ---map("n", "", "", remap) ---map("n", " ", "", remap) g.mapleader = " " map("n", "", ":Telescope find_files", options) ---map("n", "", ":Telescope grep_string", options) map("n", "", ":Telescope live_grep", options) - -- LSP Functionality map("n", "gD", "lua vim.lsp.buf.declaration()", options) map("n", "gd", "lua vim.lsp.buf.definition()", options) @@ -23,9 +19,10 @@ map("n", "K", "lua vim.lsp.buf.hover()", options) map("n", "e", "lua vim.lsp.diagnostic.show_line_diagnostics()", options) map("n", "rn", "lua vim.lsp.buf.rename()", options) map("n", "c", "lua vim.lsp.buf.code_action()", options) -map("n", "", "lua vim.lsp.buf.formatting()", options) +map("n", "", ":Format", options) map("n", "[d", "lua vim.lsp.diagnostic.goto_prev()", options) map("n", "]d", "lua vim.lsp.diagnostic.goto_next()", options) +map("n", "t", ":TroubleToggle", remap) -- Navigate Buffers map("n", "", "h", options) @@ -37,8 +34,10 @@ map("n", "Y", "yy", options) map("n", "k", "{",options) map("n", "j", "}",options) -map("n", "", "move +1", options) -map("n", "", "move -2", options) +map("n", "", "move +1", options) +map("n", "", "move -2", options) +map("i", "", "move +1", options) +map("i", "", "move -2", options) -- Faster git merge map("n", "gd", ":Gvdiffsplit!", options) @@ -69,6 +68,3 @@ map("i", "", ":wi", options) -- Update vim config map("n", "", ":source $MYVIMRC", options) - --- Y yank until the end of line -map("n", "Y", "y$", {noremap = true}) diff --git a/configs/nvim/lua/lsp-utils.lua b/configs/nvim/lua/lsp-conf.lua similarity index 70% rename from configs/nvim/lua/lsp-utils.lua rename to configs/nvim/lua/lsp-conf.lua index 1a836b8..e3d6ccf 100644 --- a/configs/nvim/lua/lsp-utils.lua +++ b/configs/nvim/lua/lsp-conf.lua @@ -1,42 +1,9 @@ -local nvim_lsp = require "lspconfig" +local lsp = require "lspconfig" local lsp_status = require("lsp-status") -local utils = require("utils") -- function to attach completion when setting up lsp -local function on_attach(client) - local function buf_set_keymap(...) - vim.api.nvim_buf_set_keymap(bufnr, ...) - end - local function buf_set_option(...) - vim.api.nvim_buf_set_option(bufnr, ...) - end - - buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") - - -- Mappings. - local opts = {noremap = true, silent = true} - - -- Set some keybinds conditional on server capabilities - if client.resolved_capabilities.document_formatting then - buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) - elseif client.resolved_capabilities.document_range_formatting then - buf_set_keymap("n", "f", "lua vim.lsp.buf.range_formatting()", opts) - end - - -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then - vim.api.nvim_exec( - [[ - augroup lsp_document_highlight - autocmd! * - autocmd CursorHold lua vim.lsp.buf.document_highlight() - autocmd CursorMoved lua vim.lsp.buf.clear_references() - autocmd CursorHold *.* :lua vim.lsp.diagnostic.show_line_diagnostics() - augroup END - ]], - false - ) - end +local function on_attach() + vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") end local system_name = "" @@ -58,7 +25,7 @@ local runtime_path = vim.split(package.path, ";") table.insert(runtime_path, "lua/?.lua") table.insert(runtime_path, "lua/?/init.lua") -nvim_lsp.sumneko_lua.setup { +lsp.sumneko_lua.setup { on_attach = on_attach, capabilities = lsp_status.capabilities, cmd = {sumneko_binary, "-E", sumneko_root_path .. "/main.lua"}, @@ -72,7 +39,7 @@ nvim_lsp.sumneko_lua.setup { }, diagnostics = { -- Get the language server to recognize the `vim` global - globals = {"vim"} + globals = {"vim", "bufnr", "use"} }, workspace = { -- Make the server aware of Neovim runtime files @@ -88,37 +55,36 @@ nvim_lsp.sumneko_lua.setup { -- Go Language Server -nvim_lsp.gopls.setup { +lsp.gopls.setup { on_attach = on_attach, capabilities = lsp_status.capabilities } -- Html Setup -nvim_lsp.html.setup { +lsp.html.setup { on_attach = on_attach, capabilities = lsp_status.capabilities, filetypes = {"html"} } -- Svelte Language Server - -nvim_lsp.svelte.setup { +lsp.svelte.setup { on_attach = on_attach, capabilities = lsp_status.capabilities } -- Typescript Language Server - local function organize_imports() - local params = { - command = "_typescript.organizeImports", - arguments = {vim.api.nvim_buf_get_name(0)}, - title = "" - } - vim.lsp.buf.execute_command(params) + local params = { + command = "_typescript.organizeImports", + arguments = {vim.api.nvim_buf_get_name(bufnr)}, + title = "" + } + + vim.lsp.buf_request_sync(bufnr, "workspace/executeCommand", params, 500) end -nvim_lsp.tsserver.setup { +lsp.tsserver.setup { on_attach = on_attach, capabilities = lsp_status.capabilities, commands = { @@ -129,17 +95,20 @@ nvim_lsp.tsserver.setup { } } +-- JSON ls setup +lsp.jsonls.setup { + on_attach = on_attach, + capabilities = lsp_status.capabilities +} + -- Setup diagnostics formaters and linters for non LSP provided files -nvim_lsp.diagnosticls.setup { +lsp.diagnosticls.setup { on_attach = on_attach, capabilities = lsp_status.capabilities, cmd = {"diagnostic-languageserver", "--stdio"}, filetypes = { - "lua", "sh", "markdown", - "json", - "jsonc", "yaml", "toml" }, diff --git a/configs/nvim/lua/overlays.lua b/configs/nvim/lua/overlays.lua index 27a1129..096a5ee 100644 --- a/configs/nvim/lua/overlays.lua +++ b/configs/nvim/lua/overlays.lua @@ -50,7 +50,7 @@ local nvimConfig = { cmd = "cd $HOME/.dotfiles && nvim configs/init.lua && cd -", direction = "float", - on_close = function(term) + on_close = function() Terminal:close() u.ReloadConfig() end diff --git a/configs/nvim/lua/plugins.lua b/configs/nvim/lua/plugins.lua index d0a8739..ef11324 100644 --- a/configs/nvim/lua/plugins.lua +++ b/configs/nvim/lua/plugins.lua @@ -12,7 +12,7 @@ return require("packer").startup(function() use "alexghergh/nvim-tmux-navigation" -- Theming Section - use "kaicataldo/material.vim" + use 'folke/tokyonight.nvim' use "xiyaowong/nvim-transparent" -- Layout Plugins @@ -39,22 +39,39 @@ return require("packer").startup(function() -- Obsidian / Roam like features -- use "lervag/wiki.vim" + -- Lsp Errors + use "folke/lsp-colors.nvim" + use "onsails/lspkind-nvim" + use { + "folke/trouble.nvim", + requires = "kyazdani42/nvim-web-devicons", + config = function() + require("trouble").setup { + -- your configuration comes here + -- or leave it empty to use the default settings + -- refer to the configuration section below + } + end + } + -- Syntax / Autocomplete use "neovim/nvim-lspconfig" use "hrsh7th/nvim-cmp" use "hrsh7th/cmp-nvim-lsp" use "hrsh7th/cmp-path" + use "hrsh7th/cmp-calc" use "hrsh7th/cmp-buffer" use "hrsh7th/cmp-cmdline" use "L3MON4D3/LuaSnip" use "saadparwaiz1/cmp_luasnip" use "rafamadriz/friendly-snippets" + use "beyondmarc/glsl.vim" + use "tpope/vim-commentary" use "williamboman/nvim-lsp-installer" use "nvim-lua/lsp-status.nvim" - use "L3MON4D3/LuaSnip" use "windwp/nvim-autopairs" use "neoclide/jsonc.vim" use { @@ -64,8 +81,8 @@ return require("packer").startup(function() -- Preview Markdown use "ellisonleao/glow.nvim" - - -- Autoformat + + -- Autoformat --use "sbdchd/neoformat" -- use "lukas-reineke/format.nvim" diff --git a/configs/nvim/lua/treesitter-conf.lua b/configs/nvim/lua/treesitter-conf.lua index c24ee00..999c261 100644 --- a/configs/nvim/lua/treesitter-conf.lua +++ b/configs/nvim/lua/treesitter-conf.lua @@ -1,4 +1,5 @@ local parser_configs = require("nvim-treesitter.parsers").get_parser_configs() + parser_configs.http = { install_info = { url = "https://github.com/NTBBloodbath/tree-sitter-http", @@ -6,7 +7,16 @@ local parser_configs = require("nvim-treesitter.parsers").get_parser_configs() branch = "main" } } + + parser_configs.glsl = { + filetype = "vert", + filetypes = {"vert","frag"} + } + require "nvim-treesitter.configs".setup { + indent = { + enable = true + }, ensure_installed = { "bash", "yaml", diff --git a/configs/zsh/aliases.sh b/configs/zsh/aliases.sh index b6bd1be..4bda303 100644 --- a/configs/zsh/aliases.sh +++ b/configs/zsh/aliases.sh @@ -27,6 +27,7 @@ alias D="pnpm dev" alias B="pnpm build" alias T="pnpm test" alias P="git push" +alias p="git pull" alias lt="tree -L 2 --filelimit 150 --dirsfirst" diff --git a/node_modules/.modules.yaml b/node_modules/.modules.yaml new file mode 100644 index 0000000..48c2340 --- /dev/null +++ b/node_modules/.modules.yaml @@ -0,0 +1,21 @@ +hoistPattern: + - '*' +hoistedDependencies: {} +included: + dependencies: true + devDependencies: true + optionalDependencies: true +layoutVersion: 5 +packageManager: pnpm@6.22.2 +pendingBuilds: [] +prunedAt: Wed, 17 Nov 2021 13:45:43 GMT +publicHoistPattern: + - '*types*' + - '*eslint*' + - '@prettier/plugin-*' + - '*prettier-plugin-*' +registries: + default: https://registry.npmjs.org/ +skipped: [] +storeDir: /home/jim/.pnpm-store/v3 +virtualStoreDir: .pnpm diff --git a/node_modules/.pnpm/lock.yaml b/node_modules/.pnpm/lock.yaml new file mode 100644 index 0000000..f212c3c --- /dev/null +++ b/node_modules/.pnpm/lock.yaml @@ -0,0 +1,15 @@ +lockfileVersion: 5.3 + +specifiers: + vite-plugin-fonts: ^0.2.2 + +devDependencies: + vite-plugin-fonts: 0.2.2 + +packages: + + /vite-plugin-fonts/0.2.2: + resolution: {integrity: sha512-fhzhsrTiuzlDjSO6g5sV5EVIIvbb8lmsaIY6eUTBM4lcF55x40UBpHrcyvNwIhQG211g0lu83XC7oZlkmvdkMA==} + peerDependencies: + vite: ^2.0.0 + dev: true diff --git a/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/README.md b/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/README.md new file mode 100644 index 0000000..6e1a6f8 --- /dev/null +++ b/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/README.md @@ -0,0 +1,113 @@ +# vite-plugin-fonts + +Webfont loader for vite + +### Install + +```sh +npm i --save-dev vite-plugin-fonts # yarn add -D vite-plugin-fonts +``` + +### Add it to vite.config.js + +```ts +// vite.config.js +import ViteFonts from 'vite-plugin-fonts' + +export default { + plugins: [ + ViteFonts({ + google: { + families: ['Source Sans Pro'] + }, + }) + ], +} +``` + + +## Options + +```ts +// vite.config.js +import ViteFonts from 'vite-plugin-fonts' + +export default { + plugins: [ + ViteFonts({ + // Typekit API + typekit: { + /** + * Typekit project id + */ + id: '', + + /** + * enable non-blocking renderer + * + * default: true + */ + defer: true + }, + + // Google Fonts API V2 + google: { + /** + * enable preconnect link injection + * + * default: true + */ + preconnect: false, + + /** + * values: auto, block, swap(default), fallback, optional + * default: 'swap' + */ + display: 'block', + + /** + * values: auto, block, swap(default), fallback, optional + * default: undefined + */ + text: 'ViteAwsom', + + + /** + * Fonts families lists + */ + families: [ + // families can be either strings (only regular 400 will be loaded) + 'Source Sans Pro', + + // or objects + { + /** + * Family name (required) + */ + name: 'Roboto', + + /** + * Family styles + */ + styles: 'ital,wght@0,400;1,200', + + /** + * enable non-blocking renderer + * + * default: true + */ + defer: true + } + ] + }, + }) + ], +} +``` + + +## Ressources + +- https://web.dev/optimize-webfont-loading/ +- https://csswizardry.com/2020/05/the-fastest-google-fonts/ +- _(unmaintained)_ https://www.npmjs.com/package/webfontloader \ No newline at end of file diff --git a/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/dist/index.d.ts b/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/dist/index.d.ts new file mode 100644 index 0000000..8dda173 --- /dev/null +++ b/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/dist/index.d.ts @@ -0,0 +1,30 @@ +import { HtmlTagDescriptor } from 'vite'; + +declare type GoogleFontFamily = { + name: string; + styles?: string; + defer?: boolean; +}; +declare type GoogleFonts = { + families: (string | GoogleFontFamily)[]; + text?: string; + display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional'; + preconnect?: boolean; +}; + +declare type TypeKitFonts = { + id: string; + defer?: boolean; +}; + +declare type VitePluginFontsOptions = { + google?: GoogleFonts; + typekit?: TypeKitFonts; +}; +declare function VitePluginFonts(options?: VitePluginFontsOptions): { + name: string; + transformIndexHtml(): HtmlTagDescriptor[]; +}; + +export default VitePluginFonts; +export { VitePluginFonts as Plugin, VitePluginFontsOptions }; diff --git a/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/dist/index.js b/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/dist/index.js new file mode 100644 index 0000000..9b658aa --- /dev/null +++ b/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/dist/index.js @@ -0,0 +1,138 @@ +"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/google-fonts.ts +var GoogleFontsBase = "https://fonts.googleapis.com/css2"; +function injectFonts({ + families, + text, + preconnect = true, + display = "swap" +}) { + const specs = []; + const deferedSpecs = []; + const tags = []; + if (!Array.isArray(families)) { + console.warn("Google font families is required"); + return tags; + } + if (families.length >= 0) { + for (const family of families) { + if (typeof family === "string") { + deferedSpecs.push(family); + continue; + } + if (!family) + continue; + const { + name, + styles, + defer = true + } = family; + if (!name) { + console.warn("A google font family name is missing"); + continue; + } + let spec = name; + if (typeof styles === "string") + spec += `:${styles}`; + if (defer) + deferedSpecs.push(spec); + else + specs.push(spec); + } + } + if (preconnect && specs.length + deferedSpecs.length > 0) { + tags.push({ + tag: "link", + attrs: { + rel: "preconnect", + href: "https://fonts.gstatic.com/", + crossorigin: true + } + }); + } + if (deferedSpecs.length > 0) { + let href = `${GoogleFontsBase}?family=${deferedSpecs.join("&family=")}`; + if (typeof display === "string" && display !== "auto") + href += `&display=${display}`; + if (typeof text === "string" && text.length > 0) + href += `&text=${text}`; + tags.push({ + tag: "link", + attrs: { + rel: "preload", + as: "style", + onload: "this.rel='stylesheet'", + href + } + }); + } + if (specs.length > 0) { + let href = `${GoogleFontsBase}?family=${specs.join("&family=")}`; + if (typeof display === "string" && display !== "auto") + href += `&display=${display}`; + if (typeof text === "string" && text.length > 0) + href += `&text=${text}`; + tags.push({ + tag: "link", + attrs: { + rel: "stylesheet", + href + } + }); + } + return tags; +} +var google_fonts_default = injectFonts; + +// src/typekit.ts +var TypekitFontBase = "https://use.typekit.net/"; +function injectFonts2({ + id, + defer = true +}) { + const tags = []; + if (typeof id !== "string") { + console.warn("A Typekit id is required"); + return tags; + } + if (defer) { + tags.push({ + tag: "link", + attrs: { + rel: "preload", + as: "style", + onload: "this.rel='stylesheet'", + href: `${TypekitFontBase}${id}.css` + } + }); + } else { + tags.push({ + tag: "link", + attrs: { + rel: "stylesheet", + href: `${TypekitFontBase}${id}.css` + } + }); + } + return tags; +} +var typekit_default = injectFonts2; + +// src/index.ts +function VitePluginFonts(options = {}) { + return { + name: "vite-plugin-fonts", + transformIndexHtml() { + const tags = []; + if (options.typekit) + tags.push(...typekit_default(options.typekit)); + if (options.google) + tags.push(...google_fonts_default(options.google)); + return tags; + } + }; +} +var src_default = VitePluginFonts; + + + +exports.Plugin = VitePluginFonts; exports.default = src_default; diff --git a/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/dist/index.mjs b/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/dist/index.mjs new file mode 100644 index 0000000..2ca5c3f --- /dev/null +++ b/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/dist/index.mjs @@ -0,0 +1,138 @@ +// src/google-fonts.ts +var GoogleFontsBase = "https://fonts.googleapis.com/css2"; +function injectFonts({ + families, + text, + preconnect = true, + display = "swap" +}) { + const specs = []; + const deferedSpecs = []; + const tags = []; + if (!Array.isArray(families)) { + console.warn("Google font families is required"); + return tags; + } + if (families.length >= 0) { + for (const family of families) { + if (typeof family === "string") { + deferedSpecs.push(family); + continue; + } + if (!family) + continue; + const { + name, + styles, + defer = true + } = family; + if (!name) { + console.warn("A google font family name is missing"); + continue; + } + let spec = name; + if (typeof styles === "string") + spec += `:${styles}`; + if (defer) + deferedSpecs.push(spec); + else + specs.push(spec); + } + } + if (preconnect && specs.length + deferedSpecs.length > 0) { + tags.push({ + tag: "link", + attrs: { + rel: "preconnect", + href: "https://fonts.gstatic.com/", + crossorigin: true + } + }); + } + if (deferedSpecs.length > 0) { + let href = `${GoogleFontsBase}?family=${deferedSpecs.join("&family=")}`; + if (typeof display === "string" && display !== "auto") + href += `&display=${display}`; + if (typeof text === "string" && text.length > 0) + href += `&text=${text}`; + tags.push({ + tag: "link", + attrs: { + rel: "preload", + as: "style", + onload: "this.rel='stylesheet'", + href + } + }); + } + if (specs.length > 0) { + let href = `${GoogleFontsBase}?family=${specs.join("&family=")}`; + if (typeof display === "string" && display !== "auto") + href += `&display=${display}`; + if (typeof text === "string" && text.length > 0) + href += `&text=${text}`; + tags.push({ + tag: "link", + attrs: { + rel: "stylesheet", + href + } + }); + } + return tags; +} +var google_fonts_default = injectFonts; + +// src/typekit.ts +var TypekitFontBase = "https://use.typekit.net/"; +function injectFonts2({ + id, + defer = true +}) { + const tags = []; + if (typeof id !== "string") { + console.warn("A Typekit id is required"); + return tags; + } + if (defer) { + tags.push({ + tag: "link", + attrs: { + rel: "preload", + as: "style", + onload: "this.rel='stylesheet'", + href: `${TypekitFontBase}${id}.css` + } + }); + } else { + tags.push({ + tag: "link", + attrs: { + rel: "stylesheet", + href: `${TypekitFontBase}${id}.css` + } + }); + } + return tags; +} +var typekit_default = injectFonts2; + +// src/index.ts +function VitePluginFonts(options = {}) { + return { + name: "vite-plugin-fonts", + transformIndexHtml() { + const tags = []; + if (options.typekit) + tags.push(...typekit_default(options.typekit)); + if (options.google) + tags.push(...google_fonts_default(options.google)); + return tags; + } + }; +} +var src_default = VitePluginFonts; +export { + VitePluginFonts as Plugin, + src_default as default +}; diff --git a/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/package.json b/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/package.json new file mode 100644 index 0000000..92ad7e7 --- /dev/null +++ b/node_modules/.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts/package.json @@ -0,0 +1,34 @@ +{ + "name": "vite-plugin-fonts", + "version": "0.2.2", + "description": "Webfont loader for vite", + "author": "stafyniaksacha", + "repository": "stafyniaksacha/vite-plugin-fonts", + "license": "MIT", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "dev": "npm run build -- --watch", + "example:dev": "npm -C example run dev", + "example:build": "npm -C example run build", + "build": "tsup src/index.ts --dts --format cjs,esm", + "lint": "eslint --ext .ts ./src", + "lint:fix": "eslint --fix --ext .ts ./src" + }, + "peerDependencies": { + "vite": "^2.0.0" + }, + "devDependencies": { + "@antfu/eslint-config-ts": "^0.5.0", + "@typescript-eslint/eslint-plugin": "^4.17.0", + "eslint": "^7.22.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "tsup": "^4.6.1", + "typescript": "^4.2.3", + "vite": "^2.0.5" + } +} diff --git a/node_modules/vite-plugin-fonts b/node_modules/vite-plugin-fonts new file mode 120000 index 0000000..cb60995 --- /dev/null +++ b/node_modules/vite-plugin-fonts @@ -0,0 +1 @@ +.pnpm/vite-plugin-fonts@0.2.2/node_modules/vite-plugin-fonts \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..fc57561 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "vite-plugin-fonts": "^0.2.2" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..f212c3c --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,15 @@ +lockfileVersion: 5.3 + +specifiers: + vite-plugin-fonts: ^0.2.2 + +devDependencies: + vite-plugin-fonts: 0.2.2 + +packages: + + /vite-plugin-fonts/0.2.2: + resolution: {integrity: sha512-fhzhsrTiuzlDjSO6g5sV5EVIIvbb8lmsaIY6eUTBM4lcF55x40UBpHrcyvNwIhQG211g0lu83XC7oZlkmvdkMA==} + peerDependencies: + vite: ^2.0.0 + dev: true