gemi 0.4.8 → 0.4.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../app/App.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAsB,MAAM,oBAAoB,CAAC;AAKpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAU3C,OAAO,EAAE,aAAa,EAA2B,MAAM,OAAO,CAAC;AAM/D,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,UAAU,SAAS;IACjB,UAAU,EAAE,UAAU,UAAU,CAAC;IACjC,SAAS,EAAE,UAAU,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,EAAE,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,UAAU,CAAC,CAAC;IACzD,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,YAAY,CAKlB;IACF,OAAO,CAAC,cAAc,CAGf;IACP,OAAO,CAAC,aAAa,CASd;IACP,OAAO,CAAC,aAAa,CAAgC;IAC9C,IAAI,SAAS;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAgB;IAC9B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,UAAU,CAAC,CAAM;IAC7D,UAAU,SAAK;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,IAAI,CAAgB;gBAEhB,MAAM,EAAE,SAAS;IAU7B,OAAO,CAAC,OAAO;IAkCR,gBAAgB;IAIhB,eAAe,CAAC,MAAM,EAAE,YAAY;YAI7B,eAAe;IAqC7B,OAAO,CAAC,aAAa;IAmCf,gBAAgB,CAAC,GAAG,EAAE,OAAO;IAwF7B,iBAAiB,CAAC,GAAG,EAAE,OAAO;IA+L9B,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU5C,OAAO,CAAC,sBAAsB,CAGtB;IACR,OAAO,CAAC,mBAAmB,CAEzB;IACF,OAAO,CAAC,oBAAoB,CAM1B;IAEF,SAAS;sBAdH,eAAe,WACV,MAAM,GAAG,MAAM;mBAES,eAAe;oBAI5C,eAAe,QACb,MAAM,UACJ,MAAM;MASd;CACH"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../app/App.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAsB,MAAM,oBAAoB,CAAC;AAKpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAU3C,OAAO,EAAE,aAAa,EAA2B,MAAM,OAAO,CAAC;AAK/D,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,UAAU,SAAS;IACjB,UAAU,EAAE,UAAU,UAAU,CAAC;IACjC,SAAS,EAAE,UAAU,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,EAAE,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,UAAU,CAAC,CAAC;IACzD,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,YAAY,CAKlB;IACF,OAAO,CAAC,cAAc,CAGf;IACP,OAAO,CAAC,aAAa,CASd;IACP,OAAO,CAAC,aAAa,CAAgC;IAC9C,IAAI,SAAS;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAgB;IAC9B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,UAAU,CAAC,CAAM;IAC7D,UAAU,SAAK;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,IAAI,CAAgB;gBAEhB,MAAM,EAAE,SAAS;IAU7B,OAAO,CAAC,OAAO;IAkCR,gBAAgB;IAIhB,eAAe,CAAC,MAAM,EAAE,YAAY;YAI7B,eAAe;IAqC7B,OAAO,CAAC,aAAa;IAmCf,gBAAgB,CAAC,GAAG,EAAE,OAAO;IAwF7B,iBAAiB,CAAC,GAAG,EAAE,OAAO;IAmL9B,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU5C,OAAO,CAAC,sBAAsB,CAGtB;IACR,OAAO,CAAC,mBAAmB,CAEzB;IACF,OAAO,CAAC,oBAAoB,CAM1B;IAEF,SAAS;sBAdH,eAAe,WACV,MAAM,GAAG,MAAM;mBAES,eAAe;oBAI5C,eAAe,QACb,MAAM,UACJ,MAAM;MASd;CACH"}
package/dist/app/index.js CHANGED
@@ -2053,11 +2053,6 @@ class App {
2053
2053
  middlewares = handler.middleware;
2054
2054
  }
2055
2055
  }
2056
- if (!currentPathName2) {
2057
- return new Response(null, {
2058
- status: 404
2059
- });
2060
- }
2061
2056
  const reqWithMiddlewares = this.runMiddleware(middlewares);
2062
2057
  const reqCtx = new Map;
2063
2058
  const data2 = await requestContext.run(reqCtx, async () => {
@@ -2077,9 +2072,6 @@ class App {
2077
2072
  });
2078
2073
  }
2079
2074
  }
2080
- if (!pageData) {
2081
- return new Response("<div>404</div>");
2082
- }
2083
2075
  const { data, params, currentPathName, user } = pageData;
2084
2076
  const viewData = data.reduce((acc, data2) => {
2085
2077
  return {
@@ -2152,7 +2144,7 @@ class App {
2152
2144
  pathname: currentPathName,
2153
2145
  params,
2154
2146
  currentPath: url.pathname,
2155
- is404: false
2147
+ is404: !currentPathName ? true : false
2156
2148
  },
2157
2149
  componentTree: [["404", []], ...this.componentTree]
2158
2150
  },
@@ -2163,7 +2155,7 @@ class App {
2163
2155
  ETag: this.appId,
2164
2156
  ...cookieHeaders
2165
2157
  },
2166
- status: 200
2158
+ status: !currentPathName ? 404 : 200
2167
2159
  };
2168
2160
  const stream = await renderToReadableStream(createElement(Fragment, {
2169
2161
  children: [
package/dist/bin/index.js CHANGED
@@ -8995,6 +8995,37 @@ async function imageHandler(req) {
8995
8995
  });
8996
8996
  }
8997
8997
 
8998
+ // server/renderErrorPage.ts
8999
+ function renderErrorPage(err) {
9000
+ return `
9001
+ <!DOCTYPE html>
9002
+ <html lang="en">
9003
+ <head>
9004
+ <meta charset="UTF-8" />
9005
+ <meta
9006
+ name="viewport"
9007
+ content="width=device-width, initial-scale=1.0"
9008
+ />
9009
+ <title>Error</title>
9010
+ <style>
9011
+ body {
9012
+ font-family: Arial, sans-serif;
9013
+ padding: 20px;
9014
+ }
9015
+ h1 {
9016
+ color: red;
9017
+ }
9018
+ </style>
9019
+ </head>
9020
+ <body>
9021
+ <h1>Error</h1>
9022
+ <pre>${JSON.stringify(err, null, 2)}</pre>
9023
+ <script type="module" src="/refresh.js"></script>
9024
+ </body>
9025
+ </html>
9026
+ `;
9027
+ }
9028
+
8998
9029
  // server/dev.ts
8999
9030
  async function startDevServer() {
9000
9031
  const root = process.cwd();
@@ -9045,7 +9076,15 @@ async function startDevServer() {
9045
9076
  } catch (err) {
9046
9077
  console.log(err);
9047
9078
  }
9048
- const { app } = await vite.ssrLoadModule(path.join(appDir, "bootstrap.ts"));
9079
+ let app = null;
9080
+ try {
9081
+ app = (await vite.ssrLoadModule(path.join(appDir, "bootstrap.ts"))).app;
9082
+ } catch (err) {
9083
+ return new Response(renderErrorPage(err), {
9084
+ status: 500,
9085
+ headers: { "Content-Type": "text/html" }
9086
+ });
9087
+ }
9049
9088
  const { default: css } = await vite.ssrLoadModule(`${appDir}/app.css`);
9050
9089
  const styles2 = [];
9051
9090
  styles2.push({
@@ -9067,6 +9106,7 @@ async function startDevServer() {
9067
9106
  try {
9068
9107
  return await handler(req);
9069
9108
  } catch (err) {
9109
+ console.log("ERROR", err);
9070
9110
  return new Response(err.stack, { status: 500 });
9071
9111
  }
9072
9112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClientRouterContext.d.ts","sourceRoot":"","sources":["../../client/ClientRouterContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,EAAE,EACP,KAAK,QAAQ,EAEd,MAAM,SAAS,CAAC;AACjB,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,UAAU,wBAAwB;IAChC,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACxD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAClC,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,mBAAmB,mDAE/B,CAAC;AAEF,UAAU,yBAAyB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,UACxB,iBAAiB,CAAC,yBAAyB,CAAC,4CA2GpD,CAAC;AAUF,wBAAgB,WAAW,aAU1B;AAED,wBAAgB,SAAS,2BAGxB;AAED,wBAAgB,WAAW,SAAK;AAEhC,wBAAgB,SAAS;eAGJ,EAAE,UAAU,GAAG;EAsBnC;AAED,eAAO,MAAM,IAAI,UACR,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,EAAE,CAAA;CAAE,4CA0BxD,CAAC"}
1
+ {"version":3,"file":"ClientRouterContext.d.ts","sourceRoot":"","sources":["../../client/ClientRouterContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,EAAE,EACP,KAAK,QAAQ,EAEd,MAAM,SAAS,CAAC;AACjB,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,UAAU,wBAAwB;IAChC,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACxD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;IAClC,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,mBAAmB,mDAE/B,CAAC;AAEF,UAAU,yBAAyB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,UACxB,iBAAiB,CAAC,yBAAyB,CAAC,4CA2GpD,CAAC;AAUF,wBAAgB,WAAW,aAU1B;AAED,wBAAgB,SAAS,2BAGxB;AAED,wBAAgB,WAAW,SAAK;AAEhC,wBAAgB,SAAS;eAGJ,EAAE,UAAU,GAAG;EAsBnC;AAED,eAAO,MAAM,IAAI,UACR,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,EAAE,CAAA;CAAE,4CA8BxD,CAAC"}
@@ -715,17 +715,20 @@ function useRouter() {
715
715
  const Link = (props) => {
716
716
  const { href, onClick, ...rest } = props;
717
717
  const { push } = useRouter();
718
+ const { pathname } = useLocation();
718
719
  let path = "";
719
720
  if (typeof href === "string") {
720
721
  path = `${href}`;
721
722
  } else {
722
- const { hash, pathname, search } = href;
723
+ const { hash, pathname: pathname2, search } = href;
723
724
  const urlSearchParams = new URLSearchParams(search);
724
- path = `${pathname}${urlSearchParams.toString()}${hash}`;
725
+ path = `${pathname2}${urlSearchParams.toString()}${hash}`;
725
726
  }
727
+ const p = typeof href === "string" ? href : href.pathname;
726
728
  return /* @__PURE__ */ jsx(
727
729
  "a",
728
730
  {
731
+ "data-active": p === pathname,
729
732
  href: path,
730
733
  onClick: (e) => {
731
734
  e.preventDefault();
@@ -6030,6 +6030,37 @@ async function imageHandler(req) {
6030
6030
  });
6031
6031
  }
6032
6032
 
6033
+ // server/renderErrorPage.ts
6034
+ function renderErrorPage(err) {
6035
+ return `
6036
+ <!DOCTYPE html>
6037
+ <html lang="en">
6038
+ <head>
6039
+ <meta charset="UTF-8" />
6040
+ <meta
6041
+ name="viewport"
6042
+ content="width=device-width, initial-scale=1.0"
6043
+ />
6044
+ <title>Error</title>
6045
+ <style>
6046
+ body {
6047
+ font-family: Arial, sans-serif;
6048
+ padding: 20px;
6049
+ }
6050
+ h1 {
6051
+ color: red;
6052
+ }
6053
+ </style>
6054
+ </head>
6055
+ <body>
6056
+ <h1>Error</h1>
6057
+ <pre>${JSON.stringify(err, null, 2)}</pre>
6058
+ <script type="module" src="/refresh.js"></script>
6059
+ </body>
6060
+ </html>
6061
+ `;
6062
+ }
6063
+
6033
6064
  // server/dev.ts
6034
6065
  async function startDevServer() {
6035
6066
  const root = process.cwd();
@@ -6080,7 +6111,15 @@ async function startDevServer() {
6080
6111
  } catch (err) {
6081
6112
  console.log(err);
6082
6113
  }
6083
- const { app } = await vite.ssrLoadModule(path.join(appDir, "bootstrap.ts"));
6114
+ let app = null;
6115
+ try {
6116
+ app = (await vite.ssrLoadModule(path.join(appDir, "bootstrap.ts"))).app;
6117
+ } catch (err) {
6118
+ return new Response(renderErrorPage(err), {
6119
+ status: 500,
6120
+ headers: { "Content-Type": "text/html" }
6121
+ });
6122
+ }
6084
6123
  const { default: css } = await vite.ssrLoadModule(`${appDir}/app.css`);
6085
6124
  const styles2 = [];
6086
6125
  styles2.push({
@@ -6102,6 +6141,7 @@ async function startDevServer() {
6102
6141
  try {
6103
6142
  return await handler(req);
6104
6143
  } catch (err) {
6144
+ console.log("ERROR", err);
6105
6145
  return new Response(err.stack, { status: 500 });
6106
6146
  }
6107
6147
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gemi",
3
- "version": "0.4.8",
3
+ "version": "0.4.10",
4
4
  "devDependencies": {
5
5
  "@happy-dom/global-registrator": "^14.12.3",
6
6
  "@repo/eslint-config": "*",