heliumts 0.2.2

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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +356 -0
  3. package/dist/bin/helium.d.ts +3 -0
  4. package/dist/bin/helium.d.ts.map +1 -0
  5. package/dist/bin/helium.js +236 -0
  6. package/dist/bin/helium.js.map +1 -0
  7. package/dist/client/Router.d.ts +83 -0
  8. package/dist/client/Router.d.ts.map +1 -0
  9. package/dist/client/Router.js +329 -0
  10. package/dist/client/Router.js.map +1 -0
  11. package/dist/client/cache.d.ts +8 -0
  12. package/dist/client/cache.d.ts.map +1 -0
  13. package/dist/client/cache.js +82 -0
  14. package/dist/client/cache.js.map +1 -0
  15. package/dist/client/index.d.ts +10 -0
  16. package/dist/client/index.d.ts.map +1 -0
  17. package/dist/client/index.js +9 -0
  18. package/dist/client/index.js.map +1 -0
  19. package/dist/client/prefetch.d.ts +12 -0
  20. package/dist/client/prefetch.d.ts.map +1 -0
  21. package/dist/client/prefetch.js +33 -0
  22. package/dist/client/prefetch.js.map +1 -0
  23. package/dist/client/routerManifest.d.ts +28 -0
  24. package/dist/client/routerManifest.d.ts.map +1 -0
  25. package/dist/client/routerManifest.js +242 -0
  26. package/dist/client/routerManifest.js.map +1 -0
  27. package/dist/client/rpcClient.d.ts +33 -0
  28. package/dist/client/rpcClient.d.ts.map +1 -0
  29. package/dist/client/rpcClient.js +383 -0
  30. package/dist/client/rpcClient.js.map +1 -0
  31. package/dist/client/transitions.d.ts +85 -0
  32. package/dist/client/transitions.d.ts.map +1 -0
  33. package/dist/client/transitions.js +92 -0
  34. package/dist/client/transitions.js.map +1 -0
  35. package/dist/client/types.d.ts +6 -0
  36. package/dist/client/types.d.ts.map +1 -0
  37. package/dist/client/types.js +2 -0
  38. package/dist/client/types.js.map +1 -0
  39. package/dist/client/useCall.d.ts +31 -0
  40. package/dist/client/useCall.d.ts.map +1 -0
  41. package/dist/client/useCall.js +40 -0
  42. package/dist/client/useCall.js.map +1 -0
  43. package/dist/client/useFetch.d.ts +34 -0
  44. package/dist/client/useFetch.d.ts.map +1 -0
  45. package/dist/client/useFetch.js +152 -0
  46. package/dist/client/useFetch.js.map +1 -0
  47. package/dist/index.d.ts +4 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +4 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/runtime/protocol.d.ts +25 -0
  52. package/dist/runtime/protocol.d.ts.map +1 -0
  53. package/dist/runtime/protocol.js +2 -0
  54. package/dist/runtime/protocol.js.map +1 -0
  55. package/dist/server/config.d.ts +216 -0
  56. package/dist/server/config.d.ts.map +1 -0
  57. package/dist/server/config.js +130 -0
  58. package/dist/server/config.js.map +1 -0
  59. package/dist/server/context.d.ts +38 -0
  60. package/dist/server/context.d.ts.map +1 -0
  61. package/dist/server/context.js +2 -0
  62. package/dist/server/context.js.map +1 -0
  63. package/dist/server/defineHTTPRequest.d.ts +49 -0
  64. package/dist/server/defineHTTPRequest.d.ts.map +1 -0
  65. package/dist/server/defineHTTPRequest.js +34 -0
  66. package/dist/server/defineHTTPRequest.js.map +1 -0
  67. package/dist/server/defineMethod.d.ts +20 -0
  68. package/dist/server/defineMethod.d.ts.map +1 -0
  69. package/dist/server/defineMethod.js +23 -0
  70. package/dist/server/defineMethod.js.map +1 -0
  71. package/dist/server/devServer.d.ts +15 -0
  72. package/dist/server/devServer.d.ts.map +1 -0
  73. package/dist/server/devServer.js +219 -0
  74. package/dist/server/devServer.js.map +1 -0
  75. package/dist/server/handlerLoader.d.ts +1 -0
  76. package/dist/server/handlerLoader.d.ts.map +1 -0
  77. package/dist/server/handlerLoader.js +2 -0
  78. package/dist/server/handlerLoader.js.map +1 -0
  79. package/dist/server/httpRouter.d.ts +17 -0
  80. package/dist/server/httpRouter.d.ts.map +1 -0
  81. package/dist/server/httpRouter.js +227 -0
  82. package/dist/server/httpRouter.js.map +1 -0
  83. package/dist/server/index.d.ts +11 -0
  84. package/dist/server/index.d.ts.map +1 -0
  85. package/dist/server/index.js +13 -0
  86. package/dist/server/index.js.map +1 -0
  87. package/dist/server/middleware.d.ts +30 -0
  88. package/dist/server/middleware.d.ts.map +1 -0
  89. package/dist/server/middleware.js +23 -0
  90. package/dist/server/middleware.js.map +1 -0
  91. package/dist/server/prodServer.d.ts +27 -0
  92. package/dist/server/prodServer.d.ts.map +1 -0
  93. package/dist/server/prodServer.js +301 -0
  94. package/dist/server/prodServer.js.map +1 -0
  95. package/dist/server/rateLimiter.d.ts +36 -0
  96. package/dist/server/rateLimiter.d.ts.map +1 -0
  97. package/dist/server/rateLimiter.js +113 -0
  98. package/dist/server/rateLimiter.js.map +1 -0
  99. package/dist/server/rpcRegistry.d.ts +34 -0
  100. package/dist/server/rpcRegistry.d.ts.map +1 -0
  101. package/dist/server/rpcRegistry.js +231 -0
  102. package/dist/server/rpcRegistry.js.map +1 -0
  103. package/dist/server/security.d.ts +5 -0
  104. package/dist/server/security.d.ts.map +1 -0
  105. package/dist/server/security.js +59 -0
  106. package/dist/server/security.js.map +1 -0
  107. package/dist/server/serializer.d.ts +9 -0
  108. package/dist/server/serializer.d.ts.map +1 -0
  109. package/dist/server/serializer.js +40 -0
  110. package/dist/server/serializer.js.map +1 -0
  111. package/dist/utils/envLoader.d.ts +27 -0
  112. package/dist/utils/envLoader.d.ts.map +1 -0
  113. package/dist/utils/envLoader.js +68 -0
  114. package/dist/utils/envLoader.js.map +1 -0
  115. package/dist/utils/ipExtractor.d.ts +59 -0
  116. package/dist/utils/ipExtractor.d.ts.map +1 -0
  117. package/dist/utils/ipExtractor.js +126 -0
  118. package/dist/utils/ipExtractor.js.map +1 -0
  119. package/dist/utils/logger.d.ts +2 -0
  120. package/dist/utils/logger.d.ts.map +1 -0
  121. package/dist/utils/logger.js +24 -0
  122. package/dist/utils/logger.js.map +1 -0
  123. package/dist/vite/heliumPlugin.d.ts +3 -0
  124. package/dist/vite/heliumPlugin.d.ts.map +1 -0
  125. package/dist/vite/heliumPlugin.js +294 -0
  126. package/dist/vite/heliumPlugin.js.map +1 -0
  127. package/dist/vite/index.d.ts +3 -0
  128. package/dist/vite/index.d.ts.map +1 -0
  129. package/dist/vite/index.js +3 -0
  130. package/dist/vite/index.js.map +1 -0
  131. package/dist/vite/paths.d.ts +8 -0
  132. package/dist/vite/paths.d.ts.map +1 -0
  133. package/dist/vite/paths.js +8 -0
  134. package/dist/vite/paths.js.map +1 -0
  135. package/dist/vite/scanner.d.ts +35 -0
  136. package/dist/vite/scanner.d.ts.map +1 -0
  137. package/dist/vite/scanner.js +167 -0
  138. package/dist/vite/scanner.js.map +1 -0
  139. package/dist/vite/ssg.d.ts +22 -0
  140. package/dist/vite/ssg.d.ts.map +1 -0
  141. package/dist/vite/ssg.js +547 -0
  142. package/dist/vite/ssg.js.map +1 -0
  143. package/dist/vite/virtualServerModule.d.ts +6 -0
  144. package/dist/vite/virtualServerModule.d.ts.map +1 -0
  145. package/dist/vite/virtualServerModule.js +82 -0
  146. package/dist/vite/virtualServerModule.js.map +1 -0
  147. package/package.json +103 -0
@@ -0,0 +1,167 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { log } from "../utils/logger.js";
4
+ import { SERVER_DIR } from "./paths.js";
5
+ export function scanServerMethods(root) {
6
+ const exports = scanServerExports(root);
7
+ return exports.methods;
8
+ }
9
+ export function scanServerExports(root) {
10
+ const serverDir = path.resolve(root, SERVER_DIR);
11
+ if (!fs.existsSync(serverDir)) {
12
+ return { methods: [], httpHandlers: [] };
13
+ }
14
+ const methods = [];
15
+ const httpHandlers = [];
16
+ let middleware;
17
+ function walk(dir) {
18
+ const files = fs.readdirSync(dir);
19
+ for (const file of files) {
20
+ const fullPath = path.join(dir, file);
21
+ const stat = fs.statSync(fullPath);
22
+ if (stat.isDirectory()) {
23
+ walk(fullPath);
24
+ }
25
+ else if (file.endsWith(".ts")) {
26
+ const content = fs.readFileSync(fullPath, "utf-8");
27
+ // Check for _middleware.ts file
28
+ if (file === "_middleware.ts") {
29
+ // Support both 'middleware' and 'defineMiddleware' (backwards compatibility)
30
+ const middlewareRegex = /export\s+(const|default)\s+(\w+)\s*=\s*(middleware|defineMiddleware)/;
31
+ const match = middlewareRegex.exec(content);
32
+ if (match) {
33
+ middleware = {
34
+ name: match[2],
35
+ filePath: fullPath,
36
+ };
37
+ }
38
+ // Also support default export
39
+ const defaultRegex = /export\s+default\s+(middleware|defineMiddleware)/;
40
+ if (defaultRegex.test(content)) {
41
+ middleware = {
42
+ name: "default",
43
+ filePath: fullPath,
44
+ };
45
+ }
46
+ }
47
+ // Find: export const methodName = defineMethod(...)
48
+ const methodRegex = /export\s+const\s+(\w+)\s*=\s*defineMethod/g;
49
+ let match;
50
+ while ((match = methodRegex.exec(content)) !== null) {
51
+ methods.push({
52
+ name: match[1],
53
+ filePath: fullPath,
54
+ });
55
+ }
56
+ // Find: export const handlerName = defineHTTPRequest(...)
57
+ const httpRegex = /export\s+const\s+(\w+)\s*=\s*defineHTTPRequest/g;
58
+ while ((match = httpRegex.exec(content)) !== null) {
59
+ httpHandlers.push({
60
+ name: match[1],
61
+ filePath: fullPath,
62
+ });
63
+ }
64
+ }
65
+ }
66
+ }
67
+ walk(serverDir);
68
+ return { methods, httpHandlers, middleware };
69
+ }
70
+ /**
71
+ * Convert a file path to a route pattern (same logic as client-side router)
72
+ */
73
+ function pathFromFile(file, root) {
74
+ // Remove root/src/pages prefix and file extension
75
+ const pagesDir = path.join(root, "src", "pages");
76
+ const withoutPrefix = file.replace(pagesDir, "").replace(/\.(tsx|jsx|ts|js)$/, "");
77
+ // Handle special files
78
+ if (withoutPrefix === "/404") {
79
+ return "__404__";
80
+ }
81
+ // Remove route groups (folders in parentheses)
82
+ let pattern = withoutPrefix.replace(/\/\([^)]+\)/g, "");
83
+ // Convert /index to /
84
+ pattern = pattern.replace(/\/index$/, "") || "/";
85
+ // Convert [...param] to *param (catch-all)
86
+ pattern = pattern.replace(/\[\.\.\.(.+?)\]/g, "*$1");
87
+ // Convert [param] to :param (single dynamic segment)
88
+ pattern = pattern.replace(/\[(.+?)\]/g, ":$1");
89
+ return pattern;
90
+ }
91
+ /**
92
+ * Scan pages directory and detect route collisions
93
+ */
94
+ export function scanPageRoutes(root) {
95
+ const pagesDir = path.join(root, "src", "pages");
96
+ if (!fs.existsSync(pagesDir)) {
97
+ return { collisions: [], totalRoutes: 0 };
98
+ }
99
+ const routePatternMap = new Map();
100
+ const collisions = [];
101
+ function walkPages(dir) {
102
+ const items = fs.readdirSync(dir);
103
+ for (const item of items) {
104
+ const fullPath = path.join(dir, item);
105
+ const stat = fs.statSync(fullPath);
106
+ if (stat.isDirectory()) {
107
+ walkPages(fullPath);
108
+ }
109
+ else if (/\.(tsx|jsx|ts|js)$/.test(item)) {
110
+ // Skip layout files
111
+ if (item.includes("_layout.")) {
112
+ continue;
113
+ }
114
+ const pathPattern = pathFromFile(fullPath, root);
115
+ // Skip special pages
116
+ if (pathPattern === "__404__") {
117
+ continue;
118
+ }
119
+ // Check for collision
120
+ const existingFile = routePatternMap.get(pathPattern);
121
+ if (existingFile) {
122
+ // Check if this collision was already recorded
123
+ const existingCollision = collisions.find((c) => c.pattern === pathPattern);
124
+ if (existingCollision) {
125
+ existingCollision.files.push(fullPath);
126
+ }
127
+ else {
128
+ collisions.push({
129
+ pattern: pathPattern,
130
+ files: [existingFile, fullPath],
131
+ });
132
+ }
133
+ }
134
+ else {
135
+ routePatternMap.set(pathPattern, fullPath);
136
+ }
137
+ }
138
+ }
139
+ }
140
+ walkPages(pagesDir);
141
+ return { collisions, totalRoutes: routePatternMap.size };
142
+ }
143
+ /**
144
+ * Check for route collisions and log warnings
145
+ */
146
+ export function checkRouteCollisions(root) {
147
+ const { collisions, totalRoutes } = scanPageRoutes(root);
148
+ if (collisions.length === 0) {
149
+ return false;
150
+ }
151
+ log("warn", "⚠️ Route collisions detected! Multiple files resolve to the same URL path:");
152
+ log("warn", "");
153
+ for (const collision of collisions) {
154
+ log("error", ` Route pattern: "${collision.pattern}"`);
155
+ for (const file of collision.files) {
156
+ const relative = path.relative(root, file);
157
+ log("error", ` - ${relative}`);
158
+ }
159
+ log("error", ` ⚠️ Only the first file will be accessible.`);
160
+ log("warn", "");
161
+ }
162
+ log("warn", `Found ${collisions.length} collision(s) across ${totalRoutes} unique routes.`);
163
+ log("warn", "Consider using different file names or organizing files in subdirectories.");
164
+ log("warn", "");
165
+ return true;
166
+ }
167
+ //# sourceMappingURL=scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/vite/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuBxC,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC1C,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC,OAAO,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,YAAY,GAAwB,EAAE,CAAC;IAC7C,IAAI,UAAwC,CAAC;IAE7C,SAAS,IAAI,CAAC,GAAW;QACrB,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEnC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAEnD,gCAAgC;gBAChC,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBAC5B,6EAA6E;oBAC7E,MAAM,eAAe,GAAG,sEAAsE,CAAC;oBAC/F,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC5C,IAAI,KAAK,EAAE,CAAC;wBACR,UAAU,GAAG;4BACT,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;4BACd,QAAQ,EAAE,QAAQ;yBACrB,CAAC;oBACN,CAAC;oBACD,8BAA8B;oBAC9B,MAAM,YAAY,GAAG,kDAAkD,CAAC;oBACxE,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC7B,UAAU,GAAG;4BACT,IAAI,EAAE,SAAS;4BACf,QAAQ,EAAE,QAAQ;yBACrB,CAAC;oBACN,CAAC;gBACL,CAAC;gBAED,oDAAoD;gBACpD,MAAM,WAAW,GAAG,4CAA4C,CAAC;gBACjE,IAAI,KAAK,CAAC;gBACV,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBAClD,OAAO,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;wBACd,QAAQ,EAAE,QAAQ;qBACrB,CAAC,CAAC;gBACP,CAAC;gBAED,0DAA0D;gBAC1D,MAAM,SAAS,GAAG,iDAAiD,CAAC;gBACpE,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBAChD,YAAY,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;wBACd,QAAQ,EAAE,QAAQ;qBACrB,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,CAAC;IAChB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAY,EAAE,IAAY;IAC5C,kDAAkD;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAEnF,uBAAuB;IACvB,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,+CAA+C;IAC/C,IAAI,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAExD,sBAAsB;IACtB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IACjD,2CAA2C;IAC3C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACrD,qDAAqD;IACrD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAE/C,OAAO,OAAO,CAAC;AACnB,CAAC;AAOD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAEjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,MAAM,UAAU,GAAqB,EAAE,CAAC;IAExC,SAAS,SAAS,CAAC,GAAW;QAC1B,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEnC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrB,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,oBAAoB;gBACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5B,SAAS;gBACb,CAAC;gBAED,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAEjD,qBAAqB;gBACrB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC5B,SAAS;gBACb,CAAC;gBAED,sBAAsB;gBACtB,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACtD,IAAI,YAAY,EAAE,CAAC;oBACf,+CAA+C;oBAC/C,MAAM,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC;oBAC5E,IAAI,iBAAiB,EAAE,CAAC;wBACpB,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC3C,CAAC;yBAAM,CAAC;wBACJ,UAAU,CAAC,IAAI,CAAC;4BACZ,OAAO,EAAE,WAAW;4BACpB,KAAK,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC;yBAClC,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAC/C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC7C,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEzD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,MAAM,EAAE,6EAA6E,CAAC,CAAC;IAC3F,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEhB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,GAAG,CAAC,OAAO,EAAE,qBAAqB,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3C,GAAG,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,GAAG,CAAC,OAAO,EAAE,+CAA+C,CAAC,CAAC;QAC9D,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,GAAG,CAAC,MAAM,EAAE,SAAS,UAAU,CAAC,MAAM,wBAAwB,WAAW,iBAAiB,CAAC,CAAC;IAC5F,GAAG,CAAC,MAAM,EAAE,4EAA4E,CAAC,CAAC;IAC1F,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEhB,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * SSG (Static Site Generation) implementation for Helium
3
+ *
4
+ * Scans pages directory for files with "use ssg"; directive and generates
5
+ * static HTML for them at build time.
6
+ */
7
+ interface SSGPage {
8
+ filePath: string;
9
+ urlPath: string;
10
+ relativePath: string;
11
+ warnings: string[];
12
+ }
13
+ /**
14
+ * Scan pages directory and find all pages with "use ssg" directive
15
+ */
16
+ export declare function scanSSGPages(root: string): SSGPage[];
17
+ /**
18
+ * Generate static HTML files for all SSG pages
19
+ */
20
+ export declare function generateStaticPages(context: any, root: string, htmlTemplate: string, distDir: string): Promise<void>;
21
+ export {};
22
+ //# sourceMappingURL=ssg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssg.d.ts","sourceRoot":"","sources":["../../src/vite/ssg.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AAEH,UAAU,OAAO;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AA2ED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAwDpD;AAqLD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAsT1G"}