From 770d397dfeac3e18641f5ffbd1bb442b26aa032d Mon Sep 17 00:00:00 2001 From: Luke Hagar Date: Mon, 22 May 2023 11:36:18 -0500 Subject: [PATCH] Initial commit --- .eslintignore | 13 +++++ .eslintrc.cjs | 30 ++++++++++++ .gitignore | 11 +++++ .npmrc | 2 + .prettierignore | 13 +++++ .prettierrc | 9 ++++ .vscode/settings.json | 97 ++++++++++++++++++++++++++++++++++++++ README.md | 61 ++++++++++++++++++++++++ package.json | 42 +++++++++++++++++ postcss.config.cjs | 6 +++ src/app.d.ts | 9 ++++ src/app.html | 12 +++++ src/app.postcss | 5 ++ src/index.test.ts | 7 +++ src/routes/+layout.svelte | 49 +++++++++++++++++++ src/routes/+layout.ts | 1 + src/routes/+page.svelte | 65 +++++++++++++++++++++++++ static/favicon.png | Bin 0 -> 5055 bytes static/manifest.json | 14 ++++++ svelte.config.js | 26 ++++++++++ tailwind.config.cjs | 9 ++++ tsconfig.json | 17 +++++++ vite.config.ts | 9 ++++ 23 files changed, 507 insertions(+) create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .vscode/settings.json create mode 100644 README.md create mode 100644 package.json create mode 100644 postcss.config.cjs create mode 100644 src/app.d.ts create mode 100644 src/app.html create mode 100644 src/app.postcss create mode 100644 src/index.test.ts create mode 100644 src/routes/+layout.svelte create mode 100644 src/routes/+layout.ts create mode 100644 src/routes/+page.svelte create mode 100644 static/favicon.png create mode 100644 static/manifest.json create mode 100644 svelte.config.js create mode 100644 tailwind.config.cjs create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..3897265 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..ebc1958 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,30 @@ +module.exports = { + root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:svelte/recommended', + 'prettier' + ], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + }, + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser' + } + } + ] +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b43d835 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* +pnpm-lock.yaml \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..0c05da4 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +engine-strict=true +resolution-mode=highest diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..3897265 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..a77fdde --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "pluginSearchDirs": ["."], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..dcfeb36 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,97 @@ +{ + "prettier.documentSelectors": ["**/*.svelte"], + "tailwindCSS.classAttributes": [ + "class", + "accent", + "active", + "background", + "badge", + "bgBackdrop", + "bgDark", + "bgDrawer", + "bgLight", + "blur", + "border", + "button", + "buttonAction", + "buttonBack", + "buttonClasses", + "buttonComplete", + "buttonDismiss", + "buttonNeutral", + "buttonNext", + "buttonPositive", + "buttonTextCancel", + "buttonTextConfirm", + "buttonTextNext", + "buttonTextPrevious", + "buttonTextSubmit", + "caretClosed", + "caretOpen", + "chips", + "color", + "cursor", + "display", + "element", + "fill", + "fillDark", + "fillLight", + "flex", + "gap", + "gridColumns", + "height", + "hover", + "invalid", + "justify", + "meter", + "padding", + "position", + "regionBackdrop", + "regionBody", + "regionCaption", + "regionCaret", + "regionCell", + "regionCone", + "regionContent", + "regionControl", + "regionDefault", + "regionDrawer", + "regionFoot", + "regionFooter", + "regionHead", + "regionHeader", + "regionIcon", + "regionInterface", + "regionInterfaceText", + "regionLabel", + "regionLead", + "regionLegend", + "regionList", + "regionNavigation", + "regionPage", + "regionPanel", + "regionRowHeadline", + "regionRowMain", + "regionTrail", + "ring", + "rounded", + "select", + "shadow", + "slotDefault", + "slotFooter", + "slotHeader", + "slotLead", + "slotMessage", + "slotMeta", + "slotPageContent", + "slotPageFooter", + "slotPageHeader", + "slotSidebarLeft", + "slotSidebarRight", + "slotTrail", + "spacing", + "text", + "track", + "width" + ] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..50418d7 --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +# SvelteKit Extension Template +By Luke Hagar + + +Built with [Sveltekit](https://kit.svelte.dev) and [Skeleton](https://www.skeleton.dev) + +Out of the box Includes: + * [x] Skeleton + * [x] Tailwind + * [x] ESlint + * [x] Prettier + * [x] TypeScript + * [x] Vite + * [x] Vitest + + + + +## Reference Documentation + + +[Extension Development Basics](https://developer.chrome.com/docs/extensions/mv3/getstarted/development-basics/) + + + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +NPM: +```bash +npm run dev +``` +Yarn: +```bash +yarn dev +``` +pnpm: +```bash +pnpm dev +``` + +## Building + +To create a production version of your app: + +NPM: +```bash +npm run build +``` +Yarn: +```bash +yarn build +``` +pnpm: +```bash +pnpm build +``` + + +> To deploy your app, you can load it as an unpacked chrome extension, instructions are in [Extension Development Basics](https://developer.chrome.com/docs/extensions/mv3/getstarted/development-basics/) diff --git a/package.json b/package.json new file mode 100644 index 0000000..3166d4e --- /dev/null +++ b/package.json @@ -0,0 +1,42 @@ +{ + "name": "sveltekit-extension-template", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "test:unit": "vitest", + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --plugin-search-dir . --write ." + }, + "devDependencies": { + "@floating-ui/dom": "^1.2.8", + "@skeletonlabs/skeleton": "^1.5.1", + "@sveltejs/adapter-auto": "^2.0.0", + "@sveltejs/kit": "^1.5.0", + "@tailwindcss/forms": "^0.5.3", + "@tailwindcss/typography": "^0.5.9", + "@typescript-eslint/eslint-plugin": "^5.45.0", + "@typescript-eslint/parser": "^5.45.0", + "autoprefixer": "^10.4.14", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte": "^2.26.0", + "highlight.js": "^11.8.0", + "postcss": "^8.4.23", + "prettier": "^2.8.0", + "prettier-plugin-svelte": "^2.8.1", + "svelte": "^3.54.0", + "svelte-check": "^3.0.1", + "sveltekit-adapter-chrome-extension": "^2.0.0", + "tailwindcss": "^3.3.2", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^4.3.0", + "vitest": "^0.25.3" + }, + "type": "module" +} diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 0000000..16dce0b --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} \ No newline at end of file diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 0000000..8f4d638 --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,9 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +// and what to do when importing types +declare namespace App { + // interface Locals {} + // interface PageData {} + // interface Error {} + // interface Platform {} +} diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..ec615f0 --- /dev/null +++ b/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/src/app.postcss b/src/app.postcss new file mode 100644 index 0000000..5da33b4 --- /dev/null +++ b/src/app.postcss @@ -0,0 +1,5 @@ +html, +body { + @apply !h-[600px] !w-[800px]; + background-repeat: no-repeat, no-repeat, no-repeat; +} diff --git a/src/index.test.ts b/src/index.test.ts new file mode 100644 index 0000000..e07cbbd --- /dev/null +++ b/src/index.test.ts @@ -0,0 +1,7 @@ +import { describe, it, expect } from 'vitest'; + +describe('sum test', () => { + it('adds 1 + 2 to equal 3', () => { + expect(1 + 2).toBe(3); + }); +}); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..752ac3c --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,49 @@ + + + + + + + + + Skeleton + + + + Discord + + + Twitter + + + GitHub + + + + + + + diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts new file mode 100644 index 0000000..189f71e --- /dev/null +++ b/src/routes/+layout.ts @@ -0,0 +1 @@ +export const prerender = true; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte new file mode 100644 index 0000000..4a7aa5a --- /dev/null +++ b/src/routes/+page.svelte @@ -0,0 +1,65 @@ + + +
+
+

Welcome to Skeleton.

+ +
+
+ + + +
+ + +
+

Try editing the following:

+

/src/routes/+layout.svelte

+

/src/routes/+page.svelte

+
+
+
+ + diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c8e8088fa24f39aa1c4864f8c700dca56e73a6 GIT binary patch literal 5055 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 VIvqIQ?9l)K002ovPDHLkV1iC5WYhov literal 0 HcmV?d00001 diff --git a/static/manifest.json b/static/manifest.json new file mode 100644 index 0000000..721db5f --- /dev/null +++ b/static/manifest.json @@ -0,0 +1,14 @@ +{ + "name": "sveltekit-extension-template", + "description": "Example Chrome extension built with Sveltekit and Skeleton", + "version": "0.0.1", + "manifest_version": 3, + "icons": { + "32": "favicon.png" + }, + "action": { + "default_popup": "index.html", + "default_icon": "favicon.png", + "default_title": "sveltekit-extension-template" + } +} diff --git a/svelte.config.js b/svelte.config.js new file mode 100644 index 0000000..83a304b --- /dev/null +++ b/svelte.config.js @@ -0,0 +1,26 @@ +import adapter from 'sveltekit-adapter-chrome-extension'; +import { vitePreprocess } from '@sveltejs/kit/vite'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // for more information about preprocessors + preprocess: vitePreprocess(), + + kit: { + // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. + // If your environment is not supported or you settled on a specific environment, switch out the adapter. + // See https://kit.svelte.dev/docs/adapters for more information about adapters. + adapter: adapter({ + // default options are shown + pages: 'build', + assets: 'build', + fallback: null, + precompress: false, + manifest: 'manifest.json' + }), + appDir: 'app' + } +}; + +export default config; diff --git a/tailwind.config.cjs b/tailwind.config.cjs new file mode 100644 index 0000000..837b732 --- /dev/null +++ b/tailwind.config.cjs @@ -0,0 +1,9 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + darkMode: 'class', + content: ['./src/**/*.{html,js,svelte,ts}', require('path').join(require.resolve('@skeletonlabs/skeleton'), '../**/*.{html,js,svelte,ts}')], + theme: { + extend: {}, + }, + plugins: [require('@tailwindcss/forms'),require('@tailwindcss/typography'),...require('@skeletonlabs/skeleton/tailwind/skeleton.cjs')()], +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6ae0c8c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..37b6a84 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,9 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + plugins: [sveltekit()], + test: { + include: ['src/**/*.{test,spec}.{js,ts}'] + } +});