@timber-js/app 0.2.0-alpha.154 → 0.2.0-alpha.156

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 (70) hide show
  1. package/agent-skill.md +344 -0
  2. package/dist/_chunks/{build-output-helper-B20ZuTSA.js → build-output-helper-Rp9r7gSA.js} +62 -9
  3. package/dist/_chunks/build-output-helper-Rp9r7gSA.js.map +1 -0
  4. package/dist/adapters/build-output-helper.d.ts +1 -0
  5. package/dist/adapters/build-output-helper.d.ts.map +1 -1
  6. package/dist/adapters/cloudflare.d.ts.map +1 -1
  7. package/dist/adapters/cloudflare.js +35 -5
  8. package/dist/adapters/cloudflare.js.map +1 -1
  9. package/dist/adapters/nitro.js +1 -1
  10. package/dist/adapters/shared.d.ts +1 -11
  11. package/dist/adapters/shared.d.ts.map +1 -1
  12. package/dist/cli.d.ts +9 -1
  13. package/dist/cli.d.ts.map +1 -1
  14. package/dist/cli.js +41 -4
  15. package/dist/cli.js.map +1 -1
  16. package/dist/fonts/google.d.ts.map +1 -1
  17. package/dist/index.js +43 -3
  18. package/dist/index.js.map +1 -1
  19. package/dist/plugins/fonts.d.ts.map +1 -1
  20. package/dist/server/asset-headers.d.ts +7 -3
  21. package/dist/server/asset-headers.d.ts.map +1 -1
  22. package/dist/server/internal.js +12 -6
  23. package/dist/server/internal.js.map +1 -1
  24. package/dist/server/pipeline-phases.d.ts.map +1 -1
  25. package/docs/api/30-api-server.mdx +233 -0
  26. package/docs/api/31-api-client.mdx +161 -0
  27. package/docs/api/32-api-cache.mdx +193 -0
  28. package/docs/api/33-api-search-params.mdx +141 -0
  29. package/docs/api/34-api-config.mdx +189 -0
  30. package/docs/api/35-api-typescript.mdx +170 -0
  31. package/docs/api/36-cli.mdx +143 -0
  32. package/docs/learn/00-introduction.mdx +81 -0
  33. package/docs/learn/01-quick-start.mdx +94 -0
  34. package/docs/learn/02-pages-and-layouts.mdx +138 -0
  35. package/docs/learn/03-fetching-data.mdx +211 -0
  36. package/docs/learn/03b-access-control.mdx +130 -0
  37. package/docs/learn/04-loading-states.mdx +67 -0
  38. package/docs/learn/04b-the-flush-point.mdx +115 -0
  39. package/docs/learn/05-typed-params.mdx +275 -0
  40. package/docs/learn/06-forms-and-actions.mdx +150 -0
  41. package/docs/learn/08-streaming.mdx +146 -0
  42. package/docs/learn/09-caching.mdx +121 -0
  43. package/docs/learn/10-middleware.mdx +156 -0
  44. package/docs/learn/11-error-handling.mdx +147 -0
  45. package/docs/learn/12-client-navigation.mdx +168 -0
  46. package/docs/learn/13-configuration.mdx +117 -0
  47. package/docs/learn/14-deploying.mdx +206 -0
  48. package/docs/more/01-advanced-routing.mdx +139 -0
  49. package/docs/more/02-advanced-forms.mdx +137 -0
  50. package/docs/more/03-coming-from-nextjs.mdx +186 -0
  51. package/docs/more/04-metadata-and-fonts.mdx +193 -0
  52. package/docs/more/04b-mdx.mdx +209 -0
  53. package/docs/more/05-content-collections.mdx +90 -0
  54. package/docs/more/06-instrumentation.mdx +188 -0
  55. package/docs/more/07-security.mdx +123 -0
  56. package/docs/more/40-why-timber.mdx +50 -0
  57. package/docs/more/41-timber-vs-nextjs.mdx +81 -0
  58. package/docs/more/42-timber-vs-others.mdx +68 -0
  59. package/docs/more/50-ai-agent-instructions.mdx +169 -0
  60. package/llms.txt +55 -0
  61. package/package.json +8 -4
  62. package/src/adapters/build-output-helper.ts +52 -2
  63. package/src/adapters/cloudflare.ts +34 -4
  64. package/src/adapters/shared.ts +34 -6
  65. package/src/cli.ts +62 -3
  66. package/src/fonts/google.ts +56 -5
  67. package/src/plugins/fonts.ts +6 -0
  68. package/src/server/asset-headers.ts +7 -3
  69. package/src/server/pipeline-phases.ts +10 -2
  70. package/dist/_chunks/build-output-helper-B20ZuTSA.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../src/plugins/fonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA2B1D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAkLtD"}
1
+ {"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../src/plugins/fonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA2B1D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAwLtD"}
@@ -8,9 +8,13 @@
8
8
  * Unhashed assets (e.g. /favicon.ico) get a shorter cache with revalidation:
9
9
  * Cache-Control: public, max-age=3600, must-revalidate
10
10
  *
11
- * This is applied automatically by the framework for static assets served
12
- * from the build output. Page responses are NOT affected — those are
13
- * controlled by the developer via middleware.ts or proxy.ts.
11
+ * The `_headers` file lists hashed asset paths (/assets/*, /_timber/fonts/*) as
12
+ * wildcard rules and unhashed files as per-file rules. At runtime, adapters
13
+ * that see static file requests (nitro, preview) also set Cache-Control via
14
+ * `getAssetCacheControl()`. On Cloudflare Workers Static Assets, the worker
15
+ * never sees static file requests — the `_headers` file is the only mechanism.
16
+ * Page responses are NOT affected — those are controlled by the developer
17
+ * via middleware.ts or proxy.ts.
14
18
  *
15
19
  * Design docs: 18-build-system.md, 06-caching.md
16
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"asset-headers.d.ts","sourceRoot":"","sources":["../../src/server/asset-headers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAQH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAiB3F;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7D"}
1
+ {"version":3,"file":"asset-headers.d.ts","sourceRoot":"","sources":["../../src/server/asset-headers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAiB3F;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7D"}
@@ -2197,12 +2197,18 @@ async function handleRequest(config, req, method, path, pathIsCanonical) {
2197
2197
  }
2198
2198
  const handlerResult = await mod.default();
2199
2199
  if (handlerResult instanceof Response) {
2200
- if (method === "HEAD") return new Response(null, {
2201
- status: handlerResult.status,
2202
- statusText: handlerResult.statusText,
2203
- headers: new Headers(handlerResult.headers)
2204
- });
2205
- return cloneWithMutableHeaders(handlerResult);
2200
+ if (method === "HEAD") {
2201
+ const headHeaders = new Headers(handlerResult.headers);
2202
+ if (handlerResult.ok && !headHeaders.has("Cache-Control")) headHeaders.set("Cache-Control", "public, max-age=14400, must-revalidate");
2203
+ return new Response(null, {
2204
+ status: handlerResult.status,
2205
+ statusText: handlerResult.statusText,
2206
+ headers: headHeaders
2207
+ });
2208
+ }
2209
+ const res = cloneWithMutableHeaders(handlerResult);
2210
+ if (res.ok && !res.headers.has("Cache-Control")) res.headers.set("Cache-Control", "public, max-age=14400, must-revalidate");
2211
+ return res;
2206
2212
  }
2207
2213
  const contentType = metaMatch.contentType;
2208
2214
  let body;