lovable-ssr 0.1.22 → 0.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/registry.d.ts +3 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -0
- package/dist/ssr/server.d.ts +3 -0
- package/dist/ssr/server.d.ts.map +1 -1
- package/dist/ssr/server.js +57 -25
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +66 -66
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './globals.js';
|
|
2
|
-
export type { RouteConfig, ComponentWithGetData, RouteDataParams, SitemapEntry, SitemapRouteConfig, SitemapChangefreq, } from './types.js';
|
|
3
|
-
export { registerRoutes, getRoutes } from './registry.js';
|
|
2
|
+
export type { RouteConfig, ComponentWithGetData, RouteDataParams, SitemapEntry, SitemapRouteConfig, SitemapChangefreq, MiddlewareContext, MiddlewareFn, MiddlewareResponse, } from './types.js';
|
|
3
|
+
export { registerRoutes, getRoutes, registerMiddleware } from './registry.js';
|
|
4
4
|
export { BrowserRouteDataProvider } from './components/BrowserRouteDataProvider.js';
|
|
5
5
|
export { SEO, type SEOProps } from './components/SEO.js';
|
|
6
6
|
export { default as RouterService } from './router/RouterService.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AACtB,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AACtB,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EACL,MAAM,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import './globals.js';
|
|
2
|
-
export { registerRoutes, getRoutes } from './registry.js';
|
|
2
|
+
export { registerRoutes, getRoutes, registerMiddleware } from './registry.js';
|
|
3
3
|
export { BrowserRouteDataProvider } from './components/BrowserRouteDataProvider.js';
|
|
4
4
|
export { SEO } from './components/SEO.js';
|
|
5
5
|
export { default as RouterService } from './router/RouterService.js';
|
package/dist/registry.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type { RouteConfig } from './types.js';
|
|
1
|
+
import type { MiddlewareFn, RouteConfig } from './types.js';
|
|
2
2
|
export declare function registerRoutes(r: RouteConfig[]): void;
|
|
3
3
|
export declare function getRoutes(): RouteConfig[];
|
|
4
|
+
export declare function registerMiddleware(m: MiddlewareFn): void;
|
|
5
|
+
export declare function getMiddleware(): MiddlewareFn | null;
|
|
4
6
|
//# sourceMappingURL=registry.d.ts.map
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK5D,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAErD;AAED,wBAAgB,SAAS,IAAI,WAAW,EAAE,CAEzC;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAExD;AAED,wBAAgB,aAAa,IAAI,YAAY,GAAG,IAAI,CAEnD"}
|
package/dist/registry.js
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
let routes = [];
|
|
2
|
+
let middleware = null;
|
|
2
3
|
export function registerRoutes(r) {
|
|
3
4
|
routes = r;
|
|
4
5
|
}
|
|
5
6
|
export function getRoutes() {
|
|
6
7
|
return routes;
|
|
7
8
|
}
|
|
9
|
+
export function registerMiddleware(m) {
|
|
10
|
+
middleware = m;
|
|
11
|
+
}
|
|
12
|
+
export function getMiddleware() {
|
|
13
|
+
return middleware;
|
|
14
|
+
}
|
package/dist/ssr/server.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type Express } from 'express';
|
|
2
|
+
import type { MiddlewareFn } from '../types.js';
|
|
2
3
|
export interface RenderResult {
|
|
3
4
|
html: string;
|
|
4
5
|
preloadedData: Record<string, unknown>;
|
|
@@ -22,6 +23,8 @@ export interface CreateServerConfig {
|
|
|
22
23
|
sitemap?: {
|
|
23
24
|
siteUrl: string;
|
|
24
25
|
};
|
|
26
|
+
/** Middleware executed before rendering each route. If it returns a response, the route is not rendered. */
|
|
27
|
+
middleware?: MiddlewareFn;
|
|
25
28
|
}
|
|
26
29
|
export declare function createServer(config: CreateServerConfig): Promise<{
|
|
27
30
|
getApp: () => Express;
|
package/dist/ssr/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ssr/server.ts"],"names":[],"mappings":"AAGA,OAAgB,EAAE,KAAK,OAAO,EAAkD,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ssr/server.ts"],"names":[],"mappings":"AAGA,OAAgB,EAAE,KAAK,OAAO,EAAkD,MAAM,SAAS,CAAC;AAIhG,OAAO,KAAK,EAAqB,YAAY,EAAsC,MAAM,aAAa,CAAC;AAGvG,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wGAAwG;IACxG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,uGAAuG;IACvG,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,4GAA4G;IAC5G,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B;AAwXD,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC;IACtE,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACxD,CAAC,CAOD;AAED;qDACqD;AACrD,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,QAO7D"}
|
package/dist/ssr/server.js
CHANGED
|
@@ -3,7 +3,7 @@ import path from 'node:path';
|
|
|
3
3
|
import { pathToFileURL } from 'node:url';
|
|
4
4
|
import express from 'express';
|
|
5
5
|
import { createServer as createViteServer } from 'vite';
|
|
6
|
-
import { getRoutes } from '../registry.js';
|
|
6
|
+
import { getMiddleware, getRoutes } from '../registry.js';
|
|
7
7
|
import RouterService from '../router/RouterService.js';
|
|
8
8
|
function defaultDistEntryPath(entryPath) {
|
|
9
9
|
return entryPath
|
|
@@ -32,6 +32,7 @@ class SsrServer {
|
|
|
32
32
|
port: config.port ?? 5173,
|
|
33
33
|
cssLinkInDev: config.cssLinkInDev ?? '<link rel="stylesheet" href="/src/index.css"></head>',
|
|
34
34
|
extraRoutes: config.extraRoutes ?? (() => { }),
|
|
35
|
+
middleware: config.middleware ?? null,
|
|
35
36
|
sitemap: config.sitemap ?? undefined,
|
|
36
37
|
};
|
|
37
38
|
this.isProd = process.env.NODE_ENV === 'production';
|
|
@@ -136,14 +137,66 @@ ${lines.join('\n')}
|
|
|
136
137
|
.replace(/"/g, '"')
|
|
137
138
|
.replace(/'/g, ''');
|
|
138
139
|
}
|
|
140
|
+
async runMiddleware(ctx) {
|
|
141
|
+
const mw = this.config.middleware ?? getMiddleware();
|
|
142
|
+
if (!mw)
|
|
143
|
+
return;
|
|
144
|
+
return await mw(ctx);
|
|
145
|
+
}
|
|
146
|
+
sendMiddlewareResponse(res, mwRes) {
|
|
147
|
+
if (mwRes.headers) {
|
|
148
|
+
for (const [key, value] of Object.entries(mwRes.headers)) {
|
|
149
|
+
res.setHeader(key, value);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (mwRes.redirect) {
|
|
153
|
+
res.redirect(mwRes.status ?? 302, mwRes.redirect);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
res.status(mwRes.status ?? 200).send(mwRes.body ?? '');
|
|
157
|
+
}
|
|
139
158
|
async handleRequest(req, res, next) {
|
|
140
159
|
const url = req.originalUrl;
|
|
141
160
|
const pathname = url.replace(/\?.*$/, '').replace(/#.*$/, '') || '/';
|
|
142
161
|
try {
|
|
162
|
+
const matchedRoute = RouterService.matchRoute(pathname);
|
|
163
|
+
const params = matchedRoute
|
|
164
|
+
? RouterService.routeParams(matchedRoute.path, pathname)
|
|
165
|
+
: { routeParams: {}, searchParams: {} };
|
|
166
|
+
const cookiesRaw = req.headers.cookie ?? '';
|
|
167
|
+
const cookies = {};
|
|
168
|
+
if (cookiesRaw) {
|
|
169
|
+
cookiesRaw.split(';').forEach((part) => {
|
|
170
|
+
const [k, ...rest] = part.split('=');
|
|
171
|
+
if (!k)
|
|
172
|
+
return;
|
|
173
|
+
const key = k.trim();
|
|
174
|
+
if (!key)
|
|
175
|
+
return;
|
|
176
|
+
const value = rest.join('=').trim();
|
|
177
|
+
cookies[key] = decodeURIComponent(value);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
const requestContext = {
|
|
181
|
+
cookiesRaw,
|
|
182
|
+
cookies,
|
|
183
|
+
headers: req.headers,
|
|
184
|
+
method: req.method,
|
|
185
|
+
url: req.originalUrl,
|
|
186
|
+
};
|
|
187
|
+
const mwResult = await this.runMiddleware({
|
|
188
|
+
request: requestContext,
|
|
189
|
+
route: matchedRoute,
|
|
190
|
+
pathname,
|
|
191
|
+
params,
|
|
192
|
+
});
|
|
193
|
+
if (mwResult) {
|
|
194
|
+
return this.sendMiddlewareResponse(res, mwResult);
|
|
195
|
+
}
|
|
143
196
|
if (!RouterService.isSsrRoute(pathname)) {
|
|
144
197
|
return await this.renderSpa(url, res);
|
|
145
198
|
}
|
|
146
|
-
return await this.renderSsr(url, res,
|
|
199
|
+
return await this.renderSsr(url, res, requestContext);
|
|
147
200
|
}
|
|
148
201
|
catch (e) {
|
|
149
202
|
if (this.vite) {
|
|
@@ -162,7 +215,7 @@ ${lines.join('\n')}
|
|
|
162
215
|
const template = this.readTemplate(path.join(this.config.root, 'dist', 'index.html'));
|
|
163
216
|
return res.status(200).set({ 'Content-Type': 'text/html' }).send(template);
|
|
164
217
|
}
|
|
165
|
-
async renderSsr(url, res,
|
|
218
|
+
async renderSsr(url, res, requestContext) {
|
|
166
219
|
const { template, render } = await this.getSsrRenderer();
|
|
167
220
|
if (process.env.NODE_ENV !== 'production' && process.env.LOVABLE_SSR_DEBUG) {
|
|
168
221
|
console.log('[lovable-ssr] render(url)', url);
|
|
@@ -170,28 +223,7 @@ ${lines.join('\n')}
|
|
|
170
223
|
let appHtml;
|
|
171
224
|
let preloadedData;
|
|
172
225
|
let helmet;
|
|
173
|
-
|
|
174
|
-
const cookiesRaw = req.headers.cookie ?? '';
|
|
175
|
-
const cookies = {};
|
|
176
|
-
if (cookiesRaw) {
|
|
177
|
-
cookiesRaw.split(';').forEach((part) => {
|
|
178
|
-
const [k, ...rest] = part.split('=');
|
|
179
|
-
if (!k)
|
|
180
|
-
return;
|
|
181
|
-
const key = k.trim();
|
|
182
|
-
if (!key)
|
|
183
|
-
return;
|
|
184
|
-
const value = rest.join('=').trim();
|
|
185
|
-
cookies[key] = decodeURIComponent(value);
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
const requestContext = {
|
|
189
|
-
cookiesRaw,
|
|
190
|
-
cookies,
|
|
191
|
-
headers: req.headers,
|
|
192
|
-
method: req.method,
|
|
193
|
-
url: req.originalUrl,
|
|
194
|
-
};
|
|
226
|
+
const cookiesRaw = requestContext.cookiesRaw;
|
|
195
227
|
if (this.isProd) {
|
|
196
228
|
const cacheKey = this.normalizeCacheKey(url);
|
|
197
229
|
const hasCookies = !!cookiesRaw;
|
package/dist/types.d.ts
CHANGED
|
@@ -37,4 +37,17 @@ export type RouteDataParams = {
|
|
|
37
37
|
searchParams: Record<string, string>;
|
|
38
38
|
request?: RequestContext;
|
|
39
39
|
};
|
|
40
|
+
export type MiddlewareContext = {
|
|
41
|
+
request: RequestContext;
|
|
42
|
+
route: RouteConfig | undefined;
|
|
43
|
+
pathname: string;
|
|
44
|
+
params: Omit<RouteDataParams, 'request'>;
|
|
45
|
+
};
|
|
46
|
+
export type MiddlewareResponse = {
|
|
47
|
+
redirect?: string;
|
|
48
|
+
status?: number;
|
|
49
|
+
headers?: Record<string, string>;
|
|
50
|
+
body?: string;
|
|
51
|
+
};
|
|
52
|
+
export type MiddlewareFn = (ctx: MiddlewareContext) => Promise<MiddlewareResponse | void> | MiddlewareResponse | void;
|
|
40
53
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG;IAC5D,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,oBAAoB,CAAC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG;IAC5D,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,oBAAoB,CAAC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CACzB,GAAG,EAAE,iBAAiB,KACnB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "lovable-ssr",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "SSR and route data engine for Lovable projects",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"keywords": [
|
|
7
|
-
"ssr",
|
|
8
|
-
"react",
|
|
9
|
-
"vite",
|
|
10
|
-
"express",
|
|
11
|
-
"lovable",
|
|
12
|
-
"getData",
|
|
13
|
-
"route-registry",
|
|
14
|
-
"server-side-rendering"
|
|
15
|
-
],
|
|
16
|
-
"type": "module",
|
|
17
|
-
"main": "./dist/index.js",
|
|
18
|
-
"module": "./dist/index.js",
|
|
19
|
-
"types": "./dist/index.d.ts",
|
|
20
|
-
"exports": {
|
|
21
|
-
".": {
|
|
22
|
-
"import": "./dist/index.js",
|
|
23
|
-
"types": "./dist/index.d.ts"
|
|
24
|
-
},
|
|
25
|
-
"./server": {
|
|
26
|
-
"import": "./dist/ssr/server.js",
|
|
27
|
-
"types": "./dist/ssr/server.d.ts"
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
"files": [
|
|
31
|
-
"dist"
|
|
32
|
-
],
|
|
33
|
-
"scripts": {
|
|
34
|
-
"build": "tsc && npm run build:docs",
|
|
35
|
-
"dev": "tsc --watch",
|
|
36
|
-
"changelog": "standard-version --message \"[skip ci]\"",
|
|
37
|
-
"changelog:rc": "npm run changelog -- --prerelease rc --skip.changelog --skip.tag",
|
|
38
|
-
"changelog:patch": "npm run changelog -- --release-as patch --prerelease rc",
|
|
39
|
-
"changelog:minor": "npm run changelog -- --release-as minor --prerelease rc",
|
|
40
|
-
"changelog:major": "npm run changelog -- --release-as major --prerelease rc",
|
|
41
|
-
"build:docs": "cd doc && npm run docs:build"
|
|
42
|
-
},
|
|
43
|
-
"peerDependencies": {
|
|
44
|
-
"react": "^18.0.0",
|
|
45
|
-
"react-dom": "^18.0.0",
|
|
46
|
-
"react-router-dom": "^6.0.0"
|
|
47
|
-
},
|
|
48
|
-
"dependencies": {
|
|
49
|
-
"express": "^4.21.0"
|
|
50
|
-
},
|
|
51
|
-
"devDependencies": {
|
|
52
|
-
"@types/express": "^4.17.21",
|
|
53
|
-
"@types/node": "^22.16.5",
|
|
54
|
-
"@types/react": "^18.3.23",
|
|
55
|
-
"@types/react-dom": "^18.3.7",
|
|
56
|
-
"react": "^18.3.1",
|
|
57
|
-
"react-dom": "^18.3.1",
|
|
58
|
-
"react-router-dom": "^6.30.1",
|
|
59
|
-
"standard-version": "^9.5.0",
|
|
60
|
-
"typescript": "^5.8.3",
|
|
61
|
-
"vite": "^5.4.19"
|
|
62
|
-
},
|
|
63
|
-
"engines": {
|
|
64
|
-
"node": ">=18"
|
|
65
|
-
}
|
|
66
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "lovable-ssr",
|
|
3
|
+
"version": "0.1.23",
|
|
4
|
+
"description": "SSR and route data engine for Lovable projects",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"ssr",
|
|
8
|
+
"react",
|
|
9
|
+
"vite",
|
|
10
|
+
"express",
|
|
11
|
+
"lovable",
|
|
12
|
+
"getData",
|
|
13
|
+
"route-registry",
|
|
14
|
+
"server-side-rendering"
|
|
15
|
+
],
|
|
16
|
+
"type": "module",
|
|
17
|
+
"main": "./dist/index.js",
|
|
18
|
+
"module": "./dist/index.js",
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"import": "./dist/index.js",
|
|
23
|
+
"types": "./dist/index.d.ts"
|
|
24
|
+
},
|
|
25
|
+
"./server": {
|
|
26
|
+
"import": "./dist/ssr/server.js",
|
|
27
|
+
"types": "./dist/ssr/server.d.ts"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist"
|
|
32
|
+
],
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsc && npm run build:docs",
|
|
35
|
+
"dev": "tsc --watch",
|
|
36
|
+
"changelog": "standard-version --message \"[skip ci]\"",
|
|
37
|
+
"changelog:rc": "npm run changelog -- --prerelease rc --skip.changelog --skip.tag",
|
|
38
|
+
"changelog:patch": "npm run changelog -- --release-as patch --prerelease rc",
|
|
39
|
+
"changelog:minor": "npm run changelog -- --release-as minor --prerelease rc",
|
|
40
|
+
"changelog:major": "npm run changelog -- --release-as major --prerelease rc",
|
|
41
|
+
"build:docs": "cd doc && npm run docs:build"
|
|
42
|
+
},
|
|
43
|
+
"peerDependencies": {
|
|
44
|
+
"react": "^18.0.0",
|
|
45
|
+
"react-dom": "^18.0.0",
|
|
46
|
+
"react-router-dom": "^6.0.0"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"express": "^4.21.0"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@types/express": "^4.17.21",
|
|
53
|
+
"@types/node": "^22.16.5",
|
|
54
|
+
"@types/react": "^18.3.23",
|
|
55
|
+
"@types/react-dom": "^18.3.7",
|
|
56
|
+
"react": "^18.3.1",
|
|
57
|
+
"react-dom": "^18.3.1",
|
|
58
|
+
"react-router-dom": "^6.30.1",
|
|
59
|
+
"standard-version": "^9.5.0",
|
|
60
|
+
"typescript": "^5.8.3",
|
|
61
|
+
"vite": "^5.4.19"
|
|
62
|
+
},
|
|
63
|
+
"engines": {
|
|
64
|
+
"node": ">=18"
|
|
65
|
+
}
|
|
66
|
+
}
|