fix things for new vite hashing behaviour

fix-build-duplicate-code
Nikhil Saraf 2 years ago
parent 4acc262b3b
commit 65eee51716

@ -5,4 +5,4 @@
"singleQuote": false,
"arrowParens": "avoid",
"printWidth": 100
}
}

@ -10,7 +10,7 @@ import {
import type { ReconcileOptions } from "solid-js/store";
import { createStore, reconcile, unwrap } from "solid-js/store";
import { isServer } from "solid-js/web";
import { useNavigate } from "../index";
import { useNavigate } from "../router";
import { isRedirectResponse, LocationHeader } from "../server/responses";
import { ServerContext } from "../server/ServerContext";
import { FETCH_EVENT, ServerFunctionEvent } from "../server/types";

@ -20,6 +20,7 @@ export type { FormAction, FormMethod, FormProps, SubmitOptions } from "./data";
export { default, ErrorBoundary } from "./error-boundary";
export { island as unstable_island } from "./islands";
export { Body, FileRoutes, Head, Html, Scripts } from "./root";
export * from "./router";
export { ServerContext } from "./server/ServerContext";
export type { FetchEvent, PageEvent, ServerFunctionEvent } from "./server/types";
export {
@ -32,65 +33,4 @@ export {
type CookieParseOptions,
type CookieSerializeOptions
} from "./session";
import type { Accessor } from "solid-js";
import "./types";
import {
Location, Navigator, Outlet as BaseOutlet,
Routes as BaseRoutes,
useLocation as useBaseLocation,
useNavigate as useBaseNavigate
} from "@solidjs/router";
import { isServer } from "solid-js/web";
import { Outlet as IslandsOutlet } from "./islands/server-router";
export function Routes(props) {
if (import.meta.env.START_ISLANDS_ROUTER) {
return (
<IslandsOutlet>
<BaseRoutes>{props.children}</BaseRoutes>
</IslandsOutlet>
);
}
return <BaseRoutes>{props.children}</BaseRoutes>;
}
export function Outlet(props) {
if (import.meta.env.START_ISLANDS_ROUTER) {
return (
<IslandsOutlet>
<BaseOutlet />
</IslandsOutlet>
);
}
return <BaseOutlet />;
}
declare global {
interface Window {
LOCATION: Accessor<Location>;
NAVIGATE: Navigator;
}
}
export function useLocation() {
if (import.meta.env.START_ISLANDS_ROUTER && !isServer) {
return {
get pathname() {
let location = window.LOCATION();
return location.pathname;
}
};
} else {
return /*#__PURE__*/ useBaseLocation();
}
}
export function useNavigate() {
if (import.meta.env.START_ISLANDS_ROUTER && !isServer) {
return ((to, props) => window.NAVIGATE(to, props)) as unknown as Navigator;
} else {
return /*#__PURE__*/ useBaseNavigate();
}
}

@ -29,11 +29,13 @@
"websocket",
"bin.cjs",
"index.tsx",
"router.tsx",
"required-user-files.d.ts",
"types.ts"
],
"exports": {
".": "./index.tsx",
"./router": "./router.tsx",
"./vite": {
"types": "./vite/plugin.d.ts",
"import": "./vite/plugin.js"
@ -51,7 +53,7 @@
"./islands/*": "./islands/*",
"./root": "./root/index.tsx",
"./root/*": "./root/*",
"./data": "./data/index.tsx",
"./data": "./data/index.ts",
"./data/*": "./data/*",
"./node/*": "./node/*",
"./fs-router/*": "./fs-router/*",

@ -0,0 +1,62 @@
import {
Location,
Navigator,
Outlet as BaseOutlet,
Routes as BaseRoutes,
useLocation as useBaseLocation,
useNavigate as useBaseNavigate
} from "@solidjs/router";
import { Accessor } from "solid-js";
import { isServer } from "solid-js/web";
import { Outlet as IslandsOutlet } from "./islands/server-router";
export function Routes(props) {
if (import.meta.env.START_ISLANDS_ROUTER) {
return (
<IslandsOutlet>
<BaseRoutes>{props.children}</BaseRoutes>
</IslandsOutlet>
);
}
return <BaseRoutes>{props.children}</BaseRoutes>;
}
export function Outlet(props) {
if (import.meta.env.START_ISLANDS_ROUTER) {
return (
<IslandsOutlet>
<BaseOutlet />
</IslandsOutlet>
);
}
return <BaseOutlet />;
}
declare global {
interface Window {
LOCATION: Accessor<Location>;
NAVIGATE: Navigator;
}
}
export function useLocation() {
if (import.meta.env.START_ISLANDS_ROUTER && !isServer) {
return {
get pathname() {
let location = window.LOCATION();
return location.pathname;
}
};
} else {
return /*#__PURE__*/ useBaseLocation();
}
}
export function useNavigate() {
if (import.meta.env.START_ISLANDS_ROUTER && !isServer) {
return ((to, props) => window.NAVIGATE(to, props)) as unknown as Navigator;
} else {
return /*#__PURE__*/ useBaseNavigate();
}
}

@ -3,7 +3,7 @@ import debug from "debug";
import fs, { existsSync } from "fs";
import path, { dirname, join } from "path";
import c from "picocolors";
import { fileURLToPath } from "url";
import { fileURLToPath, pathToFileURL } from "url";
import { loadEnv, normalizePath } from "vite";
import solid from "vite-plugin-solid";
import printUrls from "../dev/print-routes.js";
@ -159,6 +159,10 @@ function solidStartFileSystemRouter(options) {
const isSsr =
transformOptions === null || transformOptions === void 0 ? void 0 : transformOptions.ssr;
const url = pathToFileURL(id);
url.searchParams.delete("v");
id = fileURLToPath(url);
const babelOptions =
fn =>
(...args) => {
@ -187,11 +191,19 @@ function solidStartFileSystemRouter(options) {
plugins: [
[
routeResource,
{ ssr, root: process.cwd(), minify: process.env.NODE_ENV === "production" }
{
ssr,
root: process.cwd(),
minify: process.env.NODE_ENV === "production"
}
],
[
babelServerModule,
{ ssr, root: process.cwd(), minify: process.env.NODE_ENV === "production" }
{
ssr,
root: process.cwd(),
minify: process.env.NODE_ENV === "production"
}
]
]
}));
@ -205,11 +217,19 @@ function solidStartFileSystemRouter(options) {
plugins: [
[
routeResource,
{ ssr, root: process.cwd(), minify: process.env.NODE_ENV === "production" }
{
ssr,
root: process.cwd(),
minify: process.env.NODE_ENV === "production"
}
],
[
babelServerModule,
{ ssr, root: process.cwd(), minify: process.env.NODE_ENV === "production" }
{
ssr,
root: process.cwd(),
minify: process.env.NODE_ENV === "production"
}
]
]
})
@ -222,15 +242,27 @@ function solidStartFileSystemRouter(options) {
plugins: [
[
routeResource,
{ ssr, root: process.cwd(), minify: process.env.NODE_ENV === "production" }
{
ssr,
root: process.cwd(),
minify: process.env.NODE_ENV === "production"
}
],
[
babelServerModule,
{ ssr, root: process.cwd(), minify: process.env.NODE_ENV === "production" }
{
ssr,
root: process.cwd(),
minify: process.env.NODE_ENV === "production"
}
],
[
routeData,
{ ssr, root: process.cwd(), minify: process.env.NODE_ENV === "production" }
{
ssr,
root: process.cwd(),
minify: process.env.NODE_ENV === "production"
}
],
!ssr &&
process.env.NODE_ENV !== "production" && [
@ -257,7 +289,11 @@ function solidStartFileSystemRouter(options) {
],
[
babelServerModule,
{ ssr, root: process.cwd(), minify: process.env.NODE_ENV === "production" }
{
ssr,
root: process.cwd(),
minify: process.env.NODE_ENV === "production"
}
],
[
routeData,
@ -279,7 +315,11 @@ function solidStartFileSystemRouter(options) {
plugins: [
[
babelServerModule,
{ ssr, root: process.cwd(), minify: process.env.NODE_ENV === "production" }
{
ssr,
root: process.cwd(),
minify: process.env.NODE_ENV === "production"
}
]
].filter(Boolean)
})
@ -428,6 +468,7 @@ function solidStartConfig(options) {
ssr: {
noExternal: ["@solidjs/router", "@solidjs/meta", "solid-start"]
},
define: {
// handles use of process.env.TEST_ENV in solid-start internal code
"process.env.TEST_ENV": JSON.stringify(process.env.TEST_ENV),
@ -449,6 +490,9 @@ function solidStartConfig(options) {
: options.adapter && options.adapter.name
)
},
optimizeDeps: {
exclude: ["solid-start", "@solidjs/router", "@solidjs/meta"]
},
solidOptions: options
};
}
@ -474,7 +518,9 @@ function detectAdapter() {
fs.readdirSync(nodeModulesPath).forEach(dir => {
if (dir.startsWith("solid-start-")) {
const pkg = JSON.parse(
fs.readFileSync(path.join(nodeModulesPath, dir, "package.json"), { encoding: "utf8" })
fs.readFileSync(path.join(nodeModulesPath, dir, "package.json"), {
encoding: "utf8"
})
);
if (pkg.solid && pkg.solid.type === "adapter") {
adapters.push(dir);
@ -561,11 +607,19 @@ export default function solidStart(options) {
plugins: [
[
routeResource,
{ ssr, root: process.cwd(), minify: process.env.NODE_ENV === "production" }
{
ssr,
root: process.cwd(),
minify: process.env.NODE_ENV === "production"
}
],
[
babelServerModule,
{ ssr, root: process.cwd(), minify: process.env.NODE_ENV === "production" }
{
ssr,
root: process.cwd(),
minify: process.env.NODE_ENV === "production"
}
]
]
})

Loading…
Cancel
Save