From df8b164434a462f22fc2414354e42bdbb042ccad Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Thu, 5 Feb 2026 14:58:27 +0000 Subject: [PATCH] feat(dev-server): add no-cache headers to built-in development server; update docs and bump dependencies --- changelog.md | 7 ++ package.json | 8 +-- pnpm-lock.yaml | 125 +++++++++++++++++++++++++--------- readme.hints.md | 1 + readme.md | 1 + ts/00_commitinfo_data.ts | 2 +- ts/tswatch.classes.tswatch.ts | 1 + 7 files changed, 109 insertions(+), 36 deletions(-) diff --git a/changelog.md b/changelog.md index f176b90..8147bc0 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,12 @@ # Changelog +## 2026-02-05 - 3.1.0 - feat(dev-server) +add no-cache headers to built-in development server; update docs and bump dependencies + +- Introduce noCache: true in ts/tswatch.classes.tswatch.ts to send Cache-Control: no-store, no-cache during development (prevents browser caching). +- Update documentation to describe no-caching behavior (readme.md and readme.hints.md). +- Bump dependencies: @git.zone/tstest ^3.1.8, @types/node ^25.2.1, @push.rocks/npmextra ^5.3.3, @push.rocks/taskbuffer ^4.2.0. + ## 2026-01-24 - 3.0.1 - fix(deps) downgrade @push.rocks/smartinteract to ^2.0.16 diff --git a/package.json b/package.json index d76d5a8..4218159 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ }, "devDependencies": { "@git.zone/tsbuild": "^4.1.2", - "@git.zone/tstest": "^3.1.6", - "@types/node": "^25.0.10" + "@git.zone/tstest": "^3.1.8", + "@types/node": "^25.2.1" }, "dependencies": { "@api.global/typedserver": "^8.3.0", @@ -28,7 +28,7 @@ "@git.zone/tsrun": "^2.0.1", "@push.rocks/early": "^4.0.4", "@push.rocks/lik": "^6.2.2", - "@push.rocks/npmextra": "^5.1.2", + "@push.rocks/npmextra": "^5.3.3", "@push.rocks/smartcli": "^4.0.20", "@push.rocks/smartdelay": "^3.0.5", "@push.rocks/smartfs": "^1.3.1", @@ -37,7 +37,7 @@ "@push.rocks/smartlog-destination-local": "^9.0.2", "@push.rocks/smartshell": "^3.3.0", "@push.rocks/smartwatch": "^6.3.0", - "@push.rocks/taskbuffer": "^3.5.0" + "@push.rocks/taskbuffer": "^4.2.0" }, "files": [ "ts/**/*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ef71147..2f7abf0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,7 +24,7 @@ importers: specifier: ^6.2.2 version: 6.2.2 '@push.rocks/npmextra': - specifier: ^5.1.2 + specifier: ^5.3.3 version: 5.3.3 '@push.rocks/smartcli': specifier: ^4.0.20 @@ -51,18 +51,18 @@ importers: specifier: ^6.3.0 version: 6.3.0 '@push.rocks/taskbuffer': - specifier: ^3.5.0 - version: 3.5.0 + specifier: ^4.2.0 + version: 4.2.0 devDependencies: '@git.zone/tsbuild': specifier: ^4.1.2 version: 4.1.2 '@git.zone/tstest': - specifier: ^3.1.6 - version: 3.1.6(@aws-sdk/credential-providers@3.855.0)(@push.rocks/smartserve@2.0.1)(socks@2.8.7)(typescript@5.9.3) + specifier: ^3.1.8 + version: 3.1.8(@aws-sdk/credential-providers@3.855.0)(@push.rocks/smartserve@2.0.1)(socks@2.8.7)(typescript@5.9.3) '@types/node': - specifier: ^25.0.10 - version: 25.0.10 + specifier: ^25.2.1 + version: 25.2.1 packages: @@ -426,12 +426,18 @@ packages: '@design.estate/dees-domtools@2.3.7': resolution: {integrity: sha512-MXoDBrP7JTOpni8b12aFXHJKnKBoQppM8cYBuL9cesRmCVGdB7p39XMRQ7dRyMhmmyr66L3cOczhiCV6febCwg==} + '@design.estate/dees-domtools@2.3.8': + resolution: {integrity: sha512-jUG9GMvPxKMwmRIZ9oLTL3c8hHvHuiwIk8cTrYnuZzGO/uJJ5/czk9o6LRXUuCOOG7TRLtqgOpK8EEQgaadfZA==} + '@design.estate/dees-element@2.1.3': resolution: {integrity: sha512-TjXWxVcdSPaT1IOk31ckfxvAZnJLuTxhFGsNCKoh63/UE2FVf6slp8//UFvN+ADigiA9ZsY0azkY99XbJCwDDA==} '@design.estate/dees-element@2.1.5': resolution: {integrity: sha512-czUOFvBiUKi34I+/keDRDc71fuORZS0NfbSuD2jJ4D1ODiTPjaZ6A6SkdQ2QqCEzVsx73XF99Pu8pxPnaOLnHg==} + '@design.estate/dees-element@2.1.6': + resolution: {integrity: sha512-7zyHkUjB8UEQgT9VbB2IJtc/yuPt9CI5JGel3b6BxA1kecY64ceIjFvof1uIkc0QP8q2fMLLY45r1c+9zDTjzg==} + '@design.estate/dees-wcctools@3.7.1': resolution: {integrity: sha512-BiNWghUoC05RTQOGVCTK+wis6d18LyLY+2p8vHC0q2OBw9hrPoY8k9EplpQgY40MvP0sTXWUwaa7VPXra8ASjA==} @@ -636,8 +642,8 @@ packages: resolution: {integrity: sha512-NEcnsjvlC1o3Z6SS3VhKCf6Ev+Sh4EAinmggslrIR/ppMrvjDbXNFXoyr3PB+GLeSAR0JRZ1fGvVYjpEzjBdIg==} hasBin: true - '@git.zone/tstest@3.1.6': - resolution: {integrity: sha512-xRGc6wO4rJ6mohPCMIBDRH+oNjiIvX6Jeo8v/Y5o5VyKSHFmqol7FCKSBrojMcqgBpESnLHFPJAAOmT9W3JV8Q==} + '@git.zone/tstest@3.1.8': + resolution: {integrity: sha512-nmiLGeOkKMkLDyIk5BUBLx5ExskFbKHKlPdrWCARPVFkU4cAAiuIyJWVfLwISoS0TO/zSInLqArPwIc76yvaNw==} hasBin: true '@happy-dom/global-registrator@15.11.7': @@ -1144,6 +1150,9 @@ packages: '@push.rocks/taskbuffer@3.5.0': resolution: {integrity: sha512-Y9WwIEIyp6oVFdj06j84tfrZIvjhbMb3DF52rYxlTeYLk3W7RPhSg1bGPCbtkXWeKdBrSe37V90BkOG7Qq8Pqg==} + '@push.rocks/taskbuffer@4.2.0': + resolution: {integrity: sha512-ttoBe5y/WXkAo5/wSMcC/Y4Zbyw4XG8kwAsEaqnAPCxa3M9MI1oV/yM1e9gU1IH97HVPidzbTxRU5/PcHDdUsg==} + '@push.rocks/webrequest@3.0.37': resolution: {integrity: sha512-fLN7kP6GeHFxE4UH4r9C9pjcQb0QkJxHeAMwXvbOqB9hh0MFNKhtGU7GoaTn8SVRGRMPc9UqZVNwo6u5l8Wn0A==} @@ -1863,8 +1872,8 @@ packages: '@types/node@22.19.7': resolution: {integrity: sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==} - '@types/node@25.0.10': - resolution: {integrity: sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==} + '@types/node@25.2.1': + resolution: {integrity: sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==} '@types/ping@0.4.4': resolution: {integrity: sha512-ifvo6w2f5eJYlXm+HiVx67iJe8WZp87sfa683nlqED5Vnt9Z93onkokNoWqOG21EaE8fMxyKPobE+mkPEyxsdw==} @@ -5373,6 +5382,32 @@ snapshots: - supports-color - vue + '@design.estate/dees-domtools@2.3.8': + dependencies: + '@api.global/typedrequest': 3.2.5 + '@design.estate/dees-comms': 1.0.30 + '@push.rocks/lik': 6.2.2 + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartjson': 5.2.0 + '@push.rocks/smartmarkdown': 3.0.3 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartrouter': 1.3.3 + '@push.rocks/smartrx': 3.0.10 + '@push.rocks/smartstate': 2.0.27 + '@push.rocks/smartstring': 4.1.0 + '@push.rocks/smarturl': 3.1.0 + '@push.rocks/webrequest': 3.0.37 + '@push.rocks/websetup': 3.0.19 + '@push.rocks/webstore': 2.0.20 + '@tempfix/lenis': 1.3.20 + lit: 3.3.2 + sweet-scroll: 4.0.0 + transitivePeerDependencies: + - '@nuxt/kit' + - react + - supports-color + - vue + '@design.estate/dees-element@2.1.3': dependencies: '@design.estate/dees-domtools': 2.3.6 @@ -5397,6 +5432,18 @@ snapshots: - supports-color - vue + '@design.estate/dees-element@2.1.6': + dependencies: + '@design.estate/dees-domtools': 2.3.8 + '@push.rocks/isounique': 1.0.5 + '@push.rocks/smartrx': 3.0.10 + lit: 3.3.2 + transitivePeerDependencies: + - '@nuxt/kit' + - react + - supports-color + - vue + '@design.estate/dees-wcctools@3.7.1': dependencies: '@design.estate/dees-domtools': 2.3.7 @@ -5596,7 +5643,7 @@ snapshots: '@push.rocks/smartshell': 3.3.0 tsx: 4.21.0 - '@git.zone/tstest@3.1.6(@aws-sdk/credential-providers@3.855.0)(@push.rocks/smartserve@2.0.1)(socks@2.8.7)(typescript@5.9.3)': + '@git.zone/tstest@3.1.8(@aws-sdk/credential-providers@3.855.0)(@push.rocks/smartserve@2.0.1)(socks@2.8.7)(typescript@5.9.3)': dependencies: '@api.global/typedserver': 3.0.80(@push.rocks/smartserve@2.0.1) '@git.zone/tsbundle': 2.8.3 @@ -6748,6 +6795,22 @@ snapshots: - supports-color - vue + '@push.rocks/taskbuffer@4.2.0': + dependencies: + '@design.estate/dees-element': 2.1.6 + '@push.rocks/lik': 6.2.2 + '@push.rocks/smartdelay': 3.0.5 + '@push.rocks/smartlog': 3.1.10 + '@push.rocks/smartpromise': 4.2.3 + '@push.rocks/smartrx': 3.0.10 + '@push.rocks/smarttime': 4.1.1 + '@push.rocks/smartunique': 3.0.9 + transitivePeerDependencies: + - '@nuxt/kit' + - react + - supports-color + - vue + '@push.rocks/webrequest@3.0.37': dependencies: '@push.rocks/smartdelay': 3.0.5 @@ -7483,27 +7546,27 @@ snapshots: '@types/bn.js@5.2.0': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/buffer-json@2.0.3': {} '@types/clean-css@4.2.11': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 source-map: 0.6.1 '@types/connect@3.4.38': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/cors@2.8.19': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/debug@4.1.12': dependencies: @@ -7511,7 +7574,7 @@ snapshots: '@types/dns-packet@5.6.5': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/elliptic@6.4.18': dependencies: @@ -7519,7 +7582,7 @@ snapshots: '@types/express-serve-static-core@5.1.1': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -7533,7 +7596,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/hast@3.0.4': dependencies: @@ -7555,7 +7618,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/linkify-it@5.0.0': {} @@ -7578,17 +7641,17 @@ snapshots: '@types/mute-stream@0.0.4': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/node-forge@1.3.14': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/node@22.19.7': dependencies: undici-types: 6.21.0 - '@types/node@25.0.10': + '@types/node@25.2.1': dependencies: undici-types: 7.16.0 @@ -7606,22 +7669,22 @@ snapshots: '@types/send@1.2.1': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/symbol-tree@3.2.5': {} '@types/tar-stream@3.1.4': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/through2@2.0.41': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/trusted-types@2.0.7': {} @@ -7647,11 +7710,11 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 '@types/yauzl@2.10.3': dependencies: - '@types/node': 25.0.10 + '@types/node': 25.2.1 optional: true '@ungap/structured-clone@1.3.0': {} @@ -8097,7 +8160,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.19 - '@types/node': 25.0.10 + '@types/node': 25.2.1 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 diff --git a/readme.hints.md b/readme.hints.md index 805dbc4..f196cb3 100644 --- a/readme.hints.md +++ b/readme.hints.md @@ -82,6 +82,7 @@ tswatch is now a config-driven TypeScript file watcher. Configuration is read fr - Gzip compression - Live reload injection (configurable) - SPA fallback support +- No-cache headers (prevents browser caching during development) ## Project Structure diff --git a/readme.md b/readme.md index 6e67dfe..363dac4 100644 --- a/readme.md +++ b/readme.md @@ -371,6 +371,7 @@ Config: The built-in development server (enabled in `element` and `website` presets) features: - **Live Reload** - Automatically refreshes browser on changes +- **No Caching** - Prevents browser caching during development (sends `Cache-Control: no-store, no-cache` headers) - **CORS** - Cross-origin requests enabled - **Compression** - Gzip compression for faster loading - **SPA Fallback** - Single-page application routing support diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index a017128..624e292 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@git.zone/tswatch', - version: '3.0.1', + version: '3.1.0', description: 'A development tool for automatically watching and re-compiling TypeScript projects upon detecting file changes, enhancing developer workflows.' } diff --git a/ts/tswatch.classes.tswatch.ts b/ts/tswatch.classes.tswatch.ts index 296fdd4..c1569f7 100644 --- a/ts/tswatch.classes.tswatch.ts +++ b/ts/tswatch.classes.tswatch.ts @@ -89,6 +89,7 @@ export class TsWatch { port: port, compression: true, spaFallback: true, + noCache: true, securityHeaders: { crossOriginOpenerPolicy: 'same-origin', crossOriginEmbedderPolicy: 'require-corp',