gemi 0.4.38 → 0.4.41

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.
Files changed (67) hide show
  1. package/dist/chunk-05fa767ab29abb0f.js +2 -0
  2. package/dist/chunk-11a75566ff74db17.js +6 -0
  3. package/dist/chunk-187a09f46e2b36e5.js +2 -0
  4. package/dist/chunk-21fe96d1a3bb5a27.js +2 -0
  5. package/dist/chunk-26a5c9db5d17f5e7.js +3 -0
  6. package/dist/chunk-2a48e0098ccd4249.js +1 -1
  7. package/dist/chunk-38237d1b01b0db25.js +3 -0
  8. package/dist/chunk-4d19e16340534ed0.js +1 -1
  9. package/dist/chunk-4eeee2f82b1fa8bb.js +2 -0
  10. package/dist/chunk-5128de1a65ba6ce1.js +2 -0
  11. package/dist/chunk-552bdaee8c03e091.js +1 -1
  12. package/dist/chunk-59e951812cb019e6.js +2 -0
  13. package/dist/chunk-5b54843712abde58.js +2 -0
  14. package/dist/chunk-5defd55c3c97bdb2.js +2 -0
  15. package/dist/chunk-60f3b8242209ac3e.js +18 -0
  16. package/dist/chunk-625025af819f55f5.js +2 -0
  17. package/dist/chunk-6259cd13f53334df.js +2 -0
  18. package/dist/chunk-66ab377654806d08.js +2 -0
  19. package/dist/chunk-682b01231754a121.js +1 -1
  20. package/dist/chunk-6afe097e13ebdf55.js +1 -1
  21. package/dist/chunk-722f2aeae58daaa3.js +18 -0
  22. package/dist/chunk-733513f9c9e8b50f.js +2 -0
  23. package/dist/chunk-7ea1baca4032004f.js +2 -0
  24. package/dist/chunk-8af626a703659719.js +18 -0
  25. package/dist/chunk-8b944ecefa1b832c.js +18 -0
  26. package/dist/chunk-8f547b919361fdf4.js +2 -0
  27. package/dist/chunk-9238196d4889d660.js +1 -0
  28. package/dist/chunk-955e2bfcdb7a7e71.js +2 -0
  29. package/dist/chunk-9f6199bc705fc395.js +18 -0
  30. package/dist/chunk-a02b2d564bdb603d.js +6 -0
  31. package/dist/chunk-a719a1f305964521.js +1 -1
  32. package/dist/chunk-a8310ad9bad32329.js +1 -1
  33. package/dist/chunk-aafdd9bfb5bde8bf.js +2 -0
  34. package/dist/chunk-abd0b68c299eebfc.js +1 -1
  35. package/dist/chunk-b66a9e50afbac035.js +9 -0
  36. package/dist/chunk-b9e4546aaa58319c.js +2 -0
  37. package/dist/chunk-bd2888a454e50cfd.js +1 -0
  38. package/dist/chunk-bee6075c5738d87a.js +1 -1
  39. package/dist/chunk-c8b00b645df96ed5.js +1 -1
  40. package/dist/chunk-cb65fe402653c65e.js +1 -1
  41. package/dist/chunk-dd21f367f8029793.js +2 -0
  42. package/dist/chunk-ddef8961cbf08a05.js +6 -0
  43. package/dist/chunk-ee4ff285d7f4ccdf.js +1 -1
  44. package/dist/chunk-f2dca6305fcba70b.js +1 -1
  45. package/dist/chunk-f99bdfc336b2ac57.js +1 -1
  46. package/dist/client/ClientRouterContext.d.ts +2 -11
  47. package/dist/client/ClientRouterContext.d.ts.map +1 -1
  48. package/dist/client/Link.d.ts +13 -0
  49. package/dist/client/Link.d.ts.map +1 -0
  50. package/dist/client/QueryManager.d.ts.map +1 -1
  51. package/dist/client/index.d.ts +5 -2
  52. package/dist/client/index.d.ts.map +1 -1
  53. package/dist/client/index.js +104 -93
  54. package/dist/client/types.d.ts +13 -2
  55. package/dist/client/types.d.ts.map +1 -1
  56. package/dist/client/useRouter.d.ts +15 -0
  57. package/dist/client/useRouter.d.ts.map +1 -0
  58. package/dist/client/useSearchParams.d.ts +2 -0
  59. package/dist/client/useSearchParams.d.ts.map +1 -0
  60. package/dist/http/ViewRouter.d.ts +1 -1
  61. package/dist/http/ViewRouter.d.ts.map +1 -1
  62. package/dist/http/index.js +1 -1
  63. package/dist/server/index.js +1 -1
  64. package/dist/storage/index.js +10 -1
  65. package/dist/utils/applyParams.d.ts +2 -0
  66. package/dist/utils/applyParams.d.ts.map +1 -0
  67. package/package.json +2 -2
@@ -10,7 +10,7 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
10
10
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
11
11
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
12
12
  var _i, _n, _t, _e, _s, _l, _o, _d, _p, _g, _H_instances, r_fn, R_fn, b_fn, u_fn, m_fn, a_fn, P_fn, E_fn, S_fn, O_fn, k_fn, x_fn, h_fn, f_fn, T_fn, A_fn, y_fn, w_fn, c_fn, C_fn, _a, _i2, _n2, _t2, _e2, _s2, _l2, _b;
13
- import require$$1, { createContext, useState, useEffect, useContext, useSyncExternalStore, useRef, lazy, startTransition, StrictMode, Suspense } from "react";
13
+ import require$$1, { createContext, useState, useEffect, useContext, useSyncExternalStore, useRef, lazy, StrictMode, Suspense } from "react";
14
14
  import { jsx, Fragment, jsxs } from "react/jsx-runtime";
15
15
  import require$$2 from "react-dom";
16
16
  class Subject {
@@ -33,15 +33,19 @@ class Subject {
33
33
  return this.value;
34
34
  }
35
35
  }
36
- function applyParams$1(url, params = {}) {
37
- let out = url;
38
- for (const segment of url.split("/")) {
39
- if (segment.includes(":")) {
40
- const key = segment.split(":")[1];
41
- out = out.replace(`:${key}`, params[key]);
36
+ function applyParams$1(url, params) {
37
+ return url.replace(/:([^/]+)/g, (_2, key) => {
38
+ const isOptional = key.endsWith("?");
39
+ const paramName = isOptional ? key.slice(0, -1) : key;
40
+ const value = params[paramName];
41
+ if (value === void 0) {
42
+ if (isOptional) {
43
+ return "";
44
+ }
45
+ throw new Error(`Missing parameter: ${paramName}`);
42
46
  }
43
- }
44
- return out;
47
+ return value;
48
+ }).replace(/\/\//g, "/");
45
49
  }
46
50
  class Resource {
47
51
  constructor(key, fallbackData = null) {
@@ -600,31 +604,6 @@ function parsePath(path) {
600
604
  }
601
605
  return parsedPath;
602
606
  }
603
- function flattenComponentTree(componentTree) {
604
- let out = [];
605
- for (const [root, branches] of componentTree) {
606
- out.push(root, ...flattenComponentTree(branches).flat());
607
- }
608
- return Array.from(new Set(out));
609
- }
610
- let viewImportMap = null;
611
- if (typeof window !== "undefined" && process.env.NODE_ENV !== "test") {
612
- viewImportMap = {};
613
- const { componentTree } = window.__GEMI_DATA__;
614
- for (const viewName of flattenComponentTree(componentTree)) {
615
- viewImportMap[viewName] = lazy(window.loaders[viewName]);
616
- }
617
- }
618
- const ComponentsContext = createContext({ viewImportMap });
619
- const ComponentsProvider = (props) => {
620
- return /* @__PURE__ */ jsx(
621
- ComponentsContext.Provider,
622
- {
623
- value: { viewImportMap: props.viewImportMap ?? viewImportMap },
624
- children: props.children
625
- }
626
- );
627
- };
628
607
  var R = class {
629
608
  constructor(t, r, n, o, c, l) {
630
609
  __publicField(this, "type", 3);
@@ -1456,47 +1435,35 @@ function useParams() {
1456
1435
  const { params } = useContext(ClientRouterContext);
1457
1436
  return params;
1458
1437
  }
1459
- function useSearchParams() {
1460
- const { locationSubject, history } = useContext(ClientRouterContext);
1461
- const location = useLocation();
1462
- const searchParams = new URLSearchParams(location.search);
1463
- const setSearchParams = (newSearchParams) => {
1464
- let nextSearchParams = newSearchParams;
1465
- if (typeof newSearchParams === "function") {
1466
- nextSearchParams = newSearchParams(searchParams);
1467
- }
1468
- locationSubject.next({
1469
- ...locationSubject.getValue(),
1470
- search: nextSearchParams.toString()
1471
- });
1472
- history == null ? void 0 : history.push({
1473
- search: nextSearchParams.toString()
1474
- });
1475
- };
1476
- return [searchParams, setSearchParams];
1477
- }
1478
1438
  function useRouter() {
1479
1439
  const { updatePageData, history, getViewPathsFromPathname } = useContext(ClientRouterContext);
1480
- useContext(ComponentsContext);
1481
- return {
1482
- push: async (to, state) => {
1483
- let path = "";
1484
- let urlSearchParams;
1485
- let hash = "";
1486
- if (typeof to === "string") {
1487
- const [_path, search = ""] = to.split("?");
1488
- path = _path;
1489
- urlSearchParams = new URLSearchParams(search);
1490
- urlSearchParams.set("json", "true");
1491
- } else {
1492
- const { hash: _hash, pathname, search } = to;
1493
- urlSearchParams = new URLSearchParams(search);
1494
- urlSearchParams.set("json", "true");
1495
- path = pathname;
1496
- hash = _hash;
1497
- }
1440
+ function action(pushOrReplace) {
1441
+ return async (path, ...args) => {
1442
+ const [options = {}] = args;
1443
+ const {
1444
+ search = {},
1445
+ params = {},
1446
+ shallow
1447
+ } = {
1448
+ params: {},
1449
+ shallow: false,
1450
+ ...options
1451
+ };
1452
+ const urlSearchParams = new URLSearchParams(search);
1453
+ const basePath = applyParams$1(path, params);
1454
+ const navigationPath = [
1455
+ applyParams$1(path, params),
1456
+ urlSearchParams.toString()
1457
+ ].join("?");
1498
1458
  const components = getViewPathsFromPathname(path);
1499
- const fetchPath = `${path}?${urlSearchParams.toString()}${hash}`;
1459
+ const fetchUrlSearchParams = new URLSearchParams(urlSearchParams);
1460
+ fetchUrlSearchParams.set("json", "true");
1461
+ const fetchPath = [basePath, fetchUrlSearchParams.toString()].join("?");
1462
+ urlSearchParams.set("json", "true");
1463
+ if (shallow) {
1464
+ history == null ? void 0 : history[pushOrReplace](navigationPath);
1465
+ return;
1466
+ }
1500
1467
  const [res] = await Promise.all([
1501
1468
  fetch(fetchPath),
1502
1469
  ...components.map((component) => window.loaders[component]())
@@ -1504,36 +1471,55 @@ function useRouter() {
1504
1471
  if (res.ok) {
1505
1472
  const { data, is404 = false } = await res.json();
1506
1473
  updatePageData(data);
1507
- history == null ? void 0 : history.push(to, is404 ? { status: 404 } : state);
1474
+ history == null ? void 0 : history[pushOrReplace](navigationPath, is404 ? { status: 404 } : {});
1508
1475
  window.scrollTo(0, 0);
1509
1476
  }
1477
+ };
1478
+ }
1479
+ return {
1480
+ push: action("push"),
1481
+ replace: action("replace")
1482
+ };
1483
+ }
1484
+ function useSearchParams() {
1485
+ const { push } = useRouter();
1486
+ const location = useLocation();
1487
+ const searchParams = new URLSearchParams(location.search);
1488
+ const setSearchParams = (newSearchParams, shallow = false) => {
1489
+ let nextSearchParams = newSearchParams;
1490
+ if (typeof newSearchParams === "function") {
1491
+ nextSearchParams = newSearchParams(searchParams);
1510
1492
  }
1493
+ push(location.pathname, {
1494
+ search: Object.fromEntries(
1495
+ nextSearchParams.entries()
1496
+ ),
1497
+ shallow
1498
+ });
1511
1499
  };
1500
+ return [searchParams, setSearchParams];
1512
1501
  }
1513
1502
  const Link = (props) => {
1514
- const { href, onClick, active = false, ...rest } = props;
1503
+ const {
1504
+ href,
1505
+ onClick,
1506
+ active = false,
1507
+ params = {},
1508
+ search = {},
1509
+ ...rest
1510
+ } = { params: {}, ...props };
1515
1511
  const { push } = useRouter();
1516
1512
  const { pathname } = useLocation();
1517
- let path = "";
1518
- if (typeof href === "string") {
1519
- path = `${href}`;
1520
- } else {
1521
- const { hash, pathname: pathname2, search } = href;
1522
- const urlSearchParams = new URLSearchParams(search);
1523
- path = `${pathname2}${urlSearchParams.toString()}${hash}`;
1524
- }
1525
- const p = typeof href === "string" ? href : href.pathname;
1513
+ const path = applyParams$1(href, params);
1526
1514
  return /* @__PURE__ */ jsx(
1527
1515
  "a",
1528
1516
  {
1529
- "data-active": active || pathname === p,
1517
+ "data-active": active || pathname === path,
1530
1518
  href: path,
1531
1519
  onClick: (e) => {
1532
1520
  e.preventDefault();
1533
1521
  onClick == null ? void 0 : onClick(e);
1534
- startTransition(() => {
1535
- push(href);
1536
- });
1522
+ push(href, { search, params });
1537
1523
  },
1538
1524
  ...rest
1539
1525
  }
@@ -5262,7 +5248,7 @@ function requireReactDomClient_production() {
5262
5248
  workInProgressRootSkippedLanes |= hook;
5263
5249
  return prevValue;
5264
5250
  }
5265
- function startTransition2(fiber, queue, pendingState, finishedState, callback) {
5251
+ function startTransition(fiber, queue, pendingState, finishedState, callback) {
5266
5252
  var previousPriority = ReactDOMSharedInternals.p;
5267
5253
  ReactDOMSharedInternals.p = 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;
5268
5254
  var prevTransition = ReactSharedInternals.T, currentTransition = {};
@@ -5294,7 +5280,7 @@ function requireReactDomClient_production() {
5294
5280
  function startHostTransition(formFiber, pendingState, action, formData) {
5295
5281
  if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));
5296
5282
  var queue = ensureFormComponentIsStateful(formFiber).queue;
5297
- startTransition2(
5283
+ startTransition(
5298
5284
  formFiber,
5299
5285
  queue,
5300
5286
  pendingState,
@@ -5549,7 +5535,7 @@ function requireReactDomClient_production() {
5549
5535
  },
5550
5536
  useTransition: function() {
5551
5537
  var stateHook = mountStateImpl(false);
5552
- stateHook = startTransition2.bind(
5538
+ stateHook = startTransition.bind(
5553
5539
  null,
5554
5540
  currentlyRenderingFiber$1,
5555
5541
  stateHook.queue,
@@ -17706,7 +17692,7 @@ function requireReactDomClient_development() {
17706
17692
  workInProgressRootSkippedLanes |= hook;
17707
17693
  return prevValue;
17708
17694
  }
17709
- function startTransition2(fiber, queue, pendingState, finishedState, callback) {
17695
+ function startTransition(fiber, queue, pendingState, finishedState, callback) {
17710
17696
  var previousPriority = ReactDOMSharedInternals.p;
17711
17697
  ReactDOMSharedInternals.p = 0 !== previousPriority && previousPriority < ContinuousEventPriority ? previousPriority : ContinuousEventPriority;
17712
17698
  var prevTransition = ReactSharedInternals.T, currentTransition = {};
@@ -17742,7 +17728,7 @@ function requireReactDomClient_development() {
17742
17728
  "Expected the form instance to be a HostComponent. This is a bug in React."
17743
17729
  );
17744
17730
  var queue = ensureFormComponentIsStateful(formFiber).queue;
17745
- startTransition2(
17731
+ startTransition(
17746
17732
  formFiber,
17747
17733
  queue,
17748
17734
  pendingState,
@@ -17797,7 +17783,7 @@ function requireReactDomClient_development() {
17797
17783
  }
17798
17784
  function mountTransition() {
17799
17785
  var stateHook = mountStateImpl(false);
17800
- stateHook = startTransition2.bind(
17786
+ stateHook = startTransition.bind(
17801
17787
  null,
17802
17788
  currentlyRenderingFiber$1,
17803
17789
  stateHook.queue,
@@ -30184,6 +30170,31 @@ const ServerDataProvider = (props) => {
30184
30170
  }
30185
30171
  return /* @__PURE__ */ jsx(ServerDataContext.Provider, { value: _value, children: props.children });
30186
30172
  };
30173
+ function flattenComponentTree(componentTree) {
30174
+ let out = [];
30175
+ for (const [root, branches] of componentTree) {
30176
+ out.push(root, ...flattenComponentTree(branches).flat());
30177
+ }
30178
+ return Array.from(new Set(out));
30179
+ }
30180
+ let viewImportMap = null;
30181
+ if (typeof window !== "undefined" && process.env.NODE_ENV !== "test") {
30182
+ viewImportMap = {};
30183
+ const { componentTree } = window.__GEMI_DATA__;
30184
+ for (const viewName of flattenComponentTree(componentTree)) {
30185
+ viewImportMap[viewName] = lazy(window.loaders[viewName]);
30186
+ }
30187
+ }
30188
+ const ComponentsContext = createContext({ viewImportMap });
30189
+ const ComponentsProvider = (props) => {
30190
+ return /* @__PURE__ */ jsx(
30191
+ ComponentsContext.Provider,
30192
+ {
30193
+ value: { viewImportMap: props.viewImportMap ?? viewImportMap },
30194
+ children: props.children
30195
+ }
30196
+ );
30197
+ };
30187
30198
  const Route = (props) => {
30188
30199
  const { componentPath } = props;
30189
30200
  const { viewImportMap: viewImportMap2 } = useContext(ComponentsContext);
@@ -1,9 +1,20 @@
1
+ import type { PropsWithChildren } from "react";
1
2
  import type { ViewHandler } from "../http";
2
3
  import type { UnwrapPromise } from "../utils/type";
3
4
  import type { ViewRPC } from "./rpc";
4
5
  type ComponentBranch = [string, ComponentBranch[]];
5
6
  export type ComponentTree = ComponentBranch[];
6
- type ViewKeys = keyof ViewRPC;
7
- export type ViewProps<T extends ViewKeys> = ViewRPC[T] extends ViewHandler<any, infer O, any> ? UnwrapPromise<O> : never;
7
+ export type ViewPaths = ViewKeys<keyof ViewRPC>;
8
+ type ViewKeys<T> = T extends keyof ViewRPC ? T extends `view:${infer K}` ? K : never : never;
9
+ type LayoutKeys<T> = T extends keyof ViewRPC ? T extends `layout:${infer K}` ? K : never : never;
10
+ export type ViewProps<T extends ViewKeys<keyof ViewRPC>> = ViewRPC[`view:${T}`] extends ViewHandler<any, infer O, any> ? UnwrapPromise<O> : never;
11
+ export type LayoutProps<T extends LayoutKeys<keyof ViewRPC>> = ViewRPC[`layout:${T}`] extends ViewHandler<any, infer O, any> ? PropsWithChildren<UnwrapPromise<O>> : never;
12
+ export type UrlParser<T extends string> = string extends T ? Record<string, string> : T extends `${infer _Start}/:${infer Param}?/${infer Rest}` ? {
13
+ [K in Param]?: string;
14
+ } & UrlParser<`/${Rest}`> : T extends `${infer _Start}/:${infer Param}/${infer Rest}` ? {
15
+ [K in Param]: string;
16
+ } & UrlParser<`/${Rest}`> : T extends `${infer _Start}/:${infer Param}` ? {
17
+ [K in Param]: string;
18
+ } : never;
8
19
  export {};
9
20
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,KAAK,eAAe,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;AACnD,MAAM,MAAM,aAAa,GAAG,eAAe,EAAE,CAAC;AAE9C,KAAK,QAAQ,GAAG,MAAM,OAAO,CAAC;AAE9B,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,QAAQ,IACtC,OAAO,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,KAAK,eAAe,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;AACnD,MAAM,MAAM,aAAa,GAAG,eAAe,EAAE,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,OAAO,CAAC,CAAC;AAEhD,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,OAAO,GACtC,CAAC,SAAS,QAAQ,MAAM,CAAC,EAAE,GACzB,CAAC,GACD,KAAK,GACP,KAAK,CAAC;AAEV,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,OAAO,GACxC,CAAC,SAAS,UAAU,MAAM,CAAC,EAAE,GAC3B,CAAC,GACD,KAAK,GACP,KAAK,CAAC;AAEV,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,OAAO,CAAC,IACrD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GACvD,aAAa,CAAC,CAAC,CAAC,GAChB,KAAK,CAAC;AAEZ,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,OAAO,CAAC,IACzD,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GACzD,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GACnC,KAAK,CAAC;AAEZ,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,SAAS,CAAC,GACtD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,CAAC,SAAS,GAAG,MAAM,MAAM,KAAK,MAAM,KAAK,KAAK,MAAM,IAAI,EAAE,GACxD;KAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM;CAAE,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,GACjD,CAAC,SAAS,GAAG,MAAM,MAAM,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,GACvD;KAAG,CAAC,IAAI,KAAK,GAAG,MAAM;CAAE,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,GAChD,CAAC,SAAS,GAAG,MAAM,MAAM,KAAK,MAAM,KAAK,EAAE,GACzC;KAAG,CAAC,IAAI,KAAK,GAAG,MAAM;CAAE,GACxB,KAAK,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { UrlParser, ViewPaths } from "./types";
2
+ type Options<T extends ViewPaths> = UrlParser<T> extends never ? {
3
+ search?: Record<string, string | number | boolean | undefined | null>;
4
+ shallow?: boolean;
5
+ } : {
6
+ search?: Record<string, string | number | boolean | undefined | null>;
7
+ params: UrlParser<T>;
8
+ shallow?: boolean;
9
+ };
10
+ export declare function useRouter(): {
11
+ push: <T extends ViewPaths>(path: T, ...args: UrlParser<T> extends never ? [options?: Options<T>] : [options: Options<T>]) => Promise<void>;
12
+ replace: <T extends ViewPaths>(path: T, ...args: UrlParser<T> extends never ? [options?: Options<T>] : [options: Options<T>]) => Promise<void>;
13
+ };
14
+ export {};
15
+ //# sourceMappingURL=useRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRouter.d.ts","sourceRoot":"","sources":["../../client/useRouter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpD,KAAK,OAAO,CAAC,CAAC,SAAS,SAAS,IAC9B,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,GACtB;IACE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACD;IACE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IACtE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAER,wBAAgB,SAAS;WAKP,CAAC,SAAS,SAAS,QACzB,CAAC,WACE,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,GAC/B,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GACtB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;cAJb,CAAC,SAAS,SAAS,QACzB,CAAC,WACE,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,GAC/B,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GACtB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;EAqD9B"}
@@ -0,0 +1,2 @@
1
+ export declare function useSearchParams(): readonly [URLSearchParams, (newSearchParams: URLSearchParams | ((searchParams: URLSearchParams) => URLSearchParams), shallow?: boolean) => void];
2
+ //# sourceMappingURL=useSearchParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSearchParams.d.ts","sourceRoot":"","sources":["../../client/useSearchParams.ts"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,iDAMvB,eAAe,GACf,CAAC,CAAC,YAAY,EAAE,eAAe,KAAK,eAAe,CAAC,8BAiB3D"}
@@ -41,7 +41,7 @@ export declare class ViewRouter {
41
41
  }
42
42
  type ViewRouteParser<T, Prefix extends PropertyKey = ""> = T extends ViewRoute<infer Input, infer Output, infer Params> ? KeyAndValue<`view:${Prefix & string}`, ViewHandler<Input, Output, Params>> : never;
43
43
  type LayoutRouteParser<T, Prefix extends PropertyKey = ""> = T extends LayoutRoute<infer Routes, infer I, infer O, infer P> ? RoutesParser<Routes, Prefix> | KeyAndValue<`layout:${Prefix & string}`, ViewHandler<I, O, P>> : never;
44
- type ParsePrefixAndKey<P extends PropertyKey, K extends PropertyKey> = `${P & string}${K & string}` extends "//" ? "/" : `${P & string}${K & string}` extends `${infer U}//${infer T}` ? `${U}/${T}` : `${P & string}${K & string}` extends `${infer U}/` ? U : `${P & string}${K & string}`;
44
+ type ParsePrefixAndKey<P extends PropertyKey, K extends PropertyKey, U = `${P & string}${K & string}`> = U extends "//" ? "/" : U extends `${infer T1}//${infer T2}` ? `${T1}/${T2}` : U extends `${infer T1}/${infer T2}/` ? `${T1}/${T2}` : U;
45
45
  type RouterInstanceParser<T extends new () => ViewRouter, Prefix extends PropertyKey = ""> = RoutesParser<InstanceType<T>["routes"], Prefix>;
46
46
  type RoutesParser<T extends ViewRoutes, Prefix extends PropertyKey = "", K extends keyof T = keyof T> = K extends any ? T[K] extends new () => ViewRouter ? RouterInstanceParser<T[K], ParsePrefixAndKey<Prefix, K>> : T[K] extends LayoutRoute<any, any, any, any> ? LayoutRouteParser<T[K], ParsePrefixAndKey<Prefix, K>> : T[K] extends ViewRoute<any, any, any> ? ViewRouteParser<T[K], ParsePrefixAndKey<Prefix, K>> : never : never;
47
47
  export type CreateViewRPC<T extends ViewRouter, Prefix extends PropertyKey = ""> = KeyAndValueToObject<RoutesParser<T["routes"], Prefix>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ViewRouter.d.ts","sourceRoot":"","sources":["../../http/ViewRouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ViewRouter.d.ts","sourceRoot":"","sources":["../../http/ViewRouter.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import"../chunk-a5c18c07abe8fd9c.js";class x{requests={};static kind="controller";constructor(){}}class C extends x{constructor(){super(...arguments)}}function f(e){return typeof e==="function"&&e.prototype!==void 0}var k=function(e){return f(e)};class l{e;t;r;middlewares=[];constructor(e,t,r){this.method=e;this.handler=t;this.methodName=r;this.handler=t,this.methodName=r,this.method=e}run(e){let t=e;if(k(this.handler)){const r=new this.handler,n=r[this.methodName].bind(r);return t=r.requests[this.methodName]?new r.requests[this.methodName](e.rawRequest,e.params):t,n(t)}else return this.handler(e)}middleware(e){return this.middlewares=e,this}}class H{constructor(...e){return new l(...e)}}class P{routes={};middlewares=[];middleware(e){}get(e,t){return new l("GET",e,t)}post(e,t){return new l("POST",e,t)}put(e,t){return new l("PUT",e,t)}patch(e,t){return new l("PATCH",e,t)}delete(e,t){return new l("DELETE",e,t)}resource(e){class t extends P{constructor(){super(...arguments)}routes={"/":{list:this.get(e,"list"),create:this.post(e,"create")},"/:id":{show:this.get(e,"show"),update:this.put(e,"update"),delete:this.delete(e,"delete")}}}return t}file(e,t){return new H("GET",e,t)}}class g{e;middlewares=[];handler;constructor(e,t){this.viewPath=e;if(!t)this.handler=()=>({});else if(typeof t==="function")this.handler=t;else{const[r,n]=t,s=new r,o=s[n].bind(s);this.handler=(a)=>{let i=a;return i=s.requests[n]?new s.requests[n](a.rawRequest,a.params):i,o(a)}}}async run(e){return{[this.viewPath]:await this.handler(e)}}middleware(e){return this.middlewares=e,this}}class K{e;children;middlewares=[];handler=()=>({});constructor(e,t,r){this.viewPath=e;if(typeof t==="function")this.handler=t,this.children=class extends p{routes=r??{}};else if(Array.isArray(t)){const[n,s]=t,o=new n,a=o[s].bind(o);this.handler=(i)=>{let w=i;return w=o.requests[s]?new o.requests[s](i.rawRequest,i.params):w,a(i)},this.children=class extends p{routes=r??{}}}else this.children=class extends p{routes=t},this.handler=()=>({})}async run(e){return{[this.viewPath]:await this.handler(e)}}middleware(e){return this.middlewares=e,this}}class p{middlewares=[];routes={};view(e,t){return new g(e,t)}layout(e,t,r){return new K(e,t,r)}}var J="GEMI_REQUEST_BREAKER_ERROR";class u extends Error{constructor(){super(...arguments)}kind="GEMI_REQUEST_BREAKER_ERROR";payload={api:{},view:{}}}class d extends u{errors={};constructor(e){super("Validation error");this.name="ValidationError",this.errors=e,this.payload={api:{status:400,data:{error:{kind:"validation_error",messages:e}},headers:{"Content-Type":"application/json"}},view:{status:400}}}}import{AsyncLocalStorage as v} from"async_hooks";class T{e;t;r;constructor(e,t,r={}){this.name=e;this.value=t;this.options=r}toString(){return[`${this.name}=${this.value}`,this.options.maxAge?`Max-Age=${this.options.maxAge}`:"",this.options.httpOnly?"HttpOnly":"",this.options.secure?"Secure":"",this.options.sameSite?`SameSite=${this.options.sameSite}`:"SameSite=Strict",this.options.path?`Path=${this.options.path}`:"Path=/",this.options.domain?`Domain=${this.options.domain}`:"",this.options.expires?`Expires=${this.options.expires.toUTCString()}`:"",this.options.partitioned?"Partitioned":""].filter((e)=>e!=="").join("; ")}}var m=new v;class O{cookies=new Set;user=null;req=null;constructor(){}setCookie(e,t,r={}){this.cookies.add(new T(e,t,r))}setUser(e){this.user=e}setRequest(e){this.req=e}}class c{static getStore(){return m.getStore()}static setRequest(e){m.getStore().req=e}static async run(e){return m.run(new O,e)}}var L=function(e){const[t,r]=e.split(":");switch(t){case"required":return(n)=>{return n!==null&&n!==void 0&&n?.length>0};case"password":return(n)=>{return/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,}$/.test(n)};case"number":return(n)=>{if(typeof n!=="number")return!1;return!isNaN(n)};case"min":return(n)=>{return n?.length>=parseInt(r)};case"max":return(n)=>{return n?.length<=parseInt(r)};case"email":return(n)=>{return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)};default:return()=>!0}};class I{e;constructor(e){this.data=e}get(e){return this.data[e]}set(e,t){this.data[e]=t}has(e){return this.data[e]!==void 0}toJSON(){return this.data}}class M{rawRequest;headers;cookies;schema={};params;ctx=c.getStore();constructor(e,t){this.params=t,this.rawRequest=e,this.headers=e.headers;const r=this.rawRequest.headers.get("Cookie"),n=new Map;if(r){const s=r.split(";");for(let o of s){const[a,i]=o.split("=");n.set(a.trim(),i.trim())}}this.cookies=n}refine(e){return{}}async parseBody(){const e=new I({});if(this.rawRequest.headers.get("Content-Type")==="application/json"){const t=await this.rawRequest.json();for(let[r,n]of Object.entries(t))e.set(r,n)}if(this.rawRequest.headers.get("Content-Type")==="application/x-www-form-urlencoded"){const t=await this.rawRequest.formData();for(let[r,n]of t)e.set(r,n)}if(this.rawRequest.headers.get("Content-Type").startsWith("multipart/form-data")){const t=await this.rawRequest.formData();for(let[r,n]of t)if(e.has(r)){const s=e.get(r);if(Array.isArray(s))s.push(n),e.set(r,s);else e.set(r,[s,n])}else e.set(r,n)}return e}validateInput(e){const t={};for(let[r,n]of Object.entries(this.schema))for(let[s,o]of Object.entries(n))if(!L(s)(e.get(r))){if(!t[r])t[r]=[];if(s==="required"){t[r]=[String(o)];break}else t[r].push(String(o))}for(let[r,n]of Object.entries(this.refine(e.toJSON())??{})){if(!t[r])t[r]=[];t[r]=[...t[r],n]}if(Object.keys(t).length>0)throw new d(t);else return e}async input(){return this.validateInput(await this.parseBody())}async safeInput(){const e=await this.parseBody();try{return this.validateInput(e),{isValid:!0,errors:{},input:e}}catch(t){if(!(t instanceof d))throw t;return{isValid:!1,errors:t.errors,input:e}}}async terminate(e){throw"not implemented"}}class h{async run(e){return{}}}function U(e){const t=e.headers.get("cookie");if(!t)return new Map;const r=new Map,n=t.split(";");for(let s of n){const[o,a]=s.split("=");r.set(o.trim(),a)}return r}class b{aliases={}}import{AsyncLocalStorage as _} from"async_hooks";var q=new _;class R{static getStore=()=>q.getStore()}class E extends u{error;constructor(e="Not authorized"){super("Authentication error");this.name="AuthenticationError",this.error=e,this.payload={api:{status:401,data:{error:this.error}},view:{}}}}class A extends u{error;constructor(e="Insufficient permissions"){super("Authentication error");this.name="AuthenticationError",this.error=e,this.payload={api:{status:401,data:{error:this.error}},view:{}}}}class y extends u{constructor(){super("Authentication error");this.name="AuthenticationError"}payload={api:{status:401,data:{error:"Authentication error"}},view:{status:302,headers:{"Cache-Control":"private, no-cache, no-store, max-age=0, must-revalidate",Location:"/auth/sign-in"}}}}class V extends h{constructor(){super(...arguments)}async run(e){const t=c.getStore(),r=t.req.cookies.get("access_token");if(!r)throw new y;let n=t.user;if(!n){const s=await R.getStore().authenticationServiceProvider.adapter.findSession({token:r,userAgent:t.req.headers.get("User-Agent")});if(!s)throw new y;n=s?.user,t.setUser(n)}return{}}}class S{policiesList={};constructor(){const e=this.register();for(let t of e){const r=new t;this.policiesList[t.name]=r}}register(){return[]}}class ${all(e,t){return!0}}export{U as getCookies,p as ViewRouter,d as ValidationError,C as ResourceController,u as RequestBreakerError,S as PoliciesServiceProvider,$ as Policies,b as MiddlewareServiceProvider,h as Middleware,A as InsufficientPermissionsError,M as HttpRequest,x as Controller,E as AuthorizationError,V as AuthenticationMiddleware,y as AuthenticationError,P as ApiRouter};export{x as a,f as b,P as c,p as d,J as e,u as f,c as g,M as h,b as i,q as j,R as k,E as l,A as m,y as n,S as o};
2
+ import"../chunk-a5c18c07abe8fd9c.js";class h{requests={};static kind="controller";constructor(){}}class C extends h{constructor(){super(...arguments)}}function f(e){return typeof e==="function"&&e.prototype!==void 0}var $=function(e){return f(e)};class l{e;t;r;middlewares=[];constructor(e,t,r){this.method=e;this.handler=t;this.methodName=r;this.handler=t,this.methodName=r,this.method=e}run(e){let t=e;if($(this.handler)){const r=new this.handler,n=r[this.methodName].bind(r);return t=r.requests[this.methodName]?new r.requests[this.methodName](e.rawRequest,e.params):t,n(t)}else return this.handler(e)}middleware(e){return this.middlewares=e,this}}class H{constructor(...e){return new l(...e)}}class x{routes={};middlewares=[];middleware(e){}get(e,t){return new l("GET",e,t)}post(e,t){return new l("POST",e,t)}put(e,t){return new l("PUT",e,t)}patch(e,t){return new l("PATCH",e,t)}delete(e,t){return new l("DELETE",e,t)}resource(e){class t extends x{constructor(){super(...arguments)}routes={"/":{list:this.get(e,"list"),create:this.post(e,"create")},"/:id":{show:this.get(e,"show"),update:this.put(e,"update"),delete:this.delete(e,"delete")}}}return t}file(e,t){return new H("GET",e,t)}}class g{e;middlewares=[];handler;constructor(e,t){this.viewPath=e;if(!t)this.handler=()=>({});else if(typeof t==="function")this.handler=t;else{const[r,n]=t,s=new r,o=s[n].bind(s);this.handler=(a)=>{let i=a;return i=s.requests[n]?new s.requests[n](a.rawRequest,a.params):i,o(a)}}}async run(e){return{[this.viewPath]:await this.handler(e)}}middleware(e){return this.middlewares=e,this}}class K{e;children;middlewares=[];handler=()=>({});constructor(e,t,r){this.viewPath=e;if(typeof t==="function")this.handler=t,this.children=class extends p{routes=r??{}};else if(Array.isArray(t)){const[n,s]=t,o=new n,a=o[s].bind(o);this.handler=(i)=>{let w=i;return w=o.requests[s]?new o.requests[s](i.rawRequest,i.params):w,a(i)},this.children=class extends p{routes=r??{}}}else this.children=class extends p{routes=t},this.handler=()=>({})}async run(e){return{[this.viewPath]:await this.handler(e)}}middleware(e){return this.middlewares=e,this}}class p{middlewares=[];routes={};view(e,t){return new g(e,t)}layout(e,t,r){return new K(e,t,r)}}var J="GEMI_REQUEST_BREAKER_ERROR";class u extends Error{constructor(){super(...arguments)}kind="GEMI_REQUEST_BREAKER_ERROR";payload={api:{},view:{}}}class d extends u{errors={};constructor(e){super("Validation error");this.name="ValidationError",this.errors=e,this.payload={api:{status:400,data:{error:{kind:"validation_error",messages:e}},headers:{"Content-Type":"application/json"}},view:{status:400}}}}import{AsyncLocalStorage as v} from"async_hooks";class P{e;t;r;constructor(e,t,r={}){this.name=e;this.value=t;this.options=r}toString(){return[`${this.name}=${this.value}`,this.options.maxAge?`Max-Age=${this.options.maxAge}`:"",this.options.httpOnly?"HttpOnly":"",this.options.secure?"Secure":"",this.options.sameSite?`SameSite=${this.options.sameSite}`:"SameSite=Strict",this.options.path?`Path=${this.options.path}`:"Path=/",this.options.domain?`Domain=${this.options.domain}`:"",this.options.expires?`Expires=${this.options.expires.toUTCString()}`:"",this.options.partitioned?"Partitioned":""].filter((e)=>e!=="").join("; ")}}var m=new v;class O{cookies=new Set;user=null;req=null;constructor(){}setCookie(e,t,r={}){this.cookies.add(new P(e,t,r))}setUser(e){this.user=e}setRequest(e){this.req=e}}class c{static getStore(){return m.getStore()}static setRequest(e){m.getStore().req=e}static async run(e){return m.run(new O,e)}}var L=function(e){const[t,r]=e.split(":");switch(t){case"required":return(n)=>{return n!==null&&n!==void 0&&n?.length>0};case"password":return(n)=>{return/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,}$/.test(n)};case"number":return(n)=>{if(typeof n!=="number")return!1;return!isNaN(n)};case"min":return(n)=>{return n?.length>=parseInt(r)};case"max":return(n)=>{return n?.length<=parseInt(r)};case"email":return(n)=>{return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)};default:return()=>!0}};class I{e;constructor(e){this.data=e}get(e){return this.data[e]}set(e,t){this.data[e]=t}has(e){return this.data[e]!==void 0}toJSON(){return this.data}}class M{rawRequest;headers;cookies;schema={};params;ctx=c.getStore();constructor(e,t){this.params=t,this.rawRequest=e,this.headers=e.headers;const r=this.rawRequest.headers.get("Cookie"),n=new Map;if(r){const s=r.split(";");for(let o of s){const[a,i]=o.split("=");n.set(a.trim(),i.trim())}}this.cookies=n}refine(e){return{}}async parseBody(){const e=new I({});if(this.rawRequest.headers.get("Content-Type")==="application/json"){const t=await this.rawRequest.json();for(let[r,n]of Object.entries(t))e.set(r,n)}if(this.rawRequest.headers.get("Content-Type")==="application/x-www-form-urlencoded"){const t=await this.rawRequest.formData();for(let[r,n]of t)e.set(r,n)}if(this.rawRequest.headers.get("Content-Type").startsWith("multipart/form-data")){const t=await this.rawRequest.formData();for(let[r,n]of t)if(e.has(r)){const s=e.get(r);if(Array.isArray(s))s.push(n),e.set(r,s);else e.set(r,[s,n])}else e.set(r,n)}return e}validateInput(e){const t={};for(let[r,n]of Object.entries(this.schema))for(let[s,o]of Object.entries(n))if(!L(s)(e.get(r))){if(!t[r])t[r]=[];if(s==="required"){t[r]=[String(o)];break}else t[r].push(String(o))}for(let[r,n]of Object.entries(this.refine(e.toJSON())??{})){if(!t[r])t[r]=[];t[r]=[...t[r],n]}if(Object.keys(t).length>0)throw new d(t);else return e}async input(){return this.validateInput(await this.parseBody())}async safeInput(){const e=await this.parseBody();try{return this.validateInput(e),{isValid:!0,errors:{},input:e}}catch(t){if(!(t instanceof d))throw t;return{isValid:!1,errors:t.errors,input:e}}}async terminate(e){throw"not implemented"}}class T{async run(e){return{}}}function U(e){const t=e.headers.get("cookie");if(!t)return new Map;const r=new Map,n=t.split(";");for(let s of n){const[o,a]=s.split("=");r.set(o.trim(),a)}return r}class b{aliases={}}import{AsyncLocalStorage as _} from"async_hooks";var q=new _;class R{static getStore=()=>q.getStore()}class E extends u{error;constructor(e="Not authorized"){super("Authentication error");this.name="AuthenticationError",this.error=e,this.payload={api:{status:401,data:{error:this.error}},view:{}}}}class A extends u{error;constructor(e="Insufficient permissions"){super("Authentication error");this.name="AuthenticationError",this.error=e,this.payload={api:{status:401,data:{error:this.error}},view:{}}}}class y extends u{constructor(){super("Authentication error");this.name="AuthenticationError"}payload={api:{status:401,data:{error:"Authentication error"}},view:{status:302,headers:{"Cache-Control":"private, no-cache, no-store, max-age=0, must-revalidate",Location:"/auth/sign-in"}}}}class V extends T{constructor(){super(...arguments)}async run(e){const t=c.getStore(),r=t.req.cookies.get("access_token");if(!r)throw new y;let n=t.user;if(!n){const s=await R.getStore().authenticationServiceProvider.adapter.findSession({token:r,userAgent:t.req.headers.get("User-Agent")});if(!s)throw new y;n=s?.user,t.setUser(n)}return{}}}class S{policiesList={};constructor(){const e=this.register();for(let t of e){const r=new t;this.policiesList[t.name]=r}}register(){return[]}}class k{all(e,t){return!0}}export{U as getCookies,p as ViewRouter,d as ValidationError,C as ResourceController,u as RequestBreakerError,S as PoliciesServiceProvider,k as Policies,b as MiddlewareServiceProvider,T as Middleware,A as InsufficientPermissionsError,M as HttpRequest,h as Controller,E as AuthorizationError,V as AuthenticationMiddleware,y as AuthenticationError,x as ApiRouter};export{h as a,f as b,x as c,p as d,J as e,u as f,c as g,M as h,b as i,q as j,R as k,E as l,A as m,y as n,S as o};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{v as T,w as C} from"../chunk-d9a84b9122601b72.js";import{x as E} from"../chunk-a5c18c07abe8fd9c.js";import{wa as L} from"../chunk-bf4fa1d9864332a8.js";import S from"path";function g(r){return r.map((t,c)=>{if(t.isDev)return x("style",{type:"text/css","data-vite-dev-id":t.id,children:t.content},t.id,!1,void 0,this);else return x("style",{type:"text/css",children:t.content},c,!1,void 0,this)})}import{jsxDEV as x} from"react/jsx-dev-runtime";var P=E(L(),1);async function w(r){const t=new URL(r.url),c=t.searchParams.get("url"),u=Number(t.searchParams.get("w")),s=Number(t.searchParams.get("h")),i=t.searchParams.get("fit")??"cover",o=Number(t.searchParams.get("q"));if(!c)return new Response(JSON.stringify({error:"url query parameter is required"}),{headers:{"Content-Type":"application/json"},status:404});const p=`${c.startsWith("http")?"":`http://localhost:${process.env.PORT||5173}`}${c}`,e=await fetch(p);if(!e.ok)return new Response(JSON.stringify({error:"Image not found",info:p}),{headers:{"Content-Type":"application/json"},status:404});const n=Buffer.from(await e.arrayBuffer()),f=await P.default(n).resize(u>0?u:void 0,s>0?s:void 0,{fit:i}).webp({quality:o>0?o:80,force:!0}).toBuffer();return e.headers.delete("Content-Type"),e.headers.delete("Content-Length"),new Response(f,{headers:{"Content-Type":"image/webp","Content-Length":`${f.byteLength}`,...e.headers.toJSON()}})}function R(r){return`
2
+ import{v as T,w as C} from"../chunk-d9a84b9122601b72.js";import{x as E} from"../chunk-a5c18c07abe8fd9c.js";import{va as L} from"../chunk-7399f06d840a1449.js";import S from"path";function g(r){return r.map((t,c)=>{if(t.isDev)return x("style",{type:"text/css","data-vite-dev-id":t.id,children:t.content},t.id,!1,void 0,this);else return x("style",{type:"text/css",children:t.content},c,!1,void 0,this)})}import{jsxDEV as x} from"react/jsx-dev-runtime";var P=E(L(),1);async function w(r){const t=new URL(r.url),c=t.searchParams.get("url"),u=Number(t.searchParams.get("w")),s=Number(t.searchParams.get("h")),i=t.searchParams.get("fit")??"cover",o=Number(t.searchParams.get("q"));if(!c)return new Response(JSON.stringify({error:"url query parameter is required"}),{headers:{"Content-Type":"application/json"},status:404});const p=`${c.startsWith("http")?"":`http://localhost:${process.env.PORT||5173}`}${c}`,e=await fetch(p);if(!e.ok)return new Response(JSON.stringify({error:"Image not found",info:p}),{headers:{"Content-Type":"application/json"},status:404});const n=Buffer.from(await e.arrayBuffer()),f=await P.default(n).resize(u>0?u:void 0,s>0?s:void 0,{fit:i}).webp({quality:o>0?o:80,force:!0}).toBuffer();return e.headers.delete("Content-Type"),e.headers.delete("Content-Length"),new Response(f,{headers:{"Content-Type":"image/webp","Content-Length":`${f.byteLength}`,...e.headers.toJSON()}})}function R(r){return`
3
3
  <!DOCTYPE html>
4
4
  <html lang="en">
5
5
  <head>