ugly-app 0.1.1047 → 0.1.1049

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 (34) hide show
  1. package/dist/cli/buildWorkers.d.ts.map +1 -1
  2. package/dist/cli/buildWorkers.js +36 -7
  3. package/dist/cli/buildWorkers.js.map +1 -1
  4. package/dist/cli/version.d.ts +1 -1
  5. package/dist/cli/version.js +1 -1
  6. package/dist/cli/viteAssetUrl.d.ts +6 -0
  7. package/dist/cli/viteAssetUrl.d.ts.map +1 -0
  8. package/dist/cli/viteAssetUrl.js +51 -0
  9. package/dist/cli/viteAssetUrl.js.map +1 -0
  10. package/dist/server/adapter/workers/edgeCache.d.ts +12 -1
  11. package/dist/server/adapter/workers/edgeCache.d.ts.map +1 -1
  12. package/dist/server/adapter/workers/edgeCache.js +20 -6
  13. package/dist/server/adapter/workers/edgeCache.js.map +1 -1
  14. package/dist/server/adapter/workers/seo.d.ts +19 -0
  15. package/dist/server/adapter/workers/seo.d.ts.map +1 -0
  16. package/dist/server/adapter/workers/seo.js +74 -0
  17. package/dist/server/adapter/workers/seo.js.map +1 -0
  18. package/dist/server/adapter/workers/wrapWithAssets.d.ts.map +1 -1
  19. package/dist/server/adapter/workers/wrapWithAssets.js +45 -18
  20. package/dist/server/adapter/workers/wrapWithAssets.js.map +1 -1
  21. package/dist/shared/Router.d.ts +8 -0
  22. package/dist/shared/Router.d.ts.map +1 -1
  23. package/dist/shared/Router.js +1 -0
  24. package/dist/shared/Router.js.map +1 -1
  25. package/package.json +1 -1
  26. package/src/cli/buildWorkers.ts +42 -8
  27. package/src/cli/version.ts +1 -1
  28. package/src/cli/viteAssetUrl.test.ts +53 -0
  29. package/src/cli/viteAssetUrl.ts +59 -0
  30. package/src/server/adapter/workers/edgeCache.ts +28 -5
  31. package/src/server/adapter/workers/seo.test.ts +131 -0
  32. package/src/server/adapter/workers/seo.ts +78 -0
  33. package/src/server/adapter/workers/wrapWithAssets.ts +41 -18
  34. package/src/shared/Router.ts +9 -0
@@ -1 +1 @@
1
- {"version":3,"file":"buildWorkers.d.ts","sourceRoot":"","sources":["../../src/cli/buildWorkers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AA2CH,UAAU,mBAAmB;IAC3B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,eAAe,CACnC,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAwP7B;AAkDD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,GACP,MAAM,CA2DR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,GAAG,IAAI,GACP,MAAM,CA0CR;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAgC3E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,MAAM,CAOR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,MAAM,GAAG,IAAI,CAoBf;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,IAAI,CAkCN"}
1
+ {"version":3,"file":"buildWorkers.d.ts","sourceRoot":"","sources":["../../src/cli/buildWorkers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AA4CH,UAAU,mBAAmB;IAC3B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,eAAe,CACnC,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CA2P7B;AAkDD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,GACP,MAAM,CAuER;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,GAAG,IAAI,GACP,MAAM,CA0CR;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAgC3E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,MAAM,CAOR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,MAAM,GAAG,IAAI,CAoBf;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,IAAI,CAkCN"}
@@ -26,6 +26,7 @@
26
26
  * runs after esbuild.
27
27
  */
28
28
  import { build } from 'esbuild';
29
+ import { viteAssetUrl } from './viteAssetUrl.js';
29
30
  import { existsSync } from 'fs';
30
31
  import { copyFile, mkdir, readFile, readdir, rm, stat, writeFile, } from 'fs/promises';
31
32
  import path from 'path';
@@ -197,6 +198,9 @@ export async function runBuildWorkers(opts = {}) {
197
198
  sourcemap: false,
198
199
  logLevel: 'info',
199
200
  external: ['cloudflare:*', 'node:*'],
201
+ // Server-rendered pages import images; resolve each to the exact URL Vite
202
+ // emitted, so the server's `src` matches the browser's and hydration holds.
203
+ plugins: [viteAssetPlugin(clientDir)],
200
204
  // React (and much of npm) ships a dev and a prod build behind this check.
201
205
  // Without the define, esbuild can't fold the branch and bundles BOTH — for
202
206
  // an SSR worker that's ~1.3 MB of development-only React. This only rewrites
@@ -316,24 +320,32 @@ export function injectDefaultMeta(html, cfg) {
316
320
  if (!/name=["']theme-color["']/.test(html)) {
317
321
  tags.push(`<meta name="theme-color" content="${esc(cfg?.themeColor ?? '#000000')}">`);
318
322
  }
319
- // ── OpenGraph defaults — only when the app declares metadata (unchanged).
323
+ // ── OpenGraph defaults — only when the app declares metadata, and only for
324
+ // tags its index.html doesn't already carry. An app that writes its own
325
+ // description or og:image must not get a second one: crawlers disagree on
326
+ // which copy wins, and the default image is the icon, often a relative path.
320
327
  if (cfg) {
328
+ const has = (attr, key) => new RegExp(`<meta\\b[^>]*\\b${attr}=["']${key}["']`, 'i').test(html);
321
329
  const title = cfg.title ?? cfg.name;
322
330
  const description = cfg.shortDescription ?? cfg.description;
323
331
  const image = cfg.image ?? cfg.icon;
324
332
  const og = [];
325
- if (title)
333
+ if (title && !has('property', 'og:title'))
326
334
  og.push(`<meta property="og:title" content="${esc(title)}">`);
327
335
  if (description) {
328
- og.push(`<meta name="description" content="${esc(description)}">`);
329
- og.push(`<meta property="og:description" content="${esc(description)}">`);
336
+ if (!has('name', 'description'))
337
+ og.push(`<meta name="description" content="${esc(description)}">`);
338
+ if (!has('property', 'og:description'))
339
+ og.push(`<meta property="og:description" content="${esc(description)}">`);
330
340
  }
331
- if (image) {
341
+ if (image && !has('property', 'og:image')) {
332
342
  og.push(`<meta property="og:image" content="${esc(image)}">`);
333
- og.push(`<meta name="twitter:card" content="summary_large_image">`);
343
+ if (!has('name', 'twitter:card'))
344
+ og.push(`<meta name="twitter:card" content="summary_large_image">`);
334
345
  }
335
346
  if (og.length) {
336
- og.push(`<meta property="og:type" content="website">`);
347
+ if (!has('property', 'og:type'))
348
+ og.push(`<meta property="og:type" content="website">`);
337
349
  tags.push(...og);
338
350
  }
339
351
  }
@@ -593,4 +605,21 @@ async function assertNoNodeOnlyDeps(metaFile) {
593
605
  `\n\nThese packages don't run on workerd. Move the importer behind a runtime check, or use the framework's adapter abstractions.`);
594
606
  }
595
607
  }
608
+ /**
609
+ * esbuild plugin: an image import in the Worker bundle becomes the URL Vite
610
+ * gave the same file in the client build (see `viteAssetUrl`). Without it the
611
+ * Worker build fails on the first page that imports a `.webp`, and a naive
612
+ * `file` loader would invent a different hash than the browser uses.
613
+ */
614
+ function viteAssetPlugin(clientDir) {
615
+ return {
616
+ name: 'ugly-vite-asset-url',
617
+ setup(b) {
618
+ b.onLoad({ filter: /\.(?:png|jpe?g|webp|avif|gif)$/i }, (args) => ({
619
+ contents: `export default ${JSON.stringify(viteAssetUrl(args.path, clientDir))};`,
620
+ loader: 'js',
621
+ }));
622
+ },
623
+ };
624
+ }
596
625
  //# sourceMappingURL=buildWorkers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildWorkers.js","sourceRoot":"","sources":["../../src/cli/buildWorkers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildWorkers.js","sourceRoot":"","sources":["../../src/cli/buildWorkers.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.1047";
1
+ export declare const CLI_VERSION = "0.1.1049";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.1047";
2
+ export const CLI_VERSION = "0.1.1049";
3
3
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The URL Vite gave `sourceFile` in the client build rooted at `clientDir`
3
+ * (e.g. `dist/client`), or throws if the build contains no identical file.
4
+ */
5
+ export declare function viteAssetUrl(sourceFile: string, clientDir: string): string;
6
+ //# sourceMappingURL=viteAssetUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viteAssetUrl.d.ts","sourceRoot":"","sources":["../../src/cli/viteAssetUrl.ts"],"names":[],"mappings":"AA2BA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B1E"}
@@ -0,0 +1,51 @@
1
+ // src/cli/viteAssetUrl.ts
2
+ //
3
+ // Server-rendered pages import images (`import hero from './hero.webp'`). Vite
4
+ // turns that into a hashed URL for the browser; the Worker is bundled by
5
+ // esbuild, which has no idea what URL Vite picked. For hydration to work the two
6
+ // must be byte-identical — a different `src` on the server is a mismatch, and
7
+ // React throws the server's HTML away.
8
+ //
9
+ // So the Worker build resolves each image import to the file Vite ACTUALLY
10
+ // emitted: same name, same extension, identical bytes. Content, not just name,
11
+ // so two different `logo.png`s in different folders can't be confused.
12
+ import { readdirSync, readFileSync, statSync } from 'node:fs';
13
+ import path from 'node:path';
14
+ /** Vite's default `build.assetsInlineLimit`: smaller files become data: URIs. */
15
+ const INLINE_LIMIT = 4096;
16
+ const MIME = {
17
+ '.png': 'image/png',
18
+ '.jpg': 'image/jpeg',
19
+ '.jpeg': 'image/jpeg',
20
+ '.webp': 'image/webp',
21
+ '.avif': 'image/avif',
22
+ '.gif': 'image/gif',
23
+ };
24
+ /**
25
+ * The URL Vite gave `sourceFile` in the client build rooted at `clientDir`
26
+ * (e.g. `dist/client`), or throws if the build contains no identical file.
27
+ */
28
+ export function viteAssetUrl(sourceFile, clientDir) {
29
+ const bytes = readFileSync(sourceFile);
30
+ const ext = path.extname(sourceFile).toLowerCase();
31
+ const name = path.basename(sourceFile, path.extname(sourceFile));
32
+ const assetsDir = path.join(clientDir, 'assets');
33
+ const candidates = readdirSync(assetsDir).filter((f) => f.startsWith(`${name}-`) && path.extname(f).toLowerCase() === ext);
34
+ for (const f of candidates) {
35
+ const full = path.join(assetsDir, f);
36
+ if (statSync(full).size !== bytes.length)
37
+ continue;
38
+ if (readFileSync(full).equals(bytes))
39
+ return `/assets/${f}`;
40
+ }
41
+ // Vite inlines small raster images as base64 data URIs rather than emitting
42
+ // a file; mirror that. (SVG is inlined in a different, URL-encoded form, so
43
+ // it's not handled here — it will throw below and needs an explicit look.)
44
+ if (bytes.length < INLINE_LIMIT && MIME[ext]) {
45
+ return `data:${MIME[ext]};base64,${bytes.toString('base64')}`;
46
+ }
47
+ throw new Error(`[build:workers] ${sourceFile} is imported by a server-rendered page, but ` +
48
+ `the client build (${assetsDir}) has no identical file. Build the client ` +
49
+ `first, or check that the import resolves to the same file in both builds.`);
50
+ }
51
+ //# sourceMappingURL=viteAssetUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viteAssetUrl.js","sourceRoot":"","sources":["../../src/cli/viteAssetUrl.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,EAAE;AACF,+EAA+E;AAC/E,yEAAyE;AACzE,iFAAiF;AACjF,8EAA8E;AAC9E,uCAAuC;AACvC,EAAE;AACF,2EAA2E;AAC3E,+EAA+E;AAC/E,uEAAuE;AAEvE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,iFAAiF;AACjF,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,MAAM,IAAI,GAA2B;IACnC,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,SAAiB;IAChE,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CACzE,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM;YAAE,SAAS;QACnD,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO,WAAW,CAAC,EAAE,CAAC;IAC9D,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,2EAA2E;IAC3E,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,QAAQ,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,IAAI,KAAK,CACb,mBAAmB,UAAU,8CAA8C;QACzE,qBAAqB,SAAS,4CAA4C;QAC1E,2EAA2E,CAC9E,CAAC;AACJ,CAAC"}
@@ -20,6 +20,14 @@ export interface EdgeCacheDecision {
20
20
  * only ever stores one entry per document.
21
21
  */
22
22
  canonicalPath?: string;
23
+ /**
24
+ * The URL carries ad/analytics params (`utm_*`, `fbclid`, …). Render the SSR
25
+ * document anyway, but UNCACHED and WITHOUT redirecting: those params are read
26
+ * by the page's own attribution and by ad pixels, so a redirect that strips
27
+ * them silently breaks every campaign pointed at the page. A crawler never
28
+ * sends them, so the clean URL is still the one that gets cached.
29
+ */
30
+ ssrUncached?: boolean;
23
31
  }
24
32
  /**
25
33
  * Decide whether this request may be edge-cached, at what TTL, and under which
@@ -33,7 +41,10 @@ export interface EdgeCacheDecision {
33
41
  * • an UNDECLARED, non-tracking param ⇒ not cacheable — falls through to the
34
42
  * uncached shell with the param intact, so a page that reads an ad-hoc param
35
43
  * client-side still works and junk can't fill the cache;
36
- * • tracking params and unsorted/allowlisted params ⇒ `canonicalPath` differs
44
+ * • tracking params ⇒ `ssrUncached`: rendered, not cached, NOT redirected —
45
+ * a redirect would strip the params before the page and the ad pixels read
46
+ * them;
47
+ * • unsorted allowlisted params or a trailing slash ⇒ `canonicalPath` differs
37
48
  * from the request, and the caller redirects to collapse them onto one entry.
38
49
  */
39
50
  export declare function edgeCacheDecision(request: Request, url: URL, pages: PageRegistry | undefined, env: Record<string, unknown>): EdgeCacheDecision;
@@ -1 +1 @@
1
- {"version":3,"file":"edgeCache.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/edgeCache.ts"],"names":[],"mappings":"AAyBA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAC;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAClD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAqB/C,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,iBAAiB,CAkCnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,MAAM,CAK5E"}
1
+ {"version":3,"file":"edgeCache.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/edgeCache.ts"],"names":[],"mappings":"AAyBA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAC;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAClD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAqB/C,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,iBAAiB,CA8CnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,MAAM,CAK5E"}
@@ -31,9 +31,9 @@ import { DEFAULT_SSR_CACHE_TIMEOUT, parseUrl, } from '../../../shared/Router.js'
31
31
  */
32
32
  export const CACHE_STATUS_HEADER = 'x-ugly-cache';
33
33
  /**
34
- * Ad/analytics params that never change the rendered document. Stripped (via a
35
- * redirect to the canonical URL) so a campaign link doesn't mint a cache entry
36
- * per click.
34
+ * Ad/analytics params that never change the rendered document. A URL carrying
35
+ * them is rendered but not cached (`ssrUncached`), so a campaign link neither
36
+ * mints a cache entry per click nor loses its params to a redirect.
37
37
  */
38
38
  const TRACKING_PARAM = /^(?:utm_|mc_|_ga|_gl)/;
39
39
  const TRACKING_PARAM_EXACT = new Set([
@@ -60,7 +60,10 @@ const NOT_CACHEABLE = { cacheable: false };
60
60
  * • an UNDECLARED, non-tracking param ⇒ not cacheable — falls through to the
61
61
  * uncached shell with the param intact, so a page that reads an ad-hoc param
62
62
  * client-side still works and junk can't fill the cache;
63
- * • tracking params and unsorted/allowlisted params ⇒ `canonicalPath` differs
63
+ * • tracking params ⇒ `ssrUncached`: rendered, not cached, NOT redirected —
64
+ * a redirect would strip the params before the page and the ad pixels read
65
+ * them;
66
+ * • unsorted allowlisted params or a trailing slash ⇒ `canonicalPath` differs
64
67
  * from the request, and the caller redirects to collapse them onto one entry.
65
68
  */
66
69
  export function edgeCacheDecision(request, url, pages, env) {
@@ -81,13 +84,24 @@ export function edgeCacheDecision(request, url, pages, env) {
81
84
  return NOT_CACHEABLE;
82
85
  const allow = new Set(meta.cacheQuery ?? []);
83
86
  const kept = [];
87
+ let tracked = false;
84
88
  for (const [k, v] of url.searchParams) {
85
- if (isTrackingParam(k))
86
- continue; // stripped in the canonical URL
89
+ if (isTrackingParam(k)) {
90
+ tracked = true;
91
+ continue;
92
+ }
87
93
  if (!allow.has(k))
88
94
  return NOT_CACHEABLE; // undeclared param → uncached shell
89
95
  kept.push([k, v]);
90
96
  }
97
+ if (tracked) {
98
+ return {
99
+ cacheable: false,
100
+ ssrUncached: true,
101
+ route,
102
+ ttl: meta.ssrCacheTimeout ?? DEFAULT_SSR_CACHE_TIMEOUT,
103
+ };
104
+ }
91
105
  kept.sort((a, b) => a[0] === b[0] ? (a[1] < b[1] ? -1 : 1) : a[0] < b[0] ? -1 : 1);
92
106
  const qs = new URLSearchParams(kept).toString();
93
107
  const path = url.pathname.replace(/\/+$/, '') || '/';
@@ -1 +1 @@
1
- {"version":3,"file":"edgeCache.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/edgeCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edgeCache.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/edgeCache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type PageRegistry } from '../../../shared/Router.js';
2
+ /**
3
+ * The public-file path (no leading slash) this request is for, or null.
4
+ *
5
+ * Any depth — `/hero/bus-1200.webp` as well as `/icon.png` — and text files too,
6
+ * so `robots.txt` and `sitemap.xml` are served rather than answered with the app
7
+ * page. `/api/*` never matches, whatever its extension.
8
+ */
9
+ export declare function staticAssetPath(path: string): string | null;
10
+ /** The route's declared robots directive, or null. */
11
+ export declare function robotsFor(pages: PageRegistry | undefined, url: URL): string | null;
12
+ /**
13
+ * Write `tags` into the document head, REPLACING any existing tag with the same
14
+ * identity (title, meta name/property, canonical link) rather than adding a
15
+ * second. Two `og:image`s or two descriptions leave the choice to whichever
16
+ * crawler reads which one first.
17
+ */
18
+ export declare function upsertHeadTags(html: string, tags: string[]): string;
19
+ //# sourceMappingURL=seo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/seo.ts"],"names":[],"mappings":"AAMA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AASxE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS3D;AAED,sDAAsD;AACtD,wBAAgB,SAAS,CACvB,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,GAAG,EAAE,GAAG,GACP,MAAM,GAAG,IAAI,CAKf;AAoBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CASnE"}
@@ -0,0 +1,74 @@
1
+ // src/server/adapter/workers/seo.ts
2
+ //
3
+ // Small, pure helpers for what search engines and link previews see: which
4
+ // paths are static files, which robots directive a route carries, and how head
5
+ // tags are written without duplicating ones the document already has.
6
+ import { parseUrl } from '../../../shared/Router.js';
7
+ /**
8
+ * File types served straight from the build's public files. Anything else that
9
+ * isn't an API call falls through to the app (a route, or the SPA shell).
10
+ */
11
+ const STATIC_EXT = /\.(?:png|svg|jpg|jpeg|gif|webp|avif|woff2?|ttf|otf|ico|map|txt|xml|pdf|mp4|webm)$/i;
12
+ /**
13
+ * The public-file path (no leading slash) this request is for, or null.
14
+ *
15
+ * Any depth — `/hero/bus-1200.webp` as well as `/icon.png` — and text files too,
16
+ * so `robots.txt` and `sitemap.xml` are served rather than answered with the app
17
+ * page. `/api/*` never matches, whatever its extension.
18
+ */
19
+ export function staticAssetPath(path) {
20
+ if (path.startsWith('/api/'))
21
+ return null;
22
+ if (path === '/favicon.ico')
23
+ return 'favicon.ico';
24
+ if (!STATIC_EXT.test(path))
25
+ return null;
26
+ // No empty segments or traversal: `/a//b.png`, `/../x.png`.
27
+ const rest = path.slice(1);
28
+ if (rest.split('/').some((seg) => seg === '' || seg === '..' || seg === '.'))
29
+ return null;
30
+ return rest;
31
+ }
32
+ /** The route's declared robots directive, or null. */
33
+ export function robotsFor(pages, url) {
34
+ if (!pages)
35
+ return null;
36
+ const route = parseUrl(pages, url.pathname, url.search);
37
+ if (!route)
38
+ return null;
39
+ return pages[route.routeName]?.robots ?? null;
40
+ }
41
+ /** The identity of a head tag: `<title>`, a meta name/property, or a link rel. */
42
+ function tagKey(tag) {
43
+ if (/^<title[\s>]/i.test(tag))
44
+ return 'title';
45
+ const attr = (name) => new RegExp(`\\b${name}=["']([^"']+)["']`, 'i').exec(tag)?.[1];
46
+ if (/^<meta\b/i.test(tag)) {
47
+ const n = attr('name') ?? attr('property');
48
+ return n ? `meta:${n.toLowerCase()}` : null;
49
+ }
50
+ if (/^<link\b/i.test(tag)) {
51
+ const rel = attr('rel');
52
+ return rel === 'canonical' ? 'link:canonical' : null;
53
+ }
54
+ return null;
55
+ }
56
+ const HEAD_TAG = /<title>[\s\S]*?<\/title>|<meta\b[^>]*>|<link\b[^>]*>/gi;
57
+ /**
58
+ * Write `tags` into the document head, REPLACING any existing tag with the same
59
+ * identity (title, meta name/property, canonical link) rather than adding a
60
+ * second. Two `og:image`s or two descriptions leave the choice to whichever
61
+ * crawler reads which one first.
62
+ */
63
+ export function upsertHeadTags(html, tags) {
64
+ const headEnd = html.indexOf('</head>');
65
+ if (headEnd === -1)
66
+ return tags.join('') + html;
67
+ const keys = new Set(tags.map(tagKey).filter((k) => !!k));
68
+ const head = html.slice(0, headEnd).replace(HEAD_TAG, (t) => {
69
+ const k = tagKey(t);
70
+ return k && keys.has(k) ? '' : t;
71
+ });
72
+ return head + tags.join('') + html.slice(headEnd);
73
+ }
74
+ //# sourceMappingURL=seo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/seo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wrapWithAssets.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/wrapWithAssets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AASH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AASxD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkVD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,GACnB,UAAU,CA6YZ"}
1
+ {"version":3,"file":"wrapWithAssets.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/wrapWithAssets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AASH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAUxD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA6VD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,GACnB,UAAU,CAwZZ"}
@@ -32,6 +32,7 @@ import { getUglyBotUrl } from '../../../shared/uglyBotUrl.js';
32
32
  import { setBuildInfo } from '../../BuildInfo.js';
33
33
  import { getAppContext } from './createWorkersApp.js';
34
34
  import { CACHE_STATUS_HEADER, edgeCacheDecision, ssrCacheControl, ssrCacheTags, } from './edgeCache.js';
35
+ import { robotsFor, staticAssetPath, upsertHeadTags } from './seo.js';
35
36
  /**
36
37
  * Set `<NO_SPA_FALLBACK_HEADER>: '1'` on a raw route's 404 to keep it a 404 instead
37
38
  * of letting the SPA fallback answer with an HTML 200. Use it on paths served to
@@ -183,6 +184,20 @@ function guessContentType(path) {
183
184
  return 'font/ttf';
184
185
  if (lower.endsWith('.map'))
185
186
  return 'application/json; charset=utf-8';
187
+ if (lower.endsWith('.txt'))
188
+ return 'text/plain; charset=utf-8';
189
+ if (lower.endsWith('.xml'))
190
+ return 'application/xml; charset=utf-8';
191
+ if (lower.endsWith('.avif'))
192
+ return 'image/avif';
193
+ if (lower.endsWith('.otf'))
194
+ return 'font/otf';
195
+ if (lower.endsWith('.pdf'))
196
+ return 'application/pdf';
197
+ if (lower.endsWith('.mp4'))
198
+ return 'video/mp4';
199
+ if (lower.endsWith('.webm'))
200
+ return 'video/webm';
186
201
  return 'application/octet-stream';
187
202
  }
188
203
  function htmlResponse(html, extraHeaders) {
@@ -320,17 +335,11 @@ function escapeAttr(s) {
320
335
  * reason this exists: it retires the user-agent sniffing that used to be the
321
336
  * only way to hand a crawler a social card.
322
337
  */
323
- function injectMeta(html, meta, canonicalUrl) {
338
+ function injectMeta(html, meta, canonicalUrl, robots = null) {
324
339
  const tags = [];
325
340
  const push = (t) => tags.push(t);
326
- let out = html;
327
341
  if (meta.title) {
328
- const titleTag = `<title>${escapeAttr(meta.title)}</title>`;
329
- out = /<title>[\s\S]*?<\/title>/.test(out)
330
- ? out.replace(/<title>[\s\S]*?<\/title>/, titleTag)
331
- : out;
332
- if (!out.includes(titleTag))
333
- push(titleTag);
342
+ push(`<title>${escapeAttr(meta.title)}</title>`);
334
343
  push(`<meta property="og:title" content="${escapeAttr(meta.title)}">`);
335
344
  }
336
345
  if (meta.description) {
@@ -347,7 +356,12 @@ function injectMeta(html, meta, canonicalUrl) {
347
356
  push(`<meta property="og:type" content="${escapeAttr(meta.type ?? 'website')}">`);
348
357
  push(`<meta property="og:url" content="${escapeAttr(canonicalUrl)}">`);
349
358
  push(`<link rel="canonical" href="${escapeAttr(canonicalUrl)}">`);
350
- return injectIntoHead(out, tags.join(''));
359
+ if (robots)
360
+ push(`<meta name="robots" content="${escapeAttr(robots)}">`);
361
+ // Replace, don't append: the app's index.html usually carries its own
362
+ // description and og:* defaults, and a second copy of each leaves the choice
363
+ // to whichever crawler reads which one first.
364
+ return upsertHeadTags(html, tags);
351
365
  }
352
366
  function injectIntoHead(html, scripts) {
353
367
  const idx = html.indexOf('</head>');
@@ -436,10 +450,12 @@ export function wrapWithAssets(base, config) {
436
450
  assetRest = path.slice(assetPrefix.length);
437
451
  }
438
452
  else if (isMethodIdempotent &&
439
- (path.startsWith('/assets/') ||
440
- path === '/favicon.ico' ||
441
- /^\/[^/]+\.(?:png|svg|jpg|jpeg|gif|webp|woff2?|ttf|ico|map)$/i.test(path))) {
442
- assetRest = path.slice(1); // drop leading "/"
453
+ (path.startsWith('/assets/') || staticAssetPath(path) !== null)) {
454
+ // Public files at any depth, text files included (robots.txt,
455
+ // sitemap.xml). Only root-level images used to match, so everything
456
+ // else was answered with the app page — a 200 of HTML where a crawler
457
+ // or an <img> expected a file.
458
+ assetRest = staticAssetPath(path) ?? path.slice(1);
443
459
  immutable = assetRest.startsWith('assets/');
444
460
  }
445
461
  if (assetRest !== null) {
@@ -563,12 +579,17 @@ export function wrapWithAssets(base, config) {
563
579
  // visitor — the browser resolves its session afterwards via
564
580
  // `/auth/token`. Do not add anything request-specific below.
565
581
  const decision = edgeCacheDecision(request, url, appCtx.pages ?? undefined, env);
566
- if (decision.cacheable && appCtx.ssrRender) {
582
+ const robots = robotsFor(appCtx.pages ?? undefined, url);
583
+ const robotsHeader = robots
584
+ ? { 'x-robots-tag': robots }
585
+ : {};
586
+ if ((decision.cacheable || decision.ssrUncached) && appCtx.ssrRender) {
567
587
  // Collapse tracking params / trailing slash / query order onto ONE
568
588
  // cache entry: the declarative cache keys on the raw path+query and
569
589
  // can't be customized per request, so we redirect to the canonical URL
570
590
  // instead. Only canonical URLs are ever rendered + cached.
571
- if (decision.canonicalPath &&
591
+ if (decision.cacheable &&
592
+ decision.canonicalPath &&
572
593
  url.pathname + url.search !== decision.canonicalPath) {
573
594
  return new Response(null, {
574
595
  status: 301,
@@ -598,7 +619,7 @@ export function wrapWithAssets(base, config) {
598
619
  if (result) {
599
620
  html = injectSSR(html, result.html, result.pageData);
600
621
  if (result.meta) {
601
- html = injectMeta(html, result.meta, canonicalUrl(url));
622
+ html = injectMeta(html, result.meta, canonicalUrl(url), robots);
602
623
  }
603
624
  appTags = result.tags ?? [];
604
625
  ssrOk = true;
@@ -609,13 +630,18 @@ export function wrapWithAssets(base, config) {
609
630
  }
610
631
  if (!ssrOk) {
611
632
  // A render failure must never be cached — no-store keeps it out.
612
- return htmlResponse(injectIntoHead(indexHtml, buildScript + buildPublicScripts()), { [CACHE_STATUS_HEADER]: 'BYPASS' });
633
+ return htmlResponse(injectIntoHead(indexHtml, buildScript + buildPublicScripts()), { [CACHE_STATUS_HEADER]: 'BYPASS', ...robotsHeader });
613
634
  }
614
635
  return new Response(html, {
615
636
  status: 200,
616
637
  headers: {
617
638
  'content-type': 'text/html; charset=utf-8',
618
- 'cache-control': ssrCacheControl(decision.ttl ?? 0),
639
+ // A URL with ad params is rendered for this one visitor and never
640
+ // stored: caching it would mint an entry per click.
641
+ 'cache-control': decision.ssrUncached
642
+ ? 'private, no-store'
643
+ : ssrCacheControl(decision.ttl ?? 0),
644
+ ...robotsHeader,
619
645
  'cache-tag': ssrCacheTags(decision.route?.routeName ?? '', appTags),
620
646
  // The Worker only runs on a cache MISS now, so this marks "rendered
621
647
  // fresh"; `cf-cache-status` reports whether the platform served from
@@ -630,6 +656,7 @@ export function wrapWithAssets(base, config) {
630
656
  const { scripts, clearAuthCookie } = await buildAuthInjection(request);
631
657
  const extraHeaders = {
632
658
  [CACHE_STATUS_HEADER]: 'BYPASS',
659
+ ...robotsHeader,
633
660
  };
634
661
  if (clearAuthCookie) {
635
662
  extraHeaders['Set-Cookie'] =