Shows how to get repo export and walk it in TypeScript walktherepo.wisp.place

a little readme

Changed files
+13 -47
src
+2 -46
README.md
··· 1 - # Svelte + TS + Vite 2 - 3 - This template should help get you started developing with Svelte and TypeScript in Vite. 4 - 5 - ## Recommended IDE Setup 6 - 7 - [VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode). 8 - 9 - ## Need an official Svelte framework? 10 - 11 - Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more. 12 - 13 - ## Technical considerations 14 - 15 - **Why use this over SvelteKit?** 16 - 17 - - It brings its own routing solution which might not be preferable for some users. 18 - - It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app. 19 - 20 - This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project. 21 - 22 - Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate. 23 - 24 - **Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?** 25 - 26 - Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information. 27 - 28 - **Why include `.vscode/extensions.json`?** 29 - 30 - Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project. 31 - 32 - **Why enable `allowJs` in the TS template?** 33 - 34 - While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant. 35 - 36 - **Why is HMR not preserving my local component state?** 37 - 38 - HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr). 39 - 40 - If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR. 1 + # WIP 41 2 42 - ```ts 43 - // store.ts 44 - // An extremely simple external store 45 - import { writable } from 'svelte/store' 46 - export default writable(0) 47 - ``` 3 + Will show how to get a users repo and walk it so you don't do 10 billion list records calls
+7 -1
src/App.svelte
··· 2 2 3 3 import SearchForm from "./lib/SearchForm.svelte"; 4 4 5 + let showRepoStats = $state(false) 6 + 5 7 const resolvedResult = (did: string, pdsUrl: string) => { 6 8 console.log(did, pdsUrl); 7 9 } 10 + 11 + 8 12 </script> 9 13 10 14 <main> 11 15 <h1>Repo Walk Example</h1> 12 16 13 17 <div class="card"> 14 - <SearchForm resolvedResult={resolvedResult} /> 18 + {#if showRepoStats} 19 + <SearchForm resolvedResult={resolvedResult} /> 20 + {/if} 15 21 </div> 16 22 17 23 </main>
+4
src/lib/RepoStats.svelte
··· 1 + <script lang="ts"> 2 + const { did, pdsUrl } = $props(); 3 + 4 + </script>