From 656c2da8cf2065577e15aa4f145ebeb74ca37af0 Mon Sep 17 00:00:00 2001 From: Jan Andrle Date: Tue, 9 Jun 2026 10:39:23 +0200 Subject: [PATCH] :zap: Adds routing Squashed commit of the following: commit d26bffc33a5d06fa6a6ff0463d43cc51d0bf3cca Author: Jan Andrle Date: Tue Jun 9 10:35:14 2026 +0200 :zap: ups versions commit 8bb12aaac114d8d450dd1ffb63099e172332562d Author: Jan Andrle Date: Fri May 22 15:56:44 2026 +0200 :zap: :tv: finlizes routing and improves bs commit c3782509e8b685c56be0434caec49f4166e1d629 Author: Jan Andrle Date: Wed May 20 16:10:51 2026 +0200 :zap: first steps (footer) commit 7c925d1fdb3bae0c541d2b1a7407b0ecc6aa884d Author: Jan Andrle Date: Wed May 20 15:24:20 2026 +0200 :zap: :tv: tsc-alias commit e4e41197b98bf92ffba540504fb694bc9d2d6c05 Author: Jan Andrle Date: Wed May 20 14:40:47 2026 +0200 :bug: fixes routing commit 7d6240e28a049c7611d8174e09d3c97e61766f62 Author: Jan Andrle Date: Wed May 20 14:40:00 2026 +0200 :bug: :tv: fixes dev server commit 139b1590ce6d48ca7958c25316650d116a7b7973 Author: Jan Andrle Date: Wed Apr 29 13:40:40 2026 +0200 :zap: Uses original router - it has benefits to use hash properly commit 3cc11b68ded731e92ab9110297807d7db80bcb3a Author: Jan Andrle Date: Tue Apr 28 17:16:00 2026 +0200 :tada: --- bs/README.md | 14 +- bs/analyze | 10 +- bs/build | 4 + bs/dev/assets | 26 ++ bs/{ => dev}/lint | 2 +- bs/dev/paths.js | 44 ++++ bs/dev/tsc | 25 ++ bs/start | 22 +- bs/test | 10 +- changelog/todo.md | 1 + changelog/v1.0.md | 4 + docs/{ => dev}/CommaFeed API.md | 0 {changelog => docs/dev}/PLAN.md | 0 docs/dev/README.md | 8 + {changelog => docs/dev}/TASK.md | 0 examples/data/podcasts.opml | 3 +- index.html | 4 +- package-lock.json | 414 ++++++++++++++++-------------- package.json | 6 +- rollup.config.js | 10 +- src/app-episodes/:id/index.css.ts | 9 + src/app-episodes/:id/index.ts | 14 + src/app-episodes/:id/routes.ts | 16 ++ src/app-episodes/index.css.ts | 9 + src/app-episodes/index.ts | 14 + src/app-episodes/routes.ts | 18 ++ src/app-home/index.css.ts | 9 + src/app-home/index.test.ts | 22 ++ src/app-home/index.ts | 15 ++ src/app-home/routes.ts | 16 ++ src/app-index.css.ts | 33 --- src/app-index.ts | 39 --- {assets => src/assets}/logo.svg | 0 src/components/c-sronly.ts | 24 ++ src/core/route.ts | 15 ++ src/index.css.ts | 37 +++ src/index.test.ts | 27 ++ src/index.ts | 39 +++ test/app-cfpodcasts.test.ts | 22 -- tsconfig.json | 58 +++-- web-dev-server.config.js | 30 ++- web-test-runner.config.js | 64 ++--- 42 files changed, 765 insertions(+), 372 deletions(-) create mode 100755 bs/dev/assets rename bs/{ => dev}/lint (94%) create mode 100755 bs/dev/paths.js create mode 100755 bs/dev/tsc create mode 120000 changelog/todo.md create mode 100644 changelog/v1.0.md rename docs/{ => dev}/CommaFeed API.md (100%) rename {changelog => docs/dev}/PLAN.md (100%) create mode 100644 docs/dev/README.md rename {changelog => docs/dev}/TASK.md (100%) create mode 100644 src/app-episodes/:id/index.css.ts create mode 100644 src/app-episodes/:id/index.ts create mode 100644 src/app-episodes/:id/routes.ts create mode 100644 src/app-episodes/index.css.ts create mode 100644 src/app-episodes/index.ts create mode 100644 src/app-episodes/routes.ts create mode 100644 src/app-home/index.css.ts create mode 100644 src/app-home/index.test.ts create mode 100644 src/app-home/index.ts create mode 100644 src/app-home/routes.ts delete mode 100644 src/app-index.css.ts delete mode 100644 src/app-index.ts rename {assets => src/assets}/logo.svg (100%) create mode 100644 src/components/c-sronly.ts create mode 100644 src/core/route.ts create mode 100644 src/index.css.ts create mode 100644 src/index.test.ts create mode 100644 src/index.ts delete mode 100644 test/app-cfpodcasts.test.ts diff --git a/bs/README.md b/bs/README.md index 7bb265d..ab5c031 100644 --- a/bs/README.md +++ b/bs/README.md @@ -4,9 +4,6 @@ This project uses [jaandrle/bs: The simplest possible build system using executa ## Available executables If it makes sense, arguments are passed to internally used commands (e.g. `tsc`), e. g. `--help`. -### bs/lint -This lints the project using `tsc`. - ### bs/test This lints the project and runs tests using `wtr`. @@ -19,8 +16,17 @@ This builds the project using `rollup`. ### bs/analyze This analyze Custom Element manifest using the `@custom-elements-manifest/analyzer`. +### bs/dev/assets +Copies assets using `cp` into proper destination in `.tmp`. + +### bs/dev/tsc +Builds typescript files using `tsc`. + +### bs/dev/lint +Lints the project using `tsc`. + ### bs/npm/lint -Linted projects’ npm dependencies. +Lints projects’ npm dependencies. ### bs/npm/update Updates projects’ npm dependencies. diff --git a/bs/analyze b/bs/analyze index 366e78a..9d55be5 100755 --- a/bs/analyze +++ b/bs/analyze @@ -5,8 +5,12 @@ set -eo pipefail # this can be harmful, see https://www.youtube.com/watch?v=4Jo3 exit 1; } # depends on -declare -r app='src/app-cfpodcasts.ts' -declare -r cem='node_modules/.bin/cem' +declare -r app=( + 'src/**/c-*.ts' + 'src/**/app-*/index.ts' + 'src/index.ts' +) +declare -r cem='node_modules/.bin/custom-elements-manifest' help(){ if ! isHelp "${@}"; then return 0; fi @@ -17,7 +21,7 @@ help(){ } main(){ help "${@}" - $cem analyze --litelement --globs "$app" "${@}" + $cem analyze --litelement --globs "${app[@]}" "${@}" } main "${@}" diff --git a/bs/build b/bs/build index 15a8875..761ccad 100755 --- a/bs/build +++ b/bs/build @@ -5,6 +5,8 @@ set -eo pipefail # this can be harmful, see https://www.youtube.com/watch?v=4Jo3 exit 1; } # depends on +declare -r tsc='bs/dev/tsc' +declare -r assets='bs/dev/assets' declare -r rollup='node_modules/.bin/rollup' declare -r analyze='bs/analyze' declare -r config='rollup.config.js' @@ -20,6 +22,8 @@ help(){ main(){ help "${@}" + $tsc + $assets rm -rf "$dist" $rollup -c $config "${@}" $analyze --exclude "$dist" diff --git a/bs/dev/assets b/bs/dev/assets new file mode 100755 index 0000000..02647ac --- /dev/null +++ b/bs/dev/assets @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +set -eo pipefail # this can be harmful, see https://www.youtube.com/watch?v=4Jo3Ml53kvc +. bs/.common || { + echo 'Please run this script from the project root directory' >&2; + exit 1; +} +# depends on +declare -r paths='bs/dev/paths.js' +declare -r assets="$($paths 'src')/**/assets" +declare -r target="$($paths 'tscoutput')" + +help(){ + if ! isHelp "${@}"; then return 0; fi + echoReadmeInfo + echo + exit 0 +} +main(){ + help "${@}" + shopt -s globstar nullglob + for dir in $assets; do + cp -r "$dir" "$target/$dir" + done +} + +main "${@}" diff --git a/bs/lint b/bs/dev/lint similarity index 94% rename from bs/lint rename to bs/dev/lint index 807090b..b5a3313 100755 --- a/bs/lint +++ b/bs/dev/lint @@ -16,7 +16,7 @@ help(){ } main(){ help "${@}" - $tsc "${@}" + $tsc --noEmit "${@}" } main "${@}" diff --git a/bs/dev/paths.js b/bs/dev/paths.js new file mode 100755 index 0000000..e56e4cf --- /dev/null +++ b/bs/dev/paths.js @@ -0,0 +1,44 @@ +#!/bin/env node +import tsconfig from "../../tsconfig.json" with { type: "json" }; +export const paths = { + /** code source */ + src: "src", + /** code processed by tsc */ + tscoutput: tsconfig.compilerOptions.outDir, + /** code processed by tsc and rollup */ + dist: "dist", + /** tempral results of tsc, tests, … */ + tmp: ".tmp", +}; +export default paths; + +import { argv, exit } from "node:process"; +import { fileURLToPath } from "node:url"; +const [ _, script ] = argv; +if (script === fileURLToPath(import.meta.url)) + main(argv.slice(2)); + +function main(args) { + if(args.includes("--help") || args.includes("-h")){ + console.log(` +Usage: ${script} [options] + + Options: + [type] … if omitted, echo all +`); + exit(0); + } + if(args.length === 0){ + console.log(paths); + exit(0); + } + for(const arg of args){ + const path = paths[arg]; + if(!path){ + console.error(`Unknown path: ${arg}`); + exit(1); + } + console.log(path); + } +} + diff --git a/bs/dev/tsc b/bs/dev/tsc new file mode 100755 index 0000000..f39ed9d --- /dev/null +++ b/bs/dev/tsc @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +set -eo pipefail # this can be harmful, see https://www.youtube.com/watch?v=4Jo3Ml53kvc +. bs/.common || { + echo 'Please run this script from the project root directory' >&2; + exit 1; +} +# depends on +declare -r tsc='node_modules/.bin/tsc' +declare -r tscAlias='node_modules/.bin/tsc-alias' + +help(){ + if ! isHelp "${@}"; then return 0; fi + echoReadmeInfo + echo + $tsc --help + $tscAlias --help + exit 0 +} +main(){ + help "${@}" + $tsc "${@}" + $tscAlias "${@}" +} + +main "${@}" diff --git a/bs/start b/bs/start index 8c8b7f6..620c2a6 100755 --- a/bs/start +++ b/bs/start @@ -4,20 +4,22 @@ set -eo pipefail # this can be harmful, see https://www.youtube.com/watch?v=4Jo3 echo 'Please run this script from the project root directory' >&2; exit 1; } -# "start:build": "web-dev-server --root-dir dist --app-index index.html --open", -# "start": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"web-dev-server\"" # depends on declare -r server='node_modules/.bin/web-dev-server' -declare -r lint='bs/lint' -declare -r index='index.html' +declare -r lint='bs/dev/lint' +declare -r tsc='bs/dev/tsc' +declare -r assets='bs/dev/assets' +declare -r server_config='web-dev-server.config.js' help(){ if ! isHelp "${@}"; then return 0; fi echoReadmeInfo cat <<-EOF - Options: ./src Starts the development server (default) ./dist Starts the production server + + Defaults: + See server config file: '$server_config' EOF $server --help exit 0 @@ -25,13 +27,15 @@ EOF main(){ help "${@}" + $lint local -r target="${1:-./src}" # ./src or ./dist - if [[ "$target" == './dist' ]]; then + if [[ "$target" =~ 'dist' ]]; then # console warns because of config file, use npx serve? - $server --root-dir "$target" --app-index $index --open + $server "${@}" else - $lint --watch --preserveWatchOutput & - $server & + $assets + $tsc --watch --preserveWatchOutput & + $server "${@}" & wait fi } diff --git a/bs/test b/bs/test index 7e8ee73..1dd30d8 100755 --- a/bs/test +++ b/bs/test @@ -5,15 +5,13 @@ set -eo pipefail # this can be harmful, see https://www.youtube.com/watch?v=4Jo3 exit 1; } # depends on -declare -r lint='bs/lint' -declare -r wtr='node_modules/.bin/wtr' +declare -r tsc='bs/dev/tsc' +declare -r wtr='node_modules/.bin/web-test-runner' help(){ if ! isHelp "${@}"; then return 0; fi echoReadmeInfo cat < - Tue, 21 Apr 2026 11:06:35 GMT + Fri, 24 Apr 2026 13:48:25 GMT jaa-podcasty subscriptions in CommaFeed + diff --git a/index.html b/index.html index 0f38257..61afdad 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ - +