diff --git a/integrations/react/README.md b/integrations/react/README.md deleted file mode 100644 index 0d6babe..0000000 --- a/integrations/react/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# React + TypeScript + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - -## Expanding the ESLint configuration - -If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: - -- Configure the top-level `parserOptions` property like this: - -```js -export default { - // other rules... - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - project: ['./tsconfig.json', './tsconfig.node.json'], - tsconfigRootDir: __dirname, - }, -} -``` - -- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` -- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` -- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/integrations/react/vite.config.ts b/integrations/react/vite.config.ts index 6407e33..61746fb 100644 --- a/integrations/react/vite.config.ts +++ b/integrations/react/vite.config.ts @@ -2,17 +2,18 @@ import { mergeConfig, defineConfig } from 'vitest/config' import react from '@vitejs/plugin-react' import { tanstackBuildConfig } from '@tanstack/config/build' +const config = defineConfig({ + plugins: [react()], + test: { + name: 'react-integration', + watch: false, + }, +}) + export default mergeConfig( + config, tanstackBuildConfig({ entry: 'src/index.ts', srcDir: 'src', - exclude: ['src/__tests__'], - }), - defineConfig({ - plugins: [react()], - test: { - name: 'react', - watch: false, - }, }), ) diff --git a/integrations/solid/.gitignore b/integrations/solid/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/integrations/solid/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/integrations/solid/package.json b/integrations/solid/package.json new file mode 100644 index 0000000..8b8169b --- /dev/null +++ b/integrations/solid/package.json @@ -0,0 +1,15 @@ +{ + "name": "solid-integration", + "private": true, + "type": "module", + "scripts": { + "test:build": "vite build && vitest" + }, + "dependencies": { + "solid-js": "^1.8.7" + }, + "devDependencies": { + "@tanstack/config": "<1.0.0", + "vite-plugin-solid": "^2.8.0" + } +} diff --git a/integrations/solid/snap/cjs/App.cjs b/integrations/solid/snap/cjs/App.cjs new file mode 100644 index 0000000..22af465 --- /dev/null +++ b/integrations/solid/snap/cjs/App.cjs @@ -0,0 +1,17 @@ +"use strict"; +const web = require("solid-js/web"); +const solidJs = require("solid-js"); +const _tmpl$ = /* @__PURE__ */ web.template(`
Edit src/App.tsx and save to test HMR`), _tmpl$3 = /* @__PURE__ */ web.template(`
Click on the Vite and Solid logos to learn more`); +function App() { + const [count, setCount] = solidJs.createSignal(0); + return [_tmpl$(), (() => { + const _el$2 = _tmpl$2(), _el$3 = _el$2.firstChild; + _el$3.firstChild; + _el$3.$$click = () => setCount((count2) => count2 + 1); + web.insert(_el$3, count, null); + return _el$2; + })(), _tmpl$3()]; +} +web.delegateEvents(["click"]); +module.exports = App; +//# sourceMappingURL=App.cjs.map diff --git a/integrations/solid/snap/cjs/App.cjs.map b/integrations/solid/snap/cjs/App.cjs.map new file mode 100644 index 0000000..23b54a9 --- /dev/null +++ b/integrations/solid/snap/cjs/App.cjs.map @@ -0,0 +1 @@ +{"version":3,"file":"App.cjs","sources":["../../src/App.tsx"],"sourcesContent":["import { createSignal } from 'solid-js'\n\nfunction App() {\n const [count, setCount] = createSignal(0)\n\n return (\n <>\n
\n Edit src/App.tsx and save to test HMR\n
\n Click on the Vite and Solid logos to learn more\n
\n >\n )\n}\n\nexport default App\n"],"names":["App","count","setCount","createSignal","_tmpl$","_el$2","_tmpl$2","_el$3","firstChild","$$click","_$insert","_tmpl$3","_$delegateEvents"],"mappings":";;;;AAEA,SAASA,MAAM;AACb,QAAM,CAACC,OAAOC,QAAQ,IAAIC,QAAY,aAAC,CAAC;AAExC,SAAA,CAAAC,OAAA,IAAA,MAAA;AAAAC,UAAAA,QAAAC,WAAAC,QAAAF,MAAAG;AAAAD,UAAAC;AAAAD,UAAAE,UAIuB,MAAMP,SAAUD,CAAAA,WAAUA,SAAQ,CAAC;AAACS,QAAAA,OAAAH,OACzCN,OAAK,IAAA;AAAA,WAAAI;AAAAA,EAAA,GAAA,GAAAM,QAAA,CAAA;AAWzB;AAEkBC,IAAAA,eAAA,CAAA,OAAA,CAAA;;"} \ No newline at end of file diff --git a/integrations/solid/snap/cjs/App.d.cts b/integrations/solid/snap/cjs/App.d.cts new file mode 100644 index 0000000..44528e9 --- /dev/null +++ b/integrations/solid/snap/cjs/App.d.cts @@ -0,0 +1,2 @@ +declare function App(): import("solid-js").JSX.Element; +export default App; diff --git a/integrations/solid/snap/cjs/index.cjs b/integrations/solid/snap/cjs/index.cjs new file mode 100644 index 0000000..720fcff --- /dev/null +++ b/integrations/solid/snap/cjs/index.cjs @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); +const App = require("./App.cjs"); +exports.App = App; +//# sourceMappingURL=index.cjs.map diff --git a/integrations/solid/snap/cjs/index.cjs.map b/integrations/solid/snap/cjs/index.cjs.map new file mode 100644 index 0000000..32a0c91 --- /dev/null +++ b/integrations/solid/snap/cjs/index.cjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"} \ No newline at end of file diff --git a/integrations/solid/snap/cjs/index.d.cts b/integrations/solid/snap/cjs/index.d.cts new file mode 100644 index 0000000..c866729 --- /dev/null +++ b/integrations/solid/snap/cjs/index.d.cts @@ -0,0 +1 @@ +export { default as App } from './App'; diff --git a/integrations/solid/snap/esm/App.d.ts b/integrations/solid/snap/esm/App.d.ts new file mode 100644 index 0000000..44528e9 --- /dev/null +++ b/integrations/solid/snap/esm/App.d.ts @@ -0,0 +1,2 @@ +declare function App(): import("solid-js").JSX.Element; +export default App; diff --git a/integrations/solid/snap/esm/App.js b/integrations/solid/snap/esm/App.js new file mode 100644 index 0000000..569dc03 --- /dev/null +++ b/integrations/solid/snap/esm/App.js @@ -0,0 +1,18 @@ +import { delegateEvents, insert, template } from "solid-js/web"; +import { createSignal } from "solid-js"; +const _tmpl$ = /* @__PURE__ */ template(`Edit src/App.tsx and save to test HMR`), _tmpl$3 = /* @__PURE__ */ template(`
Click on the Vite and Solid logos to learn more`); +function App() { + const [count, setCount] = createSignal(0); + return [_tmpl$(), (() => { + const _el$2 = _tmpl$2(), _el$3 = _el$2.firstChild; + _el$3.firstChild; + _el$3.$$click = () => setCount((count2) => count2 + 1); + insert(_el$3, count, null); + return _el$2; + })(), _tmpl$3()]; +} +delegateEvents(["click"]); +export { + App as default +}; +//# sourceMappingURL=App.js.map diff --git a/integrations/solid/snap/esm/App.js.map b/integrations/solid/snap/esm/App.js.map new file mode 100644 index 0000000..331f1a6 --- /dev/null +++ b/integrations/solid/snap/esm/App.js.map @@ -0,0 +1 @@ +{"version":3,"file":"App.js","sources":["../../src/App.tsx"],"sourcesContent":["import { createSignal } from 'solid-js'\n\nfunction App() {\n const [count, setCount] = createSignal(0)\n\n return (\n <>\n
\n Edit src/App.tsx and save to test HMR\n
\n Click on the Vite and Solid logos to learn more\n
\n >\n )\n}\n\nexport default App\n"],"names":["App","count","setCount","createSignal","_tmpl$","_el$2","_tmpl$2","_el$3","firstChild","$$click","_$insert","_tmpl$3","_$delegateEvents"],"mappings":";;;AAEA,SAASA,MAAM;AACb,QAAM,CAACC,OAAOC,QAAQ,IAAIC,aAAa,CAAC;AAExC,SAAA,CAAAC,OAAA,IAAA,MAAA;AAAAC,UAAAA,QAAAC,WAAAC,QAAAF,MAAAG;AAAAD,UAAAC;AAAAD,UAAAE,UAIuB,MAAMP,SAAUD,CAAAA,WAAUA,SAAQ,CAAC;AAACS,WAAAH,OACzCN,OAAK,IAAA;AAAA,WAAAI;AAAAA,EAAA,GAAA,GAAAM,QAAA,CAAA;AAWzB;AAEkBC,eAAA,CAAA,OAAA,CAAA;"} \ No newline at end of file diff --git a/integrations/solid/snap/esm/index.d.ts b/integrations/solid/snap/esm/index.d.ts new file mode 100644 index 0000000..c866729 --- /dev/null +++ b/integrations/solid/snap/esm/index.d.ts @@ -0,0 +1 @@ +export { default as App } from './App'; diff --git a/integrations/solid/snap/esm/index.js b/integrations/solid/snap/esm/index.js new file mode 100644 index 0000000..e203bcc --- /dev/null +++ b/integrations/solid/snap/esm/index.js @@ -0,0 +1,5 @@ +import { default as default2 } from "./App.js"; +export { + default2 as App +}; +//# sourceMappingURL=index.js.map diff --git a/integrations/solid/snap/esm/index.js.map b/integrations/solid/snap/esm/index.js.map new file mode 100644 index 0000000..594ae09 --- /dev/null +++ b/integrations/solid/snap/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"} \ No newline at end of file diff --git a/integrations/solid/src/App.tsx b/integrations/solid/src/App.tsx new file mode 100644 index 0000000..a167f3a --- /dev/null +++ b/integrations/solid/src/App.tsx @@ -0,0 +1,24 @@ +import { createSignal } from 'solid-js' + +function App() { + const [count, setCount] = createSignal(0) + + return ( + <> +
+ Edit src/App.tsx and save to test HMR
+
+ Click on the Vite and Solid logos to learn more +
+ > + ) +} + +export default App diff --git a/integrations/solid/src/index.ts b/integrations/solid/src/index.ts new file mode 100644 index 0000000..f52c042 --- /dev/null +++ b/integrations/solid/src/index.ts @@ -0,0 +1 @@ +export { default as App } from './App' diff --git a/integrations/solid/tests/build.test.ts b/integrations/solid/tests/build.test.ts new file mode 100644 index 0000000..469934b --- /dev/null +++ b/integrations/solid/tests/build.test.ts @@ -0,0 +1,41 @@ +import { readFileSync, readdirSync } from 'node:fs' +import { fileURLToPath } from 'node:url' +import { dirname, resolve } from 'node:path' +import { describe, expect, it } from 'vitest' + +const __dirname = dirname(fileURLToPath(import.meta.url)) +const rootDir = resolve(__dirname, '..') + +const esmExtensions = ['.js', '.js.map', '.d.ts'] +const cjsExtensions = ['.cjs', '.cjs.map', '.d.cts'] + +const files = ['index', 'App'] + +describe('Check Solid build output', () => { + it('should output the same file structure', () => { + const distFiles = readdirSync(`${rootDir}/dist`, { recursive: true }) + const snapFiles = readdirSync(`${rootDir}/snap`, { recursive: true }) + + expect(distFiles).toEqual(snapFiles) + }) + + it('should build the same ESM output', () => { + files.forEach((file) => { + esmExtensions.forEach((ext) => { + expect( + readFileSync(`${rootDir}/dist/esm/${file}${ext}`).toString(), + ).toMatchFileSnapshot(`${rootDir}/snap/esm/${file}${ext}`) + }) + }) + }) + + it('should build the same CJS output', () => { + files.forEach((file) => { + cjsExtensions.forEach((ext) => { + expect( + readFileSync(`${rootDir}/dist/cjs/${file}${ext}`).toString(), + ).toMatchFileSnapshot(`${rootDir}/snap/cjs/${file}${ext}`) + }) + }) + }) +}) diff --git a/integrations/solid/tsconfig.json b/integrations/solid/tsconfig.json new file mode 100644 index 0000000..aab2a31 --- /dev/null +++ b/integrations/solid/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + "jsxImportSource": "solid-js", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src", "tests", "vite.config.ts"] +} diff --git a/integrations/solid/vite.config.ts b/integrations/solid/vite.config.ts new file mode 100644 index 0000000..2d821af --- /dev/null +++ b/integrations/solid/vite.config.ts @@ -0,0 +1,19 @@ +import { mergeConfig, defineConfig } from 'vitest/config' +import solid from 'vite-plugin-solid' +import { tanstackBuildConfig } from '@tanstack/config/build' + +const config = defineConfig({ + plugins: [solid()], + test: { + name: 'solid-integration', + watch: false, + }, +}) + +export default mergeConfig( + config, + tanstackBuildConfig({ + entry: 'src/index.ts', + srcDir: 'src', + }), +) diff --git a/integrations/vue/README.md b/integrations/vue/README.md deleted file mode 100644 index ef72fd5..0000000 --- a/integrations/vue/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Vue 3 + TypeScript + Vite - -This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `