@vesk/vesk-cli 0.2.30 → 0.2.31

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.
Files changed (2) hide show
  1. package/dist/cli.js +35 -2
  2. package/package.json +5 -5
package/dist/cli.js CHANGED
@@ -1619,6 +1619,17 @@ function getInflight() {
1619
1619
  g().__vsk_fetch_inflight = map;
1620
1620
  return map;
1621
1621
  }
1622
+ function getServerFailureCache() {
1623
+ const value = g().__vsk_ssr_failure_cache;
1624
+ if (value) return value;
1625
+ const map = /* @__PURE__ */ new Map();
1626
+ g().__vsk_ssr_failure_cache = map;
1627
+ return map;
1628
+ }
1629
+ function clearFailureCache(key) {
1630
+ if (!isServer()) return;
1631
+ g().__vsk_ssr_failure_cache?.delete(key);
1632
+ }
1622
1633
  function getRegistry() {
1623
1634
  const value = g().__vsk_fetch_registry;
1624
1635
  if (value) return value;
@@ -1887,6 +1898,20 @@ function startRequest(handle2, skipCache) {
1887
1898
  const key = handle2.key;
1888
1899
  const options = handle2.options;
1889
1900
  if (isServer()) {
1901
+ const failureTtl = options.failureTtl ?? DEFAULT_FAILURE_TTL;
1902
+ if (!skipCache && failureTtl > 0) {
1903
+ const failed = getServerFailureCache().get(key);
1904
+ if (failed && failed.ttl > 0 && Date.now() - failed.failedAt < failed.ttl) {
1905
+ getSsrFailures()?.set(key, failed.error);
1906
+ settleError(handle2, failed.error);
1907
+ const settled = handle2.settled.then(() => {
1908
+ throw failed.error;
1909
+ });
1910
+ settled.catch(() => {
1911
+ });
1912
+ return settled;
1913
+ }
1914
+ }
1890
1915
  const recorded = !skipCache ? getSsrFailures()?.get(key) : void 0;
1891
1916
  if (recorded !== void 0) {
1892
1917
  settleError(handle2, recorded);
@@ -1905,10 +1930,14 @@ function startRequest(handle2, skipCache) {
1905
1930
  prom2.then(
1906
1931
  (data2) => {
1907
1932
  setSsrData(key, data2, startToken);
1933
+ clearFailureCache(key);
1908
1934
  settle(handle2, data2);
1909
1935
  },
1910
1936
  (error) => {
1911
1937
  getSsrFailures()?.set(key, error);
1938
+ if (isServer() && !isAbortError(error) && failureTtl > 0) {
1939
+ getServerFailureCache().set(key, { error, failedAt: Date.now(), ttl: failureTtl });
1940
+ }
1912
1941
  settleError(handle2, error);
1913
1942
  }
1914
1943
  ).finally(() => {
@@ -2056,7 +2085,10 @@ function createResource(fn, key, into, options = {}) {
2056
2085
  }
2057
2086
  const ssrData = getSsrData(resourceKey);
2058
2087
  if (ssrData !== void 0) {
2059
- if (isServer()) setSsrData(resourceKey, ssrData);
2088
+ if (isServer()) {
2089
+ setSsrData(resourceKey, ssrData);
2090
+ clearFailureCache(resourceKey);
2091
+ }
2060
2092
  settle(handle2, ssrData);
2061
2093
  writeCache(resourceKey, ssrData);
2062
2094
  return accessor;
@@ -2081,7 +2113,7 @@ async function resolveSsrResources() {
2081
2113
  delete g().__vsk_ssr_failures;
2082
2114
  return data2;
2083
2115
  }
2084
- var HttpError, TimeoutError, g, isServer, ssrSink;
2116
+ var HttpError, TimeoutError, g, isServer, ssrSink, DEFAULT_FAILURE_TTL;
2085
2117
  var init_resource = __esm({
2086
2118
  "../runtime/src/resource.ts"() {
2087
2119
  "use strict";
@@ -2106,6 +2138,7 @@ var init_resource = __esm({
2106
2138
  g = () => globalThis;
2107
2139
  isServer = () => !!g().__vsk_ssr;
2108
2140
  ssrSink = null;
2141
+ DEFAULT_FAILURE_TTL = 1e4;
2109
2142
  useFetch.text = (url, options) => useFetch(() => doFetch(resolveFetchUrl(url), buildRequestInit(options ?? {})).then((r) => r.text()), {
2110
2143
  ...options,
2111
2144
  key: options?.key ?? url
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vesk/vesk-cli",
3
- "version": "0.2.30",
3
+ "version": "0.2.31",
4
4
  "type": "module",
5
5
  "description": "Vesk — compiler-first framework for the post-VDOM web. vesk dev, vesk build.",
6
6
  "bin": {
@@ -8,10 +8,10 @@
8
8
  },
9
9
  "main": "./dist/cli.js",
10
10
  "dependencies": {
11
- "@vesk/adapter": "^0.2.30",
12
- "@vesk/compiler": "^0.2.30",
13
- "@vesk/plugin-tailwind": "^0.2.30",
14
- "@vesk/runtime": "^0.2.30",
11
+ "@vesk/adapter": "^0.2.31",
12
+ "@vesk/compiler": "^0.2.31",
13
+ "@vesk/plugin-tailwind": "^0.2.31",
14
+ "@vesk/runtime": "^0.2.31",
15
15
  "esrap": "^2.3.0",
16
16
  "typescript": "^5.8.0",
17
17
  "ws": "^8.18.0",