@ressjs/vite-router 0.5.0 → 0.6.0-experimental.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/README.md +41 -31
- package/dist/client/entry.d.mts +2 -0
- package/dist/client/entry.mjs +1 -0
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.js +8 -0
- package/dist/config/base-path.d.ts +44 -0
- package/dist/config/base-path.js +100 -0
- package/dist/config/codegen.d.ts +23 -0
- package/dist/config/codegen.js +118 -0
- package/dist/config/define.d.ts +8 -0
- package/dist/config/define.js +12 -0
- package/dist/config/env.d.ts +19 -0
- package/dist/config/env.js +40 -0
- package/dist/config/index.d.ts +18 -0
- package/dist/config/index.js +44 -0
- package/dist/config/load.d.ts +26 -0
- package/dist/config/load.js +73 -0
- package/dist/config/middleware.d.ts +18 -0
- package/dist/config/middleware.js +79 -0
- package/dist/config/rules.d.ts +48 -0
- package/dist/config/rules.js +149 -0
- package/dist/config/types.d.ts +164 -0
- package/dist/config/types.js +2 -0
- package/dist/config/validate.d.ts +19 -0
- package/dist/config/validate.js +105 -0
- package/dist/config/watch.d.ts +41 -0
- package/dist/config/watch.js +132 -0
- package/dist/fs/module-extensions.d.ts +82 -0
- package/dist/fs/module-extensions.js +196 -0
- package/dist/helpers/html-generator.d.ts +22 -5
- package/dist/helpers/html-generator.js +89 -120
- package/dist/helpers/middlewares.d.ts +7 -7
- package/dist/helpers/middlewares.js +51 -103
- package/dist/helpers/request-handler.d.ts +2 -2
- package/dist/helpers/request-handler.js +118 -25
- package/dist/index.d.ts +30 -3
- package/dist/index.js +70 -8
- package/dist/pages.d.ts +10 -9
- package/dist/pages.js +42 -261
- package/dist/platform.d.ts +11 -14
- package/dist/platform.js +18 -102
- package/dist/plugin/environments.d.ts +66 -0
- package/dist/plugin/environments.js +72 -0
- package/dist/plugin/index.d.ts +54 -0
- package/dist/plugin/index.js +178 -0
- package/dist/plugin/virtual-entries.d.ts +26 -0
- package/dist/plugin/virtual-entries.js +80 -0
- package/dist/render.d.ts +23 -2
- package/dist/render.js +40 -53
- package/dist/router.d.ts +32 -13
- package/dist/router.js +147 -146
- package/dist/routes/dispatcher.d.ts +37 -0
- package/dist/routes/dispatcher.js +69 -0
- package/dist/routes/manifest.d.ts +17 -0
- package/dist/routes/manifest.js +56 -0
- package/dist/routes/match.d.ts +20 -0
- package/dist/routes/match.js +75 -0
- package/dist/routes/parse.d.ts +31 -0
- package/dist/routes/parse.js +114 -0
- package/dist/routes/rank.d.ts +12 -0
- package/dist/routes/rank.js +49 -0
- package/dist/routes/router.d.ts +44 -0
- package/dist/routes/router.js +81 -0
- package/dist/routes/scan.d.ts +16 -0
- package/dist/routes/scan.js +82 -0
- package/dist/routes/types.d.ts +85 -0
- package/dist/routes/types.js +13 -0
- package/dist/runtime/dev-server.d.ts +62 -0
- package/dist/runtime/dev-server.js +94 -0
- package/dist/runtime/module-loader.d.ts +55 -0
- package/dist/runtime/module-loader.js +122 -0
- package/dist/runtime/prod-server.d.ts +42 -0
- package/dist/runtime/prod-server.js +142 -0
- package/dist/runtime/template.d.ts +10 -0
- package/dist/runtime/template.js +33 -0
- package/dist/security/client-props.d.ts +25 -0
- package/dist/security/client-props.js +50 -0
- package/dist/security/config.d.ts +130 -0
- package/dist/security/config.js +73 -0
- package/dist/security/csp.d.ts +53 -0
- package/dist/security/csp.js +118 -0
- package/dist/security/dev-hardening.d.ts +46 -0
- package/dist/security/dev-hardening.js +65 -0
- package/dist/security/errors.d.ts +37 -0
- package/dist/security/errors.js +84 -0
- package/dist/security/escape.d.ts +40 -0
- package/dist/security/escape.js +90 -0
- package/dist/security/head-tags.d.ts +32 -0
- package/dist/security/head-tags.js +111 -0
- package/dist/security/headers.d.ts +62 -0
- package/dist/security/headers.js +187 -0
- package/dist/security/index.d.ts +24 -0
- package/dist/security/index.js +47 -0
- package/dist/security/serialize.d.ts +48 -0
- package/dist/security/serialize.js +146 -0
- package/dist/variants/assets.d.ts +23 -0
- package/dist/variants/assets.js +78 -0
- package/dist/variants/catalog.d.ts +33 -0
- package/dist/variants/catalog.js +79 -0
- package/dist/variants/platform-tokens.d.ts +9 -0
- package/dist/variants/platform-tokens.js +15 -0
- package/dist/variants/resolve.d.ts +40 -0
- package/dist/variants/resolve.js +90 -0
- package/dist/variants/suffix.d.ts +8 -0
- package/dist/variants/suffix.js +12 -0
- package/dist/variants/types.d.ts +69 -0
- package/dist/variants/types.js +2 -0
- package/package.json +22 -10
- package/dist/helpers/vite-config.d.ts +0 -10
- package/dist/helpers/vite-config.js +0 -90
|
@@ -1,52 +1,75 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.processRequest = processRequest;
|
|
7
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
|
-
const pages_1 = require("../pages");
|
|
9
4
|
const render_1 = require("../render");
|
|
10
5
|
const platform_1 = require("../platform");
|
|
11
6
|
const html_generator_1 = require("./html-generator");
|
|
12
|
-
|
|
7
|
+
const assets_1 = require("@ressjs/assets");
|
|
8
|
+
const resolve_1 = require("../variants/resolve");
|
|
9
|
+
const platform_tokens_1 = require("../variants/platform-tokens");
|
|
10
|
+
const security_1 = require("../security");
|
|
11
|
+
const template_1 = require("../runtime/template");
|
|
12
|
+
function preparePlatform(req, enablePlatformDetection = true, useUserAgent = true) {
|
|
13
13
|
if (!enablePlatformDetection) {
|
|
14
14
|
return {
|
|
15
15
|
platform: 'desktop',
|
|
16
16
|
platformInfo: null
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
// Si la respuesta no va a declarar `Vary: User-Agent`, el User-Agent tampoco
|
|
20
|
+
// participa de la decisión. Resolver por algo que no se declara es servir la
|
|
21
|
+
// variante equivocada apenas haya una caché intermedia.
|
|
22
|
+
const platformInfo = (0, platform_1.detect)({
|
|
23
|
+
userAgent: req.headers['user-agent'] || '',
|
|
24
|
+
headers: req.headers,
|
|
25
|
+
useUserAgent,
|
|
26
|
+
});
|
|
21
27
|
const platform = (platformInfo.device === 'phone' || platformInfo.device === 'tablet') ? 'mobile' : 'desktop';
|
|
22
|
-
if (!isProduction && platformInfo) {
|
|
23
|
-
await (0, pages_1.generateTempEntries)('dist', platformInfo);
|
|
24
|
-
}
|
|
25
28
|
return { platform, platformInfo };
|
|
26
29
|
}
|
|
27
30
|
async function processRequest(context, config, renderServer) {
|
|
28
31
|
const { req, res, page, next } = context;
|
|
29
|
-
//
|
|
32
|
+
// En modo automático el runtime llega como thunk, porque se resuelve después de crear el router.
|
|
30
33
|
const resolvedViteConfig = typeof config.viteConfig === 'function'
|
|
31
34
|
? config.viteConfig()
|
|
32
35
|
: config.viteConfig;
|
|
33
36
|
const { enablePlatformDetection, renderFunction } = config;
|
|
34
37
|
const viteConfig = resolvedViteConfig;
|
|
38
|
+
const options = config.security ?? (0, security_1.resolveSecurityOptions)(config.securityOptions);
|
|
39
|
+
// El nonce se genera una vez por petición, antes del render, y viaja hasta el
|
|
40
|
+
// documento y hasta la cabecera: así el valor del atributo y el de la política
|
|
41
|
+
// son el mismo por construcción y no por coincidencia.
|
|
42
|
+
// Por qué ejes varía esta página. Decide dos cosas que tienen que coincidir:
|
|
43
|
+
// qué se declara en `Vary` y qué del cliente puede escribirse en el documento.
|
|
44
|
+
const pageVariants = page?.pageId
|
|
45
|
+
? (viteConfig.catalog?.variantsByPage.get(page.pageId) ?? [])
|
|
46
|
+
: [];
|
|
47
|
+
const varyBy = (0, resolve_1.varyingAxes)(pageVariants);
|
|
48
|
+
const security = {
|
|
49
|
+
isProduction: viteConfig.isProduction,
|
|
50
|
+
options,
|
|
51
|
+
route: page?.route ?? req.url ?? '',
|
|
52
|
+
varyBy,
|
|
53
|
+
...(options.csp.enabled ? { nonce: (0, security_1.createNonce)() } : {}),
|
|
54
|
+
};
|
|
35
55
|
try {
|
|
36
|
-
const platformContext =
|
|
56
|
+
const platformContext = preparePlatform(req, enablePlatformDetection, options.varyOnUserAgent);
|
|
37
57
|
if (renderFunction) {
|
|
38
58
|
const html = await renderFunction({
|
|
39
59
|
url: req.url,
|
|
40
60
|
platform: platformContext.platform,
|
|
41
61
|
req
|
|
42
62
|
});
|
|
43
|
-
res.setHeader('Content-Type', 'text/html');
|
|
63
|
+
res.setHeader('Content-Type', 'text/html; charset=utf-8');
|
|
44
64
|
res.send(html);
|
|
45
65
|
return;
|
|
46
66
|
}
|
|
47
67
|
if (!renderServer) {
|
|
48
|
-
|
|
49
|
-
|
|
68
|
+
renderServer = (0, render_1.createRenderServer)({
|
|
69
|
+
...(viteConfig.moduleLoader ? { moduleLoader: viteConfig.moduleLoader } : {}),
|
|
70
|
+
clientProps: options.clientProps,
|
|
71
|
+
isProduction: viteConfig.isProduction,
|
|
72
|
+
});
|
|
50
73
|
}
|
|
51
74
|
const protocol = req.headers['x-forwarded-proto'] || (req.connection?.encrypted ? 'https' : 'http');
|
|
52
75
|
const host = req.headers.host || 'localhost';
|
|
@@ -56,38 +79,108 @@ async function processRequest(context, config, renderServer) {
|
|
|
56
79
|
if (!res.locals) {
|
|
57
80
|
res.locals = {};
|
|
58
81
|
}
|
|
82
|
+
// El catálogo se resolvió al arrancar. Dejamos los enlaces en el scope de
|
|
83
|
+
// esta petición para que middlewares puedan inspeccionarlos o ajustarlos,
|
|
84
|
+
// sin volver a consultar el filesystem durante el render.
|
|
85
|
+
if (!res.locals.styles && page?.pageId && viteConfig.catalog && viteConfig.assets) {
|
|
86
|
+
res.locals.styles = (0, assets_1.resolvePageAssets)(page.pageId, platformContext.platformInfo ?? platform_1.DEFAULT_PLATFORM, viteConfig.catalog, viteConfig.assets);
|
|
87
|
+
}
|
|
88
|
+
const pageLocals = { ...res.locals };
|
|
89
|
+
delete pageLocals.styles;
|
|
59
90
|
const rendered = await renderServer({
|
|
60
91
|
url: pathname,
|
|
61
92
|
req,
|
|
62
93
|
res,
|
|
63
|
-
props: res.locals.serverSideProps
|
|
94
|
+
props: res.locals.serverSideProps,
|
|
95
|
+
// `styles` pertenece al pipeline interno de assets; no se mezcla con los
|
|
96
|
+
// locals que la página recibe ni se considera estado serializable.
|
|
97
|
+
locals: pageLocals,
|
|
98
|
+
// La página ya la resolvió el despachador: buscarla de nuevo por URL sería
|
|
99
|
+
// una segunda resolución con otro criterio.
|
|
100
|
+
...(page ? { page } : {}),
|
|
64
101
|
});
|
|
65
102
|
const template = await getTemplate(req, viteConfig);
|
|
66
103
|
const html = await (0, html_generator_1.generateCompleteHTML)({
|
|
67
104
|
template,
|
|
68
105
|
rendered,
|
|
69
106
|
page,
|
|
70
|
-
manifest: viteConfig.manifest,
|
|
71
107
|
platform: platformContext.platform,
|
|
72
108
|
isProduction: viteConfig.isProduction,
|
|
73
109
|
platformInfo: platformContext.platformInfo,
|
|
110
|
+
catalog: viteConfig.catalog,
|
|
111
|
+
assets: viteConfig.assets,
|
|
112
|
+
styles: res.locals.styles,
|
|
74
113
|
// pasar solo la config segura
|
|
75
114
|
...(res.locals?.htmlConfig ? { serverSideResult: res.locals.htmlConfig } : {})
|
|
115
|
+
}, security);
|
|
116
|
+
warnIfStateTooLarge(rendered.props, security);
|
|
117
|
+
// Las cabeceras van antes del cuerpo: después de la primera escritura ya no
|
|
118
|
+
// se pueden cambiar, y el intento lanza una excepción que tapa el error real.
|
|
119
|
+
(0, security_1.applySecurityHeaders)(res, options, {
|
|
120
|
+
isProduction: viteConfig.isProduction,
|
|
121
|
+
varyBy: platformContext.platformInfo ? varyBy : null,
|
|
122
|
+
edge: platform_tokens_1.defaultPlatformRegistry.edge,
|
|
123
|
+
nonce: security.nonce,
|
|
124
|
+
kind: 'html',
|
|
76
125
|
});
|
|
77
|
-
|
|
126
|
+
if (options.csp.enabled && security.nonce) {
|
|
127
|
+
const header = (0, security_1.cspHeaderName)(options.csp);
|
|
128
|
+
const existing = res.getHeader(header);
|
|
129
|
+
// Una política que escribió la aplicación se respeta: sus dominios y sus
|
|
130
|
+
// proveedores son decisión suya. Lo único que se le agrega es el nonce,
|
|
131
|
+
// sin el cual el bloque de estado no se ejecuta y la página no hidrata.
|
|
132
|
+
res.setHeader(header, existing
|
|
133
|
+
? (0, security_1.injectNonce)(String(existing), security.nonce)
|
|
134
|
+
: (0, security_1.buildCsp)(options.csp, security.nonce, viteConfig.isProduction));
|
|
135
|
+
// `report-to` nombra un grupo: sin la cabecera que lo define, los informes
|
|
136
|
+
// de violación no llegan a ningún lado.
|
|
137
|
+
if (options.csp.reportUri && res.getHeader('Reporting-Endpoints') === undefined) {
|
|
138
|
+
res.setHeader('Reporting-Endpoints', (0, security_1.reportingEndpointsHeader)(options.csp.reportUri));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
78
141
|
res.send(html);
|
|
79
142
|
}
|
|
80
143
|
catch (error) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
144
|
+
const publicError = (0, security_1.sanitizeError)(error, viteConfig.isProduction);
|
|
145
|
+
(0, security_1.logServerError)(error, { method: req.method, url: req.url, statusCode: publicError.statusCode });
|
|
146
|
+
(0, security_1.applySecurityHeaders)(res, options, {
|
|
147
|
+
isProduction: viteConfig.isProduction,
|
|
148
|
+
kind: 'error',
|
|
149
|
+
});
|
|
150
|
+
next(Object.assign(new Error(publicError.message), publicError));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Avisa cuando el estado que viaja es grande.
|
|
155
|
+
*
|
|
156
|
+
* En desarrollo, en cada petición y con las claves más pesadas —eso es lo que
|
|
157
|
+
* hace accionable el aviso—. En producción, una sola vez por ruta: un aviso por
|
|
158
|
+
* petición inunda los logs y deja de leerse.
|
|
159
|
+
*/
|
|
160
|
+
const warnedOversizeRoutes = new Set();
|
|
161
|
+
function warnIfStateTooLarge(props, security) {
|
|
162
|
+
const { options, isProduction, route } = security;
|
|
163
|
+
const check = (0, security_1.checkStateSize)((0, security_1.serializeState)(props ?? {}), options.maxStateBytes, props);
|
|
164
|
+
if (!check.overLimit)
|
|
165
|
+
return;
|
|
166
|
+
const kib = (n) => `${(n / 1024).toFixed(1)} KiB`;
|
|
167
|
+
const detail = check.heaviest.length
|
|
168
|
+
? ` Lo más pesado: ${check.heaviest.map((h) => `${h.key} (${kib(h.bytes)})`).join(', ')}.`
|
|
169
|
+
: '';
|
|
170
|
+
const message = `[ress] ${route}: el estado que viaja al cliente pesa ${kib(check.bytes)}, ` +
|
|
171
|
+
`sobre un límite de ${kib(options.maxStateBytes)}.${detail}`;
|
|
172
|
+
if (options.onStateOverLimit === 'error')
|
|
173
|
+
throw new Error(message);
|
|
174
|
+
if (isProduction) {
|
|
175
|
+
if (warnedOversizeRoutes.has(route))
|
|
176
|
+
return;
|
|
177
|
+
warnedOversizeRoutes.add(route);
|
|
86
178
|
}
|
|
179
|
+
console.warn(message);
|
|
87
180
|
}
|
|
88
181
|
async function getTemplate(req, viteConfig) {
|
|
89
182
|
if (!viteConfig.isProduction) {
|
|
90
|
-
const template = await
|
|
183
|
+
const template = await (0, template_1.readTemplateHtml)();
|
|
91
184
|
return viteConfig.vite ? await viteConfig.vite.transformIndexHtml(req.url, template) : template;
|
|
92
185
|
}
|
|
93
186
|
else {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,34 @@
|
|
|
1
|
-
export { createViteRouter,
|
|
2
|
-
export {
|
|
1
|
+
export { createViteRouter, waitForViteRouter, getPages } from './router';
|
|
2
|
+
export { getViteSSRInput } from './pages';
|
|
3
|
+
export { createRouteManifest, serializeRouteManifest, loadRouteManifest } from './routes/manifest';
|
|
4
|
+
export { scanRoutes } from './routes/scan';
|
|
5
|
+
export type { PageId, RouteEntry, RouteEntryKind, RouteManifest, RouteManifestData, RouteMatch, RouteSegment, SegmentKind, } from './routes/types';
|
|
6
|
+
export { ROUTE_MANIFEST_VERSION } from './routes/types';
|
|
7
|
+
export { defineEnvironments, OUT_DIR } from './plugin/environments';
|
|
8
|
+
export { ressPlugin, ressCorePlugin, refreshVariantCatalog, getVariantCatalog } from './plugin/index';
|
|
9
|
+
export type { RessPlugin, RessPluginOptions } from './plugin/index';
|
|
10
|
+
export { createDevModuleLoader, createProdModuleLoader, } from './runtime/module-loader';
|
|
11
|
+
export type { FetchableEnvironment, ModuleLoader } from './runtime/module-loader';
|
|
12
|
+
export { createRuntime, resolveServerModulePath } from './runtime/prod-server';
|
|
13
|
+
export { resolveSsrEnvironment } from './runtime/dev-server';
|
|
14
|
+
export type { DevRuntimeOptions, RessRuntime } from './runtime/dev-server';
|
|
15
|
+
export { scriptExtensionOf, SCRIPT_EXTENSIONS } from './fs/module-extensions';
|
|
16
|
+
export { buildVariantCatalog, pageIdFromFile } from './variants/catalog';
|
|
17
|
+
export { resolveVariant, explainResolution } from './variants/resolve';
|
|
18
|
+
export { defaultPlatformRegistry } from './variants/platform-tokens';
|
|
19
|
+
export type { VariantCatalog, BuildEntry, Variant, AssetIndex, PlatformRegistry } from './variants/types';
|
|
3
20
|
export { createRenderServer } from './render';
|
|
4
21
|
export { detectPlatform } from './platform';
|
|
5
22
|
export type { PlatformInfo } from './platform';
|
|
6
|
-
export type { ViteRouterOptions
|
|
23
|
+
export type { ViteRouterOptions } from './router';
|
|
7
24
|
export type { PageInfo } from './pages';
|
|
25
|
+
export { PublicFacingError, resolveSecurityOptions, serializeState, applySecurityHeaders, } from './security';
|
|
26
|
+
export type { ClientPropsPolicy, PublicError, ResolvedSecurityOptions, SecurityOptions, } from './security';
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Usá el manifest de rutas: `runtime.routes.entries`. Devuelve las
|
|
29
|
+
* páginas tal como las enumera el catálogo de variantes, que no conoce grupos ni
|
|
30
|
+
* catch-all. Se elimina cuando F-016 consuma el manifest.
|
|
31
|
+
*/
|
|
32
|
+
export { getPages as listDetectedPages } from './pages';
|
|
33
|
+
export { defineConfig, loadConfig, createConfigMiddleware, compileRules, publicEnvDefines, withBasePath, assetPrefixFor, } from './config';
|
|
34
|
+
export type { RessConfig, ResolvedConfig, TrailingSlashMode, RessServerConfig } from './config';
|
package/dist/index.js
CHANGED
|
@@ -1,22 +1,84 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectPlatform = exports.createRenderServer = exports.
|
|
3
|
+
exports.assetPrefixFor = exports.withBasePath = exports.publicEnvDefines = exports.compileRules = exports.createConfigMiddleware = exports.loadConfig = exports.defineConfig = exports.listDetectedPages = exports.applySecurityHeaders = exports.serializeState = exports.resolveSecurityOptions = exports.PublicFacingError = exports.detectPlatform = exports.createRenderServer = exports.defaultPlatformRegistry = exports.explainResolution = exports.resolveVariant = exports.pageIdFromFile = exports.buildVariantCatalog = exports.SCRIPT_EXTENSIONS = exports.scriptExtensionOf = exports.resolveSsrEnvironment = exports.resolveServerModulePath = exports.createRuntime = exports.createProdModuleLoader = exports.createDevModuleLoader = exports.getVariantCatalog = exports.refreshVariantCatalog = exports.ressCorePlugin = exports.ressPlugin = exports.OUT_DIR = exports.defineEnvironments = exports.ROUTE_MANIFEST_VERSION = exports.scanRoutes = exports.loadRouteManifest = exports.serializeRouteManifest = exports.createRouteManifest = exports.getViteSSRInput = exports.getPages = exports.waitForViteRouter = exports.createViteRouter = void 0;
|
|
4
4
|
// Main API
|
|
5
5
|
var router_1 = require("./router");
|
|
6
6
|
Object.defineProperty(exports, "createViteRouter", { enumerable: true, get: function () { return router_1.createViteRouter; } });
|
|
7
|
-
Object.defineProperty(exports, "
|
|
8
|
-
Object.defineProperty(exports, "listDetectedPages", { enumerable: true, get: function () { return router_1.listDetectedPages; } });
|
|
7
|
+
Object.defineProperty(exports, "waitForViteRouter", { enumerable: true, get: function () { return router_1.waitForViteRouter; } });
|
|
9
8
|
Object.defineProperty(exports, "getPages", { enumerable: true, get: function () { return router_1.getPages; } });
|
|
10
|
-
//
|
|
9
|
+
// Entradas de build del entorno de servidor
|
|
11
10
|
var pages_1 = require("./pages");
|
|
12
|
-
Object.defineProperty(exports, "getViteInput", { enumerable: true, get: function () { return pages_1.getViteInput; } });
|
|
13
11
|
Object.defineProperty(exports, "getViteSSRInput", { enumerable: true, get: function () { return pages_1.getViteSSRInput; } });
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
// Rutas: manifest, escaneo y tipos (F-018). Superficie que F-033 (la CLI)
|
|
13
|
+
// necesita para construir la aplicación y para `ress info`, sin duplicar la
|
|
14
|
+
// enumeración que ya hace el framework.
|
|
15
|
+
var manifest_1 = require("./routes/manifest");
|
|
16
|
+
Object.defineProperty(exports, "createRouteManifest", { enumerable: true, get: function () { return manifest_1.createRouteManifest; } });
|
|
17
|
+
Object.defineProperty(exports, "serializeRouteManifest", { enumerable: true, get: function () { return manifest_1.serializeRouteManifest; } });
|
|
18
|
+
Object.defineProperty(exports, "loadRouteManifest", { enumerable: true, get: function () { return manifest_1.loadRouteManifest; } });
|
|
19
|
+
var scan_1 = require("./routes/scan");
|
|
20
|
+
Object.defineProperty(exports, "scanRoutes", { enumerable: true, get: function () { return scan_1.scanRoutes; } });
|
|
21
|
+
var types_1 = require("./routes/types");
|
|
22
|
+
Object.defineProperty(exports, "ROUTE_MANIFEST_VERSION", { enumerable: true, get: function () { return types_1.ROUTE_MANIFEST_VERSION; } });
|
|
23
|
+
// Runtime: entornos de build y directorios de salida (F-015/F-016). La CLI los
|
|
24
|
+
// usa para `ress build` y para resolver dónde quedó el build en `ress info`.
|
|
25
|
+
var environments_1 = require("./plugin/environments");
|
|
26
|
+
Object.defineProperty(exports, "defineEnvironments", { enumerable: true, get: function () { return environments_1.defineEnvironments; } });
|
|
27
|
+
Object.defineProperty(exports, "OUT_DIR", { enumerable: true, get: function () { return environments_1.OUT_DIR; } });
|
|
28
|
+
var index_1 = require("./plugin/index");
|
|
29
|
+
Object.defineProperty(exports, "ressPlugin", { enumerable: true, get: function () { return index_1.ressPlugin; } });
|
|
30
|
+
Object.defineProperty(exports, "ressCorePlugin", { enumerable: true, get: function () { return index_1.ressCorePlugin; } });
|
|
31
|
+
Object.defineProperty(exports, "refreshVariantCatalog", { enumerable: true, get: function () { return index_1.refreshVariantCatalog; } });
|
|
32
|
+
Object.defineProperty(exports, "getVariantCatalog", { enumerable: true, get: function () { return index_1.getVariantCatalog; } });
|
|
33
|
+
// Cargador de módulos: la vía de escape nivel 2 de F-033 carga el archivo de
|
|
34
|
+
// servidor del proyecto con el mismo mecanismo que las páginas.
|
|
35
|
+
var module_loader_1 = require("./runtime/module-loader");
|
|
36
|
+
Object.defineProperty(exports, "createDevModuleLoader", { enumerable: true, get: function () { return module_loader_1.createDevModuleLoader; } });
|
|
37
|
+
Object.defineProperty(exports, "createProdModuleLoader", { enumerable: true, get: function () { return module_loader_1.createProdModuleLoader; } });
|
|
38
|
+
var prod_server_1 = require("./runtime/prod-server");
|
|
39
|
+
Object.defineProperty(exports, "createRuntime", { enumerable: true, get: function () { return prod_server_1.createRuntime; } });
|
|
40
|
+
Object.defineProperty(exports, "resolveServerModulePath", { enumerable: true, get: function () { return prod_server_1.resolveServerModulePath; } });
|
|
41
|
+
var dev_server_1 = require("./runtime/dev-server");
|
|
42
|
+
Object.defineProperty(exports, "resolveSsrEnvironment", { enumerable: true, get: function () { return dev_server_1.resolveSsrEnvironment; } });
|
|
43
|
+
// Extensiones reconocidas (F-017), para quien necesita autodetectar un archivo
|
|
44
|
+
// de servidor del proyecto con la misma política que las páginas.
|
|
45
|
+
var module_extensions_1 = require("./fs/module-extensions");
|
|
46
|
+
Object.defineProperty(exports, "scriptExtensionOf", { enumerable: true, get: function () { return module_extensions_1.scriptExtensionOf; } });
|
|
47
|
+
Object.defineProperty(exports, "SCRIPT_EXTENSIONS", { enumerable: true, get: function () { return module_extensions_1.SCRIPT_EXTENSIONS; } });
|
|
48
|
+
// Catálogo de variantes de plataforma
|
|
49
|
+
var catalog_1 = require("./variants/catalog");
|
|
50
|
+
Object.defineProperty(exports, "buildVariantCatalog", { enumerable: true, get: function () { return catalog_1.buildVariantCatalog; } });
|
|
51
|
+
Object.defineProperty(exports, "pageIdFromFile", { enumerable: true, get: function () { return catalog_1.pageIdFromFile; } });
|
|
52
|
+
var resolve_1 = require("./variants/resolve");
|
|
53
|
+
Object.defineProperty(exports, "resolveVariant", { enumerable: true, get: function () { return resolve_1.resolveVariant; } });
|
|
54
|
+
Object.defineProperty(exports, "explainResolution", { enumerable: true, get: function () { return resolve_1.explainResolution; } });
|
|
55
|
+
var platform_tokens_1 = require("./variants/platform-tokens");
|
|
56
|
+
Object.defineProperty(exports, "defaultPlatformRegistry", { enumerable: true, get: function () { return platform_tokens_1.defaultPlatformRegistry; } });
|
|
17
57
|
// Render functions
|
|
18
58
|
var render_1 = require("./render");
|
|
19
59
|
Object.defineProperty(exports, "createRenderServer", { enumerable: true, get: function () { return render_1.createRenderServer; } });
|
|
20
60
|
// Platform detection
|
|
21
61
|
var platform_1 = require("./platform");
|
|
22
62
|
Object.defineProperty(exports, "detectPlatform", { enumerable: true, get: function () { return platform_1.detectPlatform; } });
|
|
63
|
+
// Endurecimiento del renderizado en el servidor (F-019)
|
|
64
|
+
var security_1 = require("./security");
|
|
65
|
+
Object.defineProperty(exports, "PublicFacingError", { enumerable: true, get: function () { return security_1.PublicFacingError; } });
|
|
66
|
+
Object.defineProperty(exports, "resolveSecurityOptions", { enumerable: true, get: function () { return security_1.resolveSecurityOptions; } });
|
|
67
|
+
Object.defineProperty(exports, "serializeState", { enumerable: true, get: function () { return security_1.serializeState; } });
|
|
68
|
+
Object.defineProperty(exports, "applySecurityHeaders", { enumerable: true, get: function () { return security_1.applySecurityHeaders; } });
|
|
69
|
+
/**
|
|
70
|
+
* @deprecated Usá el manifest de rutas: `runtime.routes.entries`. Devuelve las
|
|
71
|
+
* páginas tal como las enumera el catálogo de variantes, que no conoce grupos ni
|
|
72
|
+
* catch-all. Se elimina cuando F-016 consuma el manifest.
|
|
73
|
+
*/
|
|
74
|
+
var pages_2 = require("./pages");
|
|
75
|
+
Object.defineProperty(exports, "listDetectedPages", { enumerable: true, get: function () { return pages_2.getPages; } });
|
|
76
|
+
// Configuración del proyecto (F-008)
|
|
77
|
+
var config_1 = require("./config");
|
|
78
|
+
Object.defineProperty(exports, "defineConfig", { enumerable: true, get: function () { return config_1.defineConfig; } });
|
|
79
|
+
Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_1.loadConfig; } });
|
|
80
|
+
Object.defineProperty(exports, "createConfigMiddleware", { enumerable: true, get: function () { return config_1.createConfigMiddleware; } });
|
|
81
|
+
Object.defineProperty(exports, "compileRules", { enumerable: true, get: function () { return config_1.compileRules; } });
|
|
82
|
+
Object.defineProperty(exports, "publicEnvDefines", { enumerable: true, get: function () { return config_1.publicEnvDefines; } });
|
|
83
|
+
Object.defineProperty(exports, "withBasePath", { enumerable: true, get: function () { return config_1.withBasePath; } });
|
|
84
|
+
Object.defineProperty(exports, "assetPrefixFor", { enumerable: true, get: function () { return config_1.assetPrefixFor; } });
|
package/dist/pages.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ExtensionPolicy } from './fs/module-extensions';
|
|
2
2
|
export interface PageInfo {
|
|
3
3
|
route: string;
|
|
4
4
|
expressRoute: string;
|
|
5
5
|
file: string;
|
|
6
6
|
abs: string;
|
|
7
|
+
/** Identificador estable, compartido con el catálogo de variantes. */
|
|
8
|
+
pageId: string;
|
|
7
9
|
}
|
|
8
10
|
/**
|
|
9
11
|
* Convierte rutas estilo Next.js con parámetros dinámicos a formato Express
|
|
@@ -13,18 +15,17 @@ export interface PageInfo {
|
|
|
13
15
|
* '/home' → '/home' (sin cambios)
|
|
14
16
|
*/
|
|
15
17
|
export declare function convertRouteToExpress(route: string): string;
|
|
16
|
-
export declare function getPages(): PageInfo[];
|
|
17
|
-
|
|
18
|
+
export declare function getPages(policy?: ExtensionPolicy): PageInfo[];
|
|
19
|
+
/**
|
|
20
|
+
* Entradas del entorno de servidor: las páginas más sus middlewares.
|
|
21
|
+
*
|
|
22
|
+
* El entorno de cliente no aparece acá: sus entradas salen del catálogo de
|
|
23
|
+
* variantes, porque una página produce una por cada plataforma que atiende.
|
|
24
|
+
*/
|
|
18
25
|
export declare function getViteSSRInput(): Record<string, string>;
|
|
19
|
-
export declare function loadManifest(distPath?: string): Promise<any>;
|
|
20
26
|
/**
|
|
21
27
|
* Convierte una ruta de página TypeScript a su equivalente compilado en producción
|
|
22
28
|
*
|
|
23
29
|
* @param pageFile - Ruta del archivo de página (relativa: "app/pages/pokedex/index.tsx" o absoluta: "/path/to/app/pages/pokedex/index.tsx")
|
|
24
30
|
* @returns Ruta absoluta del archivo compilado (ej: "/path/to/project/dist/server/pokedex/index.js")
|
|
25
31
|
*/
|
|
26
|
-
export declare function getCompiledProdPage(pageFile: string): string;
|
|
27
|
-
export declare function resolvePlatformCSS(basePath: string, platform: PlatformInfo): Promise<string>;
|
|
28
|
-
export declare function generateTempEntries(distPath?: string, platformInfo?: PlatformInfo): Promise<string[]>;
|
|
29
|
-
export declare function generateSingleEntry(page: PageInfo, entryPath: string, preferredScssFile: string): Promise<void>;
|
|
30
|
-
export declare function getClientEntriesInput(distPath?: string): Promise<Record<string, string>>;
|