@pracht/core 0.2.0 → 0.2.2

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/dist/index.d.mts CHANGED
@@ -35,8 +35,10 @@ interface TimeRevalidatePolicy {
35
35
  }
36
36
  type RouteRevalidate = TimeRevalidatePolicy;
37
37
  type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS";
38
- type ApiRouteHandler<TContext = RegisteredContext> = (args: BaseRouteArgs<TContext>) => MaybePromise<Response>;
38
+ type ApiRouteArgs<TContext = RegisteredContext> = BaseRouteArgs<TContext>;
39
+ type ApiRouteHandler<TContext = RegisteredContext> = (args: ApiRouteArgs<TContext>) => MaybePromise<Response>;
39
40
  interface ApiRouteModule<TContext = any> {
41
+ default?: ApiRouteHandler<TContext>;
40
42
  GET?: ApiRouteHandler<TContext>;
41
43
  POST?: ApiRouteHandler<TContext>;
42
44
  PUT?: ApiRouteHandler<TContext>;
@@ -393,4 +395,4 @@ interface InitClientRouterOptions {
393
395
  }
394
396
  declare function initClientRouter(options: InitClientRouterOptions): Promise<void>;
395
397
  //#endregion
396
- export { type ApiConfig, type ApiRouteHandler, type ApiRouteMatch, type ApiRouteModule, type BaseRouteArgs, type DataModule, type ErrorBoundaryProps, Form, type FormProps, type GroupDefinition, type GroupMeta, type HandlePrachtRequestOptions, type HeadArgs, type HeadMetadata, type HttpMethod, type ISGManifestEntry, type InitClientRouterOptions, type LoaderArgs, type LoaderData, type LoaderFn, type Location, type MiddlewareArgs, type MiddlewareFn, type MiddlewareModule, type MiddlewareResult, type ModuleImporter, type ModuleRef, type ModuleRegistry, type NavigateFn, type PrachtApp, type PrachtAppConfig, PrachtHttpError, type PrachtHydrationState, type PrachtRuntimeDiagnosticPhase, type PrachtRuntimeDiagnostics, PrachtRuntimeProvider, type PrefetchStrategy, type PrerenderAppOptions, type PrerenderAppResult, type PrerenderResult, type Register, type RenderMode, type ResolvedApiRoute, type ResolvedPrachtApp, type ResolvedRoute, type RouteComponentProps, type RouteConfig, type RouteDefinition, type RouteMatch, type RouteMeta, type RouteModule, type RouteParams, type RouteRevalidate, type RouteStateResult, type RouteTreeNode, type SerializedRouteError, type ShellModule, type ShellProps, type StartAppOptions, Suspense, type TimeRevalidatePolicy, applyDefaultSecurityHeaders, buildPathFromSegments, defineApp, forwardRef, group, handlePrachtRequest, initClientRouter, lazy, matchApiRoute, matchAppRoute, prerenderApp, readHydrationState, resolveApiRoutes, resolveApp, route, startApp, timeRevalidate, useIsHydrated, useLocation, useNavigate, useParams, useRevalidate, useRevalidateRoute, useRouteData };
398
+ export { type ApiConfig, type ApiRouteArgs, type ApiRouteHandler, type ApiRouteMatch, type ApiRouteModule, type BaseRouteArgs, type DataModule, type ErrorBoundaryProps, Form, type FormProps, type GroupDefinition, type GroupMeta, type HandlePrachtRequestOptions, type HeadArgs, type HeadMetadata, type HttpMethod, type ISGManifestEntry, type InitClientRouterOptions, type LoaderArgs, type LoaderData, type LoaderFn, type Location, type MiddlewareArgs, type MiddlewareFn, type MiddlewareModule, type MiddlewareResult, type ModuleImporter, type ModuleRef, type ModuleRegistry, type NavigateFn, type PrachtApp, type PrachtAppConfig, PrachtHttpError, type PrachtHydrationState, type PrachtRuntimeDiagnosticPhase, type PrachtRuntimeDiagnostics, PrachtRuntimeProvider, type PrefetchStrategy, type PrerenderAppOptions, type PrerenderAppResult, type PrerenderResult, type Register, type RenderMode, type ResolvedApiRoute, type ResolvedPrachtApp, type ResolvedRoute, type RouteComponentProps, type RouteConfig, type RouteDefinition, type RouteMatch, type RouteMeta, type RouteModule, type RouteParams, type RouteRevalidate, type RouteStateResult, type RouteTreeNode, type SerializedRouteError, type ShellModule, type ShellProps, type StartAppOptions, Suspense, type TimeRevalidatePolicy, applyDefaultSecurityHeaders, buildPathFromSegments, defineApp, forwardRef, group, handlePrachtRequest, initClientRouter, lazy, matchApiRoute, matchAppRoute, prerenderApp, readHydrationState, resolveApiRoutes, resolveApp, route, startApp, timeRevalidate, useIsHydrated, useLocation, useNavigate, useParams, useRevalidate, useRevalidateRoute, useRouteData };
package/dist/index.mjs CHANGED
@@ -28,30 +28,33 @@ function forwardRef(fn) {
28
28
  }
29
29
  //#endregion
30
30
  //#region src/hydration.ts
31
+ const MODE_HYDRATE = 32;
31
32
  let _hydrating = false;
32
33
  let _suspensionCount = 0;
33
34
  let _hydrated = false;
34
35
  const oldCatchError = options.__e;
35
36
  options.__e = (err, newVNode, oldVNode, errorInfo) => {
36
37
  if (_hydrating && !_hydrated && err && err.then) {
37
- _suspensionCount++;
38
- let settled = false;
39
- const onSettled = () => {
40
- if (settled) return;
41
- settled = true;
42
- _suspensionCount--;
43
- };
44
- err.then(onSettled, onSettled);
38
+ if (!!(newVNode && newVNode.__u && newVNode.__u & MODE_HYDRATE) || !!(newVNode && newVNode.__h)) {
39
+ _suspensionCount++;
40
+ let settled = false;
41
+ const onSettled = () => {
42
+ if (settled) return;
43
+ settled = true;
44
+ _suspensionCount--;
45
+ };
46
+ err.then(onSettled, onSettled);
47
+ }
45
48
  }
46
49
  if (oldCatchError) oldCatchError(err, newVNode, oldVNode, errorInfo);
47
50
  };
48
- const oldDiffed = options.diffed;
49
- options.diffed = (vnode) => {
51
+ const oldCommit = options.__c;
52
+ options.__c = (vnode, commitQueue) => {
50
53
  if (_hydrating && !_hydrated && _suspensionCount <= 0) {
51
54
  _hydrated = true;
52
55
  _hydrating = false;
53
56
  }
54
- if (oldDiffed) oldDiffed(vnode);
57
+ if (oldCommit) oldCommit(vnode, commitQueue);
55
58
  };
56
59
  /**
57
60
  * Mark the start of a hydration pass. Call this right before `hydrate()`.
@@ -230,7 +233,7 @@ async function handlePrachtRequest(options) {
230
233
  currentPhase = "api";
231
234
  const apiModule = await resolveRegistryModule(registry.apiModules, apiMatch.route.file);
232
235
  if (!apiModule) throw new Error("API route module not found");
233
- const handler = apiModule[options.request.method.toUpperCase()];
236
+ const handler = apiModule[options.request.method.toUpperCase()] ?? apiModule.default;
234
237
  if (!handler) return withDefaultSecurityHeaders(new Response("Method not allowed", {
235
238
  status: 405,
236
239
  headers: { "content-type": "text/plain; charset=utf-8" }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pracht/core",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "homepage": "https://github.com/JoviDeCroock/pracht/tree/main/packages/framework",
5
5
  "bugs": {
6
6
  "url": "https://github.com/JoviDeCroock/pracht/issues"