@reckona/mreact-router 0.0.207 → 0.0.209
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 +2 -2
- package/dist/adapters/cloudflare.d.ts +3 -3
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +11 -4
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/boundaries.d.ts +37 -1
- package/dist/boundaries.d.ts.map +1 -1
- package/dist/boundaries.js +125 -4
- package/dist/boundaries.js.map +1 -1
- package/dist/build.d.ts +6 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +269 -24
- package/dist/build.js.map +1 -1
- package/dist/bundle-pipeline.d.ts +1 -0
- package/dist/bundle-pipeline.d.ts.map +1 -1
- package/dist/bundle-pipeline.js +4 -1
- package/dist/bundle-pipeline.js.map +1 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +67 -7
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +17 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/module-runner.js +9 -1
- package/dist/module-runner.js.map +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +23 -23
- package/dist/render.js.map +1 -1
- package/dist/request-header-tracking.d.ts +19 -0
- package/dist/request-header-tracking.d.ts.map +1 -1
- package/dist/request-header-tracking.js +48 -0
- package/dist/request-header-tracking.js.map +1 -1
- package/dist/tailwind-source.d.ts.map +1 -1
- package/dist/tailwind-source.js +147 -1
- package/dist/tailwind-source.js.map +1 -1
- package/dist/types.d.ts +14 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/vite.d.ts +1 -0
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +4 -0
- package/dist/vite.js.map +1 -1
- package/package.json +11 -11
- package/src/adapters/cloudflare.ts +14 -5
- package/src/boundaries.ts +224 -4
- package/src/build.ts +383 -24
- package/src/bundle-pipeline.ts +9 -4
- package/src/client.ts +104 -10
- package/src/config.ts +32 -0
- package/src/index.ts +10 -0
- package/src/module-runner.ts +9 -1
- package/src/render.ts +30 -16
- package/src/request-header-tracking.ts +61 -0
- package/src/tailwind-source.ts +164 -1
- package/src/types.ts +15 -2
- package/src/vite.ts +5 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RouteLocation } from "./types.js";
|
|
1
2
|
/**
|
|
2
3
|
* Observes request inputs read by application code during a render.
|
|
3
4
|
*
|
|
@@ -41,4 +42,22 @@ export declare function trackRequestHeaderReads(request: Request): TrackedHeader
|
|
|
41
42
|
export declare function withTrackedRequest<T extends object>(values: T, request: Request, tracked: TrackedHeaderRequest | undefined): T & {
|
|
42
43
|
request: Request;
|
|
43
44
|
};
|
|
45
|
+
/**
|
|
46
|
+
* Adds the serializable location view used by shared page and layout props.
|
|
47
|
+
* The full Request remains available to loaders, handlers, and metadata code.
|
|
48
|
+
*/
|
|
49
|
+
export declare function withTrackedRouteLocation<T extends object>(values: T, request: Request, tracked: TrackedHeaderRequest | undefined, location?: RouteLocation): T & {
|
|
50
|
+
request: RouteLocation;
|
|
51
|
+
};
|
|
52
|
+
/** Returns the URL fields that are safe to serialize into route HTML. */
|
|
53
|
+
export declare function routeLocationFromRequest(request: Request): RouteLocation;
|
|
54
|
+
/** Returns a serializable route location from a URL without request metadata. */
|
|
55
|
+
export declare function routeLocationFromUrl(url: URL): RouteLocation;
|
|
56
|
+
/**
|
|
57
|
+
* Returns the route location placeholder embedded in cached HTML. The client
|
|
58
|
+
* hydration runtime replaces it with document.URL before invoking shared code.
|
|
59
|
+
* Query values stay out of reusable HTML because they can contain credentials
|
|
60
|
+
* or other request-specific data.
|
|
61
|
+
*/
|
|
62
|
+
export declare function routeLocationForHydration(url: URL): RouteLocation;
|
|
44
63
|
//# sourceMappingURL=request-header-tracking.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-header-tracking.d.ts","sourceRoot":"","sources":["../src/request-header-tracking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,iBAAiB,IAAI,IAAI,CAAC;IAC1B,8EAA8E;IAC9E,gBAAgB,IAAI,OAAO,CAAC;IAC5B,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;CAClB;AAaD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAqF9E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,oBAAoB,GAAG,SAAS,GACxC,CAAC,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAkB1B"}
|
|
1
|
+
{"version":3,"file":"request-header-tracking.d.ts","sourceRoot":"","sources":["../src/request-header-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,iBAAiB,IAAI,IAAI,CAAC;IAC1B,8EAA8E;IAC9E,gBAAgB,IAAI,OAAO,CAAC;IAC5B,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;CAClB;AAaD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAqF9E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,oBAAoB,GAAG,SAAS,GACxC,CAAC,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAkB1B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,MAAM,EACvD,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,QAAQ,CAAC,EAAE,aAAa,GACvB,CAAC,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAkBhC;AAED,yEAAyE;AACzE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAExE;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAO5D;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAOjE"}
|
|
@@ -113,4 +113,52 @@ export function withTrackedRequest(values, request, tracked) {
|
|
|
113
113
|
});
|
|
114
114
|
return context;
|
|
115
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Adds the serializable location view used by shared page and layout props.
|
|
118
|
+
* The full Request remains available to loaders, handlers, and metadata code.
|
|
119
|
+
*/
|
|
120
|
+
export function withTrackedRouteLocation(values, request, tracked, location) {
|
|
121
|
+
const context = values;
|
|
122
|
+
let currentLocation = location ?? routeLocationFromRequest(request);
|
|
123
|
+
Object.defineProperty(context, "request", {
|
|
124
|
+
configurable: true,
|
|
125
|
+
enumerable: true,
|
|
126
|
+
get() {
|
|
127
|
+
tracked?.markRequestAccess();
|
|
128
|
+
return currentLocation;
|
|
129
|
+
},
|
|
130
|
+
set(value) {
|
|
131
|
+
tracked?.markRequestAccess();
|
|
132
|
+
currentLocation = value;
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
return context;
|
|
136
|
+
}
|
|
137
|
+
/** Returns the URL fields that are safe to serialize into route HTML. */
|
|
138
|
+
export function routeLocationFromRequest(request) {
|
|
139
|
+
return routeLocationFromUrl(new URL(request.url));
|
|
140
|
+
}
|
|
141
|
+
/** Returns a serializable route location from a URL without request metadata. */
|
|
142
|
+
export function routeLocationFromUrl(url) {
|
|
143
|
+
return {
|
|
144
|
+
hash: url.hash,
|
|
145
|
+
pathname: url.pathname,
|
|
146
|
+
search: url.search,
|
|
147
|
+
url: url.href,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Returns the route location placeholder embedded in cached HTML. The client
|
|
152
|
+
* hydration runtime replaces it with document.URL before invoking shared code.
|
|
153
|
+
* Query values stay out of reusable HTML because they can contain credentials
|
|
154
|
+
* or other request-specific data.
|
|
155
|
+
*/
|
|
156
|
+
export function routeLocationForHydration(url) {
|
|
157
|
+
return {
|
|
158
|
+
hash: "",
|
|
159
|
+
pathname: url.pathname,
|
|
160
|
+
search: "",
|
|
161
|
+
url: url.pathname,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
116
164
|
//# sourceMappingURL=request-header-tracking.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-header-tracking.js","sourceRoot":"","sources":["../src/request-header-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Observes request inputs read by application code during a render.\n *\n * The shared route cache is keyed on the app directory, route path, pathname\n * and query only. A render that reads a request header therefore produces HTML\n * that is only correct for that header value, and storing it would serve one\n * visitor's variant to the next: `accept-language` mixes locales, `user-agent`\n * mixes mobile and desktop shells, and `cf-connecting-ip` or `referer` disclose\n * one visitor's data to another. Reads are observed rather than inferred from\n * the source so that headers read through helper modules are covered too.\n *\n * Only the request handed to application code is tracked. Router internals keep\n * using the original request, so their own header reads never mark a route as\n * header dependent.\n *\n * Reconstructing the request with `new Request(request)` copies headers from\n * internal slots that no interception can reach. Application contexts therefore\n * mark access when their lazy `request` property is retrieved, before opaque\n * helpers can reconstruct it. `render.ts` also uses conservative source closure\n * analysis so a previously stored entry cannot bypass the runtime observation.\n */\nexport interface TrackedHeaderRequest {\n /** Marks application access to the Request before it can escape tracking. */\n markRequestAccess(): void;\n /** Returns true once application code has observed request-specific input. */\n requestDependent(): boolean;\n /** The request to hand to loaders, metadata functions and components. */\n request: Request;\n}\n\nconst HEADER_READ_METHODS = new Set<string | symbol>([\n \"entries\",\n \"forEach\",\n \"get\",\n \"getSetCookie\",\n \"has\",\n \"keys\",\n \"values\",\n Symbol.iterator,\n]);\n\n/**\n * Wraps a request so that header reads performed through it are recorded.\n *\n * Falls back to reporting every request as header dependent when the request\n * cannot be cloned, so an unexpected runtime never silently enables sharing.\n */\nexport function trackRequestHeaderReads(request: Request): TrackedHeaderRequest {\n let readAny = false;\n\n let tracked: Request;\n try {\n // Cloning a request that carries a body would tee its stream and buffer\n // whichever half goes unread. Only bodyless requests are worth tracking:\n // a request with a body is reported as header dependent so that its\n // response is never shared.\n if (request.body !== null) {\n return {\n markRequestAccess() {},\n requestDependent: () => true,\n request,\n };\n }\n\n tracked = request.clone();\n } catch {\n return {\n markRequestAccess() {},\n requestDependent: () => true,\n request,\n };\n }\n\n const originalHeaders = tracked.headers;\n const originalUrl = tracked.url;\n const headers = new Proxy(originalHeaders, {\n get(target, property) {\n const value = Reflect.get(target, property, target);\n\n if (typeof value !== \"function\" || !HEADER_READ_METHODS.has(property)) {\n return value;\n }\n\n return (...args: unknown[]): unknown => {\n readAny = true;\n return Reflect.apply(value as (...callArgs: unknown[]) => unknown, target, args);\n };\n },\n });\n\n // Origin/host are not part of the route cache key. Treat any URL observation\n // as request dependence so a multi-host process cannot replay one tenant's\n // absolute URLs to another. Path and query reads are conservatively included.\n Object.defineProperty(tracked, \"url\", {\n configurable: true,\n get: () => {\n readAny = true;\n return originalUrl;\n },\n });\n\n // Shadow the prototype getter on a real Request so that `fetch(request)`,\n // `request.json()` and instanceof checks keep working in every runtime.\n // Taking a reference counts as a read on its own: a caller that reached for\n // the headers is assumed to depend on them, which keeps the decision closed\n // when the reference escapes into code this module cannot observe.\n Object.defineProperty(tracked, \"headers\", {\n configurable: true,\n get: () => {\n readAny = true;\n return headers;\n },\n });\n\n // `clone()` copies headers from internal slots rather than through the\n // property above, so an unshadowed clone would hand back untracked headers.\n Object.defineProperty(tracked, \"clone\", {\n configurable: true,\n value: (): Request => {\n readAny = true;\n return Request.prototype.clone.call(tracked);\n },\n writable: true,\n });\n\n return {\n markRequestAccess: () => {\n readAny = true;\n },\n requestDependent: () => readAny,\n request: tracked,\n };\n}\n\n/**\n * Adds an enumerable Request property that records application access before\n * opaque code can copy native Request internal slots.\n */\nexport function withTrackedRequest<T extends object>(\n values: T,\n request: Request,\n tracked: TrackedHeaderRequest | undefined,\n): T & { request: Request } {\n const context = values as T & { request: Request };\n let currentRequest = request;\n\n Object.defineProperty(context, \"request\", {\n configurable: true,\n enumerable: true,\n get() {\n tracked?.markRequestAccess();\n return currentRequest;\n },\n set(value: Request) {\n tracked?.markRequestAccess();\n currentRequest = value;\n },\n });\n\n return context;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"request-header-tracking.js","sourceRoot":"","sources":["../src/request-header-tracking.ts"],"names":[],"mappings":"AAgCA,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAkB;IACnD,SAAS;IACT,SAAS;IACT,KAAK;IACL,cAAc;IACd,KAAK;IACL,MAAM;IACN,QAAQ;IACR,MAAM,CAAC,QAAQ;CAChB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,wEAAwE;QACxE,yEAAyE;QACzE,oEAAoE;QACpE,4BAA4B;QAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO;gBACL,iBAAiB,KAAI,CAAC;gBACtB,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;gBAC5B,OAAO;aACR,CAAC;QACJ,CAAC;QAED,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,iBAAiB,KAAI,CAAC;YACtB,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;YAC5B,OAAO;SACR,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IACxC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,eAAe,EAAE;QACzC,GAAG,CAAC,MAAM,EAAE,QAAQ;YAClB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEpD,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,CAAC,GAAG,IAAe,EAAW,EAAE;gBACrC,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,OAAO,CAAC,KAAK,CAAC,KAA4C,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACnF,CAAC,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,6EAA6E;IAC7E,2EAA2E;IAC3E,8EAA8E;IAC9E,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE;QACpC,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE,GAAG,EAAE;YACR,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,WAAW,CAAC;QACrB,CAAC;KACF,CAAC,CAAC;IAEH,0EAA0E;IAC1E,wEAAwE;IACxE,4EAA4E;IAC5E,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE;QACxC,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE,GAAG,EAAE;YACR,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;IAEH,uEAAuE;IACvE,4EAA4E;IAC5E,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;QACtC,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE,GAAY,EAAE;YACnB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QACD,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,OAAO;QACL,iBAAiB,EAAE,GAAG,EAAE;YACtB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,gBAAgB,EAAE,GAAG,EAAE,CAAC,OAAO;QAC/B,OAAO,EAAE,OAAO;KACjB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAS,EACT,OAAgB,EAChB,OAAyC;IAEzC,MAAM,OAAO,GAAG,MAAkC,CAAC;IACnD,IAAI,cAAc,GAAG,OAAO,CAAC;IAE7B,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE;QACxC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,GAAG;YACD,OAAO,EAAE,iBAAiB,EAAE,CAAC;YAC7B,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,GAAG,CAAC,KAAc;YAChB,OAAO,EAAE,iBAAiB,EAAE,CAAC;YAC7B,cAAc,GAAG,KAAK,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAS,EACT,OAAgB,EAChB,OAAyC,EACzC,QAAwB;IAExB,MAAM,OAAO,GAAG,MAAwC,CAAC;IACzD,IAAI,eAAe,GAAG,QAAQ,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAEpE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE;QACxC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,GAAG;YACD,OAAO,EAAE,iBAAiB,EAAE,CAAC;YAC7B,OAAO,eAAe,CAAC;QACzB,CAAC;QACD,GAAG,CAAC,KAAoB;YACtB,OAAO,EAAE,iBAAiB,EAAE,CAAC;YAC7B,eAAe,GAAG,KAAK,CAAC;QAC1B,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO,oBAAoB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,oBAAoB,CAAC,GAAQ;IAC3C,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,EAAE,GAAG,CAAC,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAQ;IAChD,OAAO;QACL,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,EAAE;QACV,GAAG,EAAE,GAAG,CAAC,QAAQ;KAClB,CAAC;AACJ,CAAC","sourcesContent":["import type { RouteLocation } from \"./types.js\";\n\n/**\n * Observes request inputs read by application code during a render.\n *\n * The shared route cache is keyed on the app directory, route path, pathname\n * and query only. A render that reads a request header therefore produces HTML\n * that is only correct for that header value, and storing it would serve one\n * visitor's variant to the next: `accept-language` mixes locales, `user-agent`\n * mixes mobile and desktop shells, and `cf-connecting-ip` or `referer` disclose\n * one visitor's data to another. Reads are observed rather than inferred from\n * the source so that headers read through helper modules are covered too.\n *\n * Only the request handed to application code is tracked. Router internals keep\n * using the original request, so their own header reads never mark a route as\n * header dependent.\n *\n * Reconstructing the request with `new Request(request)` copies headers from\n * internal slots that no interception can reach. Application contexts therefore\n * mark access when their lazy `request` property is retrieved, before opaque\n * helpers can reconstruct it. `render.ts` also uses conservative source closure\n * analysis so a previously stored entry cannot bypass the runtime observation.\n */\nexport interface TrackedHeaderRequest {\n /** Marks application access to the Request before it can escape tracking. */\n markRequestAccess(): void;\n /** Returns true once application code has observed request-specific input. */\n requestDependent(): boolean;\n /** The request to hand to loaders, metadata functions and components. */\n request: Request;\n}\n\nconst HEADER_READ_METHODS = new Set<string | symbol>([\n \"entries\",\n \"forEach\",\n \"get\",\n \"getSetCookie\",\n \"has\",\n \"keys\",\n \"values\",\n Symbol.iterator,\n]);\n\n/**\n * Wraps a request so that header reads performed through it are recorded.\n *\n * Falls back to reporting every request as header dependent when the request\n * cannot be cloned, so an unexpected runtime never silently enables sharing.\n */\nexport function trackRequestHeaderReads(request: Request): TrackedHeaderRequest {\n let readAny = false;\n\n let tracked: Request;\n try {\n // Cloning a request that carries a body would tee its stream and buffer\n // whichever half goes unread. Only bodyless requests are worth tracking:\n // a request with a body is reported as header dependent so that its\n // response is never shared.\n if (request.body !== null) {\n return {\n markRequestAccess() {},\n requestDependent: () => true,\n request,\n };\n }\n\n tracked = request.clone();\n } catch {\n return {\n markRequestAccess() {},\n requestDependent: () => true,\n request,\n };\n }\n\n const originalHeaders = tracked.headers;\n const originalUrl = tracked.url;\n const headers = new Proxy(originalHeaders, {\n get(target, property) {\n const value = Reflect.get(target, property, target);\n\n if (typeof value !== \"function\" || !HEADER_READ_METHODS.has(property)) {\n return value;\n }\n\n return (...args: unknown[]): unknown => {\n readAny = true;\n return Reflect.apply(value as (...callArgs: unknown[]) => unknown, target, args);\n };\n },\n });\n\n // Origin/host are not part of the route cache key. Treat any URL observation\n // as request dependence so a multi-host process cannot replay one tenant's\n // absolute URLs to another. Path and query reads are conservatively included.\n Object.defineProperty(tracked, \"url\", {\n configurable: true,\n get: () => {\n readAny = true;\n return originalUrl;\n },\n });\n\n // Shadow the prototype getter on a real Request so that `fetch(request)`,\n // `request.json()` and instanceof checks keep working in every runtime.\n // Taking a reference counts as a read on its own: a caller that reached for\n // the headers is assumed to depend on them, which keeps the decision closed\n // when the reference escapes into code this module cannot observe.\n Object.defineProperty(tracked, \"headers\", {\n configurable: true,\n get: () => {\n readAny = true;\n return headers;\n },\n });\n\n // `clone()` copies headers from internal slots rather than through the\n // property above, so an unshadowed clone would hand back untracked headers.\n Object.defineProperty(tracked, \"clone\", {\n configurable: true,\n value: (): Request => {\n readAny = true;\n return Request.prototype.clone.call(tracked);\n },\n writable: true,\n });\n\n return {\n markRequestAccess: () => {\n readAny = true;\n },\n requestDependent: () => readAny,\n request: tracked,\n };\n}\n\n/**\n * Adds an enumerable Request property that records application access before\n * opaque code can copy native Request internal slots.\n */\nexport function withTrackedRequest<T extends object>(\n values: T,\n request: Request,\n tracked: TrackedHeaderRequest | undefined,\n): T & { request: Request } {\n const context = values as T & { request: Request };\n let currentRequest = request;\n\n Object.defineProperty(context, \"request\", {\n configurable: true,\n enumerable: true,\n get() {\n tracked?.markRequestAccess();\n return currentRequest;\n },\n set(value: Request) {\n tracked?.markRequestAccess();\n currentRequest = value;\n },\n });\n\n return context;\n}\n\n/**\n * Adds the serializable location view used by shared page and layout props.\n * The full Request remains available to loaders, handlers, and metadata code.\n */\nexport function withTrackedRouteLocation<T extends object>(\n values: T,\n request: Request,\n tracked: TrackedHeaderRequest | undefined,\n location?: RouteLocation,\n): T & { request: RouteLocation } {\n const context = values as T & { request: RouteLocation };\n let currentLocation = location ?? routeLocationFromRequest(request);\n\n Object.defineProperty(context, \"request\", {\n configurable: true,\n enumerable: true,\n get() {\n tracked?.markRequestAccess();\n return currentLocation;\n },\n set(value: RouteLocation) {\n tracked?.markRequestAccess();\n currentLocation = value;\n },\n });\n\n return context;\n}\n\n/** Returns the URL fields that are safe to serialize into route HTML. */\nexport function routeLocationFromRequest(request: Request): RouteLocation {\n return routeLocationFromUrl(new URL(request.url));\n}\n\n/** Returns a serializable route location from a URL without request metadata. */\nexport function routeLocationFromUrl(url: URL): RouteLocation {\n return {\n hash: url.hash,\n pathname: url.pathname,\n search: url.search,\n url: url.href,\n };\n}\n\n/**\n * Returns the route location placeholder embedded in cached HTML. The client\n * hydration runtime replaces it with document.URL before invoking shared code.\n * Query values stay out of reusable HTML because they can contain credentials\n * or other request-specific data.\n */\nexport function routeLocationForHydration(url: URL): RouteLocation {\n return {\n hash: \"\",\n pathname: url.pathname,\n search: \"\",\n url: url.pathname,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind-source.d.ts","sourceRoot":"","sources":["../src/tailwind-source.ts"],"names":[],"mappings":"AAEA,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"tailwind-source.d.ts","sourceRoot":"","sources":["../src/tailwind-source.ts"],"names":[],"mappings":"AAEA,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B,GAAG,MAAM,CAsBT"}
|
package/dist/tailwind-source.js
CHANGED
|
@@ -7,7 +7,153 @@ export function prependTailwindSourceDirectives(options) {
|
|
|
7
7
|
const directives = [...new Set(options.sourceDirs)]
|
|
8
8
|
.map((sourceDir) => `${tailwindSourceDirective(cssDir, sourceDir)}\n`)
|
|
9
9
|
.join("");
|
|
10
|
-
|
|
10
|
+
if (directives.length === 0) {
|
|
11
|
+
return options.code;
|
|
12
|
+
}
|
|
13
|
+
const insertionIndex = leadingCssPreludeEnd(options.code);
|
|
14
|
+
const prefix = options.code.slice(0, insertionIndex);
|
|
15
|
+
const suffix = options.code.slice(insertionIndex);
|
|
16
|
+
const lineEnding = suffix.startsWith("\r\n") ? "\r\n" : "\n";
|
|
17
|
+
const existingLineEnding = suffix.startsWith(lineEnding) ? lineEnding : "";
|
|
18
|
+
const separator = insertionIndex === 0 ? "" : existingLineEnding || lineEnding;
|
|
19
|
+
const formattedDirectives = directives.replaceAll("\n", lineEnding);
|
|
20
|
+
return `${prefix}${separator}${formattedDirectives}${suffix.slice(existingLineEnding.length)}`;
|
|
21
|
+
}
|
|
22
|
+
function leadingCssPreludeEnd(code) {
|
|
23
|
+
let cursor = 0;
|
|
24
|
+
let lastRuleEnd = 0;
|
|
25
|
+
for (;;) {
|
|
26
|
+
cursor = skipCssTrivia(code, cursor);
|
|
27
|
+
const ruleEnd = consumeLeadingCssRule(code, cursor);
|
|
28
|
+
if (ruleEnd === undefined) {
|
|
29
|
+
return lastRuleEnd;
|
|
30
|
+
}
|
|
31
|
+
lastRuleEnd = ruleEnd;
|
|
32
|
+
cursor = ruleEnd;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function skipCssTrivia(code, start) {
|
|
36
|
+
let cursor = start;
|
|
37
|
+
while (cursor < code.length) {
|
|
38
|
+
if (/\s/u.test(code[cursor] ?? "")) {
|
|
39
|
+
cursor += 1;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (code.startsWith("/*", cursor)) {
|
|
43
|
+
const commentEnd = code.indexOf("*/", cursor + 2);
|
|
44
|
+
if (commentEnd < 0) {
|
|
45
|
+
return code.length;
|
|
46
|
+
}
|
|
47
|
+
cursor = commentEnd + 2;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
return cursor;
|
|
53
|
+
}
|
|
54
|
+
function consumeLeadingCssRule(code, start) {
|
|
55
|
+
const match = /^@(charset|import|layer)(?=\s|[;{]|\/\*)/iu.exec(code.slice(start));
|
|
56
|
+
const ruleName = match?.[1]?.toLowerCase();
|
|
57
|
+
if (match === null || ruleName === undefined) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
let quote;
|
|
61
|
+
let parentheses = 0;
|
|
62
|
+
for (let cursor = start + match[0].length; cursor < code.length; cursor += 1) {
|
|
63
|
+
const character = code[cursor];
|
|
64
|
+
if (character === undefined) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
if (quote !== undefined) {
|
|
68
|
+
if (character === "\\") {
|
|
69
|
+
cursor += 1;
|
|
70
|
+
}
|
|
71
|
+
else if (character === quote) {
|
|
72
|
+
quote = undefined;
|
|
73
|
+
}
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (code.startsWith("/*", cursor)) {
|
|
77
|
+
const commentEnd = code.indexOf("*/", cursor + 2);
|
|
78
|
+
if (commentEnd < 0) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
cursor = commentEnd + 1;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (character === '"' || character === "'") {
|
|
85
|
+
quote = character;
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (character === "(") {
|
|
89
|
+
parentheses += 1;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (character === ")") {
|
|
93
|
+
parentheses = Math.max(0, parentheses - 1);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (character === ";" && parentheses === 0) {
|
|
97
|
+
return cursor + 1;
|
|
98
|
+
}
|
|
99
|
+
if (character === "{" && parentheses === 0) {
|
|
100
|
+
if (ruleName !== "layer") {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
const blockEnd = consumeCssBlock(code, cursor);
|
|
104
|
+
if (blockEnd === undefined || !isCssTrivia(code.slice(cursor + 1, blockEnd - 1))) {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
return blockEnd;
|
|
108
|
+
}
|
|
109
|
+
if (character === "}" && parentheses === 0) {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
function consumeCssBlock(code, start) {
|
|
116
|
+
let depth = 1;
|
|
117
|
+
let quote;
|
|
118
|
+
for (let cursor = start + 1; cursor < code.length; cursor += 1) {
|
|
119
|
+
const character = code[cursor];
|
|
120
|
+
if (character === undefined) {
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
if (quote !== undefined) {
|
|
124
|
+
if (character === "\\") {
|
|
125
|
+
cursor += 1;
|
|
126
|
+
}
|
|
127
|
+
else if (character === quote) {
|
|
128
|
+
quote = undefined;
|
|
129
|
+
}
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (code.startsWith("/*", cursor)) {
|
|
133
|
+
const commentEnd = code.indexOf("*/", cursor + 2);
|
|
134
|
+
if (commentEnd < 0) {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
cursor = commentEnd + 1;
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
if (character === '"' || character === "'") {
|
|
141
|
+
quote = character;
|
|
142
|
+
}
|
|
143
|
+
else if (character === "{") {
|
|
144
|
+
depth += 1;
|
|
145
|
+
}
|
|
146
|
+
else if (character === "}") {
|
|
147
|
+
depth -= 1;
|
|
148
|
+
if (depth === 0) {
|
|
149
|
+
return cursor + 1;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
function isCssTrivia(value) {
|
|
156
|
+
return skipCssTrivia(value, 0) === value.length;
|
|
11
157
|
}
|
|
12
158
|
function isTailwindCssEntry(code) {
|
|
13
159
|
return (/@import\s+(?:url\()?["']tailwindcss(?:\/[^"']*)?["']\)?/u.test(code) ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind-source.js","sourceRoot":"","sources":["../src/tailwind-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,UAAU,+BAA+B,CAAC,OAI/C;IACC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,OAAO,CAAC,IAAI,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SAChD,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC;SACrE,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AACjF,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,CACL,0DAA0D,CAAC,IAAI,CAAC,IAAI,CAAC;QACrE,8CAA8C,CAAC,IAAI,CAAC,IAAI,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAc,EAAE,SAAiB;IAChE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,MAAM,mBAAmB,GACvB,iBAAiB,KAAK,EAAE;QACtB,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC;YACjC,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,KAAK,iBAAiB,EAAE,CAAC;IAEjC,OAAO,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,mBAAmB,2BAA2B,CAAC,GAAG,CAAC;AACzF,CAAC","sourcesContent":["import { dirname, relative, sep } from \"node:path\";\n\nexport function prependTailwindSourceDirectives(options: {\n code: string;\n cssFile: string;\n sourceDirs: readonly string[];\n}): string {\n if (!isTailwindCssEntry(options.code)) {\n return options.code;\n }\n\n const cssDir = dirname(options.cssFile);\n const directives = [...new Set(options.sourceDirs)]\n .map((sourceDir) => `${tailwindSourceDirective(cssDir, sourceDir)}\\n`)\n .join(\"\");\n\n return directives.length === 0 ? options.code : `${directives}${options.code}`;\n}\n\nfunction isTailwindCssEntry(code: string): boolean {\n return (\n /@import\\s+(?:url\\()?[\"']tailwindcss(?:\\/[^\"']*)?[\"']\\)?/u.test(code) ||\n /@tailwind\\s+(?:base|components|utilities)\\b/u.test(code)\n );\n}\n\nfunction tailwindSourceDirective(cssDir: string, sourceDir: string): string {\n const relativeSourceDir = relative(cssDir, sourceDir).split(sep).join(\"/\");\n const normalizedSourceDir =\n relativeSourceDir === \"\"\n ? \".\"\n : relativeSourceDir.startsWith(\".\")\n ? relativeSourceDir\n : `./${relativeSourceDir}`;\n\n return `@source ${JSON.stringify(`${normalizedSourceDir}/**/*.{js,jsx,ts,tsx,mdx}`)};`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tailwind-source.js","sourceRoot":"","sources":["../src/tailwind-source.ts"],"names":[],"mappings":"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","sourcesContent":["import { dirname, relative, sep } from \"node:path\";\n\nexport function prependTailwindSourceDirectives(options: {\n code: string;\n cssFile: string;\n sourceDirs: readonly string[];\n}): string {\n if (!isTailwindCssEntry(options.code)) {\n return options.code;\n }\n\n const cssDir = dirname(options.cssFile);\n const directives = [...new Set(options.sourceDirs)]\n .map((sourceDir) => `${tailwindSourceDirective(cssDir, sourceDir)}\\n`)\n .join(\"\");\n\n if (directives.length === 0) {\n return options.code;\n }\n\n const insertionIndex = leadingCssPreludeEnd(options.code);\n const prefix = options.code.slice(0, insertionIndex);\n const suffix = options.code.slice(insertionIndex);\n const lineEnding = suffix.startsWith(\"\\r\\n\") ? \"\\r\\n\" : \"\\n\";\n const existingLineEnding = suffix.startsWith(lineEnding) ? lineEnding : \"\";\n const separator = insertionIndex === 0 ? \"\" : existingLineEnding || lineEnding;\n const formattedDirectives = directives.replaceAll(\"\\n\", lineEnding);\n return `${prefix}${separator}${formattedDirectives}${suffix.slice(existingLineEnding.length)}`;\n}\n\nfunction leadingCssPreludeEnd(code: string): number {\n let cursor = 0;\n let lastRuleEnd = 0;\n\n for (;;) {\n cursor = skipCssTrivia(code, cursor);\n const ruleEnd = consumeLeadingCssRule(code, cursor);\n if (ruleEnd === undefined) {\n return lastRuleEnd;\n }\n\n lastRuleEnd = ruleEnd;\n cursor = ruleEnd;\n }\n}\n\nfunction skipCssTrivia(code: string, start: number): number {\n let cursor = start;\n while (cursor < code.length) {\n if (/\\s/u.test(code[cursor] ?? \"\")) {\n cursor += 1;\n continue;\n }\n\n if (code.startsWith(\"/*\", cursor)) {\n const commentEnd = code.indexOf(\"*/\", cursor + 2);\n if (commentEnd < 0) {\n return code.length;\n }\n cursor = commentEnd + 2;\n continue;\n }\n\n break;\n }\n\n return cursor;\n}\n\nfunction consumeLeadingCssRule(code: string, start: number): number | undefined {\n const match = /^@(charset|import|layer)(?=\\s|[;{]|\\/\\*)/iu.exec(code.slice(start));\n const ruleName = match?.[1]?.toLowerCase();\n if (match === null || ruleName === undefined) {\n return undefined;\n }\n\n let quote: '\"' | \"'\" | undefined;\n let parentheses = 0;\n for (let cursor = start + match[0].length; cursor < code.length; cursor += 1) {\n const character = code[cursor];\n if (character === undefined) {\n return undefined;\n }\n\n if (quote !== undefined) {\n if (character === \"\\\\\") {\n cursor += 1;\n } else if (character === quote) {\n quote = undefined;\n }\n continue;\n }\n\n if (code.startsWith(\"/*\", cursor)) {\n const commentEnd = code.indexOf(\"*/\", cursor + 2);\n if (commentEnd < 0) {\n return undefined;\n }\n cursor = commentEnd + 1;\n continue;\n }\n\n if (character === '\"' || character === \"'\") {\n quote = character;\n continue;\n }\n if (character === \"(\") {\n parentheses += 1;\n continue;\n }\n if (character === \")\") {\n parentheses = Math.max(0, parentheses - 1);\n continue;\n }\n if (character === \";\" && parentheses === 0) {\n return cursor + 1;\n }\n if (character === \"{\" && parentheses === 0) {\n if (ruleName !== \"layer\") {\n return undefined;\n }\n\n const blockEnd = consumeCssBlock(code, cursor);\n if (blockEnd === undefined || !isCssTrivia(code.slice(cursor + 1, blockEnd - 1))) {\n return undefined;\n }\n return blockEnd;\n }\n if (character === \"}\" && parentheses === 0) {\n return undefined;\n }\n }\n\n return undefined;\n}\n\nfunction consumeCssBlock(code: string, start: number): number | undefined {\n let depth = 1;\n let quote: '\"' | \"'\" | undefined;\n for (let cursor = start + 1; cursor < code.length; cursor += 1) {\n const character = code[cursor];\n if (character === undefined) {\n return undefined;\n }\n\n if (quote !== undefined) {\n if (character === \"\\\\\") {\n cursor += 1;\n } else if (character === quote) {\n quote = undefined;\n }\n continue;\n }\n\n if (code.startsWith(\"/*\", cursor)) {\n const commentEnd = code.indexOf(\"*/\", cursor + 2);\n if (commentEnd < 0) {\n return undefined;\n }\n cursor = commentEnd + 1;\n continue;\n }\n\n if (character === '\"' || character === \"'\") {\n quote = character;\n } else if (character === \"{\") {\n depth += 1;\n } else if (character === \"}\") {\n depth -= 1;\n if (depth === 0) {\n return cursor + 1;\n }\n }\n }\n\n return undefined;\n}\n\nfunction isCssTrivia(value: string): boolean {\n return skipCssTrivia(value, 0) === value.length;\n}\n\nfunction isTailwindCssEntry(code: string): boolean {\n return (\n /@import\\s+(?:url\\()?[\"']tailwindcss(?:\\/[^\"']*)?[\"']\\)?/u.test(code) ||\n /@tailwind\\s+(?:base|components|utilities)\\b/u.test(code)\n );\n}\n\nfunction tailwindSourceDirective(cssDir: string, sourceDir: string): string {\n const relativeSourceDir = relative(cssDir, sourceDir).split(sep).join(\"/\");\n const normalizedSourceDir =\n relativeSourceDir === \"\"\n ? \".\"\n : relativeSourceDir.startsWith(\".\")\n ? relativeSourceDir\n : `./${relativeSourceDir}`;\n\n return `@source ${JSON.stringify(`${normalizedSourceDir}/**/*.{js,jsx,ts,tsx,mdx}`)};`;\n}\n"]}
|
package/dist/types.d.ts
CHANGED
|
@@ -44,13 +44,25 @@ export interface RouteHandlerContext<TParams extends RouteParams = RouteParams>
|
|
|
44
44
|
params: TParams;
|
|
45
45
|
request: Request;
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Serializable location data passed to shared page and layout components.
|
|
49
|
+
*
|
|
50
|
+
* Server-only request data such as headers, body, credentials, and abort
|
|
51
|
+
* signals is available through loader and handler contexts instead.
|
|
52
|
+
*/
|
|
53
|
+
export interface RouteLocation {
|
|
54
|
+
readonly hash: string;
|
|
55
|
+
readonly pathname: string;
|
|
56
|
+
readonly search: string;
|
|
57
|
+
readonly url: string;
|
|
58
|
+
}
|
|
47
59
|
/**
|
|
48
60
|
* Provides loader data, params, and request context to page components.
|
|
49
61
|
*/
|
|
50
62
|
export interface PageProps<TData = unknown, TParams extends RouteParams = RouteParams> {
|
|
51
63
|
data: TData;
|
|
52
64
|
params: TParams;
|
|
53
|
-
request:
|
|
65
|
+
request: RouteLocation;
|
|
54
66
|
}
|
|
55
67
|
/**
|
|
56
68
|
* Represents a page component whose props are inferred from a route loader.
|
|
@@ -68,7 +80,7 @@ export declare function definePage<TLoader extends RouteLoader>(component: PageC
|
|
|
68
80
|
export interface LayoutProps<TParams extends RouteParams = RouteParams> {
|
|
69
81
|
children: ReactCompatNode;
|
|
70
82
|
params: TParams;
|
|
71
|
-
request:
|
|
83
|
+
request: RouteLocation;
|
|
72
84
|
}
|
|
73
85
|
/**
|
|
74
86
|
* Re-exports the node type accepted by mreact-compatible components.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,WAAW,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAExF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,WAAW,IAAI,OAAO,SAAS,CAC3E,OAAO,EAAE,MAAM,QAAQ,EACvB,GAAG,IAAI,EAAE,KAAK,EAAE,KACb,OAAO,GACR,QAAQ,SAAS;IAAE,MAAM,EAAE,MAAM,OAAO,CAAA;CAAE,GACxC,OAAO,SAAS,WAAW,GACzB,OAAO,GACP,WAAW,GACb,WAAW,GACb,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW;IACtE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB,CACtC,KAAK,GAAG,OAAO,EACf,OAAO,SAAS,WAAW,GAAG,WAAW;IAEzC,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW;IAC5E,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,SAAS,WAAW,GAAG,WAAW;IACnF,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA6FA;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,SAAiC;IAEjC,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import type { ReactCompatNode } from \"@reckona/mreact-compat\";\nimport type { QueryClient } from \"@reckona/mreact-query\";\n\n/**\n * Represents an app-router loader function.\n */\nexport type RouteLoader = (...args: never[]) => unknown;\n\n/**\n * Infers resolved data returned by a route loader.\n */\nexport type InferLoaderData<TLoader extends RouteLoader> = Awaited<ReturnType<TLoader>>;\n\n/**\n * Represents dynamic route params passed to loaders, pages, and handlers.\n */\nexport type RouteParams = Record<string, readonly string[] | string>;\n\n/**\n * Infers route params from a loader context parameter.\n */\nexport type InferLoaderParams<TLoader extends RouteLoader> = TLoader extends (\n context: infer TContext,\n ...args: never[]\n) => unknown\n ? TContext extends { params: infer TParams }\n ? TParams extends RouteParams\n ? TParams\n : RouteParams\n : RouteParams\n : RouteParams;\n\n/**\n * Provides request, params, environment, and query client data to route loaders.\n */\nexport interface LoaderContext<TParams extends RouteParams = RouteParams> {\n env?: unknown;\n params: TParams;\n queryClient: QueryClient;\n request: Request;\n}\n\n/**\n * Context passed to a route `generateMetadata` export.\n *\n * Metadata is evaluated on the server after loader data is available, so it can derive head tags, robots data, sitemap entries, and security header directives from the same request and route params as the page.\n */\nexport interface GenerateMetadataContext<\n TData = unknown,\n TParams extends RouteParams = RouteParams,\n> {\n data: TData;\n params: TParams;\n request: Request;\n}\n\n/**\n * Provides request and params to server route handlers.\n */\nexport interface RouteHandlerContext<TParams extends RouteParams = RouteParams> {\n params: TParams;\n request: Request;\n}\n\n/**\n * Serializable location data passed to shared page and layout components.\n *\n * Server-only request data such as headers, body, credentials, and abort\n * signals is available through loader and handler contexts instead.\n */\nexport interface RouteLocation {\n readonly hash: string;\n readonly pathname: string;\n readonly search: string;\n readonly url: string;\n}\n\n/**\n * Provides loader data, params, and request context to page components.\n */\nexport interface PageProps<TData = unknown, TParams extends RouteParams = RouteParams> {\n data: TData;\n params: TParams;\n request: RouteLocation;\n}\n\n/**\n * Represents a page component whose props are inferred from a route loader.\n */\nexport type PageComponent<TLoader extends RouteLoader> = (\n props: PageProps<InferLoaderData<TLoader>, InferLoaderParams<TLoader>>,\n) => ReactCompatNode;\n\n/**\n * Preserves the relationship between a page component and its loader when authoring route files.\n *\n * Wrap a default page export with `definePage<typeof loader>(...)` to infer `data` and `params` props from the route loader without changing runtime behavior.\n */\nexport function definePage<TLoader extends RouteLoader>(\n component: PageComponent<TLoader>,\n): PageComponent<TLoader> {\n return component;\n}\n\n/**\n * Provides children, params, and request context to layout components.\n */\nexport interface LayoutProps<TParams extends RouteParams = RouteParams> {\n children: ReactCompatNode;\n params: TParams;\n request: RouteLocation;\n}\n\n/**\n * Re-exports the node type accepted by mreact-compatible components.\n */\nexport type MReactNode = ReactCompatNode;\n\n/**\n * Represents scalar metadata values rendered into head tags and headers.\n */\nexport type MetadataScalar = boolean | number | string;\n\n/**\n * Describes an image value used by route metadata.\n */\nexport interface MetadataImage {\n alt?: MetadataScalar;\n height?: MetadataScalar;\n type?: MetadataScalar;\n url: MetadataScalar;\n width?: MetadataScalar;\n}\n\n/**\n * Declarative metadata returned by route metadata exports.\n *\n * Values are rendered into the document head and response headers by the app router; use `generateMetadata` when the values depend on loader data, params, or the current request.\n */\nexport interface RouteMetadata {\n alternates?: {\n canonical?: MetadataScalar;\n };\n csp?: {\n disable?: boolean;\n directives?: Record<string, readonly string[] | string>;\n nonce?: string;\n remove?: readonly string[];\n replace?: Record<string, readonly string[] | string>;\n };\n description?: MetadataScalar;\n head?: readonly RouteHeadDescriptor[];\n icons?: {\n apple?: MetadataScalar;\n icon?: MetadataScalar;\n };\n openGraph?: {\n description?: MetadataScalar;\n image?: MetadataImage | MetadataScalar;\n images?: readonly (MetadataImage | MetadataScalar)[];\n title?: MetadataScalar;\n };\n lang?: MetadataScalar;\n robots?:\n | string\n | {\n follow?: boolean;\n index?: boolean;\n };\n security?: RouteSecurityHeaders;\n themeColor?: MetadataScalar | MetadataThemeColor;\n title?: MetadataScalar;\n viewport?: MetadataScalar | MetadataViewport;\n}\n\n/**\n * Describes viewport metadata key-value pairs.\n */\nexport type MetadataViewport = Record<string, MetadataScalar | null | undefined>;\n\n/**\n * Describes a theme-color metadata entry with an optional media query.\n */\nexport interface MetadataThemeColor {\n color?: MetadataScalar;\n media?: MetadataScalar;\n}\n\n/**\n * Describes an extra head element emitted by route metadata.\n */\nexport interface RouteHeadDescriptor {\n attrs?: Record<string, boolean | number | string | undefined>;\n content?: string;\n nonce?: boolean | string;\n tag: \"base\" | \"link\" | \"meta\" | \"script\" | \"style\";\n}\n\n/**\n * Configures security-related response headers from route metadata.\n */\nexport interface RouteSecurityHeaders {\n contentTypeOptions?: \"nosniff\" | null | undefined;\n frameOptions?: \"DENY\" | \"SAMEORIGIN\" | null | undefined;\n hsts?: RouteStrictTransportSecurity | false | null | undefined;\n permissionsPolicy?: Record<string, readonly string[] | null | undefined> | null | undefined;\n referrerPolicy?: string | null | undefined;\n}\n\n/**\n * Configures the Strict-Transport-Security header from route metadata.\n */\nexport interface RouteStrictTransportSecurity {\n includeSubDomains?: boolean | undefined;\n maxAge: number;\n preload?: boolean | undefined;\n}\n\n/**\n * Provides request context to a robots metadata route.\n */\nexport interface RobotsContext {\n baseUrl: string;\n host: string;\n request: Request;\n}\n\n/**\n * Describes the robots.txt metadata route result.\n */\nexport interface RobotsManifest {\n host?: string | undefined;\n rules?: RobotsRule | readonly RobotsRule[] | undefined;\n sitemap?: string | readonly string[] | undefined;\n}\n\n/**\n * Describes one robots.txt user-agent rule.\n */\nexport interface RobotsRule {\n allow?: string | readonly string[] | undefined;\n disallow?: string | readonly string[] | undefined;\n userAgent: string | readonly string[];\n}\n\n/**\n * Provides request context to a sitemap metadata route.\n */\nexport interface SitemapContext {\n baseUrl: string;\n host: string;\n request: Request;\n}\n\n/**\n * Describes one URL entry returned by a sitemap metadata route.\n */\nexport interface SitemapEntry {\n changeFrequency?: string | undefined;\n lastModified?: Date | string | number | undefined;\n priority?: number | undefined;\n url: string;\n}\n\n/**\n * Provides request context to a web app manifest metadata route.\n */\nexport interface ManifestContext {\n baseUrl: string;\n host: string;\n request: Request;\n}\n\n/**\n * Represents an arbitrary web app manifest descriptor.\n */\nexport type ManifestDescriptor = Record<string, unknown>;\n"]}
|
package/dist/vite.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { type Connect, type Plugin, type PluginOption, type UserConfig } from "v
|
|
|
3
3
|
import type { AppRouterServerActionOptions } from "./actions.js";
|
|
4
4
|
import type { AppRouterCache } from "./cache.js";
|
|
5
5
|
import { type AppRouterProjectOptions, type ResolvedAppRouterProject } from "./config.js";
|
|
6
|
+
export type { AppRouterExecutionContracts } from "./config.js";
|
|
6
7
|
import type { AppRouterImportPolicy } from "./import-policy.js";
|
|
7
8
|
import type { AppRouterLogger } from "./logger.js";
|
|
8
9
|
import { type RequestHostPolicy } from "./serve.js";
|
package/dist/vite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAK9D,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,YAAY,EAEjB,KAAK,UAAU,EAEhB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC9B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAoBhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AASnD,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKxE,YAAY,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAC/F,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtE,YAAY,EACV,oBAAoB,EACpB,4BAA4B,EAC5B,4BAA4B,EAC5B,8BAA8B,EAC9B,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EACV,sCAAsC,EACtC,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,6BAA6B,EAC7B,2BAA2B,EAC3B,6BAA6B,EAC7B,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,gCAAgC,GACjC,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,8BAA+B,SAAQ,uBAAuB;IAC7E,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAChD,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC1C,UAAU,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC3C,YAAY,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACrC,UAAU,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACxC,aAAa,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;IACzD,WAAW,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;CACnD;AASD;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,uBAAuB;IACzE,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAChD,UAAU,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC3C,YAAY,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACrC,UAAU,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACxC,aAAa,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;CAC1D;AAyBD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
|
package/dist/vite.js
CHANGED
|
@@ -114,6 +114,10 @@ export function createAppRouterVitePlugin(options) {
|
|
|
114
114
|
"@reckona/mreact-shared/url-safety",
|
|
115
115
|
packageFile("shared", "@reckona/mreact-shared", "url-safety"),
|
|
116
116
|
],
|
|
117
|
+
[
|
|
118
|
+
"@reckona/mreact-shared/server-render-value-internal",
|
|
119
|
+
packageFile("shared", "@reckona/mreact-shared", "server-render-value-internal"),
|
|
120
|
+
],
|
|
117
121
|
]);
|
|
118
122
|
// User-declared plugins captured from the resolving config. Unlike the fully
|
|
119
123
|
// resolved `server.config.plugins`, this excludes Vite internals (e.g. the
|