baraqex 1.0.35 → 1.0.36
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/browser.js +635 -0
- package/dist/browser.js.map +7 -0
- package/dist/browser.package.json +4 -0
- package/dist/index.js +2024 -33
- package/dist/index.js.map +7 -1
- package/dist/server/index.js +1357 -432
- package/dist/server/index.js.map +7 -1
- package/dist/server/package.json +4 -0
- package/dist/wasm.js +86 -104
- package/dist/wasm.js.map +7 -1
- package/package.json +102 -86
- package/templates/ssr-template/esbuild.config.js +32 -3
- package/templates/ssr-template/package-lock.json +33 -1018
- package/templates/ssr-template/package.json +1 -0
- package/templates/ssr-template/src/App.tsx +1 -1
- package/dist/frontend/components/WasmLoader.d.ts +0 -1
- package/dist/frontend/components/WasmLoader.d.ts.map +0 -1
- package/dist/frontend/components/WasmLoader.js +0 -2
- package/dist/frontend/components/WasmLoader.js.map +0 -1
- package/dist/frontend/hooks/useWasm.d.ts +0 -1
- package/dist/frontend/hooks/useWasm.d.ts.map +0 -1
- package/dist/frontend/hooks/useWasm.js +0 -2
- package/dist/frontend/hooks/useWasm.js.map +0 -1
- package/dist/frontend/index.d.ts +0 -1
- package/dist/frontend/index.d.ts.map +0 -1
- package/dist/frontend/index.js +0 -2
- package/dist/frontend/index.js.map +0 -1
- package/dist/index.d.ts +0 -12
- package/dist/index.d.ts.map +0 -1
- package/dist/renderComponent.d.ts +0 -9
- package/dist/renderComponent.d.ts.map +0 -1
- package/dist/renderComponent.js +0 -39
- package/dist/renderComponent.js.map +0 -1
- package/dist/server/api-router.d.ts +0 -16
- package/dist/server/api-router.d.ts.map +0 -1
- package/dist/server/api-router.js +0 -121
- package/dist/server/api-router.js.map +0 -1
- package/dist/server/auth.d.ts +0 -33
- package/dist/server/auth.d.ts.map +0 -1
- package/dist/server/auth.js +0 -74
- package/dist/server/auth.js.map +0 -1
- package/dist/server/database.d.ts +0 -25
- package/dist/server/database.d.ts.map +0 -1
- package/dist/server/database.js +0 -109
- package/dist/server/database.js.map +0 -1
- package/dist/server/index.d.ts +0 -117
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/middleware.d.ts +0 -12
- package/dist/server/middleware.d.ts.map +0 -1
- package/dist/server/middleware.js +0 -46
- package/dist/server/middleware.js.map +0 -1
- package/dist/server/server.d.ts +0 -10
- package/dist/server/server.d.ts.map +0 -1
- package/dist/server/server.js +0 -81
- package/dist/server/server.js.map +0 -1
- package/dist/server/templates.d.ts +0 -31
- package/dist/server/templates.d.ts.map +0 -1
- package/dist/server/templates.js +0 -208
- package/dist/server/templates.js.map +0 -1
- package/dist/server/types.d.ts +0 -67
- package/dist/server/types.d.ts.map +0 -1
- package/dist/server/types.js +0 -2
- package/dist/server/types.js.map +0 -1
- package/dist/server/utils.d.ts +0 -71
- package/dist/server/utils.d.ts.map +0 -1
- package/dist/server/utils.js +0 -165
- package/dist/server/utils.js.map +0 -1
- package/dist/server/wasm.d.ts +0 -29
- package/dist/server/wasm.d.ts.map +0 -1
- package/dist/server/wasm.js +0 -208
- package/dist/server/wasm.js.map +0 -1
- package/dist/server-renderer.d.ts +0 -5
- package/dist/server-renderer.d.ts.map +0 -1
- package/dist/server-renderer.js +0 -27
- package/dist/server-renderer.js.map +0 -1
- package/dist/wasm.d.ts +0 -51
- package/dist/wasm.d.ts.map +0 -1
package/dist/server/index.d.ts
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { Express, Request, Response, NextFunction } from 'express';
|
|
2
|
-
import cors from 'cors';
|
|
3
|
-
import { SignOptions } from 'jsonwebtoken';
|
|
4
|
-
import { renderToString } from 'frontend-hamroun';
|
|
5
|
-
import { Database } from './database.js';
|
|
6
|
-
import { AuthService } from './auth.js';
|
|
7
|
-
import { ApiRouter } from './api-router.js';
|
|
8
|
-
import { rateLimit } from './middleware.js';
|
|
9
|
-
import * as utils from './utils.js';
|
|
10
|
-
import * as templates from './templates.js';
|
|
11
|
-
import { loadGoWasmFromFile } from './wasm.js';
|
|
12
|
-
export interface ServerConfig {
|
|
13
|
-
port?: number;
|
|
14
|
-
apiDir?: string;
|
|
15
|
-
pagesDir?: string;
|
|
16
|
-
staticDir?: string;
|
|
17
|
-
enableCors?: boolean;
|
|
18
|
-
corsOptions?: cors.CorsOptions;
|
|
19
|
-
db?: {
|
|
20
|
-
url: string;
|
|
21
|
-
type: 'mongodb' | 'mysql' | 'postgres';
|
|
22
|
-
};
|
|
23
|
-
auth?: {
|
|
24
|
-
secret: string;
|
|
25
|
-
expiresIn?: SignOptions['expiresIn'];
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
export declare class Server {
|
|
29
|
-
private app;
|
|
30
|
-
private server;
|
|
31
|
-
private config;
|
|
32
|
-
private db;
|
|
33
|
-
private auth;
|
|
34
|
-
constructor(config?: ServerConfig);
|
|
35
|
-
private setupApiRoutes;
|
|
36
|
-
private generateApiDocs;
|
|
37
|
-
private scanApiDirectory;
|
|
38
|
-
private getRoutePath;
|
|
39
|
-
private detectApiMethods;
|
|
40
|
-
private setupPageRoutes;
|
|
41
|
-
private renderPage;
|
|
42
|
-
getExpressApp(): Express;
|
|
43
|
-
getDatabase(): Database | null;
|
|
44
|
-
getAuth(): AuthService | null;
|
|
45
|
-
start(): Promise<void>;
|
|
46
|
-
stop(): Promise<void>;
|
|
47
|
-
restart(): Promise<void>;
|
|
48
|
-
enableSSR(options?: {
|
|
49
|
-
hydratable?: boolean;
|
|
50
|
-
}): void;
|
|
51
|
-
registerPlugin(plugin: (server: Server) => void): void;
|
|
52
|
-
addShutdownHandler(): void;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Creates and configures a new server instance
|
|
56
|
-
*/
|
|
57
|
-
export declare function createServer(config?: ServerConfig): Server;
|
|
58
|
-
/**
|
|
59
|
-
* Creates a new server with sensible defaults for development
|
|
60
|
-
*/
|
|
61
|
-
export declare function createDevServer(options?: {
|
|
62
|
-
port?: number;
|
|
63
|
-
enableCors?: boolean;
|
|
64
|
-
}): Server;
|
|
65
|
-
/**
|
|
66
|
-
* Creates a production-ready server with optimized settings
|
|
67
|
-
*/
|
|
68
|
-
export declare function createProductionServer(config: ServerConfig): Server;
|
|
69
|
-
export declare function getRequestIp(req: Request): string;
|
|
70
|
-
export declare function parseCookies(req: Request): Record<string, string>;
|
|
71
|
-
export declare const renderComponent: (Component: any, props?: any) => Promise<{
|
|
72
|
-
html: string;
|
|
73
|
-
success: boolean;
|
|
74
|
-
error?: undefined;
|
|
75
|
-
} | {
|
|
76
|
-
html: string;
|
|
77
|
-
success: boolean;
|
|
78
|
-
error: unknown;
|
|
79
|
-
}>;
|
|
80
|
-
export { initNodeWasm, loadGoWasmFromFile } from './wasm.js';
|
|
81
|
-
export * from './utils.js';
|
|
82
|
-
export * from './templates.js';
|
|
83
|
-
export { Database } from './database.js';
|
|
84
|
-
export { AuthService } from './auth.js';
|
|
85
|
-
export { ApiRouter } from './api-router.js';
|
|
86
|
-
export { requestLogger, errorHandler, notFoundHandler, rateLimit } from './middleware.js';
|
|
87
|
-
export { renderToString };
|
|
88
|
-
declare const _default: {
|
|
89
|
-
Server: typeof Server;
|
|
90
|
-
createServer: typeof createServer;
|
|
91
|
-
createDevServer: typeof createDevServer;
|
|
92
|
-
createProductionServer: typeof createProductionServer;
|
|
93
|
-
rateLimit: typeof rateLimit;
|
|
94
|
-
requestLogger: import("./middleware.js").MiddlewareFunction;
|
|
95
|
-
errorHandler: (err: Error, req: Request, res: Response, next: NextFunction) => void;
|
|
96
|
-
notFoundHandler: (req: Request, res: Response) => void;
|
|
97
|
-
loadGoWasmFromFile: typeof loadGoWasmFromFile;
|
|
98
|
-
templates: typeof templates;
|
|
99
|
-
utils: typeof utils;
|
|
100
|
-
renderComponent: (Component: any, props?: any) => Promise<{
|
|
101
|
-
html: string;
|
|
102
|
-
success: boolean;
|
|
103
|
-
error?: undefined;
|
|
104
|
-
} | {
|
|
105
|
-
html: string;
|
|
106
|
-
success: boolean;
|
|
107
|
-
error: unknown;
|
|
108
|
-
}>;
|
|
109
|
-
renderToString: typeof renderToString;
|
|
110
|
-
getRequestIp: typeof getRequestIp;
|
|
111
|
-
parseCookies: typeof parseCookies;
|
|
112
|
-
Database: typeof Database;
|
|
113
|
-
AuthService: typeof AuthService;
|
|
114
|
-
ApiRouter: typeof ApiRouter;
|
|
115
|
-
};
|
|
116
|
-
export default _default;
|
|
117
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAK5E,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAgD,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG1F,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAgB,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAkB7D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC;IAC/B,EAAE,CAAC,EAAE;QACH,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;KACxC,CAAC;IACF,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;KACtC,CAAC;CACH;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,IAAI,CAA4B;gBAE5B,MAAM,GAAE,YAAiB;IAoDrC,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;YAmBT,UAAU;IAkIjB,aAAa,IAAI,OAAO;IAIxB,WAAW,IAAI,QAAQ,GAAG,IAAI;IAI9B,OAAO,IAAI,WAAW,GAAG,IAAI;IAI7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAcrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,SAAS,CAAC,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI;IAsCvD,cAAc,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAItD,kBAAkB,IAAI,IAAI;CAqBlC;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,GAAE,YAAiB,GAAG,MAAM,CAE9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,MAAM,CAQd;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAWnE;AAGD,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAKjD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYjE;AAGD,eAAO,MAAM,eAAe,GAAU,WAAW,GAAG,EAAE,QAAO,GAAQ;;;;;;;;EAgBpE,CAAC;AAGF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAG7D,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EACf,SAAS,EACV,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,cAAc,EAAE,CAAC;;;;;;;;;;;;;iCArCuB,GAAG,UAAS,GAAG;;;;;;;;;;;;;;;;AAwChE,wBAsBE"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Request, Response, NextFunction } from 'express';
|
|
2
|
-
export interface MiddlewareFunction {
|
|
3
|
-
(req: Request, res: Response, next: NextFunction): void | Promise<void>;
|
|
4
|
-
}
|
|
5
|
-
export declare const requestLogger: MiddlewareFunction;
|
|
6
|
-
export declare const errorHandler: (err: Error, req: Request, res: Response, next: NextFunction) => void;
|
|
7
|
-
export declare const notFoundHandler: (req: Request, res: Response) => void;
|
|
8
|
-
export declare function rateLimit(options: {
|
|
9
|
-
windowMs: number;
|
|
10
|
-
max: number;
|
|
11
|
-
}): (req: Request, res: Response, next: NextFunction) => void | Response<any, Record<string, any>>;
|
|
12
|
-
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAGD,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,SASnB,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,SAM1D,CAAC;AAGF,wBAAgB,SAAS,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,IAG1D,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,+CAwBxD"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
// Common middleware functions
|
|
2
|
-
export const requestLogger = (req, res, next) => {
|
|
3
|
-
console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
|
|
4
|
-
next();
|
|
5
|
-
};
|
|
6
|
-
export const errorHandler = (err, req, res, next) => {
|
|
7
|
-
console.error(err.stack);
|
|
8
|
-
res.status(500).json({
|
|
9
|
-
error: {
|
|
10
|
-
message: 'Internal Server Error',
|
|
11
|
-
...(process.env.NODE_ENV !== 'production' ? { details: err.message, stack: err.stack } : {})
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
};
|
|
15
|
-
export const notFoundHandler = (req, res) => {
|
|
16
|
-
res.status(404).json({
|
|
17
|
-
error: {
|
|
18
|
-
message: `Not Found - ${req.method} ${req.url}`
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
// Middleware for rate limiting
|
|
23
|
-
export function rateLimit(options) {
|
|
24
|
-
const requests = new Map();
|
|
25
|
-
return (req, res, next) => {
|
|
26
|
-
const ip = req.ip || req.socket.remoteAddress || 'unknown';
|
|
27
|
-
const now = Date.now();
|
|
28
|
-
// Get existing requests and filter out old ones
|
|
29
|
-
const reqTimes = (requests.get(ip) || [])
|
|
30
|
-
.filter(time => now - time < options.windowMs);
|
|
31
|
-
// Add current request
|
|
32
|
-
reqTimes.push(now);
|
|
33
|
-
requests.set(ip, reqTimes);
|
|
34
|
-
// Check if too many requests
|
|
35
|
-
if (reqTimes.length > options.max) {
|
|
36
|
-
return res.status(429).json({
|
|
37
|
-
error: {
|
|
38
|
-
message: 'Too Many Requests',
|
|
39
|
-
retryAfter: Math.ceil(options.windowMs / 1000)
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
return next();
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=middleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"AAMA,8BAA8B;AAC9B,MAAM,CAAC,MAAM,aAAa,GAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAClE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACtE,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAU,EACV,GAAY,EACZ,GAAa,EACb,IAAkB,EAClB,EAAE;IACF,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,KAAK,EAAE;YACL,OAAO,EAAE,uBAAuB;YAChC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7F;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,KAAK,EAAE;YACL,OAAO,EAAE,eAAe,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;SAChD;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,+BAA+B;AAC/B,MAAM,UAAU,SAAS,CAAC,OAA0C;IAClE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE7C,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACzD,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,gDAAgD;QAChD,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;aACtC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEjD,sBAAsB;QACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE3B,6BAA6B;QAC7B,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,KAAK,EAAE;oBACL,OAAO,EAAE,mBAAmB;oBAC5B,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;iBAC/C;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/server/server.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAIA,cAAM,MAAM;IACV,OAAO,CAAC,MAAM,CAAwB;gBAE1B,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;YAI3B,UAAU;IAyExB,OAAO,CAAC,kBAAkB;CAS3B;AAED,eAAe,MAAM,CAAC"}
|
package/dist/server/server.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { renderComponent } from '../renderComponent.js'; // Fixed import path with .js extension
|
|
4
|
-
class Server {
|
|
5
|
-
constructor(config) {
|
|
6
|
-
this.config = config;
|
|
7
|
-
}
|
|
8
|
-
async renderPage(urlPath) {
|
|
9
|
-
try {
|
|
10
|
-
// Try to find the page component
|
|
11
|
-
const pagesDir = path.resolve(process.cwd(), this.config.pagesDir);
|
|
12
|
-
// Check various file patterns
|
|
13
|
-
let pagePath = '';
|
|
14
|
-
const possiblePagePaths = [
|
|
15
|
-
`${pagesDir}${path}.jsx`,
|
|
16
|
-
`${pagesDir}${path}.tsx`,
|
|
17
|
-
`${pagesDir}${path}/index.jsx`,
|
|
18
|
-
`${pagesDir}${path}/index.tsx`,
|
|
19
|
-
// For dynamic routes
|
|
20
|
-
...fs.readdirSync(pagesDir, { recursive: true })
|
|
21
|
-
.filter((file) => typeof file === 'string')
|
|
22
|
-
.filter((file) => file.endsWith('.jsx') || file.endsWith('.tsx'))
|
|
23
|
-
.map((file) => path.join(pagesDir, file))
|
|
24
|
-
.filter((file) => {
|
|
25
|
-
const routePattern = file
|
|
26
|
-
.replace(pagesDir, '')
|
|
27
|
-
.replace(/\.[jt]sx$/, '')
|
|
28
|
-
.replace(/\/index$/, '/')
|
|
29
|
-
.replace(/\[([^\]]+)\]/g, ':$1');
|
|
30
|
-
// Create Express-like path matcher
|
|
31
|
-
return this.pathMatchesPattern(urlPath, routePattern);
|
|
32
|
-
})
|
|
33
|
-
];
|
|
34
|
-
for (const possiblePath of possiblePagePaths) {
|
|
35
|
-
if (fs.existsSync(possiblePath)) {
|
|
36
|
-
pagePath = possiblePath;
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (!pagePath) {
|
|
41
|
-
return {
|
|
42
|
-
html: `<!DOCTYPE html><html><body><h1>404 - Page Not Found</h1></body></html>`,
|
|
43
|
-
statusCode: 404
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
// Import and render the page component
|
|
47
|
-
const { default: PageComponent } = await import(pagePath);
|
|
48
|
-
if (!PageComponent || typeof PageComponent !== 'function') {
|
|
49
|
-
throw new Error(`Invalid page component: ${pagePath}`);
|
|
50
|
-
}
|
|
51
|
-
const { html } = await renderComponent(PageComponent);
|
|
52
|
-
// Add DOCTYPE and wrap in html/body if not present
|
|
53
|
-
let finalHtml = html;
|
|
54
|
-
if (!finalHtml.includes('<!DOCTYPE')) {
|
|
55
|
-
finalHtml = `<!DOCTYPE html><html><head>
|
|
56
|
-
<meta charset="UTF-8">
|
|
57
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
58
|
-
<script type="module" src="/client.js"></script>
|
|
59
|
-
</head><body>${finalHtml}</body></html>`;
|
|
60
|
-
}
|
|
61
|
-
return { html: finalHtml, statusCode: 200 };
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
console.error('Error rendering page:', error);
|
|
65
|
-
return {
|
|
66
|
-
html: `<!DOCTYPE html><html><body><h1>500 - Server Error</h1><pre>${error}</pre></body></html>`,
|
|
67
|
-
statusCode: 500
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
pathMatchesPattern(path, pattern) {
|
|
72
|
-
// Convert Express-like pattern to regex
|
|
73
|
-
const regexPattern = pattern
|
|
74
|
-
.replace(/\//g, '\\/') // Escape slashes
|
|
75
|
-
.replace(/:([^\/]+)/g, '([^\\/]+)'); // Convert :param to regex group
|
|
76
|
-
const regex = new RegExp(`^${regexPattern}$`);
|
|
77
|
-
return regex.test(path);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
export default Server;
|
|
81
|
-
//# sourceMappingURL=server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTML template generators for server-side rendering
|
|
3
|
-
*/
|
|
4
|
-
export interface DocumentOptions {
|
|
5
|
-
title?: string;
|
|
6
|
-
description?: string;
|
|
7
|
-
lang?: string;
|
|
8
|
-
charset?: string;
|
|
9
|
-
viewport?: string;
|
|
10
|
-
scripts?: string[];
|
|
11
|
-
styles?: string[];
|
|
12
|
-
meta?: Record<string, string>;
|
|
13
|
-
bodyClasses?: string;
|
|
14
|
-
htmlAttrs?: Record<string, string>;
|
|
15
|
-
bodyAttrs?: Record<string, string>;
|
|
16
|
-
initialData?: any;
|
|
17
|
-
componentName?: string;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Generate a complete HTML document
|
|
21
|
-
*/
|
|
22
|
-
export declare function generateDocument(content: string, options?: DocumentOptions): string;
|
|
23
|
-
/**
|
|
24
|
-
* Generate an error page
|
|
25
|
-
*/
|
|
26
|
-
export declare function generateErrorPage(statusCode: number, message: string, error?: Error): string;
|
|
27
|
-
/**
|
|
28
|
-
* Generate a loading page
|
|
29
|
-
*/
|
|
30
|
-
export declare function generateLoadingPage(message?: string): string;
|
|
31
|
-
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/server/templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAyER;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,KAAK,GACZ,MAAM,CAgGR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAyC1E"}
|
package/dist/server/templates.js
DELETED
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTML template generators for server-side rendering
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Generate a complete HTML document
|
|
6
|
-
*/
|
|
7
|
-
export function generateDocument(content, options = {}) {
|
|
8
|
-
const { title = 'Frontend Hamroun App', description = '', lang = 'en', charset = 'UTF-8', viewport = 'width=device-width, initial-scale=1.0', scripts = [], styles = [], meta = {}, bodyClasses = '', htmlAttrs = {}, bodyAttrs = {}, initialData = {}, componentName = '' } = options;
|
|
9
|
-
// Generate HTML attributes
|
|
10
|
-
const htmlAttributes = Object.entries(htmlAttrs)
|
|
11
|
-
.map(([key, value]) => `${key}="${escapeHtml(value)}"`)
|
|
12
|
-
.join(' ');
|
|
13
|
-
// Generate body attributes
|
|
14
|
-
const bodyAttributes = Object.entries(bodyAttrs)
|
|
15
|
-
.map(([key, value]) => `${key}="${escapeHtml(value)}"`)
|
|
16
|
-
.join(' ');
|
|
17
|
-
// Generate meta tags
|
|
18
|
-
const metaTags = [
|
|
19
|
-
`<meta charset="${charset}">`,
|
|
20
|
-
`<meta name="viewport" content="${viewport}">`,
|
|
21
|
-
description ? `<meta name="description" content="${escapeHtml(description)}">` : ''
|
|
22
|
-
];
|
|
23
|
-
// Add custom meta tags
|
|
24
|
-
Object.entries(meta).forEach(([name, content]) => {
|
|
25
|
-
metaTags.push(`<meta name="${escapeHtml(name)}" content="${escapeHtml(content)}">`);
|
|
26
|
-
});
|
|
27
|
-
// Generate script tags
|
|
28
|
-
const scriptTags = scripts.map(src => {
|
|
29
|
-
if (src.startsWith('<script')) {
|
|
30
|
-
return src; // Allow inline scripts
|
|
31
|
-
}
|
|
32
|
-
return `<script src="${escapeHtml(src)}" ${src.endsWith('.js') ? 'type="module"' : ''} defer></script>`;
|
|
33
|
-
});
|
|
34
|
-
// Generate style tags
|
|
35
|
-
const styleTags = styles.map(href => {
|
|
36
|
-
if (href.startsWith('<style')) {
|
|
37
|
-
return href; // Allow inline styles
|
|
38
|
-
}
|
|
39
|
-
return `<link rel="stylesheet" href="${escapeHtml(href)}">`;
|
|
40
|
-
});
|
|
41
|
-
// Create initial data script
|
|
42
|
-
const initialDataScript = Object.keys(initialData).length > 0 ?
|
|
43
|
-
`<script id="__APP_DATA__" type="application/json">${escapeHtml(JSON.stringify(initialData))}</script>` : '';
|
|
44
|
-
// Create the complete HTML document
|
|
45
|
-
return `<!DOCTYPE html>
|
|
46
|
-
<html lang="${lang}" ${htmlAttributes}>
|
|
47
|
-
<head>
|
|
48
|
-
${metaTags.filter(Boolean).join('\n ')}
|
|
49
|
-
<title>${escapeHtml(title)}</title>
|
|
50
|
-
${styleTags.join('\n ')}
|
|
51
|
-
</head>
|
|
52
|
-
<body class="${bodyClasses}" ${bodyAttributes}>
|
|
53
|
-
<div id="app-root" data-ssr-root${componentName ? ` data-component="${escapeHtml(componentName)}"` : ''}>${content}</div>
|
|
54
|
-
${initialDataScript}
|
|
55
|
-
${scriptTags.join('\n ')}
|
|
56
|
-
</body>
|
|
57
|
-
</html>`;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Generate an error page
|
|
61
|
-
*/
|
|
62
|
-
export function generateErrorPage(statusCode, message, error) {
|
|
63
|
-
const errorMessages = {
|
|
64
|
-
400: 'Bad Request',
|
|
65
|
-
401: 'Unauthorized',
|
|
66
|
-
403: 'Forbidden',
|
|
67
|
-
404: 'Not Found',
|
|
68
|
-
500: 'Internal Server Error'
|
|
69
|
-
};
|
|
70
|
-
const title = `${statusCode} - ${errorMessages[statusCode] || 'Error'}`;
|
|
71
|
-
// Generate error details (only in development)
|
|
72
|
-
const isDev = process.env.NODE_ENV !== 'production';
|
|
73
|
-
const errorDetails = isDev && error ? `
|
|
74
|
-
<div class="error-details">
|
|
75
|
-
<pre>${escapeHtml(error.stack || error.message)}</pre>
|
|
76
|
-
</div>
|
|
77
|
-
` : '';
|
|
78
|
-
// Create error content
|
|
79
|
-
const content = `
|
|
80
|
-
<div class="error-container">
|
|
81
|
-
<h1>${statusCode}</h1>
|
|
82
|
-
<h2>${escapeHtml(errorMessages[statusCode] || 'Error')}</h2>
|
|
83
|
-
<p>${escapeHtml(message)}</p>
|
|
84
|
-
${errorDetails}
|
|
85
|
-
<a href="/" class="home-link">Back to Home</a>
|
|
86
|
-
</div>
|
|
87
|
-
`;
|
|
88
|
-
// Add error page styling
|
|
89
|
-
const styles = [`<style>
|
|
90
|
-
body {
|
|
91
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
|
92
|
-
display: flex;
|
|
93
|
-
justify-content: center;
|
|
94
|
-
align-items: center;
|
|
95
|
-
min-height: 100vh;
|
|
96
|
-
margin: 0;
|
|
97
|
-
background-color: #f7f7f7;
|
|
98
|
-
color: #333;
|
|
99
|
-
}
|
|
100
|
-
.error-container {
|
|
101
|
-
text-align: center;
|
|
102
|
-
padding: 2rem;
|
|
103
|
-
border-radius: 8px;
|
|
104
|
-
background-color: white;
|
|
105
|
-
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
|
106
|
-
max-width: 600px;
|
|
107
|
-
width: 100%;
|
|
108
|
-
}
|
|
109
|
-
h1 {
|
|
110
|
-
font-size: 6rem;
|
|
111
|
-
margin: 0;
|
|
112
|
-
color: #e74c3c;
|
|
113
|
-
}
|
|
114
|
-
h2 {
|
|
115
|
-
margin-top: 0;
|
|
116
|
-
margin-bottom: 1rem;
|
|
117
|
-
color: #333;
|
|
118
|
-
}
|
|
119
|
-
.error-details {
|
|
120
|
-
text-align: left;
|
|
121
|
-
margin: 2rem 0;
|
|
122
|
-
padding: 1rem;
|
|
123
|
-
background-color: #f8f8f8;
|
|
124
|
-
border-radius: 4px;
|
|
125
|
-
overflow: auto;
|
|
126
|
-
}
|
|
127
|
-
pre {
|
|
128
|
-
margin: 0;
|
|
129
|
-
font-family: monospace;
|
|
130
|
-
font-size: 0.85rem;
|
|
131
|
-
white-space: pre-wrap;
|
|
132
|
-
}
|
|
133
|
-
.home-link {
|
|
134
|
-
display: inline-block;
|
|
135
|
-
margin-top: 1.5rem;
|
|
136
|
-
padding: 0.75rem 1.5rem;
|
|
137
|
-
background-color: #3498db;
|
|
138
|
-
color: white;
|
|
139
|
-
text-decoration: none;
|
|
140
|
-
border-radius: 4px;
|
|
141
|
-
transition: background-color 0.2s;
|
|
142
|
-
}
|
|
143
|
-
.home-link:hover {
|
|
144
|
-
background-color: #2980b9;
|
|
145
|
-
}
|
|
146
|
-
</style>`];
|
|
147
|
-
return generateDocument(content, {
|
|
148
|
-
title,
|
|
149
|
-
description: `Error ${statusCode}: ${errorMessages[statusCode] || 'Error'}`,
|
|
150
|
-
bodyClasses: 'error-page',
|
|
151
|
-
styles
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Generate a loading page
|
|
156
|
-
*/
|
|
157
|
-
export function generateLoadingPage(message = 'Loading...') {
|
|
158
|
-
const content = `
|
|
159
|
-
<div class="loading-container">
|
|
160
|
-
<div class="spinner"></div>
|
|
161
|
-
<p>${escapeHtml(message)}</p>
|
|
162
|
-
</div>
|
|
163
|
-
`;
|
|
164
|
-
const styles = [`<style>
|
|
165
|
-
body {
|
|
166
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
|
167
|
-
display: flex;
|
|
168
|
-
justify-content: center;
|
|
169
|
-
align-items: center;
|
|
170
|
-
min-height: 100vh;
|
|
171
|
-
margin: 0;
|
|
172
|
-
background-color: #f7f7f7;
|
|
173
|
-
color: #333;
|
|
174
|
-
}
|
|
175
|
-
.loading-container {
|
|
176
|
-
text-align: center;
|
|
177
|
-
}
|
|
178
|
-
.spinner {
|
|
179
|
-
width: 50px;
|
|
180
|
-
height: 50px;
|
|
181
|
-
border: 5px solid rgba(0, 0, 0, 0.1);
|
|
182
|
-
border-radius: 50%;
|
|
183
|
-
border-top-color: #3498db;
|
|
184
|
-
animation: spin 1s ease-in-out infinite;
|
|
185
|
-
margin: 0 auto 20px;
|
|
186
|
-
}
|
|
187
|
-
@keyframes spin {
|
|
188
|
-
to { transform: rotate(360deg); }
|
|
189
|
-
}
|
|
190
|
-
</style>`];
|
|
191
|
-
return generateDocument(content, {
|
|
192
|
-
title: 'Loading',
|
|
193
|
-
bodyClasses: 'loading-page',
|
|
194
|
-
styles
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Escape HTML special characters
|
|
199
|
-
*/
|
|
200
|
-
function escapeHtml(text) {
|
|
201
|
-
return String(text)
|
|
202
|
-
.replace(/&/g, '&')
|
|
203
|
-
.replace(/</g, '<')
|
|
204
|
-
.replace(/>/g, '>')
|
|
205
|
-
.replace(/"/g, '"')
|
|
206
|
-
.replace(/'/g, ''');
|
|
207
|
-
}
|
|
208
|
-
//# sourceMappingURL=templates.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/server/templates.ts"],"names":[],"mappings":"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"}
|
package/dist/server/types.d.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Express } from 'express';
|
|
2
|
-
export interface ServerConfig {
|
|
3
|
-
port?: number;
|
|
4
|
-
apiDir?: string;
|
|
5
|
-
pagesDir?: string;
|
|
6
|
-
staticDir?: string;
|
|
7
|
-
enableCors?: boolean;
|
|
8
|
-
corsOptions?: {
|
|
9
|
-
origin?: string | string[] | boolean;
|
|
10
|
-
credentials?: boolean;
|
|
11
|
-
methods?: string[];
|
|
12
|
-
allowedHeaders?: string[];
|
|
13
|
-
};
|
|
14
|
-
db?: {
|
|
15
|
-
url: string;
|
|
16
|
-
type: 'mongodb' | 'mysql' | 'postgres';
|
|
17
|
-
};
|
|
18
|
-
auth?: {
|
|
19
|
-
secret: string;
|
|
20
|
-
expiresIn?: string | number;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export interface Server {
|
|
24
|
-
start(): Promise<void>;
|
|
25
|
-
stop(): Promise<void>;
|
|
26
|
-
getExpressApp(): Express;
|
|
27
|
-
getDatabase(): any;
|
|
28
|
-
getAuth(): any;
|
|
29
|
-
}
|
|
30
|
-
export interface User {
|
|
31
|
-
id: string | number;
|
|
32
|
-
username: string;
|
|
33
|
-
password?: string;
|
|
34
|
-
email?: string;
|
|
35
|
-
roles?: string[];
|
|
36
|
-
[key: string]: any;
|
|
37
|
-
}
|
|
38
|
-
export interface DbConfig {
|
|
39
|
-
url: string;
|
|
40
|
-
type: 'mongodb' | 'mysql' | 'postgres';
|
|
41
|
-
}
|
|
42
|
-
export interface MiddlewareFunction {
|
|
43
|
-
(req: any, res: any, next: any): void | Promise<void>;
|
|
44
|
-
}
|
|
45
|
-
export interface Todo {
|
|
46
|
-
id: number;
|
|
47
|
-
text: string;
|
|
48
|
-
completed: boolean;
|
|
49
|
-
}
|
|
50
|
-
export interface TodoItemProps {
|
|
51
|
-
todo: Todo;
|
|
52
|
-
onToggle: (id: number) => void;
|
|
53
|
-
onDelete: (id: number) => void;
|
|
54
|
-
}
|
|
55
|
-
export interface GoWasmInstance {
|
|
56
|
-
instance: WebAssembly.Instance;
|
|
57
|
-
module: WebAssembly.Module;
|
|
58
|
-
exports: WebAssembly.Exports;
|
|
59
|
-
functions: Record<string, Function>;
|
|
60
|
-
}
|
|
61
|
-
export interface GoWasmOptions {
|
|
62
|
-
debug?: boolean;
|
|
63
|
-
goWasmPath?: string;
|
|
64
|
-
importObject?: Record<string, any>;
|
|
65
|
-
onLoad?: (instance: GoWasmInstance) => void;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKlC,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;QACrC,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IACF,EAAE,CAAC,EAAE;QACH,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;KACxC,CAAC;IACF,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,aAAa,IAAI,OAAO,CAAC;IACzB,WAAW,IAAI,GAAG,CAAC;IACnB,OAAO,IAAI,GAAG,CAAC;CAChB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CAC7C"}
|
package/dist/server/types.js
DELETED
package/dist/server/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":""}
|