@adidas/htmplar-cli 2.0.0-alpha.4 → 2.0.0-alpha.5
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/dist/bin.mjs +1 -1
- package/dist/{chunk-B5Y4C3SC.mjs → chunk-75LZOF2E.mjs} +9 -5
- package/dist/chunk-75LZOF2E.mjs.map +1 -0
- package/dist/{chunk-5T4G2KPQ.mjs → chunk-YIFWJA4B.mjs} +5 -5
- package/dist/{chunk-5T4G2KPQ.mjs.map → chunk-YIFWJA4B.mjs.map} +1 -1
- package/dist/{chunk-6WDMCTJZ.mjs → chunk-Z75LK35F.mjs} +4 -4
- package/dist/{chunk-6WDMCTJZ.mjs.map → chunk-Z75LK35F.mjs.map} +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/dev-FZFMZNCQ.mjs +3 -0
- package/dist/dev-FZFMZNCQ.mjs.map +1 -0
- package/dist/index.mjs +2 -2
- package/dist/init-X4HPAFRV.mjs +3 -0
- package/dist/{init-FFOMRB74.mjs.map → init-X4HPAFRV.mjs.map} +1 -1
- package/package.json +1 -1
- package/dist/chunk-B5Y4C3SC.mjs.map +0 -1
- package/dist/dev-HN2GMK56.mjs +0 -3
- package/dist/dev-HN2GMK56.mjs.map +0 -1
- package/dist/init-FFOMRB74.mjs +0 -3
package/dist/bin.mjs
CHANGED
|
@@ -114,12 +114,12 @@ async function startDevServer(options) {
|
|
|
114
114
|
try {
|
|
115
115
|
process.env.VITE_TELEMETRY_DISABLED = "1";
|
|
116
116
|
const templates = await discoverEmailTemplates();
|
|
117
|
-
const
|
|
117
|
+
const config = {
|
|
118
118
|
configFile: false,
|
|
119
119
|
root: process.cwd(),
|
|
120
120
|
server: {
|
|
121
121
|
port,
|
|
122
|
-
open: options.open
|
|
122
|
+
open: options.open
|
|
123
123
|
},
|
|
124
124
|
plugins: [react(), createRoutingPlugin(templates)],
|
|
125
125
|
resolve: {
|
|
@@ -133,8 +133,12 @@ async function startDevServer(options) {
|
|
|
133
133
|
replacement: path.resolve(process.cwd(), "node_modules/@adidas/htmplar-renderer")
|
|
134
134
|
}
|
|
135
135
|
]
|
|
136
|
+
},
|
|
137
|
+
optimizeDeps: {
|
|
138
|
+
include: ["react", "react-dom", "react/jsx-runtime"]
|
|
136
139
|
}
|
|
137
|
-
}
|
|
140
|
+
};
|
|
141
|
+
const server = await createServer(config);
|
|
138
142
|
await server.listen();
|
|
139
143
|
console.log("");
|
|
140
144
|
console.log(chalk.green("\u2705 Dev server running!"));
|
|
@@ -160,5 +164,5 @@ async function startDevServer(options) {
|
|
|
160
164
|
}
|
|
161
165
|
|
|
162
166
|
export { startDevServer };
|
|
163
|
-
//# sourceMappingURL=chunk-
|
|
164
|
-
//# sourceMappingURL=chunk-
|
|
167
|
+
//# sourceMappingURL=chunk-75LZOF2E.mjs.map
|
|
168
|
+
//# sourceMappingURL=chunk-75LZOF2E.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/dev.ts"],"names":[],"mappings":"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","file":"chunk-75LZOF2E.mjs","sourcesContent":["import { createServer, ViteDevServer, InlineConfig } from 'vite';\nimport react from '@vitejs/plugin-react';\nimport chalk from 'chalk';\nimport path from 'path';\nimport { readdir } from 'fs/promises';\n\ninterface DevOptions {\n port: string;\n open: boolean;\n}\n\nasync function discoverEmailTemplates(): Promise<string[]> {\n const srcDir = path.join(process.cwd(), 'src');\n try {\n const files = await readdir(srcDir);\n return files\n .filter(\n (file) =>\n (file.endsWith('.tsx') || file.endsWith('.jsx')) &&\n file !== 'main.tsx' &&\n file !== 'main.jsx'\n )\n .map((file) => file.replace(/\\.(tsx|jsx)$/, ''));\n } catch {\n return [];\n }\n}\n\nfunction createRoutingPlugin(templates: string[]) {\n return {\n name: 'htmplar-routing',\n configureServer(server: ViteDevServer) {\n server.middlewares.use(async (req, res, next) => {\n const url = req.url || '';\n\n // Root - show index with list of templates\n if (url === '/' || url === '/index.html') {\n const templateLinks = templates\n .map(\n (name) =>\n `<li style=\"margin: 10px 0;\"><a href=\"/${name}\" style=\"color: #0066cc; text-decoration: none; font-size: 16px;\">📧 ${name}</a></li>`\n )\n .join('');\n\n const html = `<!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>HTMplar Email Templates</title>\n <style>\n body {\n font-family: system-ui, -apple-system, sans-serif;\n max-width: 800px;\n margin: 0 auto;\n padding: 40px 20px;\n background: #f9f9f9;\n }\n h1 { color: #333; }\n ul { list-style: none; padding: 0; }\n a:hover { text-decoration: underline !important; }\n .card {\n background: white;\n padding: 30px;\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n }\n </style>\n </head>\n <body>\n <div class=\"card\">\n <h1>📧 HTMplar Email Templates</h1>\n <p style=\"color: #666; margin-top: 10px;\">\n Click on a template below to preview it. Changes will hot reload automatically.\n </p>\n ${\n templates.length > 0\n ? `<ul style=\"margin-top: 30px;\">${templateLinks}</ul>`\n : '<p style=\"color: #999; margin-top: 30px;\">No email templates found. Create a .tsx file in the src/ directory.</p>'\n }\n </div>\n </body>\n</html>`;\n\n res.setHeader('Content-Type', 'text/html');\n res.end(html);\n return;\n }\n\n // Template routes - serve dynamic preview\n const routeMatch = url.match(/^\\/([^/?]+)/);\n if (routeMatch) {\n const templateName = routeMatch[1];\n if (templates.includes(templateName)) {\n const ext = await getTemplateExtension(templateName);\n const html = `<!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>${templateName} - HTMplar</title>\n <style>\n body { margin: 0; padding: 0; }\n #root { min-height: 100vh; }\n </style>\n </head>\n <body>\n <div id=\"root\"></div>\n <script type=\"module\">\n import React from 'react';\n import { createRoot } from 'react-dom/client';\n import EmailComponent from '/src/${templateName}.${ext}';\n\n const root = createRoot(document.getElementById('root'));\n root.render(React.createElement(EmailComponent));\n </script>\n </body>\n</html>`;\n\n res.setHeader('Content-Type', 'text/html');\n res.end(html);\n return;\n }\n }\n\n next();\n });\n },\n };\n}\n\nasync function getTemplateExtension(name: string): Promise<string> {\n const srcDir = path.join(process.cwd(), 'src');\n const files = await readdir(srcDir);\n const file = files.find((f) => f === `${name}.tsx` || f === `${name}.jsx`);\n return file?.endsWith('.tsx') ? 'tsx' : 'jsx';\n}\n\nexport async function startDevServer(options: DevOptions) {\n const port = parseInt(options.port, 10);\n\n try {\n // Disable telemetry\n process.env.VITE_TELEMETRY_DISABLED = '1';\n\n // Discover email templates\n const templates = await discoverEmailTemplates();\n\n // Create Vite dev server\n const config: InlineConfig = {\n configFile: false,\n root: process.cwd(),\n server: {\n port,\n open: options.open,\n },\n plugins: [react(), createRoutingPlugin(templates)],\n resolve: {\n alias: [\n {\n find: '@adidas/htmplar-core',\n replacement: path.resolve(process.cwd(), 'node_modules/@adidas/htmplar-core'),\n },\n {\n find: '@adidas/htmplar-renderer',\n replacement: path.resolve(process.cwd(), 'node_modules/@adidas/htmplar-renderer'),\n },\n ],\n },\n optimizeDeps: {\n include: ['react', 'react-dom', 'react/jsx-runtime'],\n },\n };\n\n const server = await createServer(config);\n\n await server.listen();\n\n console.log('');\n console.log(chalk.green('✅ Dev server running!'));\n console.log('');\n console.log(chalk.cyan(` ➜ Local: http://localhost:${port}/`));\n console.log('');\n console.log(chalk.gray(' Press Ctrl+C to stop'));\n console.log('');\n\n // Keep process alive\n process.on('SIGTERM', async () => {\n await server.close();\n process.exit(0);\n });\n\n process.on('SIGINT', async () => {\n console.log('');\n console.log(chalk.yellow('Stopping dev server...'));\n await server.close();\n process.exit(0);\n });\n } catch (error) {\n console.error(chalk.red('Failed to start dev server:'), error);\n throw error;\n }\n}\n"]}
|
|
@@ -21,13 +21,13 @@ async function initProject(name) {
|
|
|
21
21
|
preview: "htmplar preview"
|
|
22
22
|
},
|
|
23
23
|
dependencies: {
|
|
24
|
-
"@adidas/htmplar-core": "^2.0.0-alpha.
|
|
25
|
-
"@adidas/htmplar-renderer": "^2.0.0-alpha.
|
|
24
|
+
"@adidas/htmplar-core": "^2.0.0-alpha.5",
|
|
25
|
+
"@adidas/htmplar-renderer": "^2.0.0-alpha.5",
|
|
26
26
|
react: "^18.3.1",
|
|
27
27
|
"react-dom": "^18.3.1"
|
|
28
28
|
},
|
|
29
29
|
devDependencies: {
|
|
30
|
-
"@adidas/htmplar-cli": "^2.0.0-alpha.
|
|
30
|
+
"@adidas/htmplar-cli": "^2.0.0-alpha.5",
|
|
31
31
|
"@types/react": "^18.3.8",
|
|
32
32
|
"@types/react-dom": "^18.3.0",
|
|
33
33
|
typescript: "^5.6.2"
|
|
@@ -103,5 +103,5 @@ npm run preview
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
export { initProject };
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
107
|
-
//# sourceMappingURL=chunk-
|
|
106
|
+
//# sourceMappingURL=chunk-YIFWJA4B.mjs.map
|
|
107
|
+
//# sourceMappingURL=chunk-YIFWJA4B.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/init.ts"],"names":[],"mappings":";;;;;;AAKA,eAAsB,YAAY,IAAA,EAAe;AAC/C,EAAA,MAAM,cAAc,IAAA,IAAQ,WAAA;AAC5B,EAAA,MAAM,UAAU,GAAA,CAAI,CAAA,kBAAA,EAAqB,WAAW,CAAA,CAAE,EAAE,KAAA,EAAM;AAE9D,EAAA,IAAI;AACF,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,GAAA,IAAO,WAAW,CAAA;AAGlD,IAAA,MAAM,KAAA,CAAM,KAAK,UAAA,EAAY,KAAK,GAAG,EAAE,SAAA,EAAW,MAAM,CAAA;AACxD,IAAA,MAAM,KAAA,CAAM,KAAK,UAAA,EAAY,MAAM,GAAG,EAAE,SAAA,EAAW,MAAM,CAAA;AAGzD,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,IAAA,EAAM,WAAA;AAAA,MACN,OAAA,EAAS,OAAA;AAAA,MACT,OAAA,EAAS,IAAA;AAAA,MACT,OAAA,EAAS;AAAA,QACP,GAAA,EAAK,aAAA;AAAA,QACL,KAAA,EAAO,eAAA;AAAA,QACP,OAAA,EAAS;AAAA,OACX;AAAA,MACA,YAAA,EAAc;AAAA,QACZ,sBAAA,EAAwB,gBAAA;AAAA,QACxB,0BAAA,EAA4B,gBAAA;AAAA,QAC5B,KAAA,EAAO,SAAA;AAAA,QACP,WAAA,EAAa;AAAA,OACf;AAAA,MACA,eAAA,EAAiB;AAAA,QACf,qBAAA,EAAuB,gBAAA;AAAA,QACvB,cAAA,EAAgB,SAAA;AAAA,QAChB,kBAAA,EAAoB,SAAA;AAAA,QACpB,UAAA,EAAY;AAAA;AACd,KACF;AAEA,IAAA,MAAM,SAAA,CAAU,IAAA,CAAK,UAAA,EAAY,cAAc,CAAA,EAAG,KAAK,SAAA,CAAU,WAAA,EAAa,IAAA,EAAM,CAAC,CAAC,CAAA;AAGtF,IAAA,MAAM,YAAA,GAAe,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AA4BrB,IAAA,MAAM,UAAU,IAAA,CAAK,UAAA,EAAY,KAAA,EAAO,aAAa,GAAG,YAAY,CAAA;AAGpE,IAAA,MAAM,MAAA,GAAS,KAAK,WAAW;;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA,CAAA;AA0B/B,IAAA,MAAM,SAAA,CAAU,IAAA,CAAK,UAAA,EAAY,WAAW,GAAG,MAAM,CAAA;AAErD,IAAA,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,KAAA,CAAM,kBAAkB,CAAC,CAAA;AAE/C,IAAA,OAAA,CAAQ,IAAI,EAAE,CAAA;AACd,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,IAAA,CAAK,aAAa,CAAC,CAAA;AACrC,IAAA,OAAA,CAAQ,IAAI,EAAE,CAAA;AACd,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,EAAQ,WAAW,CAAA,CAAE,CAAA;AACjC,IAAA,OAAA,CAAQ,IAAI,eAAe,CAAA;AAC3B,IAAA,OAAA,CAAQ,IAAI,eAAe,CAAA;AAC3B,IAAA,OAAA,CAAQ,IAAI,EAAE,CAAA;AAAA,EAChB,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAK,0BAA0B,CAAA;AACvC,IAAA,MAAM,KAAA;AAAA,EACR;AACF","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/commands/init.ts"],"names":[],"mappings":";;;;;;AAKA,eAAsB,YAAY,IAAA,EAAe;AAC/C,EAAA,MAAM,cAAc,IAAA,IAAQ,WAAA;AAC5B,EAAA,MAAM,UAAU,GAAA,CAAI,CAAA,kBAAA,EAAqB,WAAW,CAAA,CAAE,EAAE,KAAA,EAAM;AAE9D,EAAA,IAAI;AACF,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,GAAA,IAAO,WAAW,CAAA;AAGlD,IAAA,MAAM,KAAA,CAAM,KAAK,UAAA,EAAY,KAAK,GAAG,EAAE,SAAA,EAAW,MAAM,CAAA;AACxD,IAAA,MAAM,KAAA,CAAM,KAAK,UAAA,EAAY,MAAM,GAAG,EAAE,SAAA,EAAW,MAAM,CAAA;AAGzD,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,IAAA,EAAM,WAAA;AAAA,MACN,OAAA,EAAS,OAAA;AAAA,MACT,OAAA,EAAS,IAAA;AAAA,MACT,OAAA,EAAS;AAAA,QACP,GAAA,EAAK,aAAA;AAAA,QACL,KAAA,EAAO,eAAA;AAAA,QACP,OAAA,EAAS;AAAA,OACX;AAAA,MACA,YAAA,EAAc;AAAA,QACZ,sBAAA,EAAwB,gBAAA;AAAA,QACxB,0BAAA,EAA4B,gBAAA;AAAA,QAC5B,KAAA,EAAO,SAAA;AAAA,QACP,WAAA,EAAa;AAAA,OACf;AAAA,MACA,eAAA,EAAiB;AAAA,QACf,qBAAA,EAAuB,gBAAA;AAAA,QACvB,cAAA,EAAgB,SAAA;AAAA,QAChB,kBAAA,EAAoB,SAAA;AAAA,QACpB,UAAA,EAAY;AAAA;AACd,KACF;AAEA,IAAA,MAAM,SAAA,CAAU,IAAA,CAAK,UAAA,EAAY,cAAc,CAAA,EAAG,KAAK,SAAA,CAAU,WAAA,EAAa,IAAA,EAAM,CAAC,CAAC,CAAA;AAGtF,IAAA,MAAM,YAAA,GAAe,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AA4BrB,IAAA,MAAM,UAAU,IAAA,CAAK,UAAA,EAAY,KAAA,EAAO,aAAa,GAAG,YAAY,CAAA;AAGpE,IAAA,MAAM,MAAA,GAAS,KAAK,WAAW;;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA,CAAA;AA0B/B,IAAA,MAAM,SAAA,CAAU,IAAA,CAAK,UAAA,EAAY,WAAW,GAAG,MAAM,CAAA;AAErD,IAAA,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,KAAA,CAAM,kBAAkB,CAAC,CAAA;AAE/C,IAAA,OAAA,CAAQ,IAAI,EAAE,CAAA;AACd,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,IAAA,CAAK,aAAa,CAAC,CAAA;AACrC,IAAA,OAAA,CAAQ,IAAI,EAAE,CAAA;AACd,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,EAAQ,WAAW,CAAA,CAAE,CAAA;AACjC,IAAA,OAAA,CAAQ,IAAI,eAAe,CAAA;AAC3B,IAAA,OAAA,CAAQ,IAAI,eAAe,CAAA;AAC3B,IAAA,OAAA,CAAQ,IAAI,EAAE,CAAA;AAAA,EAChB,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAK,0BAA0B,CAAA;AACvC,IAAA,MAAM,KAAA;AAAA,EACR;AACF","file":"chunk-YIFWJA4B.mjs","sourcesContent":["import { mkdir, writeFile } from 'fs/promises';\nimport { join } from 'path';\nimport chalk from 'chalk';\nimport ora from 'ora';\n\nexport async function initProject(name?: string) {\n const projectName = name || 'my-emails';\n const spinner = ora(`Creating project: ${projectName}`).start();\n\n try {\n const projectDir = join(process.cwd(), projectName);\n\n // Create directories\n await mkdir(join(projectDir, 'src'), { recursive: true });\n await mkdir(join(projectDir, 'dist'), { recursive: true });\n\n // Create package.json\n const packageJson = {\n name: projectName,\n version: '1.0.0',\n private: true,\n scripts: {\n dev: 'htmplar dev',\n build: 'htmplar build',\n preview: 'htmplar preview',\n },\n dependencies: {\n '@adidas/htmplar-core': '^2.0.0-alpha.5',\n '@adidas/htmplar-renderer': '^2.0.0-alpha.5',\n react: '^18.3.1',\n 'react-dom': '^18.3.1',\n },\n devDependencies: {\n '@adidas/htmplar-cli': '^2.0.0-alpha.5',\n '@types/react': '^18.3.8',\n '@types/react-dom': '^18.3.0',\n typescript: '^5.6.2',\n },\n };\n\n await writeFile(join(projectDir, 'package.json'), JSON.stringify(packageJson, null, 2));\n\n // Create example email\n const exampleEmail = `import React from 'react';\nimport { Block, Text, Button } from '@adidas/htmplar-core';\n\nexport default function WelcomeEmail() {\n return (\n <Block backgroundColor=\"#f4f4f4\" padding={40}>\n <Block backgroundColor=\"#ffffff\" padding={30} maxWidth={600}>\n <Text fontSize={24} fontWeight=\"bold\" align=\"center\">\n Welcome to HTMplar!\n </Text>\n\n <Block padding={20}>\n <Text fontSize={16} color=\"#666666\">\n Start building amazing emails with React and TypeScript.\n </Text>\n </Block>\n\n <Block padding={20}>\n <Button href=\"https://github.com/adidas/htmplar\">\n Get Started\n </Button>\n </Block>\n </Block>\n </Block>\n );\n}\n`;\n\n await writeFile(join(projectDir, 'src', 'welcome.tsx'), exampleEmail);\n\n // Create README\n const readme = `# ${projectName}\n\nHTMplar email project\n\n## Getting Started\n\n\\`\\`\\`bash\n# Install dependencies\nnpm install\n\n# Start dev server\nnpm run dev\n\n# Build emails\nnpm run build\n\n# Preview built emails\nnpm run preview\n\\`\\`\\`\n\n## Project Structure\n\n- \\`src/\\` - Email source files (React components)\n- \\`dist/\\` - Built HTML files\n`;\n\n await writeFile(join(projectDir, 'README.md'), readme);\n\n spinner.succeed(chalk.green('Project created!'));\n\n console.log('');\n console.log(chalk.cyan('Next steps:'));\n console.log('');\n console.log(` cd ${projectName}`);\n console.log(' npm install');\n console.log(' npm run dev');\n console.log('');\n } catch (error) {\n spinner.fail('Failed to create project');\n throw error;\n }\n}\n"]}
|
|
@@ -8,7 +8,7 @@ program.command("dev").description("Start development server with hot reload").o
|
|
|
8
8
|
console.log(chalk.blue("\u{1F680} Starting HTMplar dev server..."));
|
|
9
9
|
console.log(chalk.gray(` Port: ${options.port}`));
|
|
10
10
|
try {
|
|
11
|
-
const { startDevServer } = await import('./dev-
|
|
11
|
+
const { startDevServer } = await import('./dev-FZFMZNCQ.mjs');
|
|
12
12
|
await startDevServer(options);
|
|
13
13
|
} catch (error) {
|
|
14
14
|
console.error(chalk.red("\u274C Failed to start dev server:"), error);
|
|
@@ -39,7 +39,7 @@ program.command("preview").description("Preview built emails").option("-p, --por
|
|
|
39
39
|
program.command("init [name]").description("Initialize a new HTMplar project").action(async (name) => {
|
|
40
40
|
console.log(chalk.blue("\u{1F389} Initializing new HTMplar project..."));
|
|
41
41
|
try {
|
|
42
|
-
const { initProject } = await import('./init-
|
|
42
|
+
const { initProject } = await import('./init-X4HPAFRV.mjs');
|
|
43
43
|
await initProject(name);
|
|
44
44
|
console.log(chalk.green("\u2705 Project initialized!"));
|
|
45
45
|
} catch (error) {
|
|
@@ -48,5 +48,5 @@ program.command("init [name]").description("Initialize a new HTMplar project").a
|
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
50
|
program.parse();
|
|
51
|
-
//# sourceMappingURL=chunk-
|
|
52
|
-
//# sourceMappingURL=chunk-
|
|
51
|
+
//# sourceMappingURL=chunk-Z75LK35F.mjs.map
|
|
52
|
+
//# sourceMappingURL=chunk-Z75LK35F.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"names":[],"mappings":"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","file":"chunk-Z75LK35F.mjs","sourcesContent":["#!/usr/bin/env node\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\n\nconst program = new Command();\n\nprogram\n .name('htmplar')\n .description('HTMplar - Modern email development with React')\n .version('2.0.0-alpha.0');\n\n// Dev command\nprogram\n .command('dev')\n .description('Start development server with hot reload')\n .option('-p, --port <port>', 'Port to run the server on', '3000')\n .option('-o, --open', 'Open browser automatically', false)\n .action(async (options) => {\n console.log(chalk.blue('🚀 Starting HTMplar dev server...'));\n console.log(chalk.gray(` Port: ${options.port}`));\n\n try {\n const { startDevServer } = await import('./commands/dev.js');\n await startDevServer(options);\n } catch (error) {\n console.error(chalk.red('❌ Failed to start dev server:'), error);\n process.exit(1);\n }\n });\n\n// Build command\nprogram\n .command('build')\n .description('Build emails to static HTML')\n .option('-o, --output <dir>', 'Output directory', 'dist')\n .option('--clean', 'Clean output directory before build', false)\n .action(async (options) => {\n console.log(chalk.blue('📦 Building emails...'));\n\n try {\n const { buildEmails } = await import('./commands/build.js');\n await buildEmails(options);\n console.log(chalk.green('✅ Build complete!'));\n } catch (error) {\n console.error(chalk.red('❌ Build failed:'), error);\n process.exit(1);\n }\n });\n\n// Preview command\nprogram\n .command('preview')\n .description('Preview built emails')\n .option('-p, --port <port>', 'Port to run preview server', '3001')\n .option('-o, --open', 'Open browser automatically', false)\n .action(async (options) => {\n console.log(chalk.blue('👀 Starting preview server...'));\n\n try {\n const { startPreviewServer } = await import('./commands/preview.js');\n await startPreviewServer(options);\n } catch (error) {\n console.error(chalk.red('❌ Failed to start preview:'), error);\n process.exit(1);\n }\n });\n\n// Init command\nprogram\n .command('init [name]')\n .description('Initialize a new HTMplar project')\n .action(async (name) => {\n console.log(chalk.blue('🎉 Initializing new HTMplar project...'));\n\n try {\n const { initProject } = await import('./commands/init.js');\n await initProject(name);\n console.log(chalk.green('✅ Project initialized!'));\n } catch (error) {\n console.error(chalk.red('❌ Initialization failed:'), error);\n process.exit(1);\n }\n });\n\nprogram.parse();\n"]}
|
package/dist/cli.mjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"dev-FZFMZNCQ.mjs"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { startDevServer } from './chunk-
|
|
1
|
+
export { startDevServer } from './chunk-75LZOF2E.mjs';
|
|
2
2
|
export { buildEmails } from './chunk-3B2SEUWU.mjs';
|
|
3
3
|
export { startPreviewServer } from './chunk-SEOAKQKB.mjs';
|
|
4
|
-
export { initProject } from './chunk-
|
|
4
|
+
export { initProject } from './chunk-YIFWJA4B.mjs';
|
|
5
5
|
|
|
6
6
|
// src/index.ts
|
|
7
7
|
var version = "2.0.0-alpha.0";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"init-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"init-X4HPAFRV.mjs"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/dev.ts"],"names":[],"mappings":"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","file":"chunk-B5Y4C3SC.mjs","sourcesContent":["import { createServer, ViteDevServer } from 'vite';\nimport react from '@vitejs/plugin-react';\nimport chalk from 'chalk';\nimport path from 'path';\nimport { readdir } from 'fs/promises';\n\ninterface DevOptions {\n port: string;\n open: boolean;\n}\n\nasync function discoverEmailTemplates(): Promise<string[]> {\n const srcDir = path.join(process.cwd(), 'src');\n try {\n const files = await readdir(srcDir);\n return files\n .filter(\n (file) =>\n (file.endsWith('.tsx') || file.endsWith('.jsx')) &&\n file !== 'main.tsx' &&\n file !== 'main.jsx'\n )\n .map((file) => file.replace(/\\.(tsx|jsx)$/, ''));\n } catch {\n return [];\n }\n}\n\nfunction createRoutingPlugin(templates: string[]) {\n return {\n name: 'htmplar-routing',\n configureServer(server: ViteDevServer) {\n server.middlewares.use(async (req, res, next) => {\n const url = req.url || '';\n\n // Root - show index with list of templates\n if (url === '/' || url === '/index.html') {\n const templateLinks = templates\n .map(\n (name) =>\n `<li style=\"margin: 10px 0;\"><a href=\"/${name}\" style=\"color: #0066cc; text-decoration: none; font-size: 16px;\">📧 ${name}</a></li>`\n )\n .join('');\n\n const html = `<!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>HTMplar Email Templates</title>\n <style>\n body {\n font-family: system-ui, -apple-system, sans-serif;\n max-width: 800px;\n margin: 0 auto;\n padding: 40px 20px;\n background: #f9f9f9;\n }\n h1 { color: #333; }\n ul { list-style: none; padding: 0; }\n a:hover { text-decoration: underline !important; }\n .card {\n background: white;\n padding: 30px;\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n }\n </style>\n </head>\n <body>\n <div class=\"card\">\n <h1>📧 HTMplar Email Templates</h1>\n <p style=\"color: #666; margin-top: 10px;\">\n Click on a template below to preview it. Changes will hot reload automatically.\n </p>\n ${\n templates.length > 0\n ? `<ul style=\"margin-top: 30px;\">${templateLinks}</ul>`\n : '<p style=\"color: #999; margin-top: 30px;\">No email templates found. Create a .tsx file in the src/ directory.</p>'\n }\n </div>\n </body>\n</html>`;\n\n res.setHeader('Content-Type', 'text/html');\n res.end(html);\n return;\n }\n\n // Template routes - serve dynamic preview\n const routeMatch = url.match(/^\\/([^/?]+)/);\n if (routeMatch) {\n const templateName = routeMatch[1];\n if (templates.includes(templateName)) {\n const ext = await getTemplateExtension(templateName);\n const html = `<!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>${templateName} - HTMplar</title>\n <style>\n body { margin: 0; padding: 0; }\n #root { min-height: 100vh; }\n </style>\n </head>\n <body>\n <div id=\"root\"></div>\n <script type=\"module\">\n import React from 'react';\n import { createRoot } from 'react-dom/client';\n import EmailComponent from '/src/${templateName}.${ext}';\n\n const root = createRoot(document.getElementById('root'));\n root.render(React.createElement(EmailComponent));\n </script>\n </body>\n</html>`;\n\n res.setHeader('Content-Type', 'text/html');\n res.end(html);\n return;\n }\n }\n\n next();\n });\n },\n };\n}\n\nasync function getTemplateExtension(name: string): Promise<string> {\n const srcDir = path.join(process.cwd(), 'src');\n const files = await readdir(srcDir);\n const file = files.find((f) => f === `${name}.tsx` || f === `${name}.jsx`);\n return file?.endsWith('.tsx') ? 'tsx' : 'jsx';\n}\n\nexport async function startDevServer(options: DevOptions) {\n const port = parseInt(options.port, 10);\n\n try {\n // Disable telemetry\n process.env.VITE_TELEMETRY_DISABLED = '1';\n\n // Discover email templates\n const templates = await discoverEmailTemplates();\n\n // Create Vite dev server\n const server = await createServer({\n configFile: false,\n root: process.cwd(),\n server: {\n port,\n open: options.open ? '/' : false,\n },\n plugins: [react(), createRoutingPlugin(templates)],\n resolve: {\n alias: [\n {\n find: '@adidas/htmplar-core',\n replacement: path.resolve(process.cwd(), 'node_modules/@adidas/htmplar-core'),\n },\n {\n find: '@adidas/htmplar-renderer',\n replacement: path.resolve(process.cwd(), 'node_modules/@adidas/htmplar-renderer'),\n },\n ],\n },\n });\n\n await server.listen();\n\n console.log('');\n console.log(chalk.green('✅ Dev server running!'));\n console.log('');\n console.log(chalk.cyan(` ➜ Local: http://localhost:${port}/`));\n console.log('');\n console.log(chalk.gray(' Press Ctrl+C to stop'));\n console.log('');\n\n // Keep process alive\n process.on('SIGTERM', async () => {\n await server.close();\n process.exit(0);\n });\n\n process.on('SIGINT', async () => {\n console.log('');\n console.log(chalk.yellow('Stopping dev server...'));\n await server.close();\n process.exit(0);\n });\n } catch (error) {\n console.error(chalk.red('Failed to start dev server:'), error);\n throw error;\n }\n}\n"]}
|
package/dist/dev-HN2GMK56.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"dev-HN2GMK56.mjs"}
|
package/dist/init-FFOMRB74.mjs
DELETED