@tanstack/start-server-core 1.164.1 → 1.166.0

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.
@@ -1,17 +1,17 @@
1
1
  import { rootRouteId, buildDevStylesUrl } from "@tanstack/router-core";
2
- const ROUTER_BASEPATH = process.env.TSS_ROUTER_BASEPATH || "/";
2
+ const DEV_SSR_STYLES_BASEPATH = process.env.TSS_DEV_SSR_STYLES_BASEPATH || "/";
3
3
  async function getStartManifest(matchedRoutes) {
4
4
  const { tsrStartManifest } = await import("tanstack-start-manifest:v");
5
5
  const startManifest = tsrStartManifest();
6
6
  const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
7
7
  rootRoute.assets = rootRoute.assets || [];
8
- if (process.env.TSS_DEV_SERVER === "true" && matchedRoutes) {
8
+ if (process.env.TSS_DEV_SERVER === "true" && process.env.TSS_DEV_SSR_STYLES_ENABLED !== "false" && matchedRoutes) {
9
9
  const matchedRouteIds = matchedRoutes.map((route) => route.id);
10
10
  rootRoute.assets.push({
11
11
  tag: "link",
12
12
  attrs: {
13
13
  rel: "stylesheet",
14
- href: buildDevStylesUrl(ROUTER_BASEPATH, matchedRouteIds),
14
+ href: buildDevStylesUrl(DEV_SSR_STYLES_BASEPATH, matchedRouteIds),
15
15
  "data-tanstack-router-dev-styles": "true"
16
16
  }
17
17
  });
@@ -1 +1 @@
1
- {"version":3,"file":"router-manifest.js","sources":["../../src/router-manifest.ts"],"sourcesContent":["import { buildDevStylesUrl, rootRouteId } from '@tanstack/router-core'\nimport type { AnyRoute, RouterManagedTag } from '@tanstack/router-core'\nimport type { StartManifestWithClientEntry } from './transformAssetUrls'\n\n// Pre-computed constant for dev styles URL\nconst ROUTER_BASEPATH = process.env.TSS_ROUTER_BASEPATH || '/'\n\n/**\n * @description Returns the router manifest data that should be sent to the client.\n * This includes only the assets and preloads for the current route and any\n * special assets that are needed for the client. It does not include relationships\n * between routes or any other data that is not needed for the client.\n *\n * The client entry URL is returned separately so that it can be transformed\n * (e.g. for CDN rewriting) before being embedded into the `<script>` tag.\n *\n * @param matchedRoutes - In dev mode, the matched routes are used to build\n * the dev styles URL for route-scoped CSS collection.\n */\nexport async function getStartManifest(\n matchedRoutes?: ReadonlyArray<AnyRoute>,\n): Promise<StartManifestWithClientEntry> {\n const { tsrStartManifest } = await import('tanstack-start-manifest:v')\n const startManifest = tsrStartManifest()\n\n const rootRoute = (startManifest.routes[rootRouteId] =\n startManifest.routes[rootRouteId] || {})\n\n rootRoute.assets = rootRoute.assets || []\n\n // Inject dev styles link in dev mode\n if (process.env.TSS_DEV_SERVER === 'true' && matchedRoutes) {\n const matchedRouteIds = matchedRoutes.map((route) => route.id)\n rootRoute.assets.push({\n tag: 'link',\n attrs: {\n rel: 'stylesheet',\n href: buildDevStylesUrl(ROUTER_BASEPATH, matchedRouteIds),\n 'data-tanstack-router-dev-styles': 'true',\n },\n })\n }\n\n // Collect injected head scripts in dev mode (returned separately so we can\n // build the client entry script tag after URL transforms are applied)\n let injectedHeadScripts: string | undefined\n if (process.env.TSS_DEV_SERVER === 'true') {\n const mod = await import('tanstack-start-injected-head-scripts:v')\n if (mod.injectedHeadScripts) {\n injectedHeadScripts = mod.injectedHeadScripts\n }\n }\n\n const manifest = {\n routes: Object.fromEntries(\n Object.entries(startManifest.routes).flatMap(([k, v]) => {\n const result = {} as {\n preloads?: Array<string>\n assets?: Array<RouterManagedTag>\n }\n let hasData = false\n if (v.preloads && v.preloads.length > 0) {\n result['preloads'] = v.preloads\n hasData = true\n }\n if (v.assets && v.assets.length > 0) {\n result['assets'] = v.assets\n hasData = true\n }\n if (!hasData) {\n return []\n }\n return [[k, result]]\n }),\n ),\n }\n\n return {\n manifest,\n clientEntry: startManifest.clientEntry,\n injectedHeadScripts,\n }\n}\n"],"names":[],"mappings":";AAKA,MAAM,kBAAkB,QAAQ,IAAI,uBAAuB;AAc3D,eAAsB,iBACpB,eACuC;AACvC,QAAM,EAAE,iBAAA,IAAqB,MAAM,OAAO,2BAA2B;AACrE,QAAM,gBAAgB,iBAAA;AAEtB,QAAM,YAAa,cAAc,OAAO,WAAW,IACjD,cAAc,OAAO,WAAW,KAAK,CAAA;AAEvC,YAAU,SAAS,UAAU,UAAU,CAAA;AAGvC,MAAI,QAAQ,IAAI,mBAAmB,UAAU,eAAe;AAC1D,UAAM,kBAAkB,cAAc,IAAI,CAAC,UAAU,MAAM,EAAE;AAC7D,cAAU,OAAO,KAAK;AAAA,MACpB,KAAK;AAAA,MACL,OAAO;AAAA,QACL,KAAK;AAAA,QACL,MAAM,kBAAkB,iBAAiB,eAAe;AAAA,QACxD,mCAAmC;AAAA,MAAA;AAAA,IACrC,CACD;AAAA,EACH;AAIA,MAAI;AACJ,MAAI,QAAQ,IAAI,mBAAmB,QAAQ;AACzC,UAAM,MAAM,MAAM,OAAO,wCAAwC;AACjE,QAAI,IAAI,qBAAqB;AAC3B,4BAAsB,IAAI;AAAA,IAC5B;AAAA,EACF;AAEA,QAAM,WAAW;AAAA,IACf,QAAQ,OAAO;AAAA,MACb,OAAO,QAAQ,cAAc,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM;AACvD,cAAM,SAAS,CAAA;AAIf,YAAI,UAAU;AACd,YAAI,EAAE,YAAY,EAAE,SAAS,SAAS,GAAG;AACvC,iBAAO,UAAU,IAAI,EAAE;AACvB,oBAAU;AAAA,QACZ;AACA,YAAI,EAAE,UAAU,EAAE,OAAO,SAAS,GAAG;AACnC,iBAAO,QAAQ,IAAI,EAAE;AACrB,oBAAU;AAAA,QACZ;AACA,YAAI,CAAC,SAAS;AACZ,iBAAO,CAAA;AAAA,QACT;AACA,eAAO,CAAC,CAAC,GAAG,MAAM,CAAC;AAAA,MACrB,CAAC;AAAA,IAAA;AAAA,EACH;AAGF,SAAO;AAAA,IACL;AAAA,IACA,aAAa,cAAc;AAAA,IAC3B;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"router-manifest.js","sources":["../../src/router-manifest.ts"],"sourcesContent":["import { buildDevStylesUrl, rootRouteId } from '@tanstack/router-core'\nimport type { AnyRoute, RouterManagedTag } from '@tanstack/router-core'\nimport type { StartManifestWithClientEntry } from './transformAssetUrls'\n\n// Pre-computed constant for dev styles URL basepath.\n// Defaults to vite `base` (set via TSS_DEV_SSR_STYLES_BASEPATH in the plugin),\n// aligning dev styles with how other CSS/JS assets are served.\nconst DEV_SSR_STYLES_BASEPATH = process.env.TSS_DEV_SSR_STYLES_BASEPATH || '/'\n\n/**\n * @description Returns the router manifest data that should be sent to the client.\n * This includes only the assets and preloads for the current route and any\n * special assets that are needed for the client. It does not include relationships\n * between routes or any other data that is not needed for the client.\n *\n * The client entry URL is returned separately so that it can be transformed\n * (e.g. for CDN rewriting) before being embedded into the `<script>` tag.\n *\n * @param matchedRoutes - In dev mode, the matched routes are used to build\n * the dev styles URL for route-scoped CSS collection.\n */\nexport async function getStartManifest(\n matchedRoutes?: ReadonlyArray<AnyRoute>,\n): Promise<StartManifestWithClientEntry> {\n const { tsrStartManifest } = await import('tanstack-start-manifest:v')\n const startManifest = tsrStartManifest()\n\n const rootRoute = (startManifest.routes[rootRouteId] =\n startManifest.routes[rootRouteId] || {})\n\n rootRoute.assets = rootRoute.assets || []\n\n // Inject dev styles link in dev mode (when SSR styles are enabled)\n if (\n process.env.TSS_DEV_SERVER === 'true' &&\n process.env.TSS_DEV_SSR_STYLES_ENABLED !== 'false' &&\n matchedRoutes\n ) {\n const matchedRouteIds = matchedRoutes.map((route) => route.id)\n rootRoute.assets.push({\n tag: 'link',\n attrs: {\n rel: 'stylesheet',\n href: buildDevStylesUrl(DEV_SSR_STYLES_BASEPATH, matchedRouteIds),\n 'data-tanstack-router-dev-styles': 'true',\n },\n })\n }\n\n // Collect injected head scripts in dev mode (returned separately so we can\n // build the client entry script tag after URL transforms are applied)\n let injectedHeadScripts: string | undefined\n if (process.env.TSS_DEV_SERVER === 'true') {\n const mod = await import('tanstack-start-injected-head-scripts:v')\n if (mod.injectedHeadScripts) {\n injectedHeadScripts = mod.injectedHeadScripts\n }\n }\n\n const manifest = {\n routes: Object.fromEntries(\n Object.entries(startManifest.routes).flatMap(([k, v]) => {\n const result = {} as {\n preloads?: Array<string>\n assets?: Array<RouterManagedTag>\n }\n let hasData = false\n if (v.preloads && v.preloads.length > 0) {\n result['preloads'] = v.preloads\n hasData = true\n }\n if (v.assets && v.assets.length > 0) {\n result['assets'] = v.assets\n hasData = true\n }\n if (!hasData) {\n return []\n }\n return [[k, result]]\n }),\n ),\n }\n\n return {\n manifest,\n clientEntry: startManifest.clientEntry,\n injectedHeadScripts,\n }\n}\n"],"names":[],"mappings":";AAOA,MAAM,0BAA0B,QAAQ,IAAI,+BAA+B;AAc3E,eAAsB,iBACpB,eACuC;AACvC,QAAM,EAAE,iBAAA,IAAqB,MAAM,OAAO,2BAA2B;AACrE,QAAM,gBAAgB,iBAAA;AAEtB,QAAM,YAAa,cAAc,OAAO,WAAW,IACjD,cAAc,OAAO,WAAW,KAAK,CAAA;AAEvC,YAAU,SAAS,UAAU,UAAU,CAAA;AAGvC,MACE,QAAQ,IAAI,mBAAmB,UAC/B,QAAQ,IAAI,+BAA+B,WAC3C,eACA;AACA,UAAM,kBAAkB,cAAc,IAAI,CAAC,UAAU,MAAM,EAAE;AAC7D,cAAU,OAAO,KAAK;AAAA,MACpB,KAAK;AAAA,MACL,OAAO;AAAA,QACL,KAAK;AAAA,QACL,MAAM,kBAAkB,yBAAyB,eAAe;AAAA,QAChE,mCAAmC;AAAA,MAAA;AAAA,IACrC,CACD;AAAA,EACH;AAIA,MAAI;AACJ,MAAI,QAAQ,IAAI,mBAAmB,QAAQ;AACzC,UAAM,MAAM,MAAM,OAAO,wCAAwC;AACjE,QAAI,IAAI,qBAAqB;AAC3B,4BAAsB,IAAI;AAAA,IAC5B;AAAA,EACF;AAEA,QAAM,WAAW;AAAA,IACf,QAAQ,OAAO;AAAA,MACb,OAAO,QAAQ,cAAc,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM;AACvD,cAAM,SAAS,CAAA;AAIf,YAAI,UAAU;AACd,YAAI,EAAE,YAAY,EAAE,SAAS,SAAS,GAAG;AACvC,iBAAO,UAAU,IAAI,EAAE;AACvB,oBAAU;AAAA,QACZ;AACA,YAAI,EAAE,UAAU,EAAE,OAAO,SAAS,GAAG;AACnC,iBAAO,QAAQ,IAAI,EAAE;AACrB,oBAAU;AAAA,QACZ;AACA,YAAI,CAAC,SAAS;AACZ,iBAAO,CAAA;AAAA,QACT;AACA,eAAO,CAAC,CAAC,GAAG,MAAM,CAAC;AAAA,MACrB,CAAC;AAAA,IAAA;AAAA,EACH;AAGF,SAAO;AAAA,IACL;AAAA,IACA,aAAa,cAAc;AAAA,IAC3B;AAAA,EAAA;AAEJ;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/start-server-core",
3
- "version": "1.164.1",
3
+ "version": "1.166.0",
4
4
  "description": "Modern and scalable routing for React applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
@@ -65,8 +65,8 @@
65
65
  "tiny-invariant": "^1.3.3",
66
66
  "@tanstack/history": "1.161.4",
67
67
  "@tanstack/router-core": "1.163.3",
68
- "@tanstack/start-client-core": "1.164.1",
69
- "@tanstack/start-storage-context": "1.163.3"
68
+ "@tanstack/start-storage-context": "1.163.3",
69
+ "@tanstack/start-client-core": "1.164.1"
70
70
  },
71
71
  "devDependencies": {
72
72
  "@standard-schema/spec": "^1.0.0",
@@ -2,8 +2,10 @@ import { buildDevStylesUrl, rootRouteId } from '@tanstack/router-core'
2
2
  import type { AnyRoute, RouterManagedTag } from '@tanstack/router-core'
3
3
  import type { StartManifestWithClientEntry } from './transformAssetUrls'
4
4
 
5
- // Pre-computed constant for dev styles URL
6
- const ROUTER_BASEPATH = process.env.TSS_ROUTER_BASEPATH || '/'
5
+ // Pre-computed constant for dev styles URL basepath.
6
+ // Defaults to vite `base` (set via TSS_DEV_SSR_STYLES_BASEPATH in the plugin),
7
+ // aligning dev styles with how other CSS/JS assets are served.
8
+ const DEV_SSR_STYLES_BASEPATH = process.env.TSS_DEV_SSR_STYLES_BASEPATH || '/'
7
9
 
8
10
  /**
9
11
  * @description Returns the router manifest data that should be sent to the client.
@@ -28,14 +30,18 @@ export async function getStartManifest(
28
30
 
29
31
  rootRoute.assets = rootRoute.assets || []
30
32
 
31
- // Inject dev styles link in dev mode
32
- if (process.env.TSS_DEV_SERVER === 'true' && matchedRoutes) {
33
+ // Inject dev styles link in dev mode (when SSR styles are enabled)
34
+ if (
35
+ process.env.TSS_DEV_SERVER === 'true' &&
36
+ process.env.TSS_DEV_SSR_STYLES_ENABLED !== 'false' &&
37
+ matchedRoutes
38
+ ) {
33
39
  const matchedRouteIds = matchedRoutes.map((route) => route.id)
34
40
  rootRoute.assets.push({
35
41
  tag: 'link',
36
42
  attrs: {
37
43
  rel: 'stylesheet',
38
- href: buildDevStylesUrl(ROUTER_BASEPATH, matchedRouteIds),
44
+ href: buildDevStylesUrl(DEV_SSR_STYLES_BASEPATH, matchedRouteIds),
39
45
  'data-tanstack-router-dev-styles': 'true',
40
46
  },
41
47
  })