diff --git a/.changeset/strange-wasps-camp.md b/.changeset/strange-wasps-camp.md new file mode 100644 index 000000000..25d88b9ed --- /dev/null +++ b/.changeset/strange-wasps-camp.md @@ -0,0 +1,5 @@ +--- +'vite-plugin-striper': patch +--- + +cleanup namings diff --git a/packages/create-kitql/templates/kit-routes/package-lock.json b/packages/create-kitql/templates/kit-routes/package-lock.json index 19fbd392f..d2b80a79c 100644 --- a/packages/create-kitql/templates/kit-routes/package-lock.json +++ b/packages/create-kitql/templates/kit-routes/package-lock.json @@ -1,11 +1,11 @@ { - "name": "kitql-kit-routes", + "name": "create-kitql-kit-routes", "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "kitql-kit-routes", + "name": "create-kitql-kit-routes", "version": "0.0.1", "devDependencies": { "@playwright/test": "^1.28.1", @@ -24,7 +24,7 @@ "typescript": "^5.0.0", "vite": "^4.4.2", "vite-plugin-kit-routes": "^0.1.0-next.5", - "vitest": "^0.32.2" + "vitest": "^0.34.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -972,26 +972,26 @@ "dev": true }, "node_modules/@vitest/expect": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.32.4.tgz", - "integrity": "sha512-m7EPUqmGIwIeoU763N+ivkFjTzbaBn0n9evsTOcde03ugy2avPs3kZbYmw3DkcH1j5mxhMhdamJkLQ6dM1bk/A==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz", + "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==", "dev": true, "dependencies": { - "@vitest/spy": "0.32.4", - "@vitest/utils": "0.32.4", - "chai": "^4.3.7" + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "chai": "^4.3.10" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.32.4.tgz", - "integrity": "sha512-cHOVCkiRazobgdKLnczmz2oaKK9GJOw6ZyRcaPdssO1ej+wzHVIkWiCiNacb3TTYPdzMddYkCgMjZ4r8C0JFCw==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz", + "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==", "dev": true, "dependencies": { - "@vitest/utils": "0.32.4", + "@vitest/utils": "0.34.6", "p-limit": "^4.0.0", "pathe": "^1.1.1" }, @@ -1027,12 +1027,12 @@ } }, "node_modules/@vitest/snapshot": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.32.4.tgz", - "integrity": "sha512-IRpyqn9t14uqsFlVI2d7DFMImGMs1Q9218of40bdQQgMePwVdmix33yMNnebXcTzDU5eiV3eUsoxxH5v0x/IQA==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz", + "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==", "dev": true, "dependencies": { - "magic-string": "^0.30.0", + "magic-string": "^0.30.1", "pathe": "^1.1.1", "pretty-format": "^29.5.0" }, @@ -1041,9 +1041,9 @@ } }, "node_modules/@vitest/spy": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.32.4.tgz", - "integrity": "sha512-oA7rCOqVOOpE6rEoXuCOADX7Lla1LIa4hljI2MSccbpec54q+oifhziZIJXxlE/CvI2E+ElhBHzVu0VEvJGQKQ==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz", + "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==", "dev": true, "dependencies": { "tinyspy": "^2.1.1" @@ -1053,9 +1053,9 @@ } }, "node_modules/@vitest/utils": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.32.4.tgz", - "integrity": "sha512-Gwnl8dhd1uJ+HXrYyV0eRqfmk9ek1ASE/LWfTCuWMw+d07ogHqp4hEAV28NiecimK6UY9DpSEPh+pXBA5gtTBg==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", "dev": true, "dependencies": { "diff-sequences": "^29.4.3", @@ -3686,9 +3686,9 @@ "dev": true }, "node_modules/tinypool": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.5.0.tgz", - "integrity": "sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", + "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", "dev": true, "engines": { "node": ">=14.0.0" @@ -3896,9 +3896,9 @@ } }, "node_modules/vite-node": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.32.4.tgz", - "integrity": "sha512-L2gIw+dCxO0LK14QnUMoqSYpa9XRGnTTTDjW2h19Mr+GR0EFj4vx52W41gFXfMLqpA00eK4ZjOVYo1Xk//LFEw==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz", + "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==", "dev": true, "dependencies": { "cac": "^6.7.14", @@ -3906,7 +3906,7 @@ "mlly": "^1.4.0", "pathe": "^1.1.1", "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" @@ -3955,34 +3955,34 @@ } }, "node_modules/vitest": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.32.4.tgz", - "integrity": "sha512-3czFm8RnrsWwIzVDu/Ca48Y/M+qh3vOnF16czJm98Q/AN1y3B6PBsyV8Re91Ty5s7txKNjEhpgtGPcfdbh2MZg==", + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz", + "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==", "dev": true, "dependencies": { "@types/chai": "^4.3.5", "@types/chai-subset": "^1.3.3", "@types/node": "*", - "@vitest/expect": "0.32.4", - "@vitest/runner": "0.32.4", - "@vitest/snapshot": "0.32.4", - "@vitest/spy": "0.32.4", - "@vitest/utils": "0.32.4", + "@vitest/expect": "0.34.6", + "@vitest/runner": "0.34.6", + "@vitest/snapshot": "0.34.6", + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", "acorn": "^8.9.0", "acorn-walk": "^8.2.0", "cac": "^6.7.14", - "chai": "^4.3.7", + "chai": "^4.3.10", "debug": "^4.3.4", "local-pkg": "^0.4.3", - "magic-string": "^0.30.0", + "magic-string": "^0.30.1", "pathe": "^1.1.1", "picocolors": "^1.0.0", "std-env": "^3.3.3", "strip-literal": "^1.0.1", "tinybench": "^2.5.0", - "tinypool": "^0.5.0", - "vite": "^3.0.0 || ^4.0.0", - "vite-node": "0.32.4", + "tinypool": "^0.7.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", + "vite-node": "0.34.6", "why-is-node-running": "^2.2.2" }, "bin": { diff --git a/packages/create-kitql/templates/kit-routes/package.json b/packages/create-kitql/templates/kit-routes/package.json index 393a98668..26a52afa4 100644 --- a/packages/create-kitql/templates/kit-routes/package.json +++ b/packages/create-kitql/templates/kit-routes/package.json @@ -31,7 +31,7 @@ "typescript": "^5.0.0", "vite": "^4.4.2", "vite-plugin-kit-routes": "^0.1.0-next.5", - "vitest": "^0.32.2" + "vitest": "^0.34.0" }, "type": "module" } diff --git a/packages/vite-plugin-kit-routes/src/app.d.ts b/packages/vite-plugin-kit-routes/src/app.d.ts index 0425013af..cc1d824af 100644 --- a/packages/vite-plugin-kit-routes/src/app.d.ts +++ b/packages/vite-plugin-kit-routes/src/app.d.ts @@ -2,6 +2,7 @@ // for information about these interfaces declare global { namespace App { + interface goto {} // interface Error {} // interface Locals {} // interface PageData {} diff --git a/packages/vite-plugin-kit-routes/src/lib/fs.ts b/packages/vite-plugin-kit-routes/src/lib/fs.ts index 6a4f47fed..f09ca28b5 100644 --- a/packages/vite-plugin-kit-routes/src/lib/fs.ts +++ b/packages/vite-plugin-kit-routes/src/lib/fs.ts @@ -1,4 +1,5 @@ -import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs' +import { readdirSync } from 'fs' +import { existsSync, mkdirSync, readFileSync, writeFileSync, lstatSync } from 'node:fs' import { dirname, join } from 'node:path' export function read(pathFile: string) { @@ -24,3 +25,15 @@ export function write(pathFile: string, data: string[]) { writeFileSync(join(pathFile), fullDataToWrite) return true } + +export function getFilesUnder(rootFolder: string) { + const files: string[] = [] + let list = readdirSync(rootFolder, { recursive: true }) as string[] + for (let i = 0; i < list.length; i++) { + const absolutePath = rootFolder + '/' + list[i] + if (!lstatSync(absolutePath).isDirectory()) { + files.push(list[i]) + } + } + return files +} diff --git a/packages/vite-plugin-kit-routes/src/lib/index.ts b/packages/vite-plugin-kit-routes/src/lib/index.ts index d0a3e3224..e4eab4176 100644 --- a/packages/vite-plugin-kit-routes/src/lib/index.ts +++ b/packages/vite-plugin-kit-routes/src/lib/index.ts @@ -1,3 +1 @@ -import { kitRoutes } from './plugin.js' - -export { kitRoutes } +export { kitRoutes } from './plugin.js' diff --git a/packages/vite-plugin-kit-routes/src/lib/plugin.ts b/packages/vite-plugin-kit-routes/src/lib/plugin.ts index 21d1deeb5..c12e7fcc5 100644 --- a/packages/vite-plugin-kit-routes/src/lib/plugin.ts +++ b/packages/vite-plugin-kit-routes/src/lib/plugin.ts @@ -1,12 +1,11 @@ import { parse } from '@babel/parser' -import { gray, green, Log, red, yellow } from '@kitql/helpers' -import { readdirSync } from 'fs' +import { green, Log, red, yellow } from '@kitql/helpers' import { spawn } from 'node:child_process' import * as recast from 'recast' import type { Plugin } from 'vite' import watch_and_run from 'vite-plugin-watch-and-run' -import { read, write } from './fs.js' +import { getFilesUnder, read, write } from './fs.js' const { visit } = recast.types @@ -103,16 +102,6 @@ export type Options = { * To override the type of a param globally. */ override_params?: Partial<{ [K in keyof T['Params']]: OverrideParam }> - - // TODO STORAGE? - // storage?: { - // /** - // * @default 'kitRoutes' but you can change it to avoid conflict with other localStorage? - // */ - // key?: string - - // params?: Partial<{ [K in keyof T['Storage_Params']]: StorageParam }> - // } } export type CustomPath = { @@ -152,11 +141,6 @@ export type OverrideParam = { // default?: string //TODO one day? } -// export type StorageParam = { -// type: string -// default?: string -// } - export type ExtendParam = { type?: string /** @@ -224,6 +208,7 @@ function routes_path() { const log = new Log('Kit Routes') const getFileKeys = ( + files: string[], type: 'PAGES' | 'SERVERS' | 'ACTIONS' | 'LINKS', options?: Options, withAppendSp?: boolean, @@ -246,9 +231,9 @@ const getFileKeys = ( const lookFor = type === 'PAGES' ? '+page.svelte' : type === 'SERVERS' ? '+server.ts' : '+page.server.ts' - let files = readdirSync(routes_path(), { recursive: true }) as string[] // For windows files = files.map(c => c.replaceAll('\\', '/')) + const toRet = files .filter(file => file.endsWith(lookFor)) .map(file => `/` + file.replace(`/${lookFor}`, '').replace(lookFor, '')) @@ -402,20 +387,10 @@ export const fileToMetadata = ( fullSP = `\${appendSp({ ${explicit_search_params_to_function.join(', ')} })}` } - // TODO STORAGE? - // const oParams = Object.entries(options?.storage?.params ?? []) let paramsDefaults = paramsFromPath .filter(c => c.default !== undefined) .map(c => { - // const oParam = oParams.filter(p => p[0] === c.name) - let additionalByStore = '' - // if (oParam.length > 0) { - // for (const [key, value] of Object.entries(oParam)) { - // additionalByStore += `/* waiting for ✨ Runes ✨ to have a perfect api! get(kitRoutes)?.${value[0]} ?? */ ` - // } - // } - - return `params.${c.name} = params.${c.name} ?? ${additionalByStore}${c.default}; ` + return `params.${c.name} = params.${c.name} ?? ${c.default}; ` }) let prop = '' @@ -569,11 +544,18 @@ const shouldLog = (kind: LogKind, options?: Options) => { } export const run = (options?: Options) => { + let files = getFilesUnder(routes_path()) + + // TODO check if harcoded links are around? + // for (let i = 0; i < files.length; i++) { + // goto, href, action, src, throw redirect? + // } + const objTypes = [ - { type: 'PAGES', files: getFileKeys('PAGES', options, true) }, - { type: 'SERVERS', files: getFileKeys('SERVERS', options, true) }, - { type: 'ACTIONS', files: getFileKeys('ACTIONS', options, false) }, - { type: 'LINKS', files: getFileKeys('LINKS', options, false) }, + { type: 'PAGES', files: getFileKeys(files, 'PAGES', options, true) }, + { type: 'SERVERS', files: getFileKeys(files, 'SERVERS', options, true) }, + { type: 'ACTIONS', files: getFileKeys(files, 'ACTIONS', options, false) }, + { type: 'LINKS', files: getFileKeys(files, 'LINKS', options, false) }, ] as const // Validate options @@ -696,79 +678,6 @@ ${objTypes ].join(', ')} } } `, - // // TODO STORAGE? - // `import { browser } from '$app/environment' - // import { writable } from 'svelte/store' - - // const _kitRoutes = (key: string, initValues?: T) => { - // const store = writable(initValues, set => { - // if (browser) { - // if(initValues){ - // const v = localStorage.getItem(key) - // if (v) { - // try { - // const json = JSON.parse(v) - // set(json) - // } catch (error) { - // set(initValues) - // } - // } else { - // set(initValues) - // } - // } else { - // set({} as any) - // } - - // const handleStorage = (event: StorageEvent) => { - // if (event.key === key) set(event.newValue ? JSON.parse(event.newValue) : null) - // } - // window.addEventListener('storage', handleStorage) - // return () => window.removeEventListener('storage', handleStorage) - // } else { - // if(initValues) { - // set(initValues) - // } else { - // set({} as any) - // } - // } - // }) - - // return { - // subscribe: store.subscribe, - // update: (u: T) => { - // if (browser) { - // localStorage.setItem(key, JSON.stringify(u)) - // } - // store.update(() => u) - // }, - // } - // } - - // export type StorageParams = ${ - // options?.storage?.params - // ? Object.entries(options?.storage?.params) - // .map(c => { - // return `{ ${c[0]}: ${c[1]?.type} }` - // }) - // .join(', ') - // : '{ }' - // } - // /** - // * - // * Example of usage: - // * \`\`\`ts - // * import { afterNavigate } from '$app/navigation' - // * import { kitRoutes } from '$lib/ROUTES.js' - // * - // * afterNavigate(() => { - // * kitRoutes.update({ lang: $page.params.lang }) - // * }) - // * \`\`\` - // * - // */ - // export let kitRoutes = _kitRoutes('${options?.storage?.key ?? 'kitRoutes'}') - - // `, ]) // TODO: optimize this later. We want to write the new file only if different after prettier?! (having a tmp file somewhere?) diff --git a/packages/vite-plugin-kit-routes/src/routes/+layout.svelte b/packages/vite-plugin-kit-routes/src/routes/+layout.svelte index e4c2d47af..5bde87090 100644 --- a/packages/vite-plugin-kit-routes/src/routes/+layout.svelte +++ b/packages/vite-plugin-kit-routes/src/routes/+layout.svelte @@ -1,4 +1,5 @@