@ressjs/vite-router 0.5.2 → 0.6.0-rc.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/LICENSE +69 -0
- package/README.md +9 -515
- 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 +29 -0
- package/dist/config/codegen.js +131 -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 +46 -0
- package/dist/config/load.d.ts +28 -0
- package/dist/config/load.js +82 -0
- package/dist/config/middleware.d.ts +18 -0
- package/dist/config/middleware.js +79 -0
- package/dist/config/rules.d.ts +59 -0
- package/dist/config/rules.js +162 -0
- package/dist/config/types.d.ts +189 -0
- package/dist/config/types.js +2 -0
- package/dist/config/validate.d.ts +19 -0
- package/dist/config/validate.js +143 -0
- package/dist/config/watch.d.ts +53 -0
- package/dist/config/watch.js +163 -0
- package/dist/fs/module-extensions.d.ts +105 -0
- package/dist/fs/module-extensions.js +213 -0
- package/dist/head/resolve.d.ts +5 -0
- package/dist/head/resolve.js +166 -0
- package/dist/head/types.d.ts +44 -0
- package/dist/head/types.js +2 -0
- package/dist/helpers/html-generator.d.ts +26 -6
- package/dist/helpers/html-generator.js +96 -138
- package/dist/helpers/middlewares.d.ts +32 -21
- package/dist/helpers/middlewares.js +181 -159
- package/dist/helpers/page-config-merge.d.ts +11 -0
- package/dist/helpers/page-config-merge.js +84 -0
- package/dist/helpers/request-handler.d.ts +15 -2
- package/dist/helpers/request-handler.js +164 -27
- package/dist/index.d.ts +35 -3
- package/dist/index.js +77 -8
- package/dist/isr/capture.d.ts +79 -0
- package/dist/isr/capture.js +222 -0
- package/dist/isr/handler.d.ts +49 -0
- package/dist/isr/handler.js +207 -0
- package/dist/isr/key.d.ts +26 -0
- package/dist/isr/key.js +59 -0
- package/dist/isr/page-config.d.ts +17 -0
- package/dist/isr/page-config.js +71 -0
- package/dist/isr/preview.d.ts +5 -0
- package/dist/isr/preview.js +38 -0
- package/dist/isr/public-request.d.ts +50 -0
- package/dist/isr/public-request.js +108 -0
- package/dist/isr/response.d.ts +41 -0
- package/dist/isr/response.js +128 -0
- package/dist/isr/store.d.ts +42 -0
- package/dist/isr/store.js +108 -0
- package/dist/isr/types.d.ts +62 -0
- package/dist/isr/types.js +2 -0
- 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 +68 -0
- package/dist/plugin/environments.js +74 -0
- package/dist/plugin/index.d.ts +59 -0
- package/dist/plugin/index.js +195 -0
- package/dist/plugin/route-manifest.d.ts +19 -0
- package/dist/plugin/route-manifest.js +55 -0
- package/dist/plugin/virtual-entries.d.ts +26 -0
- package/dist/plugin/virtual-entries.js +80 -0
- package/dist/render.d.ts +39 -2
- package/dist/render.js +75 -77
- package/dist/router.d.ts +32 -13
- package/dist/router.js +180 -146
- package/dist/routes/dispatcher.d.ts +58 -0
- package/dist/routes/dispatcher.js +70 -0
- package/dist/routes/manifest.d.ts +17 -0
- package/dist/routes/manifest.js +62 -0
- package/dist/routes/match.d.ts +20 -0
- package/dist/routes/match.js +75 -0
- package/dist/routes/module.d.ts +14 -0
- package/dist/routes/module.js +30 -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 +54 -0
- package/dist/routes/router.js +153 -0
- package/dist/routes/scan.d.ts +26 -0
- package/dist/routes/scan.js +98 -0
- package/dist/routes/types.d.ts +114 -0
- package/dist/routes/types.js +17 -0
- package/dist/runtime/dev-server.d.ts +64 -0
- package/dist/runtime/dev-server.js +94 -0
- package/dist/runtime/dev-styles.d.ts +13 -0
- package/dist/runtime/dev-styles.js +50 -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 +55 -0
- package/dist/runtime/prod-server.js +188 -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 +51 -0
- package/dist/security/config.d.ts +121 -0
- package/dist/security/config.js +77 -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 +156 -0
- package/dist/security/headers.d.ts +76 -0
- package/dist/security/headers.js +278 -0
- package/dist/security/index.d.ts +24 -0
- package/dist/security/index.js +49 -0
- package/dist/security/serialize.d.ts +48 -0
- package/dist/security/serialize.js +146 -0
- package/dist/variants/assets.d.ts +33 -0
- package/dist/variants/assets.js +144 -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 +72 -0
- package/dist/variants/types.js +2 -0
- package/package.json +23 -11
- package/dist/helpers/vite-config.d.ts +0 -10
- package/dist/helpers/vite-config.js +0 -90
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { PlatformInfo } from '../platform';
|
|
2
|
+
/**
|
|
3
|
+
* Vocabulario de este módulo, de arriba hacia abajo:
|
|
4
|
+
*
|
|
5
|
+
* - Una **página** puede existir en varias **variantes**: versiones de la misma
|
|
6
|
+
* página dirigidas a plataformas distintas. El proyecto las declara creando
|
|
7
|
+
* archivos con un sufijo (`index.tv.scss` declara la variante `tv`).
|
|
8
|
+
* - El **catálogo** es la lista completa de páginas con sus variantes. Se arma
|
|
9
|
+
* una sola vez, al arrancar y al construir.
|
|
10
|
+
* - Cada par página + variante es una **entrada de build**, que produce su
|
|
11
|
+
* propio guion y su propia hoja de estilos.
|
|
12
|
+
* - Servir una petición es elegir una variante para la plataforma que pide, y
|
|
13
|
+
* buscar en el **índice de artefactos** qué archivos le corresponden.
|
|
14
|
+
*
|
|
15
|
+
* Qué tokens existen y cómo se decide si uno aplica a un cliente no se define
|
|
16
|
+
* acá: es el modelo de plataforma, y vive en `@ressjs/platform`.
|
|
17
|
+
*/
|
|
18
|
+
export type { Axis, PlatformRegistry, VariantTag } from '@ressjs/platform';
|
|
19
|
+
import type { VariantTag } from '@ressjs/platform';
|
|
20
|
+
/** Una versión de una página dirigida a un subconjunto de plataformas. */
|
|
21
|
+
export interface Variant {
|
|
22
|
+
/** Sufijo canónico. Cadena vacía para la base. */
|
|
23
|
+
suffix: string;
|
|
24
|
+
/** Vacío en la base, que por eso aplica siempre. */
|
|
25
|
+
tags: VariantTag[];
|
|
26
|
+
/** Archivo de estilos que la declara. Ausente si la página no tiene estilos. */
|
|
27
|
+
styleFile?: string;
|
|
28
|
+
}
|
|
29
|
+
/** Una página en una de sus variantes: lo que el empaquetador construye. */
|
|
30
|
+
export interface BuildEntry {
|
|
31
|
+
pageId: string;
|
|
32
|
+
route: string;
|
|
33
|
+
pageFile: string;
|
|
34
|
+
variant: Variant;
|
|
35
|
+
/** Módulo virtual que el empaquetador usa como entrada de build. */
|
|
36
|
+
virtualId: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Qué variantes tiene cada página del proyecto.
|
|
40
|
+
*
|
|
41
|
+
* Es la fuente única de la que salen tanto las entradas que se construyen como
|
|
42
|
+
* las que se resuelven por petición. Que sean la misma es lo que garantiza que
|
|
43
|
+
* el servidor nunca pida un artefacto que el build no produjo.
|
|
44
|
+
*/
|
|
45
|
+
export interface VariantCatalog {
|
|
46
|
+
/** Todas las combinaciones página + variante, en orden estable. */
|
|
47
|
+
buildEntries: BuildEntry[];
|
|
48
|
+
/** Variantes de cada página, para resolver sin recorrer todo el catálogo. */
|
|
49
|
+
variantsByPage: Map<string, Variant[]>;
|
|
50
|
+
/** Datos de la página, indexados por su identificador. */
|
|
51
|
+
pagesById: Map<string, {
|
|
52
|
+
route: string;
|
|
53
|
+
pageFile: string;
|
|
54
|
+
}>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Qué archivos servir para una página y una variante.
|
|
58
|
+
*
|
|
59
|
+
* Tiene la misma forma en desarrollo y en producción, de modo que quien lo
|
|
60
|
+
* consulta no necesite saber en cuál corre. `devStyles` sólo existe en
|
|
61
|
+
* desarrollo: la hoja de la variante como CSS directo, para la página que no
|
|
62
|
+
* carga el módulo que normalmente la inyecta. Devuelve `undefined` cuando esa
|
|
63
|
+
* combinación no se construyó.
|
|
64
|
+
*/
|
|
65
|
+
export interface AssetIndex {
|
|
66
|
+
find(pageId: string, variantSuffix: string): {
|
|
67
|
+
js: string;
|
|
68
|
+
css: string[];
|
|
69
|
+
devStyles?: string[];
|
|
70
|
+
} | undefined;
|
|
71
|
+
}
|
|
72
|
+
export type { PlatformInfo };
|
package/package.json
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ressjs/vite-router",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0-rc.0",
|
|
4
4
|
"description": "Express router factory for ress.js with automatic page detection, SSR and dynamic routes support",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
5
|
"types": "dist/index.d.ts",
|
|
7
6
|
"publishConfig": {
|
|
8
7
|
"access": "public"
|
|
@@ -12,6 +11,16 @@
|
|
|
12
11
|
"types": "./dist/index.d.ts",
|
|
13
12
|
"require": "./dist/index.js",
|
|
14
13
|
"import": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./plugin": {
|
|
16
|
+
"types": "./dist/plugin/index.d.ts",
|
|
17
|
+
"require": "./dist/plugin/index.js",
|
|
18
|
+
"import": "./dist/plugin/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./client": {
|
|
21
|
+
"types": "./dist/client/entry.d.mts",
|
|
22
|
+
"require": "./dist/client/index.js",
|
|
23
|
+
"import": "./dist/client/entry.mjs"
|
|
15
24
|
}
|
|
16
25
|
},
|
|
17
26
|
"files": [
|
|
@@ -34,28 +43,31 @@
|
|
|
34
43
|
"router"
|
|
35
44
|
],
|
|
36
45
|
"author": "ressjs team",
|
|
37
|
-
"license": "
|
|
46
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
38
47
|
"devDependencies": {
|
|
39
|
-
"@jest/globals": "^29.7.0",
|
|
40
48
|
"@types/compression": "^1.7.5",
|
|
41
49
|
"@types/express": "^5.0.3",
|
|
42
|
-
"@types/jest": "^30.0.0",
|
|
43
50
|
"@types/node": "^22.17.2",
|
|
44
51
|
"axios": "^1.11.0",
|
|
45
52
|
"express": "^5.1.0",
|
|
46
|
-
"
|
|
47
|
-
"ts-jest": "^29.4.1",
|
|
48
|
-
"typescript": "~5.7.3",
|
|
53
|
+
"typescript": "~5.9.0",
|
|
49
54
|
"vitest": "^3.2.4"
|
|
50
55
|
},
|
|
51
56
|
"dependencies": {
|
|
57
|
+
"@ressjs/assets": "0.6.0-rc.0",
|
|
58
|
+
"@ressjs/config": "0.6.0-rc.0",
|
|
59
|
+
"@ressjs/platform": "0.6.0-rc.0",
|
|
52
60
|
"compression": "^1.8.0",
|
|
53
61
|
"fast-glob": "^3.3.3",
|
|
54
62
|
"sirv": "^3.0.1"
|
|
55
63
|
},
|
|
56
64
|
"peerDependencies": {
|
|
57
|
-
"vite": "^6.0.0",
|
|
58
65
|
"react": "^19.0.0",
|
|
59
|
-
"react-dom": "^19.0.0"
|
|
60
|
-
|
|
66
|
+
"react-dom": "^19.0.0",
|
|
67
|
+
"vite": "^8.0.0"
|
|
68
|
+
},
|
|
69
|
+
"engines": {
|
|
70
|
+
"node": ">=20.19.0"
|
|
71
|
+
},
|
|
72
|
+
"main": "dist/index.js"
|
|
61
73
|
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export interface ViteConfig {
|
|
2
|
-
vite?: any;
|
|
3
|
-
manifest: any;
|
|
4
|
-
templateHtml: string;
|
|
5
|
-
isProduction: boolean;
|
|
6
|
-
}
|
|
7
|
-
export declare function setupDev(base?: string): Promise<ViteConfig>;
|
|
8
|
-
export declare function setupProd(): Promise<ViteConfig>;
|
|
9
|
-
export declare function createProdMiddleware(): () => Promise<import("express-serve-static-core").Router>;
|
|
10
|
-
export declare function setupVite(isProduction: boolean, base?: string): Promise<ViteConfig>;
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.setupDev = setupDev;
|
|
40
|
-
exports.setupProd = setupProd;
|
|
41
|
-
exports.createProdMiddleware = createProdMiddleware;
|
|
42
|
-
exports.setupVite = setupVite;
|
|
43
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
44
|
-
const express_1 = __importDefault(require("express"));
|
|
45
|
-
const pages_1 = require("../pages");
|
|
46
|
-
async function setupDev(base = '/') {
|
|
47
|
-
const vite = await Promise.resolve().then(() => __importStar(require('vite'))).then(m => m.createServer({
|
|
48
|
-
server: { middlewareMode: true },
|
|
49
|
-
appType: 'custom',
|
|
50
|
-
base
|
|
51
|
-
}));
|
|
52
|
-
let manifest = {};
|
|
53
|
-
try {
|
|
54
|
-
manifest = JSON.parse(await promises_1.default.readFile('./dist/client/.vite/manifest.json', 'utf-8'));
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
// Expected in dev if no build yet
|
|
58
|
-
}
|
|
59
|
-
await (0, pages_1.generateTempEntries)();
|
|
60
|
-
const templateHtml = await promises_1.default.readFile('./index.html', 'utf-8');
|
|
61
|
-
return { vite, manifest, templateHtml, isProduction: false };
|
|
62
|
-
}
|
|
63
|
-
async function setupProd() {
|
|
64
|
-
const manifest = JSON.parse(await promises_1.default.readFile('./dist/client/.vite/manifest.json', 'utf-8'));
|
|
65
|
-
const templateHtml = await promises_1.default.readFile('./index.html', 'utf-8');
|
|
66
|
-
return {
|
|
67
|
-
vite: null,
|
|
68
|
-
manifest,
|
|
69
|
-
templateHtml,
|
|
70
|
-
isProduction: true
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
function createProdMiddleware() {
|
|
74
|
-
const middlewares = express_1.default.Router();
|
|
75
|
-
return async () => {
|
|
76
|
-
const compression = (await Promise.resolve().then(() => __importStar(require('compression')))).default;
|
|
77
|
-
const sirv = (await Promise.resolve().then(() => __importStar(require('sirv')))).default;
|
|
78
|
-
middlewares.use(compression());
|
|
79
|
-
middlewares.use(sirv('./dist/client', { extensions: [] }));
|
|
80
|
-
return middlewares;
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
async function setupVite(isProduction, base = '/') {
|
|
84
|
-
if (isProduction) {
|
|
85
|
-
return await setupProd();
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
return await setupDev(base);
|
|
89
|
-
}
|
|
90
|
-
}
|