@ooneex/app 0.13.0 → 0.15.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/dist/index.js CHANGED
@@ -1,528 +1,5 @@
1
1
  // @bun
2
- // src/App.ts
3
- import { container as container3 } from "@ooneex/container";
4
- import { Exception as Exception3 } from "@ooneex/exception";
5
- import { HttpStatus as HttpStatus4 } from "@ooneex/http-status";
6
- import { TerminalLogger } from "@ooneex/logger";
7
- import { router } from "@ooneex/routing";
8
- import { AssertAppEnv, AssertHostname, AssertPort } from "@ooneex/validation/constraints";
2
+ import{container as d}from"@ooneex/container";import{Exception as h}from"@ooneex/exception";import{HttpStatus as w}from"@ooneex/http-status";import{TerminalLogger as K}from"@ooneex/logger";import{router as B}from"@ooneex/routing";import{AssertAppEnv as Q,AssertHostname as X,AssertPort as Y}from"@ooneex/validation/constraints";import{Environment as I}from"@ooneex/app-env";import{container as y}from"@ooneex/container";import{Exception as E}from"@ooneex/exception";import{HttpRequest as N}from"@ooneex/http-request";import{HttpResponse as A}from"@ooneex/http-response";import{HttpStatus as c}from"@ooneex/http-status";import{Role as j}from"@ooneex/role";import{type as O}from"@ooneex/validation";var C=(t,e)=>{if(t!==null&&typeof t==="object"&&"validate"in t&&typeof t.validate==="function"){let o=t.validate(e);if(!o.isValid)return o.message||"Validation failed"}else if(typeof t==="function"){let o=t(e);if(o instanceof O.errors)return o.summary}return null},v=async(t)=>{let{req:e,server:o}=t,r=o.requestIP(e)?.address??"unknown",n=new A,a={},i=null;if(e.headers.get("content-type")?.includes("application/json"))try{a=await e.json()}catch(l){}else try{i=await e.formData()}catch(l){}let p=new N(e,{params:e.params,payload:a,form:i,ip:r});return{logger:y.get("logger"),analytics:y.get("analytics"),cache:y.get("cache"),storage:y.get("storage"),mailer:y.get("mailer"),database:y.get("database"),app:{env:y.get("app.env")},response:n,request:p,params:p.params,payload:p.payload,queries:p.queries,method:p.method,header:p.header,files:p.files,ip:p.ip,host:p.host,language:p.language,user:null}},S=async(t,e,o)=>{if(e.params)for(let[s,r]of Object.entries(e.params)){let n=C(r,t.params[s]);if(n)return{message:`Invalid parameter "${s}": ${n}`,status:c.Code.BadRequest}}if(e.queries){let s=C(e.queries,t.queries);if(s)return{message:`Invalid query parameters: ${s}`,status:c.Code.BadRequest}}if(e.payload){let s=C(e.payload,t.payload);if(s)return{message:`Invalid payload: ${s}`,status:c.Code.BadRequest}}if(e.env&&e.env.length>0&&!e.env.includes(o))return{message:`Route "${e.name}" is not available in "${o}" environment`,status:c.Code.NotAcceptable};if(e.ip&&e.ip.length>0&&(!t.ip||!e.ip.includes(t.ip)))return{message:`Route "${e.name}" is not available for IP "${t.ip}"`,status:c.Code.NotAcceptable};if(e.host&&e.host.length>0&&!e.host.includes(t.host))return{message:`Route "${e.name}" is not available for host "${t.host}"`,status:c.Code.NotAcceptable};if(e.roles&&e.roles.length>0){if(!t.user||!t.user.roles||t.user.roles.length===0)return{message:`Route "${e.name}" requires authentication`,status:c.Code.Forbidden};let s=new j;if(!e.roles.some((n)=>t.user?.roles.some((a)=>s.hasRole(a,n))))return{message:`Route "${e.name}" is not accessible for user roles`,status:c.Code.NotAcceptable}}if(e.permission){let s=y.get(e.permission);if(s.setUserPermissions(t.user).build(),!await s.check())return{message:`Route "${e.name}" permission denied`,status:c.Code.Forbidden}}return null},x=(t,e)=>{if(t.response){let o=C(t.response,e);if(o)return{message:`Invalid response: ${o}`,status:c.Code.NotAcceptable}}return null},T=(t,e,o,s)=>{return t.response.exception(e,{status:o}).get(s)},V=async(t,e)=>{try{return[await t.index(e),null]}catch(o){if(o instanceof E)return[null,{message:o.message,status:o.status}];if(o instanceof Error)return[null,{message:o.message,status:c.Code.InternalServerError}];return[null,{message:"An unknown error occurred",status:c.Code.InternalServerError}]}},F=async(t,e)=>{let o=t.app.env.env||I.PRODUCTION,s=await S(t,e,o);if(s)return T(t,s.message,s.status,o);let r=y.get(e.controller),[n,a]=await V(r,t);if(a)return T(t,a.message,a.status,o);let i=x(e,n.getData());if(i)return T(t,i.message,i.status,o);return n.get(o)},U=async(t,e)=>{let o=t;for(let s of e)o=await y.get(s).handle(o);return o},b=(t,e=[])=>{let o={};for(let[s,r]of t){let n={};for(let a of r)n[a.method]=async(i,u)=>{let p=await v({req:i,server:u});try{p=await U(p,e)}catch(g){let l=p.app.env.env||I.PRODUCTION,m=g instanceof E?g.status:c.Code.InternalServerError;return T(p,g.message,m,l)}return F(p,a)};o[s]=n}return o};var L=(t,e)=>({error:(o,s)=>{t.forEach((r)=>{let n=e.get(r);if(n)n.error(o,s)})},warn:(o,s)=>{t.forEach((r)=>{let n=e.get(r);if(n)n.warn(o,s)})},info:(o,s)=>{t.forEach((r)=>{let n=e.get(r);if(n)n.info(o,s)})},debug:(o,s)=>{t.forEach((r)=>{let n=e.get(r);if(n)n.debug(o,s)})},log:(o,s)=>{t.forEach((r)=>{let n=e.get(r);if(n)n.log(o,s)})},success:(o,s)=>{t.forEach((r)=>{let n=e.get(r);if(n)n.success(o,s)})}});import{Environment as J}from"@ooneex/app-env";import{container as f}from"@ooneex/container";import{Exception as q}from"@ooneex/exception";import{HttpStatus as M}from"@ooneex/http-status";import{random as W}from"@ooneex/utils";var k=(t)=>{let e={};for(let[o,s]of t)e[o]=async(r,n)=>{let a=await v({req:r,server:n}),i=W.nanoid(30);f.addConstant(i,{context:a,route:s}),n.upgrade(r,{data:{id:i}});return};return e},_=async(t,e)=>{let o=t;for(let s of e)o=await f.get(s).handle(o);return o},R=(t,e,o)=>{return t.response.exception(e,{status:o}),t.channel.send(t.response)},P=async(t,e,o,s=[])=>{let{context:r,route:n}=f.getConstant(e.data.id),a=r.app.env.env||J.PRODUCTION;r.channel={send:async(l)=>{let m=await l.get(a).json();e.send(JSON.stringify(m))},close:(l,m)=>{e.close(l,m)},subscribe:async()=>{e.subscribe(n.name)},isSubscribed:()=>{return e.isSubscribed(n.name)},unsubscribe:async()=>{e.unsubscribe(n.name)},publish:async(l)=>{let m=await l.get(a).json();o.publish(n.name,m)}};let i=JSON.parse(t);r.queries=i.queries,r.payload=i.payload,r.language=i.language;try{r=await _(r,s)}catch(l){let m=l instanceof q?l.status:M.Code.InternalServerError;return R(r,l.message,m)}let u=await S(r,n,a);if(u)return R(r,u.message,u.status);let p=f.get(n.controller);try{r.response=await p.index(r)}catch(l){let m=l instanceof q?l.status:M.Code.InternalServerError,H=l instanceof Error?l.message:"An unknown error occurred";return R(r,H,m)}let g=x(n,r.response.getData());if(g)return R(r,g.message,g.status);return r.channel.send(r.response)};import{join as z}from"path";import{HttpStatus as G}from"@ooneex/http-status";var D=async(t)=>{let{req:e,cwd:o}=t,s=new URL(e.url).pathname,r=z(o,s),n=Bun.file(r);if(await n.exists())return new Response(n);return new Response("File not found",{status:G.Code.NotFound})};class ${config;constructor(t){this.config=t;let{loggers:e,cronJobs:o,analytics:s,cache:r,storage:n,database:a,env:i,mailer:u}=this.config;if(e.forEach((p)=>{d.get(p).init()}),d.addConstant("logger",L(e,d)),o?.forEach((p)=>{d.get(p).start()}),i)d.addConstant("app.env",i);if(s)d.addAlias("analytics",s);if(r)d.addAlias("cache",r);if(n)d.addAlias("storage",n);if(u)d.addAlias("mailer",u);if(a)d.addConstant("database",a)}async init(){let t=Bun.env.APP_ENV,e=Bun.env.PORT?Number.parseInt(Bun.env.PORT,10):3000,o=Bun.env.HOST_NAME??"",r=new Q().validate(t);if(!r.isValid)throw new h(`Invalid APP_ENV: ${r.message}`,{status:w.Code.InternalServerError,data:{appEnv:t}});let a=new Y().validate(e);if(!a.isValid)throw new h(`Invalid PORT: ${a.message}`,{status:w.Code.InternalServerError,data:{port:Bun.env.PORT}});let u=new X().validate(o);if(!u.isValid)throw new h(`Invalid HOST_NAME: ${u.message}`,{status:w.Code.InternalServerError,data:{hostname:o}});return this}async run(){try{await this.init()}catch(i){new K().error(i),process.exit(1)}let t=d.get("app.env"),e=Bun.env.HOST_NAME||"0.0.0.0",{directories:o}=this.config,s=o.static,{middlewares:r=[]}=this.config,n={...b(B.getHttpRoutes(),r),...k(B.getSocketRoutes())};if(s){let i=s.replace(/^\/+|\/+$/g,"");n[`/${i}/*`]={GET:(u)=>D({req:u,cwd:o.cwd})}}let a=Bun.serve({port:Bun.env.PORT?Number.parseInt(Bun.env.PORT,10):3000,hostname:e,development:t.isLocal,routes:{...n,"/*":this.config.spa||new Response("Not Found",{status:w.Code.NotFound})},websocket:{perMessageDeflate:!0,async message(i,u){await P(u,i,a,r)},async close(i){d.removeConstant(i.data.id)}}});return this}}import{join as Z}from"path";import{routeConfigToJsonDoc as ee}from"@ooneex/routing";var te=async(t)=>{let o=ee(t),s=`${t.name}.json`,r=Z(process.cwd(),"docs/routes",s);await Bun.write(r,JSON.stringify(o,null,2))};import{join as oe}from"path";import{routeConfigToTypeString as re}from"@ooneex/routing";import{toPascalCase as se}from"@ooneex/utils";var ne=async(t)=>{let o=re(t),s=`${t.name}.ts`,r=oe(process.cwd(),"src/types/routes",s),a=`export type ${se(t.name)}RouteType = ${o};
3
+ `;await Bun.write(r,a)};export{ne as generateRouteType,te as generateRouteDoc,$ as App};
9
4
 
10
- // src/httpRouteUtils.ts
11
- import { Environment } from "@ooneex/app-env";
12
- import { container } from "@ooneex/container";
13
- import { Exception } from "@ooneex/exception";
14
- import { HttpRequest } from "@ooneex/http-request";
15
- import { HttpResponse } from "@ooneex/http-response";
16
- import { HttpStatus } from "@ooneex/http-status";
17
- import { Role } from "@ooneex/role";
18
- import { type } from "@ooneex/validation";
19
- var validateConstraint = (constraint, value) => {
20
- if (constraint !== null && typeof constraint === "object" && "validate" in constraint && typeof constraint.validate === "function") {
21
- const result = constraint.validate(value);
22
- if (!result.isValid) {
23
- return result.message || "Validation failed";
24
- }
25
- } else if (typeof constraint === "function") {
26
- const result = constraint(value);
27
- if (result instanceof type.errors) {
28
- return result.summary;
29
- }
30
- }
31
- return null;
32
- };
33
- var buildHttpContext = async (ctx) => {
34
- const { req, server } = ctx;
35
- const address = server.requestIP(req);
36
- const ip = address?.address ?? "unknown";
37
- const response = new HttpResponse;
38
- let payload = {};
39
- let form = null;
40
- const contentType = req.headers.get("content-type");
41
- if (contentType?.includes("application/json")) {
42
- try {
43
- payload = await req.json();
44
- } catch (_e) {}
45
- } else {
46
- try {
47
- form = await req.formData();
48
- } catch (_e) {}
49
- }
50
- const request = new HttpRequest(req, {
51
- params: req.params,
52
- payload,
53
- form,
54
- ip
55
- });
56
- const context = {
57
- logger: container.get("logger"),
58
- analytics: container.get("analytics"),
59
- cache: container.get("cache"),
60
- storage: container.get("storage"),
61
- mailer: container.get("mailer"),
62
- database: container.get("database"),
63
- app: {
64
- env: container.get("app.env")
65
- },
66
- response,
67
- request,
68
- params: request.params,
69
- payload: request.payload,
70
- queries: request.queries,
71
- method: request.method,
72
- header: request.header,
73
- files: request.files,
74
- ip: request.ip,
75
- host: request.host,
76
- language: request.language,
77
- user: null
78
- };
79
- return context;
80
- };
81
- var validateRouteAccess = async (context, route, currentEnv) => {
82
- if (route.params) {
83
- for (const [paramName, constraint] of Object.entries(route.params)) {
84
- const error = validateConstraint(constraint, context.params[paramName]);
85
- if (error) {
86
- return {
87
- message: `Invalid parameter "${paramName}": ${error}`,
88
- status: HttpStatus.Code.BadRequest
89
- };
90
- }
91
- }
92
- }
93
- if (route.queries) {
94
- const error = validateConstraint(route.queries, context.queries);
95
- if (error) {
96
- return {
97
- message: `Invalid query parameters: ${error}`,
98
- status: HttpStatus.Code.BadRequest
99
- };
100
- }
101
- }
102
- if (route.payload) {
103
- const error = validateConstraint(route.payload, context.payload);
104
- if (error) {
105
- return {
106
- message: `Invalid payload: ${error}`,
107
- status: HttpStatus.Code.BadRequest
108
- };
109
- }
110
- }
111
- if (route.env && route.env.length > 0 && !route.env.includes(currentEnv)) {
112
- return {
113
- message: `Route "${route.name}" is not available in "${currentEnv}" environment`,
114
- status: HttpStatus.Code.NotAcceptable
115
- };
116
- }
117
- if (route.ip && route.ip.length > 0 && (!context.ip || !route.ip.includes(context.ip))) {
118
- return {
119
- message: `Route "${route.name}" is not available for IP "${context.ip}"`,
120
- status: HttpStatus.Code.NotAcceptable
121
- };
122
- }
123
- if (route.host && route.host.length > 0 && !route.host.includes(context.host)) {
124
- return {
125
- message: `Route "${route.name}" is not available for host "${context.host}"`,
126
- status: HttpStatus.Code.NotAcceptable
127
- };
128
- }
129
- if (route.roles && route.roles.length > 0) {
130
- if (!context.user || !context.user.roles || context.user.roles.length === 0) {
131
- return {
132
- message: `Route "${route.name}" requires authentication`,
133
- status: HttpStatus.Code.Forbidden
134
- };
135
- }
136
- const role = new Role;
137
- const hasRequiredRole = route.roles.some((requiredRole) => context.user?.roles.some((userRole) => role.hasRole(userRole, requiredRole)));
138
- if (!hasRequiredRole) {
139
- return {
140
- message: `Route "${route.name}" is not accessible for user roles`,
141
- status: HttpStatus.Code.NotAcceptable
142
- };
143
- }
144
- }
145
- if (route.permission) {
146
- const permission = container.get(route.permission);
147
- permission.setUserPermissions(context.user).build();
148
- const hasPermission = await permission.check();
149
- if (!hasPermission) {
150
- return {
151
- message: `Route "${route.name}" permission denied`,
152
- status: HttpStatus.Code.Forbidden
153
- };
154
- }
155
- }
156
- return null;
157
- };
158
- var validateResponse = (route, data) => {
159
- if (route.response) {
160
- const error = validateConstraint(route.response, data);
161
- if (error) {
162
- return {
163
- message: `Invalid response: ${error}`,
164
- status: HttpStatus.Code.NotAcceptable
165
- };
166
- }
167
- }
168
- return null;
169
- };
170
- var buildExceptionResponse = (context, message, status, env) => {
171
- return context.response.exception(message, { status }).get(env);
172
- };
173
- var executeController = async (controller, context) => {
174
- try {
175
- const response = await controller.index(context);
176
- return [response, null];
177
- } catch (error) {
178
- if (error instanceof Exception) {
179
- return [null, { message: error.message, status: error.status }];
180
- }
181
- if (error instanceof Error) {
182
- return [null, { message: error.message, status: HttpStatus.Code.InternalServerError }];
183
- }
184
- return [null, { message: "An unknown error occurred", status: HttpStatus.Code.InternalServerError }];
185
- }
186
- };
187
- var httpRouteHandler = async (context, route) => {
188
- const currentEnv = context.app.env.env || Environment.PRODUCTION;
189
- const validationError = await validateRouteAccess(context, route, currentEnv);
190
- if (validationError) {
191
- return buildExceptionResponse(context, validationError.message, validationError.status, currentEnv);
192
- }
193
- const controller = container.get(route.controller);
194
- const [response, controllerError] = await executeController(controller, context);
195
- if (controllerError) {
196
- return buildExceptionResponse(context, controllerError.message, controllerError.status, currentEnv);
197
- }
198
- const responseValidationError = validateResponse(route, response.getData());
199
- if (responseValidationError) {
200
- return buildExceptionResponse(context, responseValidationError.message, responseValidationError.status, currentEnv);
201
- }
202
- return response.get(currentEnv);
203
- };
204
- var runMiddlewares = async (context, middlewares) => {
205
- let currentContext = context;
206
- for (const MiddlewareClass of middlewares) {
207
- const middleware = container.get(MiddlewareClass);
208
- currentContext = await middleware.handle(currentContext);
209
- }
210
- return currentContext;
211
- };
212
- var formatHttpRoutes = (httpRoutes, middlewares = []) => {
213
- const routes = {};
214
- for (const [path, routeConfigs] of httpRoutes) {
215
- const methodHandlers = {};
216
- for (const route of routeConfigs) {
217
- methodHandlers[route.method] = async (req, server) => {
218
- let context = await buildHttpContext({ req, server });
219
- try {
220
- context = await runMiddlewares(context, middlewares);
221
- } catch (error) {
222
- const env = context.app.env.env || Environment.PRODUCTION;
223
- const status = error instanceof Exception ? error.status : HttpStatus.Code.InternalServerError;
224
- return buildExceptionResponse(context, error.message, status, env);
225
- }
226
- return httpRouteHandler(context, route);
227
- };
228
- }
229
- routes[path] = methodHandlers;
230
- }
231
- return routes;
232
- };
233
-
234
- // src/logger.ts
235
- var logger = (loggers, container2) => ({
236
- error: (message, data) => {
237
- loggers.forEach((logger2) => {
238
- const log = container2.get(logger2);
239
- if (log) {
240
- log.error(message, data);
241
- }
242
- });
243
- },
244
- warn: (message, data) => {
245
- loggers.forEach((logger2) => {
246
- const log = container2.get(logger2);
247
- if (log) {
248
- log.warn(message, data);
249
- }
250
- });
251
- },
252
- info: (message, data) => {
253
- loggers.forEach((logger2) => {
254
- const log = container2.get(logger2);
255
- if (log) {
256
- log.info(message, data);
257
- }
258
- });
259
- },
260
- debug: (message, data) => {
261
- loggers.forEach((logger2) => {
262
- const log = container2.get(logger2);
263
- if (log) {
264
- log.debug(message, data);
265
- }
266
- });
267
- },
268
- log: (message, data) => {
269
- loggers.forEach((logger2) => {
270
- const log = container2.get(logger2);
271
- if (log) {
272
- log.log(message, data);
273
- }
274
- });
275
- },
276
- success: (message, data) => {
277
- loggers.forEach((logger2) => {
278
- const log = container2.get(logger2);
279
- if (log) {
280
- log.success(message, data);
281
- }
282
- });
283
- }
284
- });
285
-
286
- // src/socketRouteUtils.ts
287
- import { Environment as Environment2 } from "@ooneex/app-env";
288
- import { container as container2 } from "@ooneex/container";
289
- import { Exception as Exception2 } from "@ooneex/exception";
290
- import { HttpStatus as HttpStatus2 } from "@ooneex/http-status";
291
- import { random } from "@ooneex/utils";
292
- var formatSocketRoutes = (socketRoutes) => {
293
- const routes = {};
294
- for (const [path, route] of socketRoutes) {
295
- routes[path] = async (req, server) => {
296
- const context = await buildHttpContext({ req, server });
297
- const id = random.nanoid(30);
298
- container2.addConstant(id, { context, route });
299
- server.upgrade(req, { data: { id } });
300
- return;
301
- };
302
- }
303
- return routes;
304
- };
305
- var runMiddlewares2 = async (context, middlewares) => {
306
- let currentContext = context;
307
- for (const MiddlewareClass of middlewares) {
308
- const middleware = container2.get(MiddlewareClass);
309
- currentContext = await middleware.handle(currentContext);
310
- }
311
- return currentContext;
312
- };
313
- var sendException = (context, message, status) => {
314
- context.response.exception(message, { status });
315
- return context.channel.send(context.response);
316
- };
317
- var socketRouteHandler = async (message, ws, server, middlewares = []) => {
318
- let { context, route } = container2.getConstant(ws.data.id);
319
- const currentEnv = context.app.env.env || Environment2.PRODUCTION;
320
- context.channel = {
321
- send: async (response) => {
322
- const data = await response.get(currentEnv).json();
323
- ws.send(JSON.stringify(data));
324
- },
325
- close: (code, reason) => {
326
- ws.close(code, reason);
327
- },
328
- subscribe: async () => {
329
- ws.subscribe(route.name);
330
- },
331
- isSubscribed: () => {
332
- return ws.isSubscribed(route.name);
333
- },
334
- unsubscribe: async () => {
335
- ws.unsubscribe(route.name);
336
- },
337
- publish: async (response) => {
338
- const data = await response.get(currentEnv).json();
339
- server.publish(route.name, data);
340
- }
341
- };
342
- const requestData = JSON.parse(message);
343
- context.queries = requestData.queries;
344
- context.payload = requestData.payload;
345
- context.language = requestData.language;
346
- try {
347
- context = await runMiddlewares2(context, middlewares);
348
- } catch (error) {
349
- const status = error instanceof Exception2 ? error.status : HttpStatus2.Code.InternalServerError;
350
- return sendException(context, error.message, status);
351
- }
352
- const validationError = await validateRouteAccess(context, route, currentEnv);
353
- if (validationError) {
354
- return sendException(context, validationError.message, validationError.status);
355
- }
356
- const controller = container2.get(route.controller);
357
- try {
358
- context.response = await controller.index(context);
359
- } catch (error) {
360
- const status = error instanceof Exception2 ? error.status : HttpStatus2.Code.InternalServerError;
361
- const message2 = error instanceof Error ? error.message : "An unknown error occurred";
362
- return sendException(context, message2, status);
363
- }
364
- const responseValidationError = validateResponse(route, context.response.getData());
365
- if (responseValidationError) {
366
- return sendException(context, responseValidationError.message, responseValidationError.status);
367
- }
368
- return context.channel.send(context.response);
369
- };
370
-
371
- // src/staticHandler.ts
372
- import { join } from "path";
373
- import { HttpStatus as HttpStatus3 } from "@ooneex/http-status";
374
- var staticHandler = async (options) => {
375
- const { req, cwd } = options;
376
- const path = new URL(req.url).pathname;
377
- const filePath = join(cwd, path);
378
- const file = Bun.file(filePath);
379
- if (await file.exists()) {
380
- return new Response(file);
381
- }
382
- return new Response("File not found", {
383
- status: HttpStatus3.Code.NotFound
384
- });
385
- };
386
-
387
- // src/App.ts
388
- class App {
389
- config;
390
- constructor(config) {
391
- this.config = config;
392
- const { loggers, cronJobs, analytics, cache, storage, database, env, mailer } = this.config;
393
- loggers.forEach((log) => {
394
- const logger2 = container3.get(log);
395
- logger2.init();
396
- });
397
- container3.addConstant("logger", logger(loggers, container3));
398
- cronJobs?.forEach((cronJob) => {
399
- const cron = container3.get(cronJob);
400
- cron.start();
401
- });
402
- if (env) {
403
- container3.addConstant("app.env", env);
404
- }
405
- if (analytics) {
406
- container3.addAlias("analytics", analytics);
407
- }
408
- if (cache) {
409
- container3.addAlias("cache", cache);
410
- }
411
- if (storage) {
412
- container3.addAlias("storage", storage);
413
- }
414
- if (mailer) {
415
- container3.addAlias("mailer", mailer);
416
- }
417
- if (database) {
418
- container3.addConstant("database", database);
419
- }
420
- }
421
- async init() {
422
- const appEnv = Bun.env.APP_ENV;
423
- const port = Bun.env.PORT ? Number.parseInt(Bun.env.PORT, 10) : 3000;
424
- const hostname = Bun.env.HOST_NAME ?? "";
425
- const appEnvValidator = new AssertAppEnv;
426
- const appEnvResult = appEnvValidator.validate(appEnv);
427
- if (!appEnvResult.isValid) {
428
- throw new Exception3(`Invalid APP_ENV: ${appEnvResult.message}`, {
429
- status: HttpStatus4.Code.InternalServerError,
430
- data: { appEnv }
431
- });
432
- }
433
- const portValidator = new AssertPort;
434
- const portResult = portValidator.validate(port);
435
- if (!portResult.isValid) {
436
- throw new Exception3(`Invalid PORT: ${portResult.message}`, {
437
- status: HttpStatus4.Code.InternalServerError,
438
- data: { port: Bun.env.PORT }
439
- });
440
- }
441
- const hostnameValidator = new AssertHostname;
442
- const hostnameResult = hostnameValidator.validate(hostname);
443
- if (!hostnameResult.isValid) {
444
- throw new Exception3(`Invalid HOST_NAME: ${hostnameResult.message}`, {
445
- status: HttpStatus4.Code.InternalServerError,
446
- data: { hostname }
447
- });
448
- }
449
- return this;
450
- }
451
- async run() {
452
- try {
453
- await this.init();
454
- } catch (error) {
455
- const logger2 = new TerminalLogger;
456
- logger2.error(error);
457
- process.exit(1);
458
- }
459
- const env = container3.get("app.env");
460
- const hostname = Bun.env.HOST_NAME || "0.0.0.0";
461
- const { directories } = this.config;
462
- const staticDir = directories.static;
463
- const { middlewares = [] } = this.config;
464
- const routes = {
465
- ...formatHttpRoutes(router.getHttpRoutes(), middlewares),
466
- ...formatSocketRoutes(router.getSocketRoutes())
467
- };
468
- if (staticDir) {
469
- const trimmedStaticDir = staticDir.replace(/^\/+|\/+$/g, "");
470
- routes[`/${trimmedStaticDir}/*`] = {
471
- GET: (req) => staticHandler({
472
- req,
473
- cwd: directories.cwd
474
- })
475
- };
476
- }
477
- const server = Bun.serve({
478
- port: Bun.env.PORT ? Number.parseInt(Bun.env.PORT, 10) : 3000,
479
- hostname,
480
- development: env.isLocal,
481
- routes: {
482
- ...routes,
483
- "/*": this.config.spa || new Response("Not Found", { status: HttpStatus4.Code.NotFound })
484
- },
485
- websocket: {
486
- perMessageDeflate: true,
487
- async message(ws, message) {
488
- await socketRouteHandler(message, ws, server, middlewares);
489
- },
490
- async close(ws) {
491
- container3.removeConstant(ws.data.id);
492
- }
493
- }
494
- });
495
- return this;
496
- }
497
- }
498
- // src/generateRouteDoc.ts
499
- import { join as join2 } from "path";
500
- import { routeConfigToJsonDoc } from "@ooneex/routing";
501
- var generateRouteDoc = async (config) => {
502
- const outputDir = "docs/routes";
503
- const jsonDoc = routeConfigToJsonDoc(config);
504
- const fileName = `${config.name}.json`;
505
- const filePath = join2(process.cwd(), outputDir, fileName);
506
- await Bun.write(filePath, JSON.stringify(jsonDoc, null, 2));
507
- };
508
- // src/generateRouteType.ts
509
- import { join as join3 } from "path";
510
- import { routeConfigToTypeString } from "@ooneex/routing";
511
- import { toPascalCase } from "@ooneex/utils";
512
- var generateRouteType = async (config) => {
513
- const outputDir = "src/types/routes";
514
- const typeString = routeConfigToTypeString(config);
515
- const fileName = `${config.name}.ts`;
516
- const filePath = join3(process.cwd(), outputDir, fileName);
517
- const typeName = toPascalCase(config.name);
518
- const fileContent = `export type ${typeName}RouteType = ${typeString};
519
- `;
520
- await Bun.write(filePath, fileContent);
521
- };
522
- export {
523
- generateRouteType,
524
- generateRouteDoc,
525
- App
526
- };
527
-
528
- //# debugId=7A8C41F72860E85064756E2164756E21
5
+ //# debugId=89C040240BC654D964756E2164756E21
package/dist/index.js.map CHANGED
@@ -10,7 +10,7 @@
10
10
  "import { join } from \"node:path\";\nimport type { RouteConfigType } from \"@ooneex/routing\";\nimport { routeConfigToJsonDoc } from \"@ooneex/routing\";\n\nexport const generateRouteDoc = async (config: RouteConfigType): Promise<void> => {\n const outputDir = \"docs/routes\";\n const jsonDoc = routeConfigToJsonDoc(config);\n const fileName = `${config.name}.json`;\n const filePath = join(process.cwd(), outputDir, fileName);\n\n await Bun.write(filePath, JSON.stringify(jsonDoc, null, 2));\n};\n",
11
11
  "import { join } from \"node:path\";\nimport type { RouteConfigType } from \"@ooneex/routing\";\nimport { routeConfigToTypeString } from \"@ooneex/routing\";\nimport { toPascalCase } from \"@ooneex/utils\";\n\nexport const generateRouteType = async (config: RouteConfigType): Promise<void> => {\n const outputDir = \"src/types/routes\";\n const typeString = routeConfigToTypeString(config);\n const fileName = `${config.name}.ts`;\n const filePath = join(process.cwd(), outputDir, fileName);\n\n const typeName = toPascalCase(config.name);\n\n const fileContent = `export type ${typeName}RouteType = ${typeString};\n`;\n\n await Bun.write(filePath, fileContent);\n};\n"
12
12
  ],
13
- "mappings": "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",
14
- "debugId": "7A8C41F72860E85064756E2164756E21",
13
+ "mappings": "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",
14
+ "debugId": "89C040240BC654D964756E2164756E21",
15
15
  "names": []
16
16
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ooneex/app",
3
3
  "description": "Core application framework for building modern web applications with Bun, providing routing, middleware, caching, logging, and more",
4
- "version": "0.13.0",
4
+ "version": "0.15.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist",
@@ -29,32 +29,32 @@
29
29
  "dev": "bun run src/dev.ts"
30
30
  },
31
31
  "dependencies": {
32
- "@ooneex/analytics": "0.0.13",
33
- "@ooneex/app-env": "0.0.13",
34
- "@ooneex/cache": "0.0.14",
35
- "@ooneex/container": "0.0.14",
36
- "@ooneex/database": "0.0.13",
37
- "@ooneex/exception": "0.0.13",
38
- "@ooneex/http-request": "0.12.0",
39
- "@ooneex/http-response": "0.12.0",
40
- "@ooneex/http-status": "0.0.13",
41
- "@ooneex/logger": "0.12.0",
42
- "@ooneex/mailer": "0.0.13",
43
- "@ooneex/rate-limit": "0.0.13",
44
- "@ooneex/role": "0.0.13",
45
- "@ooneex/routing": "0.12.0",
46
- "@ooneex/storage": "0.0.13",
32
+ "@ooneex/analytics": "0.0.17",
33
+ "@ooneex/app-env": "0.0.16",
34
+ "@ooneex/cache": "0.0.17",
35
+ "@ooneex/container": "0.0.17",
36
+ "@ooneex/database": "0.0.16",
37
+ "@ooneex/exception": "0.0.16",
38
+ "@ooneex/http-request": "0.15.0",
39
+ "@ooneex/http-response": "0.15.0",
40
+ "@ooneex/http-status": "0.0.16",
41
+ "@ooneex/logger": "0.15.0",
42
+ "@ooneex/mailer": "0.0.16",
43
+ "@ooneex/rate-limit": "0.0.16",
44
+ "@ooneex/role": "0.0.16",
45
+ "@ooneex/routing": "0.15.0",
46
+ "@ooneex/storage": "0.0.17",
47
47
  "@ooneex/utils": "0.1.0",
48
- "@ooneex/validation": "0.0.13"
48
+ "@ooneex/validation": "0.0.16"
49
49
  },
50
50
  "devDependencies": {
51
- "@ooneex/controller": "0.12.0",
52
- "@ooneex/cron": "0.0.13",
53
- "@ooneex/middleware": "0.12.0",
54
- "@ooneex/module": "0.12.0",
55
- "@ooneex/socket": "0.12.0",
56
- "@ooneex/translation": "0.0.13",
57
- "@ooneex/types": "0.0.13"
51
+ "@ooneex/controller": "0.15.0",
52
+ "@ooneex/cron": "0.0.16",
53
+ "@ooneex/middleware": "0.15.0",
54
+ "@ooneex/module": "0.15.0",
55
+ "@ooneex/socket": "0.15.0",
56
+ "@ooneex/translation": "0.0.16",
57
+ "@ooneex/types": "0.0.16"
58
58
  },
59
59
  "keywords": [
60
60
  "application",