@hypen-space/cli 0.3.8

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.
@@ -0,0 +1,313 @@
1
+ import { createRequire } from "node:module";
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
17
+ };
18
+ var __export = (target, all) => {
19
+ for (var name in all)
20
+ __defProp(target, name, {
21
+ get: all[name],
22
+ enumerable: true,
23
+ configurable: true,
24
+ set: (newValue) => all[name] = () => newValue
25
+ });
26
+ };
27
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
28
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
29
+
30
+ // src/dev-node.ts
31
+ var exports_dev_node = {};
32
+ __export(exports_dev_node, {
33
+ hypen: () => hypen,
34
+ dev: () => dev,
35
+ default: () => dev_node_default,
36
+ build: () => build
37
+ });
38
+ import { createServer } from "http";
39
+ import { join, resolve, extname } from "path";
40
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, watch } from "fs";
41
+ import {
42
+ discoverComponents,
43
+ generateComponentsCode
44
+ } from "@hypen-space/core/discovery";
45
+ async function getEsbuild() {
46
+ if (!esbuild) {
47
+ try {
48
+ esbuild = await import("esbuild");
49
+ } catch {
50
+ throw new Error("esbuild is required for Node.js support. Install it with: npm install esbuild");
51
+ }
52
+ }
53
+ return esbuild;
54
+ }
55
+ function getDefaultHtmlTemplate(entry) {
56
+ return `<!DOCTYPE html>
57
+ <html lang="en">
58
+ <head>
59
+ <meta charset="UTF-8">
60
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
61
+ <title>Hypen App</title>
62
+ <style>
63
+ * { margin: 0; padding: 0; box-sizing: border-box; }
64
+ body { font-family: system-ui, -apple-system, sans-serif; }
65
+ </style>
66
+ </head>
67
+ <body>
68
+ <div id="app"></div>
69
+ <script type="module" src="/__hypen__/main.js"></script>
70
+ </body>
71
+ </html>
72
+ `;
73
+ }
74
+ function generateMainEntry(entry, componentsPath, debug) {
75
+ return `/**
76
+ * Auto-generated Hypen entry point
77
+ */
78
+ import { renderWithComponents } from "@hypen-space/core";
79
+ import * as components from "${componentsPath}";
80
+
81
+ const app = await renderWithComponents(
82
+ components,
83
+ "${entry}",
84
+ "#app",
85
+ { debug: ${debug} }
86
+ );
87
+
88
+ // Hot reload support
89
+ if (import.meta.hot) {
90
+ import.meta.hot.accept();
91
+ }
92
+
93
+ export default app;
94
+ `;
95
+ }
96
+ async function transpileTS(code, filename) {
97
+ const es = await getEsbuild();
98
+ const result = await es.transform(code, {
99
+ loader: "ts",
100
+ sourcefile: filename,
101
+ format: "esm",
102
+ target: "es2020"
103
+ });
104
+ return result.code;
105
+ }
106
+ async function dev(options) {
107
+ const {
108
+ components: componentsDir,
109
+ entry,
110
+ port = 3000,
111
+ hot = true,
112
+ debug = false,
113
+ htmlTemplate,
114
+ outDir = ".hypen",
115
+ onStart,
116
+ onComponentsChange
117
+ } = options;
118
+ await getEsbuild();
119
+ const log = debug ? (...args) => console.log("[hypen:dev]", ...args) : () => {};
120
+ const resolvedComponentsDir = resolve(componentsDir);
121
+ const resolvedOutDir = resolve(outDir);
122
+ if (!existsSync(resolvedOutDir)) {
123
+ mkdirSync(resolvedOutDir, { recursive: true });
124
+ }
125
+ log("Components directory:", resolvedComponentsDir);
126
+ log("Output directory:", resolvedOutDir);
127
+ const generateComponents = async () => {
128
+ log("Generating components...");
129
+ const code = await generateComponentsCode(resolvedComponentsDir, { debug });
130
+ const componentsPath2 = join(resolvedOutDir, "components.generated.ts");
131
+ writeFileSync(componentsPath2, code);
132
+ log("Generated:", componentsPath2);
133
+ return componentsPath2;
134
+ };
135
+ const generateMain = (componentsPath2) => {
136
+ log("Generating main entry...");
137
+ const code = generateMainEntry(entry, componentsPath2, debug);
138
+ const mainPath = join(resolvedOutDir, "main.ts");
139
+ writeFileSync(mainPath, code);
140
+ log("Generated:", mainPath);
141
+ return mainPath;
142
+ };
143
+ const componentsPath = await generateComponents();
144
+ generateMain(componentsPath);
145
+ let watcher = null;
146
+ if (hot && existsSync(resolvedComponentsDir)) {
147
+ watcher = watch(resolvedComponentsDir, { recursive: true }, async (eventType, filename) => {
148
+ if (filename && (filename.endsWith(".hypen") || filename.endsWith(".ts"))) {
149
+ log("File changed:", filename);
150
+ await generateComponents();
151
+ const components = await discoverComponents(resolvedComponentsDir);
152
+ onComponentsChange?.(components);
153
+ }
154
+ });
155
+ }
156
+ const html = htmlTemplate ? readFileSync(htmlTemplate, "utf-8") : getDefaultHtmlTemplate(entry);
157
+ const server = createServer(async (req, res) => {
158
+ const url = new URL(req.url || "/", `http://localhost:${port}`);
159
+ const pathname = url.pathname;
160
+ log("Request:", pathname);
161
+ try {
162
+ if (pathname === "/" || pathname === "/index.html") {
163
+ res.writeHead(200, { "Content-Type": "text/html" });
164
+ res.end(html);
165
+ return;
166
+ }
167
+ if (pathname.startsWith("/__hypen__/")) {
168
+ const fileName = pathname.replace("/__hypen__/", "");
169
+ const filePath = join(resolvedOutDir, fileName.replace(/\.js$/, ".ts"));
170
+ if (existsSync(filePath)) {
171
+ const code = readFileSync(filePath, "utf-8");
172
+ const js = await transpileTS(code, filePath);
173
+ res.writeHead(200, { "Content-Type": "application/javascript" });
174
+ res.end(js);
175
+ return;
176
+ }
177
+ }
178
+ if (pathname.endsWith(".ts") || pathname.endsWith(".js")) {
179
+ const possiblePaths = [
180
+ join(resolvedComponentsDir, pathname),
181
+ join(process.cwd(), pathname.slice(1))
182
+ ];
183
+ for (const filePath of possiblePaths) {
184
+ if (existsSync(filePath)) {
185
+ const code = readFileSync(filePath, "utf-8");
186
+ const js = await transpileTS(code, filePath);
187
+ res.writeHead(200, { "Content-Type": "application/javascript" });
188
+ res.end(js);
189
+ return;
190
+ }
191
+ }
192
+ }
193
+ const ext = extname(pathname);
194
+ if (ext && MIME_TYPES[ext]) {
195
+ const filePath = join(process.cwd(), pathname.slice(1));
196
+ if (existsSync(filePath)) {
197
+ const content = readFileSync(filePath);
198
+ res.writeHead(200, { "Content-Type": MIME_TYPES[ext] });
199
+ res.end(content);
200
+ return;
201
+ }
202
+ }
203
+ res.writeHead(404, { "Content-Type": "text/plain" });
204
+ res.end("Not Found");
205
+ } catch (error) {
206
+ log("Error:", error);
207
+ res.writeHead(500, { "Content-Type": "text/plain" });
208
+ res.end(`Server Error: ${error}`);
209
+ }
210
+ });
211
+ server.listen(port);
212
+ const serverUrl = `http://localhost:${port}`;
213
+ console.log(`
214
+ Hypen Dev Server (Node.js)
215
+ `);
216
+ console.log(` Local: ${serverUrl}`);
217
+ console.log(` Entry: ${entry}`);
218
+ console.log(` Components: ${resolvedComponentsDir}
219
+ `);
220
+ onStart?.(serverUrl);
221
+ return {
222
+ url: serverUrl,
223
+ stop: () => {
224
+ watcher?.close();
225
+ server.close();
226
+ }
227
+ };
228
+ }
229
+ async function build(options) {
230
+ const {
231
+ components: componentsDir,
232
+ entry,
233
+ outDir = "dist",
234
+ minify = true,
235
+ sourcemap = false
236
+ } = options;
237
+ const es = await getEsbuild();
238
+ const resolvedComponentsDir = resolve(componentsDir);
239
+ const resolvedOutDir = resolve(outDir);
240
+ console.log(`
241
+ Hypen Build (Node.js)
242
+ `);
243
+ console.log(` Entry: ${entry}`);
244
+ console.log(` Components: ${resolvedComponentsDir}`);
245
+ console.log(` Output: ${resolvedOutDir}
246
+ `);
247
+ if (!existsSync(resolvedOutDir)) {
248
+ mkdirSync(resolvedOutDir, { recursive: true });
249
+ }
250
+ const code = await generateComponentsCode(resolvedComponentsDir);
251
+ const tempDir = join(resolvedOutDir, ".temp");
252
+ if (!existsSync(tempDir)) {
253
+ mkdirSync(tempDir, { recursive: true });
254
+ }
255
+ const componentsPath = join(tempDir, "components.generated.ts");
256
+ writeFileSync(componentsPath, code);
257
+ const mainCode = generateMainEntry(entry, componentsPath, false);
258
+ const mainPath = join(tempDir, "main.ts");
259
+ writeFileSync(mainPath, mainCode);
260
+ try {
261
+ await es.build({
262
+ entryPoints: [mainPath],
263
+ bundle: true,
264
+ outdir: resolvedOutDir,
265
+ minify,
266
+ sourcemap,
267
+ format: "esm",
268
+ target: "es2020",
269
+ platform: "browser"
270
+ });
271
+ } catch (error) {
272
+ console.error("Build failed:", error);
273
+ process.exit(1);
274
+ }
275
+ const html = getDefaultHtmlTemplate(entry).replace("/__hypen__/main.js", "./main.js");
276
+ writeFileSync(join(resolvedOutDir, "index.html"), html);
277
+ console.log(` Build complete!
278
+ `);
279
+ console.log(` Files:`);
280
+ console.log(` ${join(resolvedOutDir, "main.js")}`);
281
+ console.log(` ${join(resolvedOutDir, "index.html")}`);
282
+ console.log();
283
+ }
284
+ var esbuild = null, MIME_TYPES, hypen, dev_node_default;
285
+ var init_dev_node = __esm(() => {
286
+ MIME_TYPES = {
287
+ ".html": "text/html",
288
+ ".js": "application/javascript",
289
+ ".mjs": "application/javascript",
290
+ ".ts": "application/javascript",
291
+ ".css": "text/css",
292
+ ".json": "application/json",
293
+ ".wasm": "application/wasm",
294
+ ".png": "image/png",
295
+ ".jpg": "image/jpeg",
296
+ ".svg": "image/svg+xml"
297
+ };
298
+ hypen = {
299
+ dev,
300
+ build
301
+ };
302
+ dev_node_default = hypen;
303
+ });
304
+ init_dev_node();
305
+
306
+ export {
307
+ hypen,
308
+ dev,
309
+ dev_node_default as default,
310
+ build
311
+ };
312
+
313
+ //# debugId=79792657E664B9DE64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/dev-node.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Node.js-compatible Development Server\n *\n * Uses http.createServer() and esbuild for Node.js environments.\n */\n\nimport { createServer, type IncomingMessage, type ServerResponse } from \"http\";\nimport { join, resolve, extname } from \"path\";\nimport { existsSync, readFileSync, writeFileSync, mkdirSync, watch } from \"fs\";\nimport {\n discoverComponents,\n generateComponentsCode,\n type DiscoveredComponent,\n} from \"@hypen-space/core/discovery\";\n\n// Lazy load esbuild to avoid issues if not installed\nlet esbuild: typeof import(\"esbuild\") | null = null;\n\nasync function getEsbuild() {\n if (!esbuild) {\n try {\n esbuild = await import(\"esbuild\");\n } catch {\n throw new Error(\n \"esbuild is required for Node.js support. Install it with: npm install esbuild\"\n );\n }\n }\n return esbuild;\n}\n\nexport interface DevOptions {\n components: string;\n entry: string;\n port?: number;\n hot?: boolean;\n debug?: boolean;\n htmlTemplate?: string;\n outDir?: string;\n onStart?: (url: string) => void;\n onComponentsChange?: (components: DiscoveredComponent[]) => void;\n}\n\nexport interface BuildOptions {\n components: string;\n entry: string;\n outDir?: string;\n minify?: boolean;\n sourcemap?: boolean;\n}\n\n/**\n * Default HTML template for development\n */\nfunction getDefaultHtmlTemplate(entry: string): string {\n return `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Hypen App</title>\n <style>\n * { margin: 0; padding: 0; box-sizing: border-box; }\n body { font-family: system-ui, -apple-system, sans-serif; }\n </style>\n</head>\n<body>\n <div id=\"app\"></div>\n <script type=\"module\" src=\"/__hypen__/main.js\"></script>\n</body>\n</html>\n`;\n}\n\n/**\n * Generate the main entry file\n */\nfunction generateMainEntry(\n entry: string,\n componentsPath: string,\n debug: boolean\n): string {\n return `/**\n * Auto-generated Hypen entry point\n */\nimport { renderWithComponents } from \"@hypen-space/core\";\nimport * as components from \"${componentsPath}\";\n\nconst app = await renderWithComponents(\n components,\n \"${entry}\",\n \"#app\",\n { debug: ${debug} }\n);\n\n// Hot reload support\nif (import.meta.hot) {\n import.meta.hot.accept();\n}\n\nexport default app;\n`;\n}\n\n/**\n * MIME types for common file extensions\n */\nconst MIME_TYPES: Record<string, string> = {\n \".html\": \"text/html\",\n \".js\": \"application/javascript\",\n \".mjs\": \"application/javascript\",\n \".ts\": \"application/javascript\",\n \".css\": \"text/css\",\n \".json\": \"application/json\",\n \".wasm\": \"application/wasm\",\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".svg\": \"image/svg+xml\",\n};\n\n/**\n * Transpile TypeScript to JavaScript using esbuild\n */\nasync function transpileTS(code: string, filename: string): Promise<string> {\n const es = await getEsbuild();\n const result = await es.transform(code, {\n loader: \"ts\",\n sourcefile: filename,\n format: \"esm\",\n target: \"es2020\",\n });\n return result.code;\n}\n\n/**\n * Start a development server (Node.js version)\n */\nexport async function dev(options: DevOptions): Promise<{\n url: string;\n stop: () => void;\n}> {\n const {\n components: componentsDir,\n entry,\n port = 3000,\n hot = true,\n debug = false,\n htmlTemplate,\n outDir = \".hypen\",\n onStart,\n onComponentsChange,\n } = options;\n\n // Verify esbuild is available\n await getEsbuild();\n\n const log = debug\n ? (...args: unknown[]) => console.log(\"[hypen:dev]\", ...args)\n : () => {};\n\n const resolvedComponentsDir = resolve(componentsDir);\n const resolvedOutDir = resolve(outDir);\n\n // Ensure output directory exists\n if (!existsSync(resolvedOutDir)) {\n mkdirSync(resolvedOutDir, { recursive: true });\n }\n\n log(\"Components directory:\", resolvedComponentsDir);\n log(\"Output directory:\", resolvedOutDir);\n\n // Generate initial components\n const generateComponents = async () => {\n log(\"Generating components...\");\n const code = await generateComponentsCode(resolvedComponentsDir, { debug });\n const componentsPath = join(resolvedOutDir, \"components.generated.ts\");\n writeFileSync(componentsPath, code);\n log(\"Generated:\", componentsPath);\n return componentsPath;\n };\n\n // Generate main entry\n const generateMain = (componentsPath: string) => {\n log(\"Generating main entry...\");\n const code = generateMainEntry(entry, componentsPath, debug);\n const mainPath = join(resolvedOutDir, \"main.ts\");\n writeFileSync(mainPath, code);\n log(\"Generated:\", mainPath);\n return mainPath;\n };\n\n // Initial generation\n const componentsPath = await generateComponents();\n generateMain(componentsPath);\n\n // Watch for changes\n let watcher: ReturnType<typeof watch> | null = null;\n\n if (hot && existsSync(resolvedComponentsDir)) {\n watcher = watch(\n resolvedComponentsDir,\n { recursive: true },\n async (eventType, filename) => {\n if (\n filename &&\n (filename.endsWith(\".hypen\") || filename.endsWith(\".ts\"))\n ) {\n log(\"File changed:\", filename);\n await generateComponents();\n const components = await discoverComponents(resolvedComponentsDir);\n onComponentsChange?.(components);\n }\n }\n );\n }\n\n // Get HTML template\n const html = htmlTemplate\n ? readFileSync(htmlTemplate, \"utf-8\")\n : getDefaultHtmlTemplate(entry);\n\n // Create Node.js HTTP server\n const server = createServer(async (req: IncomingMessage, res: ServerResponse) => {\n const url = new URL(req.url || \"/\", `http://localhost:${port}`);\n const pathname = url.pathname;\n\n log(\"Request:\", pathname);\n\n try {\n // Serve HTML for root\n if (pathname === \"/\" || pathname === \"/index.html\") {\n res.writeHead(200, { \"Content-Type\": \"text/html\" });\n res.end(html);\n return;\n }\n\n // Serve generated files\n if (pathname.startsWith(\"/__hypen__/\")) {\n const fileName = pathname.replace(\"/__hypen__/\", \"\");\n const filePath = join(resolvedOutDir, fileName.replace(/\\.js$/, \".ts\"));\n\n if (existsSync(filePath)) {\n const code = readFileSync(filePath, \"utf-8\");\n const js = await transpileTS(code, filePath);\n\n res.writeHead(200, { \"Content-Type\": \"application/javascript\" });\n res.end(js);\n return;\n }\n }\n\n // Serve static files from components directory\n if (pathname.endsWith(\".ts\") || pathname.endsWith(\".js\")) {\n const possiblePaths = [\n join(resolvedComponentsDir, pathname),\n join(process.cwd(), pathname.slice(1)),\n ];\n\n for (const filePath of possiblePaths) {\n if (existsSync(filePath)) {\n const code = readFileSync(filePath, \"utf-8\");\n const js = await transpileTS(code, filePath);\n\n res.writeHead(200, { \"Content-Type\": \"application/javascript\" });\n res.end(js);\n return;\n }\n }\n }\n\n // Serve other static files\n const ext = extname(pathname);\n if (ext && MIME_TYPES[ext]) {\n const filePath = join(process.cwd(), pathname.slice(1));\n if (existsSync(filePath)) {\n const content = readFileSync(filePath);\n res.writeHead(200, { \"Content-Type\": MIME_TYPES[ext] });\n res.end(content);\n return;\n }\n }\n\n // 404\n res.writeHead(404, { \"Content-Type\": \"text/plain\" });\n res.end(\"Not Found\");\n } catch (error) {\n log(\"Error:\", error);\n res.writeHead(500, { \"Content-Type\": \"text/plain\" });\n res.end(`Server Error: ${error}`);\n }\n });\n\n server.listen(port);\n\n const serverUrl = `http://localhost:${port}`;\n\n console.log(`\\n Hypen Dev Server (Node.js)\\n`);\n console.log(` Local: ${serverUrl}`);\n console.log(` Entry: ${entry}`);\n console.log(` Components: ${resolvedComponentsDir}\\n`);\n\n onStart?.(serverUrl);\n\n return {\n url: serverUrl,\n stop: () => {\n watcher?.close();\n server.close();\n },\n };\n}\n\n/**\n * Build for production (Node.js version)\n */\nexport async function build(options: BuildOptions): Promise<void> {\n const {\n components: componentsDir,\n entry,\n outDir = \"dist\",\n minify = true,\n sourcemap = false,\n } = options;\n\n const es = await getEsbuild();\n const resolvedComponentsDir = resolve(componentsDir);\n const resolvedOutDir = resolve(outDir);\n\n console.log(`\\n Hypen Build (Node.js)\\n`);\n console.log(` Entry: ${entry}`);\n console.log(` Components: ${resolvedComponentsDir}`);\n console.log(` Output: ${resolvedOutDir}\\n`);\n\n // Ensure output directory exists\n if (!existsSync(resolvedOutDir)) {\n mkdirSync(resolvedOutDir, { recursive: true });\n }\n\n // Generate components\n const code = await generateComponentsCode(resolvedComponentsDir);\n const tempDir = join(resolvedOutDir, \".temp\");\n\n if (!existsSync(tempDir)) {\n mkdirSync(tempDir, { recursive: true });\n }\n\n const componentsPath = join(tempDir, \"components.generated.ts\");\n writeFileSync(componentsPath, code);\n\n // Generate main entry\n const mainCode = generateMainEntry(entry, componentsPath, false);\n const mainPath = join(tempDir, \"main.ts\");\n writeFileSync(mainPath, mainCode);\n\n // Bundle with esbuild\n try {\n await es.build({\n entryPoints: [mainPath],\n bundle: true,\n outdir: resolvedOutDir,\n minify,\n sourcemap,\n format: \"esm\",\n target: \"es2020\",\n platform: \"browser\",\n });\n } catch (error) {\n console.error(\"Build failed:\", error);\n process.exit(1);\n }\n\n // Generate HTML\n const html = getDefaultHtmlTemplate(entry).replace(\n \"/__hypen__/main.js\",\n \"./main.js\"\n );\n writeFileSync(join(resolvedOutDir, \"index.html\"), html);\n\n console.log(` Build complete!\\n`);\n console.log(` Files:`);\n console.log(` ${join(resolvedOutDir, \"main.js\")}`);\n console.log(` ${join(resolvedOutDir, \"index.html\")}`);\n console.log();\n}\n\n/**\n * Main hypen object for easy imports\n */\nexport const hypen = {\n dev,\n build,\n};\n\nexport default hypen;\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "79792657E664B9DE64756E2164756E21",
9
+ "names": []
10
+ }