@gracile/engine 0.6.0 → 0.7.0-next.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.
Files changed (43) hide show
  1. package/dist/build/static.d.ts +8 -2
  2. package/dist/build/static.d.ts.map +1 -1
  3. package/dist/build/static.js +32 -7
  4. package/dist/dev/dev.d.ts +4 -1
  5. package/dist/dev/dev.d.ts.map +1 -1
  6. package/dist/dev/dev.js +12 -6
  7. package/dist/plugin.d.ts.map +1 -1
  8. package/dist/plugin.js +51 -40
  9. package/dist/render/markers.d.ts +3 -0
  10. package/dist/render/markers.d.ts.map +1 -0
  11. package/dist/render/markers.js +4 -0
  12. package/dist/render/route-template.d.ts +5 -10
  13. package/dist/render/route-template.d.ts.map +1 -1
  14. package/dist/render/route-template.js +32 -40
  15. package/dist/render/utils.d.ts +24 -1
  16. package/dist/render/utils.d.ts.map +1 -1
  17. package/dist/render/utils.js +23 -1
  18. package/dist/routes/collect.d.ts +1 -1
  19. package/dist/routes/collect.d.ts.map +1 -1
  20. package/dist/routes/collect.js +2 -2
  21. package/dist/routes/match.js +3 -3
  22. package/dist/routes/route.d.ts +1 -1
  23. package/dist/routes/route.d.ts.map +1 -1
  24. package/dist/server/adapters/hono.js +3 -3
  25. package/dist/server/adapters/node.d.ts.map +1 -1
  26. package/dist/server/adapters/node.js +3 -3
  27. package/dist/server/constants.d.ts +1 -1
  28. package/dist/server/constants.d.ts.map +1 -1
  29. package/dist/server/constants.js +1 -1
  30. package/dist/server/request.d.ts +3 -1
  31. package/dist/server/request.d.ts.map +1 -1
  32. package/dist/server/request.js +55 -31
  33. package/dist/server/utils.js +3 -3
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. package/dist/user-config.d.ts +35 -1
  36. package/dist/user-config.d.ts.map +1 -1
  37. package/dist/vite/plugins/build-routes.d.ts +6 -2
  38. package/dist/vite/plugins/build-routes.d.ts.map +1 -1
  39. package/dist/vite/plugins/build-routes.js +67 -35
  40. package/dist/vite/plugins/virtual-routes.d.ts +10 -0
  41. package/dist/vite/plugins/virtual-routes.d.ts.map +1 -1
  42. package/dist/vite/plugins/virtual-routes.js +54 -3
  43. package/package.json +7 -9
@@ -50,7 +50,7 @@ export type Handler<Data extends HandlerData | HandlerDataHtml = never> = (conte
50
50
  responseInit: ResponseInit;
51
51
  }) => MaybePromise<Data> | MaybePromise<void>;
52
52
  export type HandlerGeneric = Handler<HandlerData | HandlerDataHtml> | Partial<Record<MethodHtml, Handler<HandlerData | HandlerDataHtml>> & Record<MethodNonHtml, Handler<Response>>>;
53
- export type StaticPathsGeneric = () => StaticPathOptionsGeneric[];
53
+ export type StaticPathsGeneric = () => MaybePromise<StaticPathOptionsGeneric[]>;
54
54
  export type HandlerData = Response | undefined;
55
55
  export type HandlerDataHtml = HandlerData | object;
56
56
  export type StaticPathOptionsGeneric = {
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/routes/route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/routes/route.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  import { relative } from 'node:path';
3
3
  import { Readable } from 'node:stream';
4
4
  import { fileURLToPath } from 'node:url';
5
- import { server } from '../constants.js';
5
+ import { constants } from '../constants.js';
6
6
  /**
7
7
  * @param handler - Takes a pre-built Gracile handler from `./dist/server/entrypoint.js`.
8
8
  * @example
@@ -24,7 +24,7 @@ import { server } from '../constants.js';
24
24
  */
25
25
  export const honoAdapter = (handler) => async (context) => {
26
26
  const result = await handler(context.req.raw, context.var);
27
- // TODO: Hhandle stream abortion as gracefully as with Express.
27
+ // TODO: Handle stream abortion as gracefully as with Express.
28
28
  if (result?.body) {
29
29
  // NOTE: Typings mismatches
30
30
  const body = Readable.toWeb(result.body);
@@ -50,6 +50,6 @@ export const honoAdapter = (handler) => async (context) => {
50
50
  * ```
51
51
  */
52
52
  export function getClientDistPath(root) {
53
- return relative(process.cwd(), fileURLToPath(new URL(server.CLIENT_DIST_DIR, root)));
53
+ return relative(process.cwd(), fileURLToPath(new URL(constants.CLIENT_DIST_DIR, root)));
54
54
  }
55
55
  export { printUrls } from '../utils.js';
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/node.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAI5D,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,eAAe,CAAC;AAoBhE,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,MAAM,kBAAkB,GAAG,CAChC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,MAAM,CAAC,EAAE,OAAO,KAEZ,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAE5D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,kBAAkB,CAkDvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,UAE7C;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/node.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAG5D,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,eAAe,CAAC;AAoBhE,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,MAAM,kBAAkB,GAAG,CAChC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,MAAM,CAAC,EAAE,OAAO,KAEZ,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAE5D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,kBAAkB,CAkDvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,UAE7C;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -1,9 +1,9 @@
1
+ import { Writable } from 'node:stream';
1
2
  import { fileURLToPath } from 'node:url';
2
3
  import { env } from '@gracile/internal-utils/env';
3
4
  import { logger } from '@gracile/internal-utils/logger';
4
5
  import { createServerAdapter } from '@whatwg-node/server';
5
- import { Writable } from 'stream';
6
- import { server } from '../constants.js';
6
+ import { constants } from '../constants.js';
7
7
  import { isRedirect } from '../request.js';
8
8
  // NOTE: Find a more canonical way to ponyfill the Node HTTP request to standard Request
9
9
  // @ts-expect-error Abusing this feature!
@@ -89,6 +89,6 @@ export function nodeAdapter(handler) {
89
89
  * ```
90
90
  */
91
91
  export function getClientDistPath(root) {
92
- return fileURLToPath(new URL(server.CLIENT_DIST_DIR, root));
92
+ return fileURLToPath(new URL(constants.CLIENT_DIST_DIR, root));
93
93
  }
94
94
  export { printUrls } from '../utils.js';
@@ -16,7 +16,7 @@
16
16
  * );
17
17
  * ```
18
18
  */
19
- export declare const server: Readonly<{
19
+ export declare const constants: Readonly<{
20
20
  LOCALHOST: "localhost";
21
21
  IP_LOCALHOST: "127.0.0.1";
22
22
  IP_EXPOSED: "0.0.0.0";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/server/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,MAAM;;;;;;;EAQjB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/server/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,SAAS;;;;;;;EAQpB,CAAC"}
@@ -16,7 +16,7 @@
16
16
  * );
17
17
  * ```
18
18
  */
19
- export const server = Object.freeze({
19
+ export const constants = Object.freeze({
20
20
  LOCALHOST: 'localhost',
21
21
  IP_LOCALHOST: '127.0.0.1',
22
22
  IP_EXPOSED: '0.0.0.0',
@@ -1,6 +1,7 @@
1
1
  import { Readable } from 'node:stream';
2
2
  import type { ViteDevServer } from 'vite';
3
3
  import type * as R from '../routes/route.js';
4
+ import type { GracileConfig } from '../user-config.js';
4
5
  type StandardResponse = {
5
6
  response: Response;
6
7
  body?: never;
@@ -18,13 +19,14 @@ export type GracileHandler = (request: Request, locals?: unknown) => Promise<Sta
18
19
  export declare function isRedirect(response: Response): {
19
20
  location: string;
20
21
  } | null;
21
- export declare function createGracileHandler({ vite, routes, routeImports, routeAssets, root, serverMode, }: {
22
+ export declare function createGracileHandler({ vite, routes, routeImports, routeAssets, root, serverMode, gracileConfig, }: {
22
23
  vite?: ViteDevServer | undefined;
23
24
  routes: R.RoutesManifest;
24
25
  routeImports?: R.RoutesImports | undefined;
25
26
  routeAssets?: R.RoutesAssets;
26
27
  root: string;
27
28
  serverMode?: boolean | undefined;
29
+ gracileConfig: GracileConfig;
28
30
  }): GracileHandler;
29
31
  export {};
30
32
  //# sourceMappingURL=request.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/server/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,MAAM,CAAC;AAOxD,OAAO,KAAK,KAAK,CAAC,MAAM,oBAAoB,CAAC;AAI7C,KAAK,gBAAgB,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAC3E,KAAK,wBAAwB,GAAG;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAC5B,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,OAAO,KACZ,OAAO,CAAC,gBAAgB,GAAG,wBAAwB,GAAG,IAAI,CAAC,CAAC;AAIjE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAO1E;AAED,wBAAgB,oBAAoB,CAAC,EACpC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,WAAW,EACX,IAAI,EACJ,UAAU,GACV,EAAE;IACF,IAAI,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,CAAC,aAAa,GAAG,SAAS,CAAC;IAC3C,WAAW,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC,kBAgPA"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/server/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKvC,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,MAAM,CAAC;AAOxD,OAAO,KAAK,KAAK,CAAC,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,KAAK,gBAAgB,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAC3E,KAAK,wBAAwB,GAAG;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAC5B,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,OAAO,KACZ,OAAO,CAAC,gBAAgB,GAAG,wBAAwB,GAAG,IAAI,CAAC,CAAC;AAIjE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAO1E;AAED,wBAAgB,oBAAoB,CAAC,EACpC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,WAAW,EACX,IAAI,EACJ,UAAU,EACV,aAAa,GACb,EAAE;IACF,IAAI,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,CAAC,aAAa,GAAG,SAAS,CAAC;IAC3C,WAAW,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;CAC7B,kBA8QA"}
@@ -1,10 +1,11 @@
1
1
  import { Readable } from 'node:stream';
2
2
  import { logger } from '@gracile/internal-utils/logger';
3
+ // import { logger } from '@gracile/internal-utils/logger/vite-logger';
3
4
  import c from 'picocolors';
4
5
  import * as assert from '../assertions.js';
5
6
  import { errorPage } from '../errors/templates.js';
6
7
  import { renderRouteTemplate } from '../render/route-template.js';
7
- import { renderSsrTemplate } from '../render/utils.js';
8
+ import { renderLitTemplate } from '../render/utils.js';
8
9
  import { getRoute } from '../routes/match.js';
9
10
  const CONTENT_TYPE_HTML = { 'Content-Type': 'text/html' };
10
11
  export function isRedirect(response) {
@@ -14,19 +15,26 @@ export function isRedirect(response) {
14
15
  }
15
16
  return null;
16
17
  }
17
- export function createGracileHandler({ vite, routes, routeImports, routeAssets, root, serverMode, }) {
18
+ export function createGracileHandler({ vite, routes, routeImports, routeAssets, root, serverMode, gracileConfig, }) {
18
19
  async function createErrorPage(urlPath, e) {
19
20
  logger.error(e.message);
20
- let errorPageHtml = await renderSsrTemplate(errorPage(e));
21
+ let errorPageHtml = await renderLitTemplate(errorPage(e));
21
22
  if (vite)
22
23
  errorPageHtml = await vite.transformIndexHtml(urlPath, errorPageHtml);
23
24
  return { errorPageHtml, headers: { ...CONTENT_TYPE_HTML } };
24
25
  }
25
26
  const middleware = async (request, locals) => {
26
27
  try {
27
- // NOTE: Maybe it should be constructed from `req`
28
- const { url: fullUrl, method } = request;
28
+ const { url: requestedUrl, method } = request;
29
+ // MARK: Rewrite hidden route siblings
30
+ const fullUrl = requestedUrl.replace(/\/__(.*)$/, '/');
29
31
  // MARK: Get route infos
32
+ const exposePremises = gracileConfig.pages?.premises?.expose
33
+ ? {
34
+ propsOnly: /\/__(.*?)\.props\.json$/.test(requestedUrl),
35
+ docOnly: /\/__(.*?)\.doc\.html$/.test(requestedUrl),
36
+ }
37
+ : null;
30
38
  const routeOptions = {
31
39
  url: fullUrl,
32
40
  vite,
@@ -34,7 +42,7 @@ export function createGracileHandler({ vite, routes, routeImports, routeAssets,
34
42
  routeImports,
35
43
  };
36
44
  const routeInfos = await getRoute(routeOptions).catch(async (error) => {
37
- // MARK: User defined Gracile 404
45
+ // MARK: User defined Gracile 404 rewriting
38
46
  logger.error(String(error));
39
47
  const url = new URL('/404/', fullUrl).href;
40
48
  const options = { ...routeOptions, url };
@@ -54,13 +62,14 @@ export function createGracileHandler({ vite, routes, routeImports, routeAssets,
54
62
  };
55
63
  }
56
64
  const routeTemplateOptions = {
57
- request,
65
+ url: fullUrl,
58
66
  vite,
59
67
  mode: 'dev', // vite && vite.config.mode === 'dev' ? 'dev' : 'build',
60
68
  routeAssets,
61
69
  root,
62
70
  serverMode,
63
71
  routeInfos,
72
+ docOnly: exposePremises?.docOnly,
64
73
  };
65
74
  logger.info(`[${c.yellow(method)}] ${c.yellow(fullUrl)}`, {
66
75
  timestamp: true,
@@ -72,10 +81,9 @@ export function createGracileHandler({ vite, routes, routeImports, routeAssets,
72
81
  // MARK: Server handler
73
82
  const handler = routeInfos.routeModule.handler;
74
83
  const responseInit = {};
75
- // TODO: should move this to `special-file` so we don't recalculate on each request
76
- // + we would be able to do some route codegen.
77
84
  if (('handler' in routeInfos.routeModule &&
78
85
  typeof handler !== 'undefined') ||
86
+ // TODO: Explain this condition
79
87
  (handler && 'GET' in handler === false && method !== 'GET')) {
80
88
  const routeContext = Object.freeze({
81
89
  request,
@@ -105,28 +113,34 @@ export function createGracileHandler({ vite, routes, routeImports, routeAssets,
105
113
  // await useHandler();
106
114
  // }
107
115
  //
108
- // MARK: Top level handler
109
- if (typeof handler === 'function') {
110
- const handlerOutput = (await Promise.resolve(handler(routeContext)));
111
- if (assert.isResponseOrPatchedResponse(handlerOutput))
112
- output = handlerOutput;
113
- else
114
- throw new TypeError('Catch-all handler must return a Response object.');
115
- // MARK: Handler with method
116
- }
117
- else if (method in handler) {
118
- const handlerWithMethod = handler[method];
116
+ // MARK: Handler(s)
117
+ const hasTopLevelHandler = typeof handler === 'function';
118
+ if (hasTopLevelHandler || method in handler) {
119
+ const handlerWithMethod = hasTopLevelHandler
120
+ ? handler
121
+ : handler[method];
119
122
  if (typeof handlerWithMethod !== 'function')
120
123
  throw TypeError('Handler must be a function.');
121
124
  const handlerOutput = await Promise.resolve(handlerWithMethod(routeContext));
122
125
  if (assert.isResponseOrPatchedResponse(handlerOutput))
123
126
  output = handlerOutput;
124
127
  else {
125
- output = await renderRouteTemplate({
126
- ...routeTemplateOptions,
127
- handlerInfos: { data: handlerOutput, method },
128
- routeInfos,
129
- }).then((r) => r.output);
128
+ routeTemplateOptions.routeInfos.props = hasTopLevelHandler
129
+ ? handlerOutput
130
+ : { [method]: handlerOutput };
131
+ if (exposePremises?.docOnly) {
132
+ const { document } = await renderRouteTemplate(routeTemplateOptions);
133
+ return {
134
+ response: new Response(document, {
135
+ headers: { ...CONTENT_TYPE_HTML },
136
+ }),
137
+ };
138
+ }
139
+ if (exposePremises?.propsOnly)
140
+ return {
141
+ response: Response.json(routeTemplateOptions.routeInfos.props),
142
+ };
143
+ output = await renderRouteTemplate(routeTemplateOptions).then((r) => r.output);
130
144
  }
131
145
  // MARK: No GET, render page
132
146
  }
@@ -138,11 +152,19 @@ export function createGracileHandler({ vite, routes, routeImports, routeAssets,
138
152
  }
139
153
  }
140
154
  else {
141
- output = await renderRouteTemplate({
142
- ...routeTemplateOptions,
143
- handlerInfos: { data: null, method: 'GET' },
144
- routeInfos,
145
- }).then((r) => r.output);
155
+ if (exposePremises?.docOnly) {
156
+ const { document } = await renderRouteTemplate(routeTemplateOptions);
157
+ return {
158
+ response: new Response(document, {
159
+ headers: { ...CONTENT_TYPE_HTML },
160
+ }),
161
+ };
162
+ }
163
+ if (exposePremises?.propsOnly)
164
+ return {
165
+ response: Response.json(routeTemplateOptions.routeInfos.props || {}),
166
+ };
167
+ output = await renderRouteTemplate(routeTemplateOptions).then((r) => r.output);
146
168
  }
147
169
  // MARK: Return response
148
170
  // NOTE: try directly with the requestPonyfill. This might not be necessary
@@ -183,7 +205,9 @@ export function createGracileHandler({ vite, routes, routeImports, routeAssets,
183
205
  // NOTE: Arbitrary value. Lower seems to be too fast, higher is not guaranteed to work.
184
206
  }, 750);
185
207
  }
186
- logger.error(errorMessage);
208
+ else {
209
+ logger.error(errorMessage);
210
+ }
187
211
  }),
188
212
  init: responseInit,
189
213
  };
@@ -2,7 +2,7 @@
2
2
  import { env as currentEnv } from '@gracile/internal-utils/env';
3
3
  import { logger } from '@gracile/internal-utils/logger';
4
4
  import c from 'picocolors';
5
- import { server as serverConstants } from './constants.js';
5
+ import { constants } from './constants.js';
6
6
  // setTimeout(() => {
7
7
  // logger.info('HY');
8
8
  // });
@@ -52,8 +52,8 @@ export function printUrls(server) {
52
52
  logger.info(c.green(`${envs[env]} ${c.yellow('server started')}`), {
53
53
  timestamp: true,
54
54
  });
55
- if (address.includes(serverConstants.IP_EXPOSED))
56
- logger.info(`${address.includes(serverConstants.IP_EXPOSED)
55
+ if (address.includes(constants.IP_EXPOSED))
56
+ logger.info(`${address.includes(constants.IP_EXPOSED)
57
57
  ? `\n${c.dim('┃')} Network ${c.cyan(address)}\n`
58
58
  : ''}`);
59
59
  else