@tanstack/router-core
Version:
Modern and scalable routing for React applications
1 lines • 6.06 kB
Source Map (JSON)
{"version":3,"file":"manifest.cjs","names":[],"sources":["../../src/manifest.ts"],"sourcesContent":["export type AssetCrossOrigin = 'anonymous' | 'use-credentials'\nexport type ScriptFormat = 'module' | 'iife'\n\nexport const DEV_STYLES_ATTR = 'data-tanstack-router-dev-styles'\n\nexport type AssetCrossOriginConfig =\n | AssetCrossOrigin\n | Partial<Record<'script' | 'stylesheet', AssetCrossOrigin>>\n\nexport type ManifestAssetLink =\n | string\n | {\n href: string\n crossOrigin?: AssetCrossOrigin\n }\n\nexport function getAssetCrossOrigin(\n assetCrossOrigin: AssetCrossOriginConfig | undefined,\n kind: 'script' | 'stylesheet',\n): AssetCrossOrigin | undefined {\n if (!assetCrossOrigin) {\n return undefined\n }\n\n if (typeof assetCrossOrigin === 'string') {\n return assetCrossOrigin\n }\n\n return assetCrossOrigin[kind]\n}\n\nexport function getManifestScriptFormat(\n manifest: { scriptFormat?: ScriptFormat } | undefined,\n): ScriptFormat {\n return manifest?.scriptFormat ?? 'module'\n}\n\nexport function getScriptPreloadAttrs(\n manifest: { scriptFormat?: ScriptFormat } | undefined,\n link: ManifestAssetLink,\n assetCrossOrigin?: AssetCrossOriginConfig,\n): {\n rel: 'modulepreload' | 'preload'\n as?: 'script'\n href: string\n crossOrigin?: AssetCrossOrigin\n} {\n const preloadLink = resolveManifestAssetLink(link)\n const crossOrigin =\n getAssetCrossOrigin(assetCrossOrigin, 'script') ?? preloadLink.crossOrigin\n\n return {\n ...(getManifestScriptFormat(manifest) === 'iife'\n ? { rel: 'preload', as: 'script' }\n : { rel: 'modulepreload' }),\n href: preloadLink.href,\n ...(crossOrigin ? { crossOrigin } : {}),\n }\n}\n\nexport function resolveManifestAssetLink(link: ManifestAssetLink) {\n if (typeof link === 'string') {\n return { href: link, crossOrigin: undefined }\n }\n\n return link\n}\n\nexport type Manifest = {\n scriptFormat?: ScriptFormat\n inlineStyle?: ManifestInlineCss\n routes: Record<string, ManifestRoute>\n}\n\nexport type ServerManifest = {\n scriptFormat?: ScriptFormat\n inlineCss?: ServerManifestInlineCss\n routes: Record<string, ServerManifestRoute>\n}\n\nexport type ServerManifestInlineCss = {\n styles: Record<string, string>\n templates?: Record<string, InlineCssTemplate>\n}\n\nexport type InlineCssTemplate = {\n strings: Array<string>\n urls: Array<string>\n}\n\nexport type ManifestRoute = {\n filePath?: string\n preloads?: Array<ManifestAssetLink>\n scripts?: Array<ManifestScript>\n css?: Array<ManifestCssLink>\n}\n\nexport type ServerManifestRoute = ManifestRoute\n\nexport type ManifestRouteAssets = Pick<\n ManifestRoute,\n 'preloads' | 'scripts' | 'css'\n>\n\nexport type RouterManagedTitleTag = {\n tag: 'title'\n attrs?: Record<string, any>\n children: string\n}\n\nexport type RouterManagedMetaTag = {\n tag: 'meta'\n attrs?: Record<string, any>\n children?: never\n}\n\nexport type RouterManagedLinkTag = {\n tag: 'link'\n attrs?: Record<string, any>\n children?: never\n}\n\nexport type RouterManagedScriptTag = {\n tag: 'script'\n attrs?: Record<string, any>\n children?: string\n}\n\nexport type ManifestScript = Omit<RouterManagedScriptTag, 'tag'>\n\nexport type RouterManagedStyleTag = {\n tag: 'style'\n attrs?: Record<string, any>\n children?: string\n inlineCss?: true\n}\n\nexport type RouterManagedTag =\n | RouterManagedTitleTag\n | RouterManagedMetaTag\n | RouterManagedLinkTag\n | RouterManagedScriptTag\n | RouterManagedStyleTag\n\nexport function appendUniqueUserTags(\n target: Array<RouterManagedTag>,\n tags: Array<RouterManagedTag>,\n) {\n if (tags.length === 0) {\n return\n }\n\n if (tags.length === 1) {\n target.push(tags[0]!)\n return\n }\n\n const seen = new Set<string>()\n for (const tag of tags) {\n const key = JSON.stringify(tag)\n if (seen.has(key)) {\n continue\n }\n seen.add(key)\n target.push(tag)\n }\n}\n\nexport type ManifestCssLink =\n | string\n | {\n href: string\n crossOrigin?: AssetCrossOrigin\n [DEV_STYLES_ATTR]?: true\n }\n\nexport type ManifestInlineCss = {\n attrs?: Record<string, any>\n children?: string\n}\n\nexport type RouterManagedInlineCssTag = RouterManagedStyleTag & {\n inlineCss: true\n}\n\nexport function getStylesheetHref(asset: ManifestCssLink) {\n return resolveManifestCssLink(asset).href\n}\n\nexport function resolveManifestCssLink(link: ManifestCssLink) {\n if (typeof link === 'string') {\n return { href: link, crossOrigin: undefined }\n }\n\n return link\n}\n\nexport function createInlineCssStyleAsset(css: string): ManifestInlineCss {\n return {\n attrs: {\n suppressHydrationWarning: true,\n },\n children: css,\n }\n}\n\nexport function createInlineCssPlaceholderAsset(): ManifestInlineCss {\n return {\n attrs: {\n suppressHydrationWarning: true,\n },\n }\n}\n"],"mappings":";AAGA,MAAa,kBAAkB;AAa/B,SAAgB,oBACd,kBACA,MAC8B;CAC9B,IAAI,CAAC,kBACH;CAGF,IAAI,OAAO,qBAAqB,UAC9B,OAAO;CAGT,OAAO,iBAAiB;AAC1B;AAEA,SAAgB,wBACd,UACc;CACd,OAAO,UAAU,gBAAgB;AACnC;AAEA,SAAgB,sBACd,UACA,MACA,kBAMA;CACA,MAAM,cAAc,yBAAyB,IAAI;CACjD,MAAM,cACJ,oBAAoB,kBAAkB,QAAQ,KAAK,YAAY;CAEjE,OAAO;EACL,GAAI,wBAAwB,QAAQ,MAAM,SACtC;GAAE,KAAK;GAAW,IAAI;EAAS,IAC/B,EAAE,KAAK,gBAAgB;EAC3B,MAAM,YAAY;EAClB,GAAI,cAAc,EAAE,YAAY,IAAI,CAAC;CACvC;AACF;AAEA,SAAgB,yBAAyB,MAAyB;CAChE,IAAI,OAAO,SAAS,UAClB,OAAO;EAAE,MAAM;EAAM,aAAa,KAAA;CAAU;CAG9C,OAAO;AACT;AA8EA,SAAgB,qBACd,QACA,MACA;CACA,IAAI,KAAK,WAAW,GAClB;CAGF,IAAI,KAAK,WAAW,GAAG;EACrB,OAAO,KAAK,KAAK,EAAG;EACpB;CACF;CAEA,MAAM,uBAAO,IAAI,IAAY;CAC7B,KAAK,MAAM,OAAO,MAAM;EACtB,MAAM,MAAM,KAAK,UAAU,GAAG;EAC9B,IAAI,KAAK,IAAI,GAAG,GACd;EAEF,KAAK,IAAI,GAAG;EACZ,OAAO,KAAK,GAAG;CACjB;AACF;AAmBA,SAAgB,kBAAkB,OAAwB;CACxD,OAAO,uBAAuB,KAAK,EAAE;AACvC;AAEA,SAAgB,uBAAuB,MAAuB;CAC5D,IAAI,OAAO,SAAS,UAClB,OAAO;EAAE,MAAM;EAAM,aAAa,KAAA;CAAU;CAG9C,OAAO;AACT;AAEA,SAAgB,0BAA0B,KAAgC;CACxE,OAAO;EACL,OAAO,EACL,0BAA0B,KAC5B;EACA,UAAU;CACZ;AACF;AAEA,SAAgB,kCAAqD;CACnE,OAAO,EACL,OAAO,EACL,0BAA0B,KAC5B,EACF;AACF"}