@ultimat3/cache 19.2.0 → 19.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +6 -0
- package/package.json +2 -2
- package/src/purge-http.ts +5 -2
package/CLAUDE.md
CHANGED
|
@@ -306,6 +306,12 @@ Tier 1. Tagged caching + THE invalidation graph.
|
|
|
306
306
|
cause name the keys that are actually set. Names only — all four keys can hold a credential.
|
|
307
307
|
- A remote driver takes an injected `fetch` so a test never unseals the network; the loopback
|
|
308
308
|
proof in `purge-fastly.test.ts` is the only place the default one runs.
|
|
309
|
+
- **The purge URL in a `fix:` goes through `renderFixShellArg`** (`As of 2026-09-06`).
|
|
310
|
+
`purgePost`'s transport failure names `curl -sS -m 5 -o /dev/null <url>`, a command a reader
|
|
311
|
+
pastes, and the URL is operator data from `.env.production` (`purge-env.ts`) — so `$(…)` and a
|
|
312
|
+
backtick in it substitute before `curl` is reached. An ordinary endpoint travels verbatim; the
|
|
313
|
+
URL is in the `detail` either way, which is read rather than run. `renderFixLiteral` cannot
|
|
314
|
+
stand in: its double quotes leave `$(…)` live.
|
|
309
315
|
|
|
310
316
|
## Files
|
|
311
317
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ultimat3/cache",
|
|
3
|
-
"version": "19.2
|
|
3
|
+
"version": "19.3.2",
|
|
4
4
|
"description": "Tagged caching: request memo, LRU, Redis, CDN — one invalidation graph",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -31,6 +31,6 @@
|
|
|
31
31
|
"test": "bun test"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@ultimat3/core": "19.2
|
|
34
|
+
"@ultimat3/core": "19.3.2"
|
|
35
35
|
}
|
|
36
36
|
}
|
package/src/purge-http.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// forces. Kept apart from the drivers because "which failure can succeed unchanged" is one
|
|
4
4
|
// judgement, and two copies of it would drift into two answers for the same 429.
|
|
5
5
|
|
|
6
|
-
import { renderThrowable } from '@ultimat3/core';
|
|
6
|
+
import { renderFixShellArg, renderThrowable } from '@ultimat3/core';
|
|
7
7
|
import { CacheDriverUnavailableError, CachePurgeFailedError } from './errors';
|
|
8
8
|
|
|
9
9
|
/** Just the call. `typeof fetch` also carries `preconnect`, which no test double should have to. */
|
|
@@ -192,7 +192,10 @@ export async function purgePost(input: PurgePostInput): Promise<Response> {
|
|
|
192
192
|
driver: input.driver,
|
|
193
193
|
detail: `${reason} — nothing left this host for ${input.url} (egress, DNS or TLS)`,
|
|
194
194
|
retryable: true,
|
|
195
|
-
|
|
195
|
+
// The endpoint comes from `.env.production` (`purge-env.ts`), so it is operator data in a
|
|
196
|
+
// COMMAND position: `$(…)` and a backtick substitute before `curl` is reached. The URL is
|
|
197
|
+
// already in the `detail` above, which is read rather than pasted.
|
|
198
|
+
fix: `curl -sS -m 5 -o /dev/null ${renderFixShellArg(input.url, '<the purge endpoint the cause names>')}`,
|
|
196
199
|
});
|
|
197
200
|
}
|
|
198
201
|
}
|