@jhxdev/express 0.1.0

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/index.d.ts ADDED
@@ -0,0 +1,131 @@
1
+ import { ElementType, ComponentPropsWithoutRef, PropsWithChildren, JSX, ReactNode } from 'react';
2
+ import { Response, Request, Express } from 'express';
3
+ import * as jhx from 'jhx';
4
+ import { JhxError, JhxConfig, JhxProps as JhxProps$1, JhxDomProps as JhxDomProps$1 } from 'jhx';
5
+ export { ConditionalFunction, DomEventProps, DomObjects, Duration, HtmxAbortEvent, HtmxAfterOnLoadEvent, HtmxAfterProcessNodeEvent, HtmxAfterRequestEvent, HtmxAfterSettleEvent, HtmxAfterSwapEvent, HtmxAjaxEtc, HtmxAjaxHandler, HtmxAttribute, HtmxBeforeCleanupElementEvent, HtmxBeforeHistorySaveEvent, HtmxBeforeOnLoadEvent, HtmxBeforeProcessNodeEvent, HtmxBeforeRequestEvent, HtmxBeforeSendEvent, HtmxBeforeSwapEvent, HtmxBeforeTransitionEvent, HtmxCacheItem, HtmxClass, HtmxConfig, HtmxConfigRequestEvent, HtmxConfirmEvent, HtmxDefaultExtension, HtmxDomEvent, HtmxElementValidationError, HtmxEvent, HtmxEventAttribute, HtmxEventDetail, HtmxEventName, HtmxEventProps, HtmxExtension, HtmxExtensionMetadata, HtmxHistoryCacheErrorEvent, HtmxHistoryCacheHitEvent, HtmxHistoryCacheMissEvent, HtmxHistoryCacheMissLoadErrorEvent, HtmxHistoryCacheMissLoadEvent, HtmxHistoryRestoreEvent, HtmxHttpMethod, HtmxHttpVerb, HtmxInstance, HtmxIssueRequest, HtmxLoadEvent, HtmxMethodAttribute, HtmxNoSseSourceErrorEvent, HtmxOnLoadErrorEvent, HtmxOobAfterSwapEvent, HtmxOobBeforeSwapEvent, HtmxOobErrorNoTargetEvent, HtmxPathInfo, HtmxPromptEvent, HtmxProps, HtmxPushedIntoHistoryEvent, HtmxReplacedInHistoryEvent, HtmxRequestConfig, HtmxRequestHeader, HtmxResponseErrorEvent, HtmxResponseHandlingConfig, HtmxResponseHeader, HtmxSendAbortEvent, HtmxSendErrorEvent, HtmxSettleInfo, HtmxSseErrorEvent, HtmxSseOpenEvent, HtmxSwapErrorEvent, HtmxSwapSpec, HtmxSwapStyle, HtmxSyncStrategy, HtmxTargetErrorEvent, HtmxTimeoutEvent, HtmxValidateUrlEvent, HtmxValidationFailedEvent, HtmxValidationHaltedEvent, HtmxValidationValidateEvent, HtmxXhrAbortEvent, HtmxXhrLoadendEvent, HtmxXhrLoadstartEvent, HtmxXhrProgressEvent, JhxDefaultConfig, JhxError, JhxEvaluableAttribute, JhxExtensionAttribute, JhxIndicatorAttribute, JhxInheritAttribute, JhxParamsAttribute, JhxRequestArgs, JhxRequestAttribute, JhxRequestError, JhxRouteProps, JhxSelectOobAttribute, JhxSwapAttribute, JhxSwapOobAttribute, JhxSwapScroll, JhxSwapShow, JhxSyncAttribute, JhxTargetAttribute, JhxTriggerAttribute, JhxTriggerAttribute_Intersect, JhxTriggerAttribute_Poll, JhxTriggerAttribute_Standard, JhxTriggerFrom, JhxTriggerQueue, JhxValsError, Logger, applyAttributes, attributesToString, htmx } from 'jhx';
6
+
7
+ type JhxServerErrorType = 'routes:invalid' | 'route:invalid-method' | 'route:invalid-path' | 'route:invalid-handler' | 'route:duplicate' | 'endpoint:invalid' | 'endpoint:malformed' | 'hash:invalid' | 'handler:error' | 'middleware:error';
8
+ interface JhxServerError extends Error {
9
+ type: JhxServerErrorType;
10
+ info: string;
11
+ message: string;
12
+ method?: string;
13
+ route?: string;
14
+ cause?: unknown;
15
+ }
16
+
17
+ type HttpMethodUpperCase = 'DELETE' | 'GET' | 'HEAD' | 'PATCH' | 'POST' | 'PUT' | 'OPTIONS' | 'PROPFIND' | 'PROPPATCH' | 'MKCOL' | 'COPY' | 'MOVE' | 'LOCK' | 'UNLOCK' | 'TRACE' | 'SEARCH' | 'REPORT' | 'MKCALENDAR' | (Uppercase<string> & {});
18
+ type HttpMethodLowerCase = Lowercase<HttpMethodUpperCase> | (Lowercase<string> & {});
19
+ type HttpMethod = HttpMethodUpperCase | HttpMethodLowerCase;
20
+ type JhxOnRegistered = (method: string, route: string) => void;
21
+ type JhxErrorType$1 = Error | JhxError | JhxServerError;
22
+ type ServerResolved<T> = Awaited<T>;
23
+ type ServerJhxHandler<TReturn, TReq, TRes> = TRes extends undefined ? (context: TReq, _?: TRes) => TReturn : (req: TReq, res: TRes) => TReturn;
24
+ type ServerJhxErrorHandler<TError extends JhxErrorType$1, TReturn, TReq, TRes> = TRes extends undefined ? (error: TError, context: TReq, _?: TRes) => TReturn : (error: TError, req: TReq, res: TRes) => TReturn;
25
+ type ServerJhxRenderHandler<TResolved, TRendered, TReq, TRes> = TRes extends undefined ? (payload: TResolved, context: TReq, _?: TRes) => TRendered : (payload: TResolved, request: TReq, response: TRes) => TRendered;
26
+ type ServerJhxRoute<TReturn, TReq, TRes, THandler extends ServerJhxHandler<TReturn, TReq, TRes>> = {
27
+ method: HttpMethodUpperCase;
28
+ route: string;
29
+ handler: THandler;
30
+ };
31
+ type ServerJhxPartialRoute<TReturn, TReq, TRes, THandler extends ServerJhxHandler<TReturn, TReq, TRes>> = {
32
+ method?: HttpMethod;
33
+ route: string;
34
+ handler: THandler;
35
+ };
36
+ type ServerCreateJhxConfig<TReturn, TResolved, TRendered, TError extends JhxErrorType$1, TReq, TRes, THandler extends ServerJhxHandler<TReturn, TReq, TRes>, TErrorHandler extends ServerJhxErrorHandler<TError, TReturn, TReq, TRes>, TRenderHandler extends ServerJhxRenderHandler<TResolved, TRendered, TReq, TRes>, TPartialRoute extends ServerJhxPartialRoute<TReturn, TReq, TRes, THandler>, TInstanceOptions = undefined> = JhxConfig & {
37
+ contentType?: string | false;
38
+ debug?: boolean;
39
+ errorHandler?: TErrorHandler;
40
+ middleware?: THandler | Array<THandler>;
41
+ notFoundHandler?: THandler;
42
+ onRegistered?: JhxOnRegistered;
43
+ prefix?: string;
44
+ renderError?: boolean;
45
+ renderMiddleware?: boolean;
46
+ renderNotFound?: boolean;
47
+ render?: 'static' | 'string' | TRenderHandler | false;
48
+ routes?: TPartialRoute | Array<TPartialRoute>;
49
+ trailingSlash?: 'slash' | 'no-slash' | 'both';
50
+ instanceOptions?: TInstanceOptions;
51
+ };
52
+ type ServerJhxProps<TDom extends object, TReturn, TReq, TRes, THandler extends ServerJhxHandler<TReturn, TReq, TRes>> = JhxProps$1<TDom> & {
53
+ handler?: THandler;
54
+ };
55
+ type ServerJhxDomProps<TDom extends object, TReturn, TReq, TRes, THandler extends ServerJhxHandler<TReturn, TReq, TRes>> = JhxDomProps$1<TDom> & {
56
+ handler?: THandler;
57
+ };
58
+
59
+ type NativeProps<TTag extends ElementType> = Omit<ComponentPropsWithoutRef<TTag>, 'children' | keyof ServerJhxProps<any, any, any, any, any>>;
60
+ type ServerJhxComponentProps<TDom extends object, TReturn, TReq, TRes, THandler extends ServerJhxHandler<TReturn, TReq, TRes>, TTag extends ElementType = 'div'> = ServerJhxProps<TDom, TReturn, TReq, TRes, THandler> & NativeProps<TTag> & {
61
+ jhxConfig?: Omit<JhxConfig, 'stringify'>;
62
+ as?: TTag;
63
+ };
64
+ type ServerJhxComponentType<TDom extends object, TReturn, TReq, TRes, THandler extends ServerJhxHandler<TReturn, TReq, TRes>> = <TTag extends ElementType = 'div'>(props: PropsWithChildren<ServerJhxComponentProps<TDom, TReturn, TReq, TRes, THandler, TTag>>) => JSX.Element;
65
+
66
+ declare const serverDefaultConfig: {
67
+ readonly contentType: "text/html";
68
+ readonly debug: false;
69
+ readonly middleware: readonly [];
70
+ readonly onRegistered: JhxOnRegistered;
71
+ readonly prefix: "/_jhx";
72
+ readonly render: (data: any, ..._args: any[]) => any;
73
+ readonly renderError: true;
74
+ readonly renderMiddleware: true;
75
+ readonly renderNotFound: true;
76
+ readonly trailingSlash: "both";
77
+ readonly logger: jhx.Logger;
78
+ readonly stringify: boolean;
79
+ readonly escape: boolean;
80
+ };
81
+
82
+ type RenderReturn = ArrayBufferView | ArrayBuffer | Buffer | Blob | Response | Record<string, any> | string | number | boolean | null | void;
83
+ type JhxRenderReturn = RenderReturn | Promise<RenderReturn>;
84
+ type JhxHandlerReturn = JhxRenderReturn | ReactNode | Promise<ReactNode>;
85
+ type JhxErrorType = Error | JhxError | JhxServerError;
86
+ type Resolved<TReturn = JhxHandlerReturn> = ServerResolved<TReturn>;
87
+ type JhxHandler<TReturn extends JhxHandlerReturn = JhxHandlerReturn, TRequest extends Request = Request, TResponse extends Response = Response> = ServerJhxHandler<TReturn, TRequest, TResponse>;
88
+ type JhxErrorHandler<TError extends JhxErrorType = JhxErrorType, TReturn extends JhxHandlerReturn = JhxHandlerReturn, TRequest extends Request = Request, TResponse extends Response = Response> = ServerJhxErrorHandler<TError, TReturn, TRequest, TResponse>;
89
+ type JhxRenderHandler<TResolved extends Resolved = Resolved, TReturn extends JhxRenderReturn = JhxRenderReturn, TRequest extends Request = Request, TResponse extends Response = Response> = ServerJhxRenderHandler<TResolved, TReturn, TRequest, TResponse>;
90
+ type JhxRoute<TReturn extends JhxHandlerReturn = JhxHandlerReturn, TRequest extends Request = Request, TResponse extends Response = Response> = ServerJhxRoute<TReturn, TRequest, TResponse, JhxHandler<TReturn, TRequest, TResponse>>;
91
+ type JhxPartialRoute<TReturn extends JhxHandlerReturn = JhxHandlerReturn, TRequest extends Request = Request, TResponse extends Response = Response> = ServerJhxPartialRoute<TReturn, TRequest, TResponse, JhxHandler<TReturn, TRequest, TResponse>>;
92
+ type CreateJhxConfig<TReturn extends JhxHandlerReturn = JhxHandlerReturn, TRendered extends JhxRenderReturn = JhxRenderReturn, TError extends JhxErrorType = JhxErrorType, TRequest extends Request = Request, TResponse extends Response = Response> = ServerCreateJhxConfig<TReturn, Resolved<TReturn>, TRendered, TError, TRequest, TResponse, JhxHandler<TReturn, TRequest, TResponse>, JhxErrorHandler<TError, TReturn, TRequest, TResponse>, JhxRenderHandler<Resolved<TReturn>, TRendered, TRequest, TResponse>, JhxPartialRoute<TReturn, TRequest, TResponse>> & {};
93
+ type JhxProps<TDom extends object = object, TReturn extends JhxHandlerReturn = JhxHandlerReturn, TRequest extends Request = Request, TResponse extends Response = Response> = ServerJhxProps<TDom, TReturn, TRequest, TResponse, JhxHandler<TReturn, TRequest, TResponse>>;
94
+ type JhxDomProps<TDom extends object = object, TReturn extends JhxHandlerReturn = JhxHandlerReturn, TRequest extends Request = Request, TResponse extends Response = Response> = ServerJhxDomProps<TDom, TReturn, TRequest, TResponse, JhxHandler<TReturn, TRequest, TResponse>>;
95
+ interface Jhx<TDomBase extends object = object, TReturn extends JhxHandlerReturn = JhxHandlerReturn, TRequest extends Request = Request, TResponse extends Response = Response, TBaseStringify extends boolean | undefined = undefined> {
96
+ <TDom extends object | TDomBase = TDomBase>(options: JhxDomProps<TDom, TReturn, TRequest, TResponse>, config: JhxConfig & {
97
+ stringify: true;
98
+ }): string;
99
+ <TDom extends object | TDomBase = TDomBase>(options: JhxProps<TDom, TReturn, TRequest, TResponse>, config: JhxConfig & {
100
+ stringify: false;
101
+ }): Record<string, string>;
102
+ <TDom extends object | TDomBase = TDomBase>(options: TBaseStringify extends true ? JhxDomProps<TDom, TReturn, TRequest, TResponse> : JhxProps<TDom, TReturn, TRequest, TResponse>, config?: JhxConfig): TBaseStringify extends true ? string : Record<string, string>;
103
+ <TDom extends object | TDomBase = TDomBase>(options: JhxProps<TDom, TReturn, TRequest, TResponse> | JhxDomProps<TDom, TReturn, TRequest, TResponse>, config?: JhxConfig): string | Record<string, string>;
104
+ addRoute(newRoute: JhxPartialRoute<TReturn, TRequest, TResponse>): void;
105
+ addRoutes(newRoutes: Array<JhxPartialRoute<TReturn, TRequest, TResponse>>): void;
106
+ clearRoutes(): void;
107
+ getRoute(method: string, path: string): JhxRoute<TReturn, TRequest, TResponse> | null;
108
+ getRoutes(): Array<JhxRoute<TReturn, TRequest, TResponse>>;
109
+ hasRoute(method: string, path: string): boolean;
110
+ removeRoute(method: string, path: string): boolean;
111
+ }
112
+ type JhxComponentProps<TDom extends object = object, TReturn extends JhxHandlerReturn = JhxHandlerReturn, TRequest extends Request = Request, TResponse extends Response = Response, TTag extends ElementType = 'div'> = ServerJhxComponentProps<TDom, TReturn, TRequest, TResponse, JhxHandler<TReturn, TRequest, TResponse>, TTag>;
113
+ type JhxComponentType<TDom extends object = object, TReturn extends JhxHandlerReturn = JhxHandlerReturn, TRequest extends Request = Request, TResponse extends Response = Response> = ServerJhxComponentType<TDom, TReturn, TRequest, TResponse, JhxHandler<TReturn, TRequest, TResponse>>;
114
+
115
+ declare const createJhx: <TDomBase extends object = object, TError extends JhxErrorType = JhxErrorType, TReturn extends JhxHandlerReturn = JhxHandlerReturn, TRequest extends Request = Request, TResponse extends Response = Response, TBaseStringify extends boolean | undefined = undefined>(express: Express, config?: CreateJhxConfig<TReturn, JhxRenderReturn, TError, TRequest, TResponse> & {
116
+ stringify?: TBaseStringify;
117
+ }) => {
118
+ jhx: Jhx<TDomBase, TReturn, TRequest, TResponse, TBaseStringify>;
119
+ JhxComponent: JhxComponentType<TDomBase, TReturn, TRequest, TResponse>;
120
+ };
121
+
122
+ declare const createJhxComponent: <TDom extends object = object, TReturn extends JhxHandlerReturn = JhxHandlerReturn, TRequest extends Request = Request, TResponse extends Response = Response>(jhx: Jhx<TDom, TReturn, TRequest, TResponse, any>) => JhxComponentType<TDom, TReturn, TRequest, TResponse>;
123
+
124
+ type CreateJhxDefaultConfig = Omit<typeof serverDefaultConfig, 'render'> & {
125
+ notFoundHandler: JhxHandler;
126
+ render: JhxRenderHandler;
127
+ };
128
+ declare const defaultConfig: CreateJhxDefaultConfig;
129
+
130
+ export { createJhx, createJhxComponent, defaultConfig };
131
+ export type { CreateJhxConfig, CreateJhxDefaultConfig, HttpMethod, HttpMethodLowerCase, HttpMethodUpperCase, Jhx, JhxComponentProps, JhxComponentType, JhxDomProps, JhxErrorHandler, JhxErrorType, JhxHandler, JhxHandlerReturn, JhxOnRegistered, JhxPartialRoute, JhxProps, JhxRenderHandler, JhxRenderReturn, JhxRoute, JhxServerError, JhxServerErrorType, Resolved };