podcast manager

add docs, and update eslint config to check them they're used in typechecking

+55 -5
+2 -1
.gitignore
··· 9 9 lerna-debug.log* 10 10 11 11 node_modules 12 + docs 12 13 dist 13 - dist-ssr 14 14 *.local 15 15 16 16 # Editor directories and files ··· 23 23 *.njsproj 24 24 *.sln 25 25 *.sw? 26 + /.wireit/
+13 -3
eslint.config.js
··· 39 39 }, 40 40 }, 41 41 rules: { 42 + // eg, `open` is a global, but probably not really intended that way in our code 43 + 'no-restricted-globals': ['error', ...restrictedGlobals], 44 + 45 + // undef is handled by typecheck 46 + // for typechecking we want to allow unused vars like `import * as preact_types from 'preact'` 47 + 'no-undef': ['off'], 48 + 'no-usused-vars': ['warn', { varsIgnoredPattern: '_types' }], 49 + 50 + // preferences 42 51 'max-len': ['warn', { code: 100 }], 43 52 'no-multi-spaces': ['off'], 44 - 'no-restricted-globals': ['error', ...restrictedGlobals], 45 53 '@stylistic/dot-location': ['error', 'property'], 46 54 '@stylistic/padded-blocks': ['warn', { classes: 'always', blocks: 'never' }], 55 + 56 + // enforce docs 47 57 'jsdoc/check-indentation': ['warn'], 48 58 'jsdoc/tag-lines': ['warn', 'always', { count: 0, startLines: 1 }], 49 59 }, ··· 51 61 52 62 // server specific 53 63 { 54 - files: ['./src/server/**/*.{js}'], 64 + files: ['./src/server/*.js', './src/server/**/*.js'], 55 65 languageOptions: { 56 66 globals: { 57 67 ...globals.es2024, ··· 64 74 // mostly cribbed from preact's config, but that's not setup to handle eslint9 65 75 // https://github.com/preactjs/eslint-config-preact/blob/master/index.js 66 76 { 67 - files: ['./src/client/**/*.{js,jsx}'], 77 + files: ['./src/client/*.{js,jsx}', './src/client/**/*.{js,jsx}'], 68 78 plugins: { 69 79 react, 70 80 reactHooks,
+38
jsdoc.json
··· 1 + { 2 + "tags": { 3 + "allowUnknownTags": true, 4 + "dictionaries": ["jsdoc"] 5 + }, 6 + "source": { 7 + "include": [ 8 + "src" 9 + ], 10 + "includePattern": ".+\\.js(doc)?$", 11 + "excludePattern": "(^|\\/|\\\\)_" 12 + }, 13 + "opts": { 14 + "template": "node_modules/tidy-jsdoc-fork", 15 + "encoding": "utf8", 16 + "destination": "./docs/", 17 + "recurse": true 18 + }, 19 + "plugins": [ 20 + "plugins/markdown" 21 + ], 22 + "templates": { 23 + "referenceTitle": "skypod", 24 + "cleverLinks": true, 25 + "monospaceLinks": true 26 + }, 27 + "metadata": { 28 + "title": "skypod" 29 + }, 30 + "styles": { 31 + "nav-width": "400px", 32 + "heading-size": "1.4rem", 33 + "definition-size": "1.0rem" 34 + }, 35 + "markdown": { 36 + "hardwrap": true 37 + } 38 + }
+2 -1
package.json
··· 49 49 "eslint-plugin-react": "^7.37.5", 50 50 "eslint-plugin-react-hooks": "^5.2.0", 51 51 "globals": "^16.2.0", 52 - "tidy-jsdoc": "^1.4.1", 52 + "jsdoc": "^4.0.4", 53 + "tidy-jsdoc-fork": "github:lygaret/tidy-jsdoc", 53 54 "typescript": "^5.8.3", 54 55 "typescript-eslint-language-service": "^5.0.5", 55 56 "vite": "^6.3.5",