@blacklizard/inertia-express 1.2.0 → 3.0.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.
- package/README.md +153 -23
- package/dist/core/index.d.ts +2 -538
- package/dist/core/index.js +2 -646
- package/dist/core-ChQbBw-k.js +1499 -0
- package/dist/core-ChQbBw-k.js.map +1 -0
- package/dist/express/index.d.ts +17 -3
- package/dist/express/index.d.ts.map +1 -1
- package/dist/express/index.js +59 -17
- package/dist/express/index.js.map +1 -1
- package/dist/index-PWaujyMo.d.ts +1133 -0
- package/dist/index-PWaujyMo.d.ts.map +1 -0
- package/package.json +2 -2
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-PWaujyMo.d.ts","names":[],"sources":["../src/core/types.ts","../src/core/cache.ts","../src/core/dot-props.ts","../src/core/errors.ts","../src/core/headers.ts","../src/core/html.ts","../src/core/page.ts","../src/core/partial-filter.ts","../src/core/prop-descriptor.ts","../src/core/props.ts","../src/core/props-resolver.ts","../src/core/redirects.ts","../src/core/render.ts","../src/core/versioning.ts"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blacklizard/inertia-express",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Inertia.js v3 server adapter for Node.js, with first-class Express support.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"dev": "tsdown --watch",
|
|
81
81
|
"test": "vitest run",
|
|
82
82
|
"test:watch": "vitest",
|
|
83
|
-
"typecheck": "tsc --noEmit",
|
|
83
|
+
"typecheck": "tsc --noEmit && tsc -p tsconfig.tests.json",
|
|
84
84
|
"clean": "rm -rf dist"
|
|
85
85
|
}
|
|
86
86
|
}
|
package/dist/core/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/core/types.ts","../../src/core/cache.ts","../../src/core/errors.ts","../../src/core/headers.ts","../../src/core/html.ts","../../src/core/page.ts","../../src/core/props.ts","../../src/core/redirects.ts","../../src/core/render.ts","../../src/core/versioning.ts"],"mappings":"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"}
|
package/dist/core/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/core/cache.ts","../../src/core/errors.ts","../../src/core/headers.ts","../../src/core/html.ts","../../src/core/page.ts","../../src/core/props.ts","../../src/core/redirects.ts","../../src/core/render.ts","../../src/core/versioning.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\n\nimport type { InertiaPage, PageProps } from './types.js';\n\n/**\n * Pluggable storage interface for the SSR view cache.\n *\n * Implementations live outside the core package — see\n * `createMemoryCacheStore` in `@blacklizard/inertia-express` and\n * `createRedisCacheStore` in `@blacklizard/inertia-cache-redis`.\n *\n * Values are arbitrary JSON — usually `SsrCacheEntry` (`{ head, body, ... }`).\n * The store should not interpret them.\n */\nexport interface SsrCacheStore {\n get: (key: string) => Promise<SsrCacheEntry | null>;\n set: (key: string, value: SsrCacheEntry, ttlSeconds: number) => Promise<void>;\n delete: (key: string) => Promise<void>;\n}\n\n/**\n * What we actually store per cache hit. Includes everything needed to\n * reconstruct the HTML response without re-running the SSR renderer.\n */\nexport interface SsrCacheEntry {\n head: string | string[];\n body: string;\n bodyIsFullRoot?: boolean;\n /** ISO timestamp when this entry was stored. Useful for debugging. */\n storedAt: string;\n /**\n * The page object the entry corresponds to. Lets a custom rootView see\n * the same structure on a cache hit as on a fresh render.\n */\n page: InertiaPage;\n}\n\n/**\n * Recursively normalize a value so equal-by-value inputs serialize identically:\n * object keys are sorted, `undefined` properties are dropped, and non-finite\n * numbers collapse to `null`.\n *\n * @param value Arbitrary JSON-shaped input.\n */\nfunction canonicalize(value: unknown): unknown {\n if (value === null) {\n return null;\n }\n\n if (typeof value !== 'object') {\n if (typeof value === 'number' && !Number.isFinite(value)) {\n return null;\n }\n\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(canonicalize);\n }\n\n const obj = value as Record<string, unknown>;\n\n return Object.fromEntries(\n Object.keys(obj)\n .sort()\n .filter((key) => obj[key] !== undefined)\n .map((key) => [key, canonicalize(obj[key])]),\n );\n}\n\n/**\n * Stable JSON encoding: keys sorted recursively, undefined dropped, NaN/Inf\n * normalized. Two equal-by-value objects always produce the same string,\n * so they hash to the same cache key.\n *\n * @param value Arbitrary JSON-shaped input.\n */\nexport function canonicalStringify(value: unknown): string {\n return JSON.stringify(canonicalize(value));\n}\n\n/**\n * Inputs to {@link computeSsrCacheKey}.\n */\nexport interface ComputeCacheKeyInput {\n /** Cache namespace, e.g. `\"inertia:ssr\"`. */\n prefix: string;\n /** Asset version. Becomes part of the key so deploys auto-invalidate. */\n version: string | null;\n /** Component name being rendered. */\n component: string;\n /** Final, fully-resolved props (post shared-merge, post-lazy evaluation). */\n props: PageProps;\n /** Optional extra discriminator (locale, theme, A/B bucket, etc.). */\n discriminator?: string;\n}\n\n/**\n * Build the cache key for an SSR cache entry.\n *\n * Shape: `${prefix}:${version}:${component}:${sha256(props[+discriminator])}`\n *\n * Including `version` in the key namespace means a deploy that bumps the\n * asset version atomically retires every old key — no flush, no race.\n *\n * @param input Prefix, version, component, resolved props, optional discriminator.\n */\nexport function computeSsrCacheKey(input: ComputeCacheKeyInput): string {\n const versionPart = input.version ?? '_';\n const propsHash = createHash('sha256')\n .update(canonicalStringify(input.props))\n .update(input.discriminator ?? '')\n .digest('hex')\n .slice(0, 32);\n\n return `${input.prefix}:${versionPart}:${input.component}:${propsHash}`;\n}\n","import type { PageProps } from './types.js';\n\n/**\n * Flat map of `field → first error message`, the shape the Inertia client\n * expects under `props.errors`.\n */\nexport type ValidationErrors = Record<string, string>;\n\n/**\n * Apply error-bag scoping to a flat errors object, matching the official\n * Inertia behavior. When `bag` is set, errors are namespaced under\n * `props.errors[bag]`. When `bag` is null, errors live at `props.errors`.\n *\n * @param errors Flat field-to-message map.\n * @param bag Optional error-bag name (e.g. `\"createUser\"`); null for top-level.\n */\nexport function scopeErrors(errors: ValidationErrors, bag: string | null): PageProps {\n if (bag) {\n return { errors: { [bag]: errors } };\n }\n\n return { errors };\n}\n","import type { InertiaRequestInfo } from './types.js';\n\n/**\n * Canonical Inertia v3 protocol header names.\n *\n * The Inertia client sends these headers on every visit. The server uses\n * them to decide between a full HTML response and a JSON page response,\n * and to scope partial reloads.\n */\nexport const INERTIA_HEADERS = {\n inertia: 'x-inertia',\n version: 'x-inertia-version',\n partialComponent: 'x-inertia-partial-component',\n partialData: 'x-inertia-partial-data',\n partialExcept: 'x-inertia-partial-except',\n errorBag: 'x-inertia-error-bag',\n reset: 'x-inertia-reset',\n location: 'x-inertia-location',\n} as const;\n\ntype HeaderRecord = Record<string, string | string[] | undefined>;\n\n/**\n * Read a header value as a single string, looking up the lowercase variant as\n * a fallback. Returns the first entry of an array value and `null` when the\n * header is absent.\n *\n * @param headers Raw header record from the HTTP layer.\n * @param name Header name to read.\n */\nfunction readHeader(headers: HeaderRecord, name: string): string | null {\n const value = headers[name] ?? headers[name.toLowerCase()];\n\n if (value === undefined || value === null) {\n return null;\n }\n\n if (Array.isArray(value)) {\n return value[0] ?? null;\n }\n\n return value;\n}\n\n/**\n * Split a comma-separated header value into a trimmed, non-empty string list.\n * Returns `null` when the input is null or yields no entries.\n *\n * @param value Raw header value, or null when absent.\n */\nfunction parseList(value: string | null): string[] | null {\n if (value === null) {\n return null;\n }\n\n const parts = value\n .split(',')\n .map((part) => part.trim())\n .filter((part) => part.length > 0);\n\n return parts.length > 0 ? parts : null;\n}\n\n/**\n * Parse a request's headers into a normalized {@link InertiaRequestInfo}.\n *\n * @param input Headers, HTTP method, and request URL. Method is uppercased in\n * the returned object; the URL is passed through unchanged.\n */\nexport function parseInertiaRequest(input: { headers: HeaderRecord; method: string; url: string }): InertiaRequestInfo {\n const { headers } = input;\n const inertia = readHeader(headers, INERTIA_HEADERS.inertia);\n const version = readHeader(headers, INERTIA_HEADERS.version);\n const partialComponent = readHeader(headers, INERTIA_HEADERS.partialComponent);\n const partialOnly = parseList(readHeader(headers, INERTIA_HEADERS.partialData));\n const partialExcept = parseList(readHeader(headers, INERTIA_HEADERS.partialExcept));\n const errorBag = readHeader(headers, INERTIA_HEADERS.errorBag);\n const resetKeys = parseList(readHeader(headers, INERTIA_HEADERS.reset));\n\n return {\n isInertia: inertia === 'true' || inertia === '1',\n version,\n partialComponent,\n partialOnly,\n partialExcept,\n errorBag,\n resetKeys,\n method: input.method.toUpperCase(),\n url: input.url,\n };\n}\n","import type { InertiaPage } from './types.js';\n\nconst HTML_ESCAPES: Record<string, string> = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\n\n/**\n * Escape characters that would break out of a double-quoted HTML attribute.\n *\n * @param value Raw attribute value.\n */\nfunction escapeHtmlAttribute(value: string): string {\n return value.replace(/[&<>\"']/g, (ch) => HTML_ESCAPES[ch] ?? ch);\n}\n\n/**\n * Encode an Inertia page object for embedding inside a\n * `<script type=\"application/json\" data-page=\"...\">` tag — the Inertia v3\n * initial-page transport that the client reads via `getInitialPageFromDOM`.\n *\n * Every `<` is replaced with its JSON unicode escape so the payload cannot\n * terminate the surrounding `</script>` element or open an HTML comment. The\n * escape is transparent — JSON.parse decodes it back to `<`.\n *\n * @param page Resolved Inertia page object.\n */\nexport function encodePageScript(page: InertiaPage): string {\n return JSON.stringify(page).replace(/</g, '\\\\u003C');\n}\n\n/**\n * Inputs to {@link renderDefaultHtml}.\n */\nexport interface DefaultRootViewInput {\n page: InertiaPage;\n /** Optional `<title>` for the document. */\n title?: string;\n /** Optional <head> content (meta tags, links, etc.). */\n head?: string;\n /** ID of the SPA root element. Defaults to `app`. */\n rootId?: string;\n /** Path to the client entry script, e.g. `/assets/app.js`. */\n scriptSrc?: string;\n /**\n * Pre-rendered SSR HTML for the root element's *inner* content. When set,\n * the inner HTML of the root div is replaced with this string so the\n * client hydrates over server-rendered markup.\n */\n ssrBody?: string;\n /**\n * Pre-rendered SSR HTML representing the entire root element. When set,\n * `ssrBody`, `rootId`, and the page `<script>` tag are ignored — the\n * provided string is inserted into `<body>` as-is. Use this when your\n * SSR renderer already returns the full root element + page script (the\n * Inertia v3 SSR servers do).\n */\n ssrFull?: string;\n}\n\n/**\n * Minimal default HTML shell for use when no custom root view is provided.\n * Real apps should plug in a template engine (pug, ejs, react-dom/server,\n * etc.) and embed `encodePageScript(page)` themselves.\n *\n * The initial page object is emitted as a\n * `<script type=\"application/json\" data-page=\"...\">` tag, the Inertia v3\n * transport that the client reads on boot.\n *\n * @param input Page object plus optional title/head/rootId/scriptSrc/SSR markup\n * — see {@link DefaultRootViewInput}.\n */\nexport function renderDefaultHtml(input: DefaultRootViewInput): string {\n const rootId = input.rootId ?? 'app';\n const title = input.title ?? 'Inertia App';\n const head = input.head ?? '';\n const script = input.scriptSrc ? `<script type=\"module\" src=\"${escapeHtmlAttribute(input.scriptSrc)}\"></script>` : '';\n\n let rootMarkup: string;\n\n if (input.ssrFull) {\n rootMarkup = input.ssrFull;\n } else {\n const idAttr = escapeHtmlAttribute(rootId);\n const inner = input.ssrBody ?? '';\n const pageScript = `<script data-page=\"${idAttr}\" type=\"application/json\">${encodePageScript(input.page)}</script>`;\n rootMarkup = `<div id=\"${idAttr}\">${inner}</div>\\n ${pageScript}`;\n }\n\n return `<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${escapeHtmlAttribute(title)}</title>\n ${head}\n </head>\n <body>\n ${rootMarkup}\n ${script}\n </body>\n</html>`;\n}\n\n/** Default user-facing messages keyed by HTTP status, used when none is given. */\nconst ERROR_STATUS_MESSAGES: Record<number, string> = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Page Not Found',\n 409: 'Conflict',\n 419: 'Page Expired',\n 422: 'Unprocessable Entity',\n 429: 'Too Many Requests',\n 500: 'Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Gateway Timeout',\n};\n\n/**\n * Inputs to {@link renderErrorPage}.\n */\nexport interface ErrorPageInput {\n /** HTTP status code to surface to the user. */\n status: number;\n /** Optional message; falls back to a default for the status, then a generic line. */\n message?: string;\n}\n\n/**\n * Render a minimal, SPA-less standalone HTML error page. Used as the hard\n * fallback when no client `Error` component can be resolved (e.g. a plain\n * browser load, or an SSR/render failure on the Inertia path), so a user\n * never receives a raw JSON error or a blank page.\n *\n * @param input HTTP status plus an optional override message — see {@link ErrorPageInput}.\n */\nexport function renderErrorPage(input: ErrorPageInput): string {\n const { status } = input;\n const message = input.message ?? ERROR_STATUS_MESSAGES[status] ?? 'Something went wrong';\n const safeStatus = escapeHtmlAttribute(String(status));\n const safeMessage = escapeHtmlAttribute(message);\n\n return `<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${safeStatus} ${safeMessage}</title>\n <style>\n body { font-family: system-ui, sans-serif; display: flex; align-items: center; justify-content: center; min-height: 100vh; margin: 0; background: #f8f9fa; color: #212529; }\n main { text-align: center; padding: 2rem; }\n h1 { font-size: 4rem; margin: 0; font-weight: 600; }\n p { font-size: 1.25rem; margin: 0.5rem 0 0; color: #6c757d; }\n </style>\n </head>\n <body>\n <main>\n <h1>${safeStatus}</h1>\n <p>${safeMessage}</p>\n </main>\n </body>\n</html>`;\n}\n","import type { InertiaPage, PageProps } from './types.js';\n\n/**\n * Inputs to {@link createPage} — the fields of an {@link InertiaPage} plus\n * optional history flags and v3 prop-key metadata.\n */\nexport interface CreatePageInput<TProps extends PageProps = PageProps> {\n component: string;\n props: TProps;\n url: string;\n version: string | null;\n clearHistory?: boolean;\n encryptHistory?: boolean;\n deferredProps?: Record<string, string[]>;\n mergeProps?: string[];\n deepMergeProps?: string[];\n matchPropsOn?: string[];\n}\n\n/**\n * Build a normalized Inertia v3 page object. `clearHistory` and `encryptHistory`\n * default to `false`. Empty/absent `deferredProps` / `mergeProps` /\n * `deepMergeProps` / `matchPropsOn` are dropped so the JSON over the wire stays\n * compact.\n *\n * @param input Required page fields plus the optional v3 extras.\n */\nexport function createPage<TProps extends PageProps>(input: CreatePageInput<TProps>): InertiaPage<TProps> {\n const page: InertiaPage<TProps> = {\n component: input.component,\n props: input.props,\n url: input.url,\n version: input.version,\n clearHistory: input.clearHistory ?? false,\n encryptHistory: input.encryptHistory ?? false,\n };\n\n if (input.deferredProps && Object.keys(input.deferredProps).length > 0) {\n page.deferredProps = input.deferredProps;\n }\n\n if (input.mergeProps && input.mergeProps.length > 0) {\n page.mergeProps = input.mergeProps;\n }\n\n if (input.deepMergeProps && input.deepMergeProps.length > 0) {\n page.deepMergeProps = input.deepMergeProps;\n }\n\n if (input.matchPropsOn && input.matchPropsOn.length > 0) {\n page.matchPropsOn = input.matchPropsOn;\n }\n\n return page;\n}\n","import type {\n AlwaysProp,\n DeepMergeProp,\n DeferredProp,\n InertiaRequestInfo,\n LazyProp,\n MergeProp,\n OptionalProp,\n PageProps,\n} from './types.js';\n\nconst LAZY = '__inertia_lazy' as const;\nconst OPTIONAL = '__inertia_optional' as const;\nconst DEFERRED = '__inertia_deferred' as const;\nconst ALWAYS = '__inertia_always' as const;\nconst MERGE = '__inertia_merge' as const;\nconst DEEP_MERGE = '__inertia_deep_merge' as const;\nconst MATCH_ON = '__inertia_match_on' as const;\n\n/**\n * Attach the (non-enumerable) `MATCH_ON` symbol-key to a merge/deep-merge\n * prop value so `resolveProps` can emit the dotted `prop.field` paths.\n *\n * @param value Object being tagged (mutated in place).\n * @param matchOn Single field name or list; no-op when undefined.\n */\nfunction tagMatchOn(value: object, matchOn: string | string[] | undefined): void {\n if (matchOn === undefined) {\n return;\n }\n\n const fields = Array.isArray(matchOn) ? matchOn : [matchOn];\n Object.defineProperty(value, MATCH_ON, { value: fields, enumerable: false });\n}\n\n/**\n * Wrap a value-producing function as a \"lazy\" prop.\n *\n * Lazy props are evaluated on every visit (full or partial) when included.\n * They are NOT skipped on the initial visit — use {@link optional} for that.\n *\n * @param fn Producer called (and awaited) when the prop is included.\n */\nexport function lazy<T>(fn: () => T | Promise<T>): LazyProp<T> {\n const wrapped = (async () => fn()) as LazyProp<T>;\n Object.defineProperty(wrapped, LAZY, { value: true, enumerable: false });\n\n return wrapped;\n}\n\n/**\n * Wrap a value-producing function as an \"optional\" prop.\n *\n * Optional props are omitted from the initial response and only included\n * when explicitly requested via `X-Inertia-Partial-Data`.\n *\n * @param fn Producer called (and awaited) on partial reloads that request the key.\n */\nexport function optional<T>(fn: () => T | Promise<T>): OptionalProp<T> {\n const wrapped = (async () => fn()) as OptionalProp<T>;\n Object.defineProperty(wrapped, OPTIONAL, { value: true, enumerable: false });\n\n return wrapped;\n}\n\n/**\n * Wrap a value-producing function as a \"deferred\" prop.\n *\n * Deferred props are omitted from the initial visit. The client receives\n * the list of deferred prop keys (grouped by `group`) in the page object\n * and triggers an automatic partial reload to fetch them.\n *\n * @param fn Producer called (and awaited) on the deferred follow-up reload.\n * @param group Load-group name; keys in the same group are fetched in one round-trip.\n */\nexport function defer<T>(fn: () => T | Promise<T>, group = 'default'): DeferredProp<T> {\n const wrapped = (async () => fn()) as DeferredProp<T>;\n Object.defineProperty(wrapped, DEFERRED, { value: true, enumerable: false });\n Object.defineProperty(wrapped, 'group', { value: group, enumerable: false });\n\n return wrapped;\n}\n\n/**\n * Wrap a value-producing function as an \"always\" prop.\n *\n * Always props are included on every response — full visits and partial\n * reloads alike — regardless of `X-Inertia-Partial-Data` /\n * `X-Inertia-Partial-Except` filtering.\n *\n * @param fn Producer called (and awaited) on every visit.\n */\nexport function always<T>(fn: () => T | Promise<T>): AlwaysProp<T> {\n const wrapped = (async () => fn()) as AlwaysProp<T>;\n Object.defineProperty(wrapped, ALWAYS, { value: true, enumerable: false });\n\n return wrapped;\n}\n\n/**\n * Mark a value as a \"merge\" prop. The Inertia client will append the new\n * value to the existing prop (typically used for paginated arrays).\n *\n * Pass `matchOn` (a field name or list of field names) to have the client\n * dedupe array items on that field instead of blindly appending.\n *\n * @param value Object or array to tag (mutated in place via non-enumerable properties).\n * @param matchOn Optional field name(s) to dedupe on.\n */\nexport function merge<T extends object>(value: T, matchOn?: string | string[]): MergeProp<T> {\n const tagged = value as MergeProp<T>;\n Object.defineProperty(tagged, MERGE, { value: true, enumerable: false });\n tagMatchOn(tagged, matchOn);\n\n return tagged;\n}\n\n/**\n * Mark a value as a \"deep merge\" prop. The Inertia client recursively merges\n * the new value into the existing prop rather than shallow-appending.\n *\n * Pass `matchOn` (a field name or list of field names) to have the client\n * dedupe array items on that field.\n *\n * @param value Object or array to tag (mutated in place via non-enumerable properties).\n * @param matchOn Optional field name(s) to dedupe on.\n */\nexport function deepMerge<T extends object>(value: T, matchOn?: string | string[]): DeepMergeProp<T> {\n const tagged = value as DeepMergeProp<T>;\n Object.defineProperty(tagged, DEEP_MERGE, { value: true, enumerable: false });\n tagMatchOn(tagged, matchOn);\n\n return tagged;\n}\n\n/**\n * Type guard: `true` when `v` is a {@link lazy} prop wrapper.\n *\n * @param v Value to test.\n */\nfunction isLazy(v: unknown): v is LazyProp {\n return typeof v === 'function' && (v as { [LAZY]?: boolean })[LAZY] === true;\n}\n\n/**\n * Type guard: `true` when `v` is an {@link optional} prop wrapper.\n *\n * @param v Value to test.\n */\nfunction isOptional(v: unknown): v is OptionalProp {\n return typeof v === 'function' && (v as { [OPTIONAL]?: boolean })[OPTIONAL] === true;\n}\n\n/**\n * Type guard: `true` when `v` is a {@link defer} prop wrapper.\n *\n * @param v Value to test.\n */\nfunction isDeferred(v: unknown): v is DeferredProp {\n return typeof v === 'function' && (v as { [DEFERRED]?: boolean })[DEFERRED] === true;\n}\n\n/**\n * Type guard: `true` when `v` is an {@link always} prop wrapper.\n *\n * @param v Value to test.\n */\nfunction isAlways(v: unknown): v is AlwaysProp {\n return typeof v === 'function' && (v as { [ALWAYS]?: boolean })[ALWAYS] === true;\n}\n\n/**\n * Type guard: `true` when `v` is a {@link merge} prop wrapper.\n *\n * @param v Value to test.\n */\nfunction isMerge(v: unknown): v is MergeProp {\n return v !== null && typeof v === 'object' && (v as { [MERGE]?: boolean })[MERGE] === true;\n}\n\n/**\n * Type guard: `true` when `v` is a {@link deepMerge} prop wrapper.\n *\n * @param v Value to test.\n */\nfunction isDeepMerge(v: unknown): v is DeepMergeProp {\n return v !== null && typeof v === 'object' && (v as { [DEEP_MERGE]?: boolean })[DEEP_MERGE] === true;\n}\n\n/**\n * Match a prop key against a partial-reload key list. A pattern matches when\n * it equals the key, or when it is a dotted path into the key (`users.data`\n * matches the `users` prop). Mirrors the official adapter's partial filtering.\n *\n * @param patterns Key patterns from `X-Inertia-Partial-Data` / `-Partial-Except`.\n * @param key Prop key being tested.\n */\nfunction partialKeyMatches(patterns: string[], key: string): boolean {\n return patterns.some((pattern) => pattern === key || pattern.startsWith(`${key}.`));\n}\n\n/**\n * Read the non-enumerable `MATCH_ON` field-list off a tagged merge value,\n * returning an empty array when absent.\n *\n * @param v Possibly-tagged merge / deep-merge prop value.\n */\nfunction readMatchOn(v: unknown): string[] {\n if (v === null || typeof v !== 'object') {\n return [];\n }\n\n const fields = (v as { [MATCH_ON]?: string[] })[MATCH_ON];\n\n return Array.isArray(fields) ? fields : [];\n}\n\n/**\n * Inputs to {@link resolveProps}.\n */\nexport interface ResolvePropsInput {\n /** Props passed to `res.inertia(component, props)`. */\n props: PageProps;\n /** Globally shared props after evaluation. */\n shared: PageProps;\n /** The component name being rendered. */\n component: string;\n /** Parsed Inertia request info. */\n request: InertiaRequestInfo;\n}\n\n/**\n * Result of {@link resolveProps}: the evaluated props plus the per-key\n * metadata the caller needs to populate the page object.\n */\nexport interface ResolvePropsResult {\n props: PageProps;\n /** Deferred prop key map by group, for the initial visit. */\n deferred: Record<string, string[]>;\n /** Shallow-merge prop key list. */\n merge: string[];\n /** Deep-merge prop key list. */\n deepMerge: string[];\n /** Dotted `prop.field` match-on paths for merge/deep-merge props. */\n matchOn: string[];\n}\n\n/**\n * Combine shared + page props, then apply partial-reload filtering and\n * lazy/optional/deferred evaluation per the Inertia v3 protocol.\n *\n * Resolution order matches the official adapters:\n * 1. Merge shared and page props (page wins on collision).\n * 2. Determine if this is a partial reload for the same component.\n * 3. For non-partial visits: drop optional and deferred props; keep everything\n * else (lazy props are evaluated).\n * 4. For partial visits: keep only keys in `partialOnly` (if set), then drop\n * keys in `partialExcept`. Optional props are now eligible.\n * 5. Evaluate every remaining function-shaped prop\n * (lazy/optional/deferred/always) by calling it and awaiting the result.\n * Independent props are evaluated in parallel via `Promise.all`.\n * 6. Collect merge / deep-merge / match-on keys, excluding any key the client\n * listed in `X-Inertia-Reset` — those props are reset (replaced) rather\n * than appended.\n *\n * @param input Page + shared props, the component name, and parsed request info.\n */\nexport async function resolveProps(input: ResolvePropsInput): Promise<ResolvePropsResult> {\n const {\n props, shared, component, request,\n } = input;\n\n const combined: PageProps = { ...shared, ...props };\n\n const isPartial = request.isInertia && request.partialComponent !== null && request.partialComponent === component;\n\n const deferred: Record<string, string[]> = {};\n const mergeKeys: string[] = [];\n const deepMergeKeys: string[] = [];\n const matchOnKeys: string[] = [];\n const filtered: PageProps = {};\n\n const isExcludedFromPartial = (key: string, value: unknown): boolean => {\n if (!isPartial || isAlways(value)) {\n return false;\n }\n\n if (request.partialOnly !== null && !partialKeyMatches(request.partialOnly, key)) {\n return true;\n }\n\n return request.partialExcept !== null && partialKeyMatches(request.partialExcept, key);\n };\n\n Object.entries(combined).forEach(([key, value]) => {\n // Track deferred prop keys for the page object (only on initial visits).\n // On a partial reload that requests the key, it is evaluated like a lazy prop.\n if (isDeferred(value) && !isPartial) {\n (deferred[value.group] ??= []).push(key);\n\n return;\n }\n\n // Optional props never appear on full visits.\n if (isOptional(value) && !isPartial) {\n return;\n }\n\n if (isExcludedFromPartial(key, value)) {\n return;\n }\n\n filtered[key] = value;\n });\n\n const { resetKeys } = request;\n const evaluated: PageProps = {};\n\n // Evaluate every function-shaped prop; independent props resolve in parallel.\n const resolvedEntries = await Promise.all(\n Object.entries(filtered).map(async ([key, value]): Promise<readonly [string, unknown]> => {\n const needsEval = isLazy(value) || isOptional(value) || isDeferred(value) || isAlways(value);\n const resolved: unknown = needsEval ? await (value as () => unknown)() : value;\n\n return [key, resolved] as const;\n }),\n );\n\n resolvedEntries.forEach(([key, resolved]) => {\n evaluated[key] = resolved;\n\n const isReset = resetKeys?.includes(key) ?? false;\n\n if (isReset) {\n return;\n }\n\n const merging = isMerge(resolved);\n const deepMerging = isDeepMerge(resolved);\n\n if (merging) {\n mergeKeys.push(key);\n } else if (deepMerging) {\n deepMergeKeys.push(key);\n }\n\n if (merging || deepMerging) {\n readMatchOn(resolved).forEach((field) => {\n matchOnKeys.push(`${key}.${field}`);\n });\n }\n });\n\n return {\n props: evaluated,\n deferred,\n merge: mergeKeys,\n deepMerge: deepMergeKeys,\n matchOn: matchOnKeys,\n };\n}\n","/**\n * Status code Inertia uses for \"soft\" redirects after PUT/PATCH/DELETE so the\n * follow-up GET is forced to also be a GET on every browser.\n */\nexport const INERTIA_REDIRECT_STATUS = 303;\n\n/**\n * Status code used for the `X-Inertia-Location` external redirect\n * mechanism. The client intercepts the 409 and performs a window.location\n * navigation rather than a fetch.\n */\nexport const INERTIA_LOCATION_STATUS = 409;\n\n/**\n * Decide which status code to use for a redirect produced by an Inertia\n * request. After a non-GET/HEAD form submission the response must be 303\n * so the client's follow-up request becomes a GET.\n *\n * @param method HTTP method of the inbound request (case-insensitive).\n * @param fallback Status code to use for GET/HEAD/POST. Defaults to 302.\n */\nexport function inertiaRedirectStatus(method: string, fallback = 302): number {\n const m = method.toUpperCase();\n\n if (m === 'PUT' || m === 'PATCH' || m === 'DELETE') {\n return INERTIA_REDIRECT_STATUS;\n }\n\n return fallback;\n}\n","import { createPage } from './page.js';\nimport { resolveProps } from './props.js';\n\nimport type {\n InertiaPage, InertiaRequestInfo, PageProps, RenderOptions, SharedPropsInput,\n} from './types.js';\n\n/**\n * Inputs to {@link buildPage}. `TReq` is the framework's request type so\n * `shared` (when a function) receives the correct argument shape.\n */\nexport interface BuildPageInput<TReq = unknown> {\n component: string;\n props: PageProps;\n request: InertiaRequestInfo;\n req: TReq;\n shared: SharedPropsInput<TReq> | undefined;\n version: string | null;\n options?: RenderOptions;\n}\n\n/**\n * Resolve a `SharedPropsInput` to a plain props object. Returns `{}` for\n * undefined/null inputs or when the resolver returns nullish.\n *\n * @param shared Static props object, a (possibly async) function, or undefined.\n * @param req Request passed to the resolver when `shared` is a function.\n */\nasync function evaluateShared<TReq>(shared: SharedPropsInput<TReq> | undefined, req: TReq): Promise<PageProps> {\n if (shared === undefined || shared === null) {\n return {};\n }\n\n if (typeof shared === 'function') {\n const result = await shared(req);\n\n return result ?? {};\n }\n\n return shared;\n}\n\n/**\n * Build the final {@link InertiaPage} object given a controller's component\n * + props, the request info, and configured shared props / version.\n *\n * Returned page is suitable for either:\n * - JSON serialization on `X-Inertia` requests, or\n * - embedding into the root HTML view via a `<script>` page tag.\n *\n * @param input Component, props, parsed request, shared resolver, version, and\n * optional `clearHistory` / `encryptHistory` flags.\n */\nexport async function buildPage<TReq>(input: BuildPageInput<TReq>): Promise<InertiaPage> {\n const sharedProps = await evaluateShared(input.shared, input.req);\n\n const resolved = await resolveProps({\n props: input.props,\n shared: sharedProps,\n component: input.component,\n request: input.request,\n });\n\n return createPage({\n component: input.component,\n props: resolved.props,\n url: input.request.url,\n version: input.version,\n clearHistory: input.options?.clearHistory,\n encryptHistory: input.options?.encryptHistory,\n deferredProps: resolved.deferred,\n mergeProps: resolved.merge,\n deepMergeProps: resolved.deepMerge,\n matchPropsOn: resolved.matchOn,\n });\n}\n","import type { VersionResolver } from './types.js';\n\n/**\n * Resolve a version value (string, async function, or null) against a request.\n *\n * Returns `null` when no version is configured — in which case asset version\n * mismatch detection is disabled.\n *\n * @param resolver Static version string, a (possibly async) function, or undefined.\n * @param req Request passed to the resolver when it is a function.\n */\nexport async function resolveVersion<TReq>(\n resolver: VersionResolver<TReq> | undefined,\n req: TReq,\n): Promise<string | null> {\n if (resolver === undefined || resolver === null) {\n return null;\n }\n\n if (typeof resolver === 'string') {\n return resolver;\n }\n\n const result = await (resolver)(req);\n\n return result ?? null;\n}\n\n/**\n * Returns true if the client's version (`X-Inertia-Version`) does not match\n * the server's current version. Mismatches on GET requests should trigger a\n * full reload via the `X-Inertia-Location` mechanism.\n *\n * @param serverVersion Currently configured server version; `null` disables checks.\n * @param clientVersion Value of the `X-Inertia-Version` header; `null` is treated as empty.\n */\nexport function isVersionMismatch(serverVersion: string | null, clientVersion: string | null): boolean {\n if (serverVersion === null) {\n return false;\n }\n\n // A missing client header is treated as an empty version, matching the\n // official adapters: an empty client version still mismatches a non-empty\n // server version and must trigger a full reload.\n return serverVersion !== (clientVersion ?? '');\n}\n"],"mappings":"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"}
|