diff --git a/.changeset/quiet-feet-look.md b/.changeset/quiet-feet-look.md new file mode 100644 index 000000000..10e33ab7d --- /dev/null +++ b/.changeset/quiet-feet-look.md @@ -0,0 +1,5 @@ +--- +'vite-plugin-kit-routes': patch +--- + +remove a warning log that is internal diff --git a/.changeset/rare-papayas-cover.md b/.changeset/rare-papayas-cover.md new file mode 100644 index 000000000..e10b975f0 --- /dev/null +++ b/.changeset/rare-papayas-cover.md @@ -0,0 +1,5 @@ +--- +'@kitql/eslint-config': patch +--- + +add option to format by file/dir/glob with arg `-g` diff --git a/packages/create-kitql/templates/sveltekit-remult/.eslintignore b/packages/create-kitql/templates/sveltekit-remult/.eslintignore deleted file mode 100644 index caba32592..000000000 --- a/packages/create-kitql/templates/sveltekit-remult/.eslintignore +++ /dev/null @@ -1,16 +0,0 @@ -.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 - -# Ignore files that are project specific -/db \ No newline at end of file diff --git a/packages/create-kitql/templates/sveltekit-remult/.eslintrc.cjs b/packages/create-kitql/templates/sveltekit-remult/.eslintrc.cjs index a45c7ba3d..891a06a30 100644 --- a/packages/create-kitql/templates/sveltekit-remult/.eslintrc.cjs +++ b/packages/create-kitql/templates/sveltekit-remult/.eslintrc.cjs @@ -1,34 +1,5 @@ /** @type { import("eslint").Linter.FlatConfig } */ module.exports = { - root: true, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:svelte/recommended', - 'prettier' - ], - rules: { - // Some specific rules ? - }, - 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' - } - } - ] -}; + extends: ['@kitql'], + rules: {}, +} diff --git a/packages/create-kitql/templates/sveltekit-remult/.meta.json b/packages/create-kitql/templates/sveltekit-remult/.meta.json index 12a1f6afa..67f9ef5ad 100644 --- a/packages/create-kitql/templates/sveltekit-remult/.meta.json +++ b/packages/create-kitql/templates/sveltekit-remult/.meta.json @@ -1,5 +1,5 @@ { - "label": "SvelteKit Remult", - "hint": "Minimul setup for SvelteKit & Remult", - "order": 2 + "label": "SvelteKit Remult", + "hint": "Minimul setup for SvelteKit & Remult", + "order": 2 } diff --git a/packages/create-kitql/templates/sveltekit-remult/.prettierignore b/packages/create-kitql/templates/sveltekit-remult/.prettierignore index caba32592..8edb96451 100644 --- a/packages/create-kitql/templates/sveltekit-remult/.prettierignore +++ b/packages/create-kitql/templates/sveltekit-remult/.prettierignore @@ -13,4 +13,4 @@ package-lock.json yarn.lock # Ignore files that are project specific -/db \ No newline at end of file +/db diff --git a/packages/create-kitql/templates/sveltekit-remult/.prettierrc b/packages/create-kitql/templates/sveltekit-remult/.prettierrc deleted file mode 100644 index 95730232b..000000000 --- a/packages/create-kitql/templates/sveltekit-remult/.prettierrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "useTabs": true, - "singleQuote": true, - "trailingComma": "none", - "printWidth": 100, - "plugins": ["prettier-plugin-svelte"], - "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] -} diff --git a/packages/create-kitql/templates/sveltekit-remult/.prettierrc.cjs b/packages/create-kitql/templates/sveltekit-remult/.prettierrc.cjs new file mode 100644 index 000000000..a7a0da50f --- /dev/null +++ b/packages/create-kitql/templates/sveltekit-remult/.prettierrc.cjs @@ -0,0 +1,6 @@ +const config = require('@kitql/eslint-config/.prettierrc.cjs') + +module.exports = { + ...config, + // Some custom things? +} diff --git a/packages/create-kitql/templates/sveltekit-remult/README.md b/packages/create-kitql/templates/sveltekit-remult/README.md index 3a619ea2d..e0e6c628a 100644 --- a/packages/create-kitql/templates/sveltekit-remult/README.md +++ b/packages/create-kitql/templates/sveltekit-remult/README.md @@ -29,5 +29,4 @@ TODO... ## Info -xxx.spec.ts for unit test -xxx.e2e.ts for e2e test +xxx.spec.ts for unit test xxx.e2e.ts for e2e test diff --git a/packages/create-kitql/templates/sveltekit-remult/package.json b/packages/create-kitql/templates/sveltekit-remult/package.json index c01e90711..23d85edd5 100644 --- a/packages/create-kitql/templates/sveltekit-remult/package.json +++ b/packages/create-kitql/templates/sveltekit-remult/package.json @@ -1,41 +1,35 @@ { - "name": "create-kitql-sveltekit-remult", - "version": "0.0.1", - "type": "module", - "private": true, - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:w": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "format": "prettier --write .", - "lint": "prettier --check . && eslint .", - "test": "vitest", - "test:e2e": "playwright test", - "test:ci": "npm run test:e2e && npm run test" - }, - "devDependencies": { - "@playwright/test": "^1.28.1", - "@sveltejs/adapter-auto": "^3.0.0", - "@sveltejs/kit": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "eslint": "^8.28.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-svelte": "^2.30.0", - "pg": "^8.11.3", - "prettier": "^3.0.0", - "prettier-plugin-svelte": "^3.0.0", - "remult": "^0.24.1", - "svelte": "^4.2.7", - "svelte-check": "^3.6.0", - "tslib": "^2.4.1", - "typescript": "^5.0.0", - "vite": "^5.0.0", - "vite-plugin-kit-routes": "0.5.0", - "vite-plugin-striper": "0.3.1", - "vitest": "^1.0.0" - } + "name": "create-kitql-sveltekit-remult", + "version": "0.0.1", + "type": "module", + "private": true, + "scripts": { + "build": "vite build", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:w": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "dev": "vite dev", + "format": "kitql-lint --format", + "lint": "kitql-lint", + "preview": "vite preview", + "test": "vitest", + "test:ci": "npm run test:e2e && npm run test", + "test:e2e": "playwright test" + }, + "devDependencies": { + "@kitql/eslint-config": "^0.1.0", + "@playwright/test": "^1.28.1", + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "pg": "^8.11.3", + "remult": "^0.24.1", + "svelte": "^4.2.7", + "svelte-check": "^3.6.0", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.0.0", + "vite-plugin-kit-routes": "^0.5.0", + "vite-plugin-stripper": "^0.3.2", + "vitest": "^1.0.0" + } } diff --git a/packages/create-kitql/templates/sveltekit-remult/playwright.config.ts b/packages/create-kitql/templates/sveltekit-remult/playwright.config.ts index 81124a2cc..4821722e6 100644 --- a/packages/create-kitql/templates/sveltekit-remult/playwright.config.ts +++ b/packages/create-kitql/templates/sveltekit-remult/playwright.config.ts @@ -1,11 +1,11 @@ -import type { PlaywrightTestConfig } from '@playwright/test'; +import type { PlaywrightTestConfig } from '@playwright/test' const config: PlaywrightTestConfig = { - webServer: { - command: 'npm run build && npm run preview', - port: 4173 - }, - testMatch: /(.+\.)?(e2e)\.[jt]s/ -}; + webServer: { + command: 'npm run build && npm run preview', + port: 4173, + }, + testMatch: /(.+\.)?(e2e)\.[jt]s/, +} -export default config; +export default config diff --git a/packages/create-kitql/templates/sveltekit-remult/src/app.d.ts b/packages/create-kitql/templates/sveltekit-remult/src/app.d.ts index f59b884c5..0425013af 100644 --- a/packages/create-kitql/templates/sveltekit-remult/src/app.d.ts +++ b/packages/create-kitql/templates/sveltekit-remult/src/app.d.ts @@ -1,12 +1,12 @@ // See https://kit.svelte.dev/docs/types#app // for information about these interfaces declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface Platform {} - } + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } } -export {}; +export {} diff --git a/packages/create-kitql/templates/sveltekit-remult/src/app.html b/packages/create-kitql/templates/sveltekit-remult/src/app.html index 77a5ff52c..84ffad166 100644 --- a/packages/create-kitql/templates/sveltekit-remult/src/app.html +++ b/packages/create-kitql/templates/sveltekit-remult/src/app.html @@ -1,12 +1,12 @@ - - - - - %sveltekit.head% - - -
%sveltekit.body%
- + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ diff --git a/packages/create-kitql/templates/sveltekit-remult/src/hooks.server.ts b/packages/create-kitql/templates/sveltekit-remult/src/hooks.server.ts index e1f81bb42..081b8eb4f 100644 --- a/packages/create-kitql/templates/sveltekit-remult/src/hooks.server.ts +++ b/packages/create-kitql/templates/sveltekit-remult/src/hooks.server.ts @@ -1,4 +1,5 @@ -import { sequence } from '@sveltejs/kit/hooks'; -import { handleRemult } from './hooks/handleRemult'; +import { sequence } from '@sveltejs/kit/hooks' -export const handle = sequence(handleRemult); +import { handleRemult } from './hooks/handleRemult' + +export const handle = sequence(handleRemult) diff --git a/packages/create-kitql/templates/sveltekit-remult/src/hooks/handleRemult.ts b/packages/create-kitql/templates/sveltekit-remult/src/hooks/handleRemult.ts index 3b6598760..568f0e98e 100644 --- a/packages/create-kitql/templates/sveltekit-remult/src/hooks/handleRemult.ts +++ b/packages/create-kitql/templates/sveltekit-remult/src/hooks/handleRemult.ts @@ -1,24 +1,25 @@ -import { remultSveltekit } from 'remult/remult-sveltekit'; +import { remult } from 'remult' +import { remultSveltekit } from 'remult/remult-sveltekit' + // import { createPostgresDataProvider } from 'remult/postgres'; // import { DATABASE_URL } from '$env/static/private'; -import { entities, controllers } from '../shared'; -import { remult } from 'remult'; -import { Task } from '../shared'; +import { entities, controllers } from '../shared' +import { Task } from '../shared' export const handleRemult = remultSveltekit({ - // dataProvider: createPostgresDataProvider({ connectionString: DATABASE_URL }) - entities, - controllers, - initApi: async () => { - try { - if ((await remult.repo(Task).count()) === 0) { - await remult.repo(Task).insert({ title: 'Well done!' }); - await remult - .repo(Task) - .insert({ title: "You've successfully created a new KitQL remult project. 🚀" }); - } - } catch (error) { - console.error(error); - } - } -}); + // dataProvider: createPostgresDataProvider({ connectionString: DATABASE_URL }) + entities, + controllers, + initApi: async () => { + try { + if ((await remult.repo(Task).count()) === 0) { + await remult.repo(Task).insert({ title: 'Well done!' }) + await remult + .repo(Task) + .insert({ title: "You've successfully created a new KitQL remult project. 🚀" }) + } + } catch (error) { + console.error(error) + } + }, +}) diff --git a/packages/create-kitql/templates/sveltekit-remult/src/lib/ROUTES.spec.ts b/packages/create-kitql/templates/sveltekit-remult/src/lib/ROUTES.spec.ts index 5215f2fda..f6c8efbf5 100644 --- a/packages/create-kitql/templates/sveltekit-remult/src/lib/ROUTES.spec.ts +++ b/packages/create-kitql/templates/sveltekit-remult/src/lib/ROUTES.spec.ts @@ -1,8 +1,9 @@ -import { describe, it, expect } from 'vitest'; -import { route } from './ROUTES'; +import { describe, it, expect } from 'vitest' + +import { route } from './ROUTES' describe('ROUTES', () => { - it('root path is /', () => { - expect(route('/')).toBe('/'); - }); -}); + it('root path is /', () => { + expect(route('/')).toBe('/') + }) +}) diff --git a/packages/create-kitql/templates/sveltekit-remult/src/lib/ROUTES.ts b/packages/create-kitql/templates/sveltekit-remult/src/lib/ROUTES.ts index d87a9532f..28e98b48b 100644 --- a/packages/create-kitql/templates/sveltekit-remult/src/lib/ROUTES.ts +++ b/packages/create-kitql/templates/sveltekit-remult/src/lib/ROUTES.ts @@ -9,43 +9,62 @@ * PAGES */ const PAGES = { - '/': `/` -}; + '/': `/`, +} /** * SERVERS */ -const SERVERS = {}; +const SERVERS = {} /** * ACTIONS */ -const ACTIONS = {}; +const ACTIONS = {} /** * LINKS */ const LINKS = { - twitter_jycouet: `https://twitter.com/jycouet`, - github_kitql: `https://github.com/jycouet/kitql`, - github_remult: `https://github.com/jycouet/kitql` -}; + twitter_jycouet: `https://twitter.com/jycouet`, + github_kitql: `https://github.com/jycouet/kitql`, + github_remult: `https://github.com/jycouet/kitql`, +} + +type ParamValue = string | number | undefined /** * Append search params to a string */ -const appendSp = (sp?: Record, prefix: '?' | '&' = '?') => { - if (sp === undefined) return ''; - const mapping = Object.entries(sp) - .filter((c) => c[1] !== undefined) - .map((c) => [c[0], String(c[1])]); - - const formated = new URLSearchParams(mapping).toString(); - if (formated) { - return `${prefix}${formated}`; - } - return ''; -}; +export const appendSp = ( + sp?: Record, + prefix: '?' | '&' = '?', +) => { + if (sp === undefined) return '' + + const params = new URLSearchParams() + const append = (n: string, v: ParamValue) => { + if (v !== undefined) { + params.append(n, String(v)) + } + } + + for (const [name, val] of Object.entries(sp)) { + if (Array.isArray(val)) { + for (const v of val) { + append(name, v) + } + } else { + append(name, val) + } + } + + const formatted = params.toString() + if (formatted) { + return `${prefix}${formatted}` + } + return '' +} /** * get the current search params @@ -56,21 +75,29 @@ const appendSp = (sp?: Record, prefix: '?' * ``` */ export const currentSp = () => { - const params = new URLSearchParams(window.location.search); - const record: Record = {}; - for (const [key, value] of params.entries()) { - record[key] = value; - } - return record; -}; + const params = new URLSearchParams(window.location.search) + const record: Record = {} + for (const [key, value] of params.entries()) { + record[key] = value + } + return record +} + +function StringOrUndefined(val: any) { + if (val === undefined) { + return undefined + } + + return String(val) +} // route function helpers -type NonFunctionKeys = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T]; -type FunctionKeys = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T]; -type FunctionParams = T extends (...args: infer P) => any ? P : never; +type NonFunctionKeys = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T] +type FunctionKeys = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T] +type FunctionParams = T extends (...args: infer P) => any ? P : never -const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS }; -type AllTypes = typeof AllObjs; +const AllObjs = { ...PAGES, ...ACTIONS, ...SERVERS, ...LINKS } +type AllTypes = typeof AllObjs /** * To be used like this: @@ -81,17 +108,17 @@ type AllTypes = typeof AllObjs; * ``` */ export function route>( - key: T, - ...params: FunctionParams -): string; -export function route>(key: T): string; + key: T, + ...params: FunctionParams +): string +export function route>(key: T): string export function route(key: T, ...params: any[]): string { - if ((AllObjs[key] as any) instanceof Function) { - const element = (AllObjs as any)[key] as (...args: any[]) => string; - return element(...params); - } else { - return AllObjs[key] as string; - } + if ((AllObjs[key] as any) instanceof Function) { + const element = (AllObjs as any)[key] as (...args: any[]) => string + return element(...params) + } else { + return AllObjs[key] as string + } } /** @@ -110,9 +137,9 @@ export function route(key: T, ...params: any[]): strin * ``` */ export type KIT_ROUTES = { - PAGES: { '/': never }; - SERVERS: Record; - ACTIONS: Record; - LINKS: { twitter_jycouet: never; github_kitql: never; github_remult: never }; - Params: Record; -}; + PAGES: { '/': never } + SERVERS: Record + ACTIONS: Record + LINKS: { twitter_jycouet: never; github_kitql: never; github_remult: never } + Params: Record +} diff --git a/packages/create-kitql/templates/sveltekit-remult/src/routes/+layout.svelte b/packages/create-kitql/templates/sveltekit-remult/src/routes/+layout.svelte index 13ae1786a..5a90c2e0a 100644 --- a/packages/create-kitql/templates/sveltekit-remult/src/routes/+layout.svelte +++ b/packages/create-kitql/templates/sveltekit-remult/src/routes/+layout.svelte @@ -1,10 +1,10 @@ - KitQL Remult - + KitQL Remult +

KitQL & Remult

@@ -16,13 +16,13 @@
diff --git a/packages/create-kitql/templates/sveltekit-remult/src/routes/+page.svelte b/packages/create-kitql/templates/sveltekit-remult/src/routes/+page.svelte index b440a629a..cf7f477c2 100644 --- a/packages/create-kitql/templates/sveltekit-remult/src/routes/+page.svelte +++ b/packages/create-kitql/templates/sveltekit-remult/src/routes/+page.svelte @@ -1,60 +1,60 @@

Home

    - {#each list as task} -
  • - -
  • - {/each} + {#each list as task} +
  • + +
  • + {/each}
- - + +
+ await TasksController.setAllCompleted(list.length > 0 ? !list[0].completed : false)}>All diff --git a/packages/create-kitql/templates/sveltekit-remult/src/routes/e2e.ts b/packages/create-kitql/templates/sveltekit-remult/src/routes/e2e.ts index f9725a0a1..94fbf16cd 100644 --- a/packages/create-kitql/templates/sveltekit-remult/src/routes/e2e.ts +++ b/packages/create-kitql/templates/sveltekit-remult/src/routes/e2e.ts @@ -1,6 +1,6 @@ -import { expect, test } from '@playwright/test'; +import { expect, test } from '@playwright/test' test('index page has expected h1', async ({ page }) => { - await page.goto('/'); - await expect(page.getByRole('heading', { name: 'KitQL & Remult' })).toBeVisible(); -}); + await page.goto('/') + await expect(page.getByRole('heading', { name: 'KitQL & Remult' })).toBeVisible() +}) diff --git a/packages/create-kitql/templates/sveltekit-remult/src/shared/Task.ts b/packages/create-kitql/templates/sveltekit-remult/src/shared/Task.ts index eebf2de94..2e266e143 100644 --- a/packages/create-kitql/templates/sveltekit-remult/src/shared/Task.ts +++ b/packages/create-kitql/templates/sveltekit-remult/src/shared/Task.ts @@ -1,33 +1,33 @@ -import { BackendMethod, Entity, Fields, remult } from 'remult'; +import { BackendMethod, Entity, Fields, remult } from 'remult' @Entity('tasks', { - allowApiCrud: true + allowApiCrud: true, }) export class Task { - @Fields.cuid() - id!: string; + @Fields.cuid() + id!: string - @Fields.string({ - validate: (task) => { - if (task.title.length < 3) throw 'The title must be at least 3 characters long'; - } - }) - title: string = ''; + @Fields.string({ + validate: task => { + if (task.title.length < 3) throw 'The title must be at least 3 characters long' + }, + }) + title: string = '' - @Fields.boolean() - completed: boolean = false; + @Fields.boolean() + completed: boolean = false - @Fields.createdAt() - createdAt?: Date; + @Fields.createdAt() + createdAt?: Date } export class TasksController { - @BackendMethod({ allowed: true }) - static async setAllCompleted(completed: boolean) { - const taskRepo = remult.repo(Task); + @BackendMethod({ allowed: true }) + static async setAllCompleted(completed: boolean) { + const taskRepo = remult.repo(Task) - for (const task of await taskRepo.find()) { - await taskRepo.update(task.id, { completed }); - } - } + for (const task of await taskRepo.find()) { + await taskRepo.update(task.id, { completed }) + } + } } diff --git a/packages/create-kitql/templates/sveltekit-remult/src/shared/index.ts b/packages/create-kitql/templates/sveltekit-remult/src/shared/index.ts index e5c01c0e4..573f1786b 100644 --- a/packages/create-kitql/templates/sveltekit-remult/src/shared/index.ts +++ b/packages/create-kitql/templates/sveltekit-remult/src/shared/index.ts @@ -1,6 +1,6 @@ -import { Task, TasksController } from './Task'; +import { Task, TasksController } from './Task' -export { Task, TasksController }; +export { Task, TasksController } -export const entities = [Task]; -export const controllers = [TasksController]; +export const entities = [Task] +export const controllers = [TasksController] diff --git a/packages/create-kitql/templates/sveltekit-remult/svelte.config.js b/packages/create-kitql/templates/sveltekit-remult/svelte.config.js index 2b35fe1be..6acad8bac 100644 --- a/packages/create-kitql/templates/sveltekit-remult/svelte.config.js +++ b/packages/create-kitql/templates/sveltekit-remult/svelte.config.js @@ -1,18 +1,18 @@ -import adapter from '@sveltejs/adapter-auto'; -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; +import adapter from '@sveltejs/adapter-auto' +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' /** @type {import('@sveltejs/kit').Config} */ const config = { - // Consult https://kit.svelte.dev/docs/integrations#preprocessors - // for more information about preprocessors - preprocess: vitePreprocess(), + // 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() - } -}; + 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(), + }, +} -export default config; +export default config diff --git a/packages/create-kitql/templates/sveltekit-remult/tsconfig.json b/packages/create-kitql/templates/sveltekit-remult/tsconfig.json index d30425af1..5d92f34b8 100644 --- a/packages/create-kitql/templates/sveltekit-remult/tsconfig.json +++ b/packages/create-kitql/templates/sveltekit-remult/tsconfig.json @@ -1,19 +1,19 @@ { - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "experimentalDecorators": true, - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "moduleResolution": "bundler" - } - // 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 + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "experimentalDecorators": true, + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } + // 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/packages/create-kitql/templates/sveltekit-remult/vite.config.ts b/packages/create-kitql/templates/sveltekit-remult/vite.config.ts index 5b80e2042..1f5e81a4f 100644 --- a/packages/create-kitql/templates/sveltekit-remult/vite.config.ts +++ b/packages/create-kitql/templates/sveltekit-remult/vite.config.ts @@ -1,22 +1,26 @@ -import { sveltekit } from '@sveltejs/kit/vite'; -import { defineConfig } from 'vitest/config'; -import { kitRoutes } from 'vite-plugin-kit-routes'; -import { striper } from 'vite-plugin-striper'; +import { sveltekit } from '@sveltejs/kit/vite' +import { kitRoutes } from 'vite-plugin-kit-routes' +import { stripper } from 'vite-plugin-stripper' +import { defineConfig } from 'vitest/config' export default defineConfig({ - plugins: [ - sveltekit(), - striper({ decorators: ['BackendMethod'] }), - kitRoutes({ - post_update_run: 'npm exec prettier ./src/lib/ROUTES.ts -- -w', - LINKS: { - twitter_jycouet: 'https://twitter.com/jycouet', - github_kitql: 'https://github.com/jycouet/kitql', - github_remult: 'https://github.com/jycouet/kitql' - } - }) - ], - test: { - include: ['src/**/*.spec.{js,ts}'] - } -}); + plugins: [ + sveltekit(), + stripper({ decorators: ['BackendMethod'] }), + kitRoutes({ + logs: { + post_update_run: false, + update: false, + }, + post_update_run: 'npm run lint -- -f -g src/lib/ROUTES.ts', + LINKS: { + twitter_jycouet: 'https://twitter.com/jycouet', + github_kitql: 'https://github.com/jycouet/kitql', + github_remult: 'https://github.com/jycouet/kitql', + }, + }), + ], + test: { + include: ['src/**/*.spec.{js,ts}'], + }, +}) diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md index caba56cf2..8f3951d2e 100644 --- a/packages/eslint-config/README.md +++ b/packages/eslint-config/README.md @@ -5,7 +5,7 @@ ## 📖 Read the doc -[![](https://img.shields.io/badge/Documentation%20of-kitql%20lint%20format-FF3E00.svg?style=flat&logo=stackblitz&logoColor=FF3E00)](https://kitql.dev/docs) +[![](https://img.shields.io/badge/Documentation%20of-kitql%20lint%20format-FF3E00.svg?style=flat&logo=stackblitz&logoColor=FF3E00)](https://kitql.dev/docs/tools/08_eslint-config) ## Install @@ -18,8 +18,10 @@ npm install @kitql/eslint-config --D `.eslintrc.js` ```js +/** @type { import("eslint").Linter.FlatConfig } */ module.exports = { - extends: ['@kitql'] + extends: ['@kitql'], + rules: {} } ``` @@ -36,6 +38,29 @@ module.exports = { } ``` +### ignore things with + +`.prettierignore` + +```bash +.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 + +# Ignore files that are project specific +/db +``` + ### usage ```bash diff --git a/packages/eslint-config/cmd.js b/packages/eslint-config/cmd.js index 1e4eab4f7..e70675c71 100755 --- a/packages/eslint-config/cmd.js +++ b/packages/eslint-config/cmd.js @@ -7,6 +7,7 @@ import fs from 'fs' const log = new Log('kitql-lint') program.addOption(new Option('-f, --format', 'format')) +program.addOption(new Option('-g, --glob ', 'file/dir/glob (. by default)', '.')) program.parse(process.argv) const options_cli = program.opts() @@ -32,6 +33,7 @@ let pathPrettierIgnore = findFileOrUp('.prettierignore') let pathPrettierCjs = findFileOrUp('.prettierrc.cjs') const format = options_cli.format ?? false +const glob = options_cli.glob ?? '.' // First prettier const cmdPrettier = @@ -44,7 +46,7 @@ const cmdPrettier = // format or not `${format ? ' --write' : ''}` + // exec - ` .` + ` ${glob}` let result_prettier = spawn(cmdPrettier, { shell: true, cwd: process.cwd(), @@ -55,7 +57,12 @@ let result_prettier = spawn(cmdPrettier, { if (!format) { const logPrettier = new Log('kitql-lint prettier') result_prettier.stdout.on('data', data => { - logPrettier.error(data.toString()) + logPrettier.error( + data + .toString() + // rmv the last \n if any + .replace(/\n$/, ''), + ) }) } @@ -68,7 +75,7 @@ result_prettier.on('close', code => { // format or not `${format ? ' --fix' : ''}` + // exec - ` .` + ` ${glob}` // log.info(cmdEsLint) diff --git a/packages/vite-plugin-kit-routes/src/lib/plugin.ts b/packages/vite-plugin-kit-routes/src/lib/plugin.ts index a63d1d3fd..3f1ab6c55 100644 --- a/packages/vite-plugin-kit-routes/src/lib/plugin.ts +++ b/packages/vite-plugin-kit-routes/src/lib/plugin.ts @@ -956,7 +956,12 @@ ${objTypes // report errors if (shouldLog('errors', options)) { child.stderr.on('data', data => { - log.error(data.toString()) + const msg = data.toString().replace(/\n$/, '') + if (msg.includes('DEP0040') && msg.includes('punycode')) { + // silent error + } else { + log.error(msg) + } }) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 316c7957f..1f961f187 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -107,6 +107,9 @@ importers: packages/create-kitql/templates/sveltekit-remult: devDependencies: + '@kitql/eslint-config': + specifier: ^0.1.0 + version: link:../../../eslint-config '@playwright/test': specifier: ^1.28.1 version: 1.40.1 @@ -119,30 +122,9 @@ importers: '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 version: 3.0.1(svelte@4.2.8)(vite@5.0.10) - '@typescript-eslint/eslint-plugin': - specifier: ^6.0.0 - version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.2) - '@typescript-eslint/parser': - specifier: ^6.0.0 - version: 6.14.0(eslint@8.55.0)(typescript@5.3.2) - eslint: - specifier: ^8.28.0 - version: 8.55.0 - eslint-config-prettier: - specifier: ^9.0.0 - version: 9.1.0(eslint@8.55.0) - eslint-plugin-svelte: - specifier: ^2.30.0 - version: 2.35.0(eslint@8.55.0)(svelte@4.2.8) pg: specifier: ^8.11.3 version: 8.11.3 - prettier: - specifier: ^3.0.0 - version: 3.1.0 - prettier-plugin-svelte: - specifier: ^3.0.0 - version: 3.1.0(prettier@3.1.0)(svelte@4.2.8) remult: specifier: ^0.24.1 version: 0.24.1 @@ -162,11 +144,11 @@ importers: specifier: ^5.0.0 version: 5.0.10 vite-plugin-kit-routes: - specifier: 0.5.0 + specifier: ^0.5.0 version: link:../../../vite-plugin-kit-routes/dist - vite-plugin-striper: - specifier: 0.3.1 - version: 0.3.1 + vite-plugin-stripper: + specifier: ^0.3.2 + version: link:../../../vite-plugin-stripper/dist vitest: specifier: ^1.0.0 version: 1.0.4 @@ -916,6 +898,7 @@ packages: hasBin: true dependencies: '@babel/types': 7.23.6 + dev: false /@babel/parser@7.23.6: resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} @@ -1861,21 +1844,6 @@ packages: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - /@kitql/helpers@0.8.8: - resolution: {integrity: sha512-+oKunjiNcYtfwk6J7Vx+4IZjysg8DpJ/XUu2m0GwhXVA889H3ne8dfCko0YZxjmyLTf+5LvmQjbpxb8acqZF5g==} - engines: {node: ^16.14 || >=18} - dev: true - - /@kitql/internals@0.9.4: - resolution: {integrity: sha512-ktreSaUvZyVaZVj8Lg0PnQl9v5403rUKDAyJMFZQV/8eyAJjuTB84hT/AIPqkRr34hGtjO7e+hfEsgw4oQ/UxQ==} - engines: {node: ^16.14 || >=18} - dependencies: - '@babel/parser': 7.23.0 - '@kitql/helpers': 0.8.8 - recast: 0.23.4 - svelte: 4.2.1 - dev: true - /@lit-labs/ssr-dom-shim@1.1.1: resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} dev: false @@ -4206,6 +4174,7 @@ packages: object-is: 1.1.5 object.assign: 4.1.4 util: 0.12.5 + dev: false /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} @@ -4225,6 +4194,7 @@ packages: engines: {node: '>=4'} dependencies: tslib: 2.6.2 + dev: false /astring@1.8.4: resolution: {integrity: sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==} @@ -7990,6 +7960,7 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 + dev: false /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} @@ -8155,6 +8126,7 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: false /is-glob@3.1.0: resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} @@ -8201,6 +8173,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 + dev: false /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} @@ -10481,6 +10454,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 + dev: false /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} @@ -11838,6 +11812,7 @@ packages: esprima: 4.0.1 source-map: 0.6.1 tslib: 2.6.2 + dev: false /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} @@ -13947,6 +13922,7 @@ packages: is-generator-function: 1.0.10 is-typed-array: 1.1.10 which-typed-array: 1.1.9 + dev: false /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} @@ -14075,25 +14051,6 @@ packages: - terser dev: true - /vite-plugin-striper@0.3.1: - resolution: {integrity: sha512-zsb1dPkNERvyEpe98D+twsJk978Y2x01ljhX6Qo8ea+tE0DGZr1goE/W2uV/1nTRQevXWc+rD82CfLvICDqQfw==} - engines: {node: ^16.14 || >=18} - dependencies: - '@babel/parser': 7.23.0 - '@kitql/helpers': 0.8.8 - '@kitql/internals': 0.9.4 - recast: 0.23.4 - vite-plugin-watch-and-run: 1.6.0 - dev: true - - /vite-plugin-watch-and-run@1.6.0: - resolution: {integrity: sha512-iKfSTxIJ3M2DsEqCOqz+Kr72zxgcpXs2NvWTsReJOcZiBRjfImsp+9Kqkdkg9UQeCge5HZwLR3pzRgnUzGJ52w==} - engines: {node: ^16.14 || >=18} - dependencies: - '@kitql/helpers': 0.8.8 - micromatch: 4.0.5 - dev: true - /vite@5.0.10: resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==} engines: {node: ^18.0.0 || >=20.0.0} diff --git a/website/src/pages/docs/tools/08_eslint-config.mdx b/website/src/pages/docs/tools/08_eslint-config.mdx new file mode 100644 index 000000000..f2d4efef1 --- /dev/null +++ b/website/src/pages/docs/tools/08_eslint-config.mdx @@ -0,0 +1,69 @@ +import { Callout } from '@theguild/components' + +# 👌 How to - `@kitql/eslint-config` + + + _**KitQL** itself is not a library, it's "nothing" but a collection of standalone libraries._ + + +To have eslint & prettier in your project, you need 20 dep, files, ... and it's a pain to maintain +in each project. + +Here the idea is to reduce as much as possible the config on your end. _(Of course, you can still +tune things)_ + +## Install + +```bash +npm install @kitql/eslint-config --D +``` + +### eslint config + +`.eslintrc.js` + +```js +/** @type { import("eslint").Linter.FlatConfig } */ +module.exports = { + extends: ['@kitql'], + rules: { + // You can add rules here + } +} +``` + +### prettier config + +`.prettierrc.cjs` + +```js +const config = require('@kitql/eslint-config/.prettierrc.cjs') + +module.exports = { + ...config + // Some custom things? +} +``` + +### ignore things with + +`.prettierignore` + +```bash +.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 + +# Ignore files that are project specific +/db +``` diff --git a/website/src/pages/docs/tools/_meta.ts b/website/src/pages/docs/tools/_meta.ts index 3751a48f8..216e8002b 100644 --- a/website/src/pages/docs/tools/_meta.ts +++ b/website/src/pages/docs/tools/_meta.ts @@ -1,5 +1,6 @@ export default { '04_helpers': 'Helpers', + '08_eslint-config': 'Prettier & eslint', '06_vite-plugin-kit-routes': 'Vite - Kit Routes', '03_vite-plugin-watch-and-run': 'Vite - Watch and Run', '07_vite-plugin-stripper': 'Vite - Stripper',