@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.
Files changed (141) hide show
  1. package/LICENSE +69 -0
  2. package/README.md +9 -515
  3. package/dist/client/entry.d.mts +2 -0
  4. package/dist/client/entry.mjs +1 -0
  5. package/dist/client/index.d.ts +2 -0
  6. package/dist/client/index.js +8 -0
  7. package/dist/config/base-path.d.ts +44 -0
  8. package/dist/config/base-path.js +100 -0
  9. package/dist/config/codegen.d.ts +29 -0
  10. package/dist/config/codegen.js +131 -0
  11. package/dist/config/define.d.ts +8 -0
  12. package/dist/config/define.js +12 -0
  13. package/dist/config/env.d.ts +19 -0
  14. package/dist/config/env.js +40 -0
  15. package/dist/config/index.d.ts +18 -0
  16. package/dist/config/index.js +46 -0
  17. package/dist/config/load.d.ts +28 -0
  18. package/dist/config/load.js +82 -0
  19. package/dist/config/middleware.d.ts +18 -0
  20. package/dist/config/middleware.js +79 -0
  21. package/dist/config/rules.d.ts +59 -0
  22. package/dist/config/rules.js +162 -0
  23. package/dist/config/types.d.ts +189 -0
  24. package/dist/config/types.js +2 -0
  25. package/dist/config/validate.d.ts +19 -0
  26. package/dist/config/validate.js +143 -0
  27. package/dist/config/watch.d.ts +53 -0
  28. package/dist/config/watch.js +163 -0
  29. package/dist/fs/module-extensions.d.ts +105 -0
  30. package/dist/fs/module-extensions.js +213 -0
  31. package/dist/head/resolve.d.ts +5 -0
  32. package/dist/head/resolve.js +166 -0
  33. package/dist/head/types.d.ts +44 -0
  34. package/dist/head/types.js +2 -0
  35. package/dist/helpers/html-generator.d.ts +26 -6
  36. package/dist/helpers/html-generator.js +96 -138
  37. package/dist/helpers/middlewares.d.ts +32 -21
  38. package/dist/helpers/middlewares.js +181 -159
  39. package/dist/helpers/page-config-merge.d.ts +11 -0
  40. package/dist/helpers/page-config-merge.js +84 -0
  41. package/dist/helpers/request-handler.d.ts +15 -2
  42. package/dist/helpers/request-handler.js +164 -27
  43. package/dist/index.d.ts +35 -3
  44. package/dist/index.js +77 -8
  45. package/dist/isr/capture.d.ts +79 -0
  46. package/dist/isr/capture.js +222 -0
  47. package/dist/isr/handler.d.ts +49 -0
  48. package/dist/isr/handler.js +207 -0
  49. package/dist/isr/key.d.ts +26 -0
  50. package/dist/isr/key.js +59 -0
  51. package/dist/isr/page-config.d.ts +17 -0
  52. package/dist/isr/page-config.js +71 -0
  53. package/dist/isr/preview.d.ts +5 -0
  54. package/dist/isr/preview.js +38 -0
  55. package/dist/isr/public-request.d.ts +50 -0
  56. package/dist/isr/public-request.js +108 -0
  57. package/dist/isr/response.d.ts +41 -0
  58. package/dist/isr/response.js +128 -0
  59. package/dist/isr/store.d.ts +42 -0
  60. package/dist/isr/store.js +108 -0
  61. package/dist/isr/types.d.ts +62 -0
  62. package/dist/isr/types.js +2 -0
  63. package/dist/pages.d.ts +10 -9
  64. package/dist/pages.js +42 -261
  65. package/dist/platform.d.ts +11 -14
  66. package/dist/platform.js +18 -102
  67. package/dist/plugin/environments.d.ts +68 -0
  68. package/dist/plugin/environments.js +74 -0
  69. package/dist/plugin/index.d.ts +59 -0
  70. package/dist/plugin/index.js +195 -0
  71. package/dist/plugin/route-manifest.d.ts +19 -0
  72. package/dist/plugin/route-manifest.js +55 -0
  73. package/dist/plugin/virtual-entries.d.ts +26 -0
  74. package/dist/plugin/virtual-entries.js +80 -0
  75. package/dist/render.d.ts +39 -2
  76. package/dist/render.js +75 -77
  77. package/dist/router.d.ts +32 -13
  78. package/dist/router.js +180 -146
  79. package/dist/routes/dispatcher.d.ts +58 -0
  80. package/dist/routes/dispatcher.js +70 -0
  81. package/dist/routes/manifest.d.ts +17 -0
  82. package/dist/routes/manifest.js +62 -0
  83. package/dist/routes/match.d.ts +20 -0
  84. package/dist/routes/match.js +75 -0
  85. package/dist/routes/module.d.ts +14 -0
  86. package/dist/routes/module.js +30 -0
  87. package/dist/routes/parse.d.ts +31 -0
  88. package/dist/routes/parse.js +114 -0
  89. package/dist/routes/rank.d.ts +12 -0
  90. package/dist/routes/rank.js +49 -0
  91. package/dist/routes/router.d.ts +54 -0
  92. package/dist/routes/router.js +153 -0
  93. package/dist/routes/scan.d.ts +26 -0
  94. package/dist/routes/scan.js +98 -0
  95. package/dist/routes/types.d.ts +114 -0
  96. package/dist/routes/types.js +17 -0
  97. package/dist/runtime/dev-server.d.ts +64 -0
  98. package/dist/runtime/dev-server.js +94 -0
  99. package/dist/runtime/dev-styles.d.ts +13 -0
  100. package/dist/runtime/dev-styles.js +50 -0
  101. package/dist/runtime/module-loader.d.ts +55 -0
  102. package/dist/runtime/module-loader.js +122 -0
  103. package/dist/runtime/prod-server.d.ts +55 -0
  104. package/dist/runtime/prod-server.js +188 -0
  105. package/dist/runtime/template.d.ts +10 -0
  106. package/dist/runtime/template.js +33 -0
  107. package/dist/security/client-props.d.ts +25 -0
  108. package/dist/security/client-props.js +51 -0
  109. package/dist/security/config.d.ts +121 -0
  110. package/dist/security/config.js +77 -0
  111. package/dist/security/csp.d.ts +53 -0
  112. package/dist/security/csp.js +118 -0
  113. package/dist/security/dev-hardening.d.ts +46 -0
  114. package/dist/security/dev-hardening.js +65 -0
  115. package/dist/security/errors.d.ts +37 -0
  116. package/dist/security/errors.js +84 -0
  117. package/dist/security/escape.d.ts +40 -0
  118. package/dist/security/escape.js +90 -0
  119. package/dist/security/head-tags.d.ts +32 -0
  120. package/dist/security/head-tags.js +156 -0
  121. package/dist/security/headers.d.ts +76 -0
  122. package/dist/security/headers.js +278 -0
  123. package/dist/security/index.d.ts +24 -0
  124. package/dist/security/index.js +49 -0
  125. package/dist/security/serialize.d.ts +48 -0
  126. package/dist/security/serialize.js +146 -0
  127. package/dist/variants/assets.d.ts +33 -0
  128. package/dist/variants/assets.js +144 -0
  129. package/dist/variants/catalog.d.ts +33 -0
  130. package/dist/variants/catalog.js +79 -0
  131. package/dist/variants/platform-tokens.d.ts +9 -0
  132. package/dist/variants/platform-tokens.js +15 -0
  133. package/dist/variants/resolve.d.ts +40 -0
  134. package/dist/variants/resolve.js +90 -0
  135. package/dist/variants/suffix.d.ts +8 -0
  136. package/dist/variants/suffix.js +12 -0
  137. package/dist/variants/types.d.ts +72 -0
  138. package/dist/variants/types.js +2 -0
  139. package/package.json +23 -11
  140. package/dist/helpers/vite-config.d.ts +0 -10
  141. 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 };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "@ressjs/vite-router",
3
- "version": "0.5.2",
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": "MIT",
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
- "jest": "^29.7.0",
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
- }