elit 3.0.3 → 3.0.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/cli.js CHANGED
@@ -1412,7 +1412,7 @@ var require_package = __commonJS({
1412
1412
  "package.json"(exports2, module2) {
1413
1413
  module2.exports = {
1414
1414
  name: "elit",
1415
- version: "3.0.3",
1415
+ version: "3.0.5",
1416
1416
  description: "Optimized lightweight library for creating DOM elements with reactive state",
1417
1417
  main: "dist/index.js",
1418
1418
  module: "dist/index.mjs",
@@ -3324,8 +3324,9 @@ function createProxyHandler(proxyConfigs) {
3324
3324
  }
3325
3325
  if (changeOrigin) {
3326
3326
  proxyReqHeaders.host = targetUrl.host;
3327
+ } else {
3328
+ delete proxyReqHeaders["host"];
3327
3329
  }
3328
- delete proxyReqHeaders["host"];
3329
3330
  const proxyReqOptions = {
3330
3331
  method: req.method,
3331
3332
  headers: proxyReqHeaders
@@ -3462,7 +3463,6 @@ var defaultOptions = {
3462
3463
  watch: ["**/*.ts", "**/*.js", "**/*.html", "**/*.css"],
3463
3464
  ignore: ["node_modules/**", "dist/**", ".git/**", "**/*.d.ts"],
3464
3465
  logging: true,
3465
- middleware: [],
3466
3466
  worker: [],
3467
3467
  mode: "dev"
3468
3468
  };
@@ -3660,12 +3660,12 @@ function createDevServer(options) {
3660
3660
  return send403(res, "403 Forbidden");
3661
3661
  }
3662
3662
  await stat(indexPath);
3663
- return serveFile(indexPath, res, matchedClient, isDistRequest || isNodeModulesRequest);
3663
+ return serveFile(indexPath, req, res, matchedClient, isDistRequest || isNodeModulesRequest);
3664
3664
  } catch {
3665
3665
  return send404(res, "404 Not Found");
3666
3666
  }
3667
3667
  }
3668
- await serveFile(fullPath, res, matchedClient, isDistRequest || isNodeModulesRequest);
3668
+ await serveFile(fullPath, req, res, matchedClient, isDistRequest || isNodeModulesRequest);
3669
3669
  } catch (error) {
3670
3670
  if (!res.headersSent) {
3671
3671
  if (config.logging) console.log(`[404] ${filePath}`);
@@ -3673,7 +3673,7 @@ function createDevServer(options) {
3673
3673
  }
3674
3674
  }
3675
3675
  });
3676
- async function serveFile(filePath, res, client, isNodeModulesOrDist = false) {
3676
+ async function serveFile(filePath, req, res, client, isNodeModulesOrDist = false) {
3677
3677
  try {
3678
3678
  const rootDir = await realpath(resolve(client.root));
3679
3679
  const unresolvedPath = resolve(filePath);
@@ -3700,6 +3700,21 @@ function createDevServer(options) {
3700
3700
  let content = await readFile(resolvedPath);
3701
3701
  const ext = extname(resolvedPath);
3702
3702
  let mimeType = lookup(resolvedPath) || "application/octet-stream";
3703
+ const urlQuery = req.url?.split("?")[1] || "";
3704
+ const isInlineCSS = urlQuery.includes("inline");
3705
+ if (ext === ".css" && isInlineCSS) {
3706
+ const cssContent = content.toString().replace(/`/g, "\\`").replace(/\$/g, "\\$");
3707
+ const jsModule = `
3708
+ const css = \`${cssContent}\`;
3709
+ const style = document.createElement('style');
3710
+ style.setAttribute('data-file', '${filePath}');
3711
+ style.textContent = css;
3712
+ document.head.appendChild(style);
3713
+ export default css;
3714
+ `;
3715
+ content = Buffer.from(jsModule);
3716
+ mimeType = "application/javascript";
3717
+ }
3703
3718
  if (ext === ".ts" || ext === ".tsx") {
3704
3719
  try {
3705
3720
  let transpiled;
@@ -3748,6 +3763,14 @@ function createDevServer(options) {
3748
3763
  /import\s+["']([^"']+)\.ts(x?)["']/g,
3749
3764
  (_, path, tsx) => `import "${path}.js${tsx}"`
3750
3765
  );
3766
+ transpiled = transpiled.replace(
3767
+ /import\s+["']([^"']+\.css)["']/g,
3768
+ (_, path) => `import "${path}?inline"`
3769
+ );
3770
+ transpiled = transpiled.replace(
3771
+ /from\s+["']([^"']+\.css)["']/g,
3772
+ (_, path) => `from "${path}?inline"`
3773
+ );
3751
3774
  content = Buffer.from(transpiled);
3752
3775
  mimeType = "application/javascript";
3753
3776
  } catch (error) {
@@ -4390,9 +4413,6 @@ async function runPreview(args) {
4390
4413
  if (mergedOptions.https) {
4391
4414
  options.https = mergedOptions.https;
4392
4415
  }
4393
- if (mergedOptions.middleware) {
4394
- options.middleware = mergedOptions.middleware;
4395
- }
4396
4416
  if (mergedOptions.ssr) {
4397
4417
  options.ssr = mergedOptions.ssr;
4398
4418
  }
@@ -4601,23 +4621,20 @@ Worker Configuration:
4601
4621
  2. Global workers (defined in dev.worker or preview.worker)
4602
4622
  Both global and client-specific workers will be loaded.
4603
4623
 
4604
- API and Middleware Configuration:
4605
- Configure REST API endpoints and custom middleware per client or globally.
4624
+ API Configuration:
4625
+ Configure REST API endpoints per client or globally.
4606
4626
  Supports both global configuration and client-specific configuration.
4607
4627
 
4608
- Client-specific API and Middleware:
4628
+ Client-specific API:
4609
4629
  - Each client can have its own API router (clients[].api)
4610
- - Each client can have its own middleware chain (clients[].middleware)
4611
4630
  - Client-specific configuration is isolated to that client's routes
4612
4631
  - API paths are automatically prefixed with the client's basePath
4613
4632
  Example: If basePath is '/app1' and route is '/api/health',
4614
4633
  the full path will be '/app1/api/health'
4615
4634
 
4616
4635
  Priority:
4617
- 1. Client-specific middleware runs first (defined in clients[].middleware)
4618
- 2. Global middleware runs second (defined in dev.middleware or preview.middleware)
4619
- 3. Client-specific API routes are matched (defined in clients[].api)
4620
- 4. Global API routes are matched (defined in dev.api or preview.api)
4636
+ 1. Client-specific API routes are matched first (defined in clients[].api)
4637
+ 2. Global API routes are matched second (defined in dev.api or preview.api)
4621
4638
 
4622
4639
  Examples:
4623
4640
  elit dev
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAgB,eAAe,EAAE,cAAc,EAA0B,MAAM,QAAQ,CAAC;AAE/F,OAAO,EAAmB,SAAS,EAAc,MAAM,MAAM,CAAC;AAM9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAA4B,WAAW,EAAE,MAAM,SAAS,CAAC;AAKlG,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1F,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACxD;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACnF,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAStG,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAoB;IAEvC,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAKjC,GAAG,GAAI,MAAM,MAAM,EAAE,SAAS,kBAAkB,KAAG,IAAI,CAAwC;IAC/F,IAAI,GAAI,MAAM,MAAM,EAAE,SAAS,kBAAkB,KAAG,IAAI,CAAyC;IACjG,GAAG,GAAI,MAAM,MAAM,EAAE,SAAS,kBAAkB,KAAG,IAAI,CAAwC;IAC/F,MAAM,GAAI,MAAM,MAAM,EAAE,SAAS,kBAAkB,KAAG,IAAI,CAA2C;IACrG,KAAK,GAAI,MAAM,MAAM,EAAE,SAAS,kBAAkB,KAAG,IAAI,CAA0C;IACnG,OAAO,GAAI,MAAM,MAAM,EAAE,SAAS,kBAAkB,KAAG,IAAI,CAA4C;IAEvG,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,SAAS;IAcX,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;CA2B1E;AAED,eAAO,MAAM,IAAI,GAAI,KAAK,cAAc,EAAE,MAAM,GAAG,EAAE,eAAY,mBAAmG,CAAC;AACrK,eAAO,MAAM,IAAI,GAAI,KAAK,cAAc,EAAE,MAAM,MAAM,EAAE,eAAY,mBAA6E,CAAC;AAClJ,eAAO,MAAM,IAAI,GAAI,KAAK,cAAc,EAAE,MAAM,MAAM,EAAE,eAAY,mBAA4E,CAAC;AACjJ,eAAO,MAAM,MAAM,GAAI,KAAK,cAAc,EAAE,MAAM,MAAM,EAAE,gBAAY,mBAAsH,CAAC;AAuG7L;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AA2QD,wBAAgB,IAAI,CAAC,OAAO,GAAE;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACZ,GAAG,UAAU,CAqBlB;AAED,wBAAgB,MAAM,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;CAAO,GAAG,UAAU,CAUnF;AAED,wBAAgB,YAAY,IAAI,UAAU,CAYzC;AAED,wBAAgB,SAAS,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,UAAU,CAqBzG;AAED,wBAAgB,SAAS,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,UAAU,CAYtE;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,UAAU,CAM5F;AAED,wBAAgB,QAAQ,IAAI,UAAU,CAiCrC;AAED,wBAAgB,QAAQ,IAAI,UAAU,CAQrC;AAgBD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,WAAW,EAAE,IAC9C,KAAK,eAAe,EAAE,KAAK,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC,CAmF3E;AAID,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC;AAE1E,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG;IACzC,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;CAClC;AAED,qBAAa,WAAW,CAAC,CAAC,GAAG,GAAG;aAOZ,GAAG,EAAE,MAAM;IAN7B,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,OAAO,CAAwB;gBAGrB,GAAG,EAAE,MAAM,EAC3B,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAMhC,IAAI,KAAK,IAAI,CAAC,CAEb;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,EAapB;IAED,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI;IAIxC,SAAS,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAK9B,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAIhC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAKpD,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,MAAM;IAMd,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,KAAK,IAAI,IAAI;CAId;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAuC;IAErD,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAOtE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS;IAI/C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAS5B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI;IAI3C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI;IAI7C,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAInC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAKhD,IAAI,IAAI,MAAM,EAAE;IAIhB,KAAK,IAAI,IAAI;CAId;AA2BD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAkrBpE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -3164,8 +3164,9 @@ function createProxyHandler(proxyConfigs) {
3164
3164
  }
3165
3165
  if (changeOrigin) {
3166
3166
  proxyReqHeaders.host = targetUrl.host;
3167
+ } else {
3168
+ delete proxyReqHeaders["host"];
3167
3169
  }
3168
- delete proxyReqHeaders["host"];
3169
3170
  const proxyReqOptions = {
3170
3171
  method: req.method,
3171
3172
  headers: proxyReqHeaders
@@ -3302,7 +3303,6 @@ var defaultOptions = {
3302
3303
  watch: ["**/*.ts", "**/*.js", "**/*.html", "**/*.css"],
3303
3304
  ignore: ["node_modules/**", "dist/**", ".git/**", "**/*.d.ts"],
3304
3305
  logging: true,
3305
- middleware: [],
3306
3306
  worker: [],
3307
3307
  mode: "dev"
3308
3308
  };
@@ -3500,12 +3500,12 @@ function createDevServer(options) {
3500
3500
  return send403(res, "403 Forbidden");
3501
3501
  }
3502
3502
  await stat(indexPath);
3503
- return serveFile(indexPath, res, matchedClient, isDistRequest || isNodeModulesRequest);
3503
+ return serveFile(indexPath, req, res, matchedClient, isDistRequest || isNodeModulesRequest);
3504
3504
  } catch {
3505
3505
  return send404(res, "404 Not Found");
3506
3506
  }
3507
3507
  }
3508
- await serveFile(fullPath, res, matchedClient, isDistRequest || isNodeModulesRequest);
3508
+ await serveFile(fullPath, req, res, matchedClient, isDistRequest || isNodeModulesRequest);
3509
3509
  } catch (error) {
3510
3510
  if (!res.headersSent) {
3511
3511
  if (config.logging) console.log(`[404] ${filePath}`);
@@ -3513,7 +3513,7 @@ function createDevServer(options) {
3513
3513
  }
3514
3514
  }
3515
3515
  });
3516
- async function serveFile(filePath, res, client, isNodeModulesOrDist = false) {
3516
+ async function serveFile(filePath, req, res, client, isNodeModulesOrDist = false) {
3517
3517
  try {
3518
3518
  const rootDir = await realpath(resolve(client.root));
3519
3519
  const unresolvedPath = resolve(filePath);
@@ -3540,6 +3540,21 @@ function createDevServer(options) {
3540
3540
  let content = await readFile(resolvedPath);
3541
3541
  const ext = extname(resolvedPath);
3542
3542
  let mimeType = lookup(resolvedPath) || "application/octet-stream";
3543
+ const urlQuery = req.url?.split("?")[1] || "";
3544
+ const isInlineCSS = urlQuery.includes("inline");
3545
+ if (ext === ".css" && isInlineCSS) {
3546
+ const cssContent = content.toString().replace(/`/g, "\\`").replace(/\$/g, "\\$");
3547
+ const jsModule = `
3548
+ const css = \`${cssContent}\`;
3549
+ const style = document.createElement('style');
3550
+ style.setAttribute('data-file', '${filePath}');
3551
+ style.textContent = css;
3552
+ document.head.appendChild(style);
3553
+ export default css;
3554
+ `;
3555
+ content = Buffer.from(jsModule);
3556
+ mimeType = "application/javascript";
3557
+ }
3543
3558
  if (ext === ".ts" || ext === ".tsx") {
3544
3559
  try {
3545
3560
  let transpiled;
@@ -3588,6 +3603,14 @@ function createDevServer(options) {
3588
3603
  /import\s+["']([^"']+)\.ts(x?)["']/g,
3589
3604
  (_, path, tsx) => `import "${path}.js${tsx}"`
3590
3605
  );
3606
+ transpiled = transpiled.replace(
3607
+ /import\s+["']([^"']+\.css)["']/g,
3608
+ (_, path) => `import "${path}?inline"`
3609
+ );
3610
+ transpiled = transpiled.replace(
3611
+ /from\s+["']([^"']+\.css)["']/g,
3612
+ (_, path) => `from "${path}?inline"`
3613
+ );
3591
3614
  content = Buffer.from(transpiled);
3592
3615
  mimeType = "application/javascript";
3593
3616
  } catch (error) {
package/dist/server.mjs CHANGED
@@ -3138,8 +3138,9 @@ function createProxyHandler(proxyConfigs) {
3138
3138
  }
3139
3139
  if (changeOrigin) {
3140
3140
  proxyReqHeaders.host = targetUrl.host;
3141
+ } else {
3142
+ delete proxyReqHeaders["host"];
3141
3143
  }
3142
- delete proxyReqHeaders["host"];
3143
3144
  const proxyReqOptions = {
3144
3145
  method: req.method,
3145
3146
  headers: proxyReqHeaders
@@ -3276,7 +3277,6 @@ var defaultOptions = {
3276
3277
  watch: ["**/*.ts", "**/*.js", "**/*.html", "**/*.css"],
3277
3278
  ignore: ["node_modules/**", "dist/**", ".git/**", "**/*.d.ts"],
3278
3279
  logging: true,
3279
- middleware: [],
3280
3280
  worker: [],
3281
3281
  mode: "dev"
3282
3282
  };
@@ -3474,12 +3474,12 @@ function createDevServer(options) {
3474
3474
  return send403(res, "403 Forbidden");
3475
3475
  }
3476
3476
  await stat(indexPath);
3477
- return serveFile(indexPath, res, matchedClient, isDistRequest || isNodeModulesRequest);
3477
+ return serveFile(indexPath, req, res, matchedClient, isDistRequest || isNodeModulesRequest);
3478
3478
  } catch {
3479
3479
  return send404(res, "404 Not Found");
3480
3480
  }
3481
3481
  }
3482
- await serveFile(fullPath, res, matchedClient, isDistRequest || isNodeModulesRequest);
3482
+ await serveFile(fullPath, req, res, matchedClient, isDistRequest || isNodeModulesRequest);
3483
3483
  } catch (error) {
3484
3484
  if (!res.headersSent) {
3485
3485
  if (config.logging) console.log(`[404] ${filePath}`);
@@ -3487,7 +3487,7 @@ function createDevServer(options) {
3487
3487
  }
3488
3488
  }
3489
3489
  });
3490
- async function serveFile(filePath, res, client, isNodeModulesOrDist = false) {
3490
+ async function serveFile(filePath, req, res, client, isNodeModulesOrDist = false) {
3491
3491
  try {
3492
3492
  const rootDir = await realpath(resolve(client.root));
3493
3493
  const unresolvedPath = resolve(filePath);
@@ -3514,6 +3514,21 @@ function createDevServer(options) {
3514
3514
  let content = await readFile(resolvedPath);
3515
3515
  const ext = extname(resolvedPath);
3516
3516
  let mimeType = lookup(resolvedPath) || "application/octet-stream";
3517
+ const urlQuery = req.url?.split("?")[1] || "";
3518
+ const isInlineCSS = urlQuery.includes("inline");
3519
+ if (ext === ".css" && isInlineCSS) {
3520
+ const cssContent = content.toString().replace(/`/g, "\\`").replace(/\$/g, "\\$");
3521
+ const jsModule = `
3522
+ const css = \`${cssContent}\`;
3523
+ const style = document.createElement('style');
3524
+ style.setAttribute('data-file', '${filePath}');
3525
+ style.textContent = css;
3526
+ document.head.appendChild(style);
3527
+ export default css;
3528
+ `;
3529
+ content = Buffer.from(jsModule);
3530
+ mimeType = "application/javascript";
3531
+ }
3517
3532
  if (ext === ".ts" || ext === ".tsx") {
3518
3533
  try {
3519
3534
  let transpiled;
@@ -3562,6 +3577,14 @@ function createDevServer(options) {
3562
3577
  /import\s+["']([^"']+)\.ts(x?)["']/g,
3563
3578
  (_, path, tsx) => `import "${path}.js${tsx}"`
3564
3579
  );
3580
+ transpiled = transpiled.replace(
3581
+ /import\s+["']([^"']+\.css)["']/g,
3582
+ (_, path) => `import "${path}?inline"`
3583
+ );
3584
+ transpiled = transpiled.replace(
3585
+ /from\s+["']([^"']+\.css)["']/g,
3586
+ (_, path) => `from "${path}?inline"`
3587
+ );
3565
3588
  content = Buffer.from(transpiled);
3566
3589
  mimeType = "application/javascript";
3567
3590
  } catch (error) {
package/dist/types.d.ts CHANGED
@@ -78,8 +78,6 @@ export interface ClientConfig {
78
78
  worker?: WorkerConfig[];
79
79
  /** API router for REST endpoints specific to this client */
80
80
  api?: Router;
81
- /** Custom middleware specific to this client */
82
- middleware?: ((req: any, res: any, next: () => void) => void)[];
83
81
  /** Server mode: 'dev' uses source files, 'preview' uses built files (default: 'dev') */
84
82
  mode?: 'dev' | 'preview';
85
83
  }
@@ -130,8 +128,6 @@ export interface DevServerOptions {
130
128
  worker?: WorkerConfig[];
131
129
  /** Enable logging (default: true) */
132
130
  logging?: boolean;
133
- /** Custom middleware */
134
- middleware?: ((req: any, res: any, next: () => void) => void)[];
135
131
  /** API router for REST endpoints */
136
132
  api?: Router;
137
133
  /** SSR render function - returns HTML VNode or string */
@@ -224,8 +220,6 @@ export interface PreviewOptions {
224
220
  open?: boolean;
225
221
  /** Enable logging (default: true) */
226
222
  logging?: boolean;
227
- /** Custom middleware */
228
- middleware?: ((req: any, res: any, next: () => void) => void)[];
229
223
  /** API router for REST endpoints */
230
224
  api?: Router;
231
225
  /** SSR render function - returns HTML VNode or string */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "elit",
3
- "version": "3.0.3",
3
+ "version": "3.0.5",
4
4
  "description": "Optimized lightweight library for creating DOM elements with reactive state",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
package/src/cli.ts CHANGED
@@ -247,11 +247,6 @@ async function runPreview(args: string[]) {
247
247
  options.https = mergedOptions.https;
248
248
  }
249
249
 
250
- // Add middleware if configured
251
- if (mergedOptions.middleware) {
252
- options.middleware = mergedOptions.middleware;
253
- }
254
-
255
250
  // Add SSR if configured
256
251
  if (mergedOptions.ssr) {
257
252
  options.ssr = mergedOptions.ssr;
@@ -403,23 +398,20 @@ Worker Configuration:
403
398
  2. Global workers (defined in dev.worker or preview.worker)
404
399
  Both global and client-specific workers will be loaded.
405
400
 
406
- API and Middleware Configuration:
407
- Configure REST API endpoints and custom middleware per client or globally.
401
+ API Configuration:
402
+ Configure REST API endpoints per client or globally.
408
403
  Supports both global configuration and client-specific configuration.
409
404
 
410
- Client-specific API and Middleware:
405
+ Client-specific API:
411
406
  - Each client can have its own API router (clients[].api)
412
- - Each client can have its own middleware chain (clients[].middleware)
413
407
  - Client-specific configuration is isolated to that client's routes
414
408
  - API paths are automatically prefixed with the client's basePath
415
409
  Example: If basePath is '/app1' and route is '/api/health',
416
410
  the full path will be '/app1/api/health'
417
411
 
418
412
  Priority:
419
- 1. Client-specific middleware runs first (defined in clients[].middleware)
420
- 2. Global middleware runs second (defined in dev.middleware or preview.middleware)
421
- 3. Client-specific API routes are matched (defined in clients[].api)
422
- 4. Global API routes are matched (defined in dev.api or preview.api)
413
+ 1. Client-specific API routes are matched first (defined in clients[].api)
414
+ 2. Global API routes are matched second (defined in dev.api or preview.api)
423
415
 
424
416
  Examples:
425
417
  elit dev
package/src/server.ts CHANGED
@@ -690,14 +690,13 @@ export function createProxyHandler(proxyConfigs: ProxyConfig[]) {
690
690
  }
691
691
  }
692
692
 
693
- // Change origin if requested
693
+ // Change origin if requested (or remove host header if not)
694
694
  if (changeOrigin) {
695
695
  proxyReqHeaders.host = targetUrl.host;
696
+ } else {
697
+ delete proxyReqHeaders['host'];
696
698
  }
697
699
 
698
- // Remove headers that shouldn't be forwarded
699
- delete proxyReqHeaders['host'];
700
-
701
700
  const proxyReqOptions = {
702
701
  method: req.method,
703
702
  headers: proxyReqHeaders
@@ -885,7 +884,6 @@ const defaultOptions: Omit<Required<DevServerOptions>, 'api' | 'clients' | 'root
885
884
  watch: ['**/*.ts', '**/*.js', '**/*.html', '**/*.css'],
886
885
  ignore: ['node_modules/**', 'dist/**', '.git/**', '**/*.d.ts'],
887
886
  logging: true,
888
- middleware: [],
889
887
  worker: [],
890
888
  mode: 'dev'
891
889
  };
@@ -1166,13 +1164,13 @@ export function createDevServer(options: DevServerOptions): DevServer {
1166
1164
  return send403(res, '403 Forbidden');
1167
1165
  }
1168
1166
  await stat(indexPath);
1169
- return serveFile(indexPath, res, matchedClient, isDistRequest || isNodeModulesRequest);
1167
+ return serveFile(indexPath, req, res, matchedClient, isDistRequest || isNodeModulesRequest);
1170
1168
  } catch {
1171
1169
  return send404(res, '404 Not Found');
1172
1170
  }
1173
1171
  }
1174
1172
 
1175
- await serveFile(fullPath, res, matchedClient, isDistRequest || isNodeModulesRequest);
1173
+ await serveFile(fullPath, req, res, matchedClient, isDistRequest || isNodeModulesRequest);
1176
1174
  } catch (error) {
1177
1175
  // Only send 404 if response hasn't been sent yet
1178
1176
  if (!res.headersSent) {
@@ -1183,7 +1181,7 @@ export function createDevServer(options: DevServerOptions): DevServer {
1183
1181
  });
1184
1182
 
1185
1183
  // Serve file helper
1186
- async function serveFile(filePath: string, res: ServerResponse, client: NormalizedClient, isNodeModulesOrDist: boolean = false) {
1184
+ async function serveFile(filePath: string, req: IncomingMessage, res: ServerResponse, client: NormalizedClient, isNodeModulesOrDist: boolean = false) {
1187
1185
  try {
1188
1186
  const rootDir = await realpath(resolve(client.root));
1189
1187
 
@@ -1223,6 +1221,26 @@ export function createDevServer(options: DevServerOptions): DevServer {
1223
1221
  const ext = extname(resolvedPath);
1224
1222
  let mimeType = lookup(resolvedPath) || 'application/octet-stream';
1225
1223
 
1224
+ // Handle CSS imports as JavaScript modules (like Vite)
1225
+ // When CSS is imported in JS/TS with ?inline query, transform it to a JS module that injects styles
1226
+ const urlQuery = req.url?.split('?')[1] || '';
1227
+ const isInlineCSS = urlQuery.includes('inline');
1228
+
1229
+ if (ext === '.css' && isInlineCSS) {
1230
+ // Transform CSS to JavaScript module that injects styles
1231
+ const cssContent = content.toString().replace(/`/g, '\\`').replace(/\$/g, '\\$');
1232
+ const jsModule = `
1233
+ const css = \`${cssContent}\`;
1234
+ const style = document.createElement('style');
1235
+ style.setAttribute('data-file', '${filePath}');
1236
+ style.textContent = css;
1237
+ document.head.appendChild(style);
1238
+ export default css;
1239
+ `;
1240
+ content = Buffer.from(jsModule);
1241
+ mimeType = 'application/javascript';
1242
+ }
1243
+
1226
1244
  // Handle TypeScript files - transpile only (no bundling)
1227
1245
  if (ext === '.ts' || ext === '.tsx') {
1228
1246
  try {
@@ -1288,6 +1306,17 @@ export function createDevServer(options: DevServerOptions): DevServer {
1288
1306
  (_, path, tsx) => `import "${path}.js${tsx}"`
1289
1307
  );
1290
1308
 
1309
+ // Rewrite CSS imports to add ?inline query parameter
1310
+ // This tells the server to return CSS as a JavaScript module
1311
+ transpiled = transpiled.replace(
1312
+ /import\s+["']([^"']+\.css)["']/g,
1313
+ (_, path) => `import "${path}?inline"`
1314
+ );
1315
+ transpiled = transpiled.replace(
1316
+ /from\s+["']([^"']+\.css)["']/g,
1317
+ (_, path) => `from "${path}?inline"`
1318
+ );
1319
+
1291
1320
  content = Buffer.from(transpiled);
1292
1321
  mimeType = 'application/javascript';
1293
1322
  } catch (error) {
package/src/types.ts CHANGED
@@ -96,8 +96,6 @@ export interface ClientConfig {
96
96
  worker?: WorkerConfig[];
97
97
  /** API router for REST endpoints specific to this client */
98
98
  api?: Router;
99
- /** Custom middleware specific to this client */
100
- middleware?: ((req: any, res: any, next: () => void) => void)[];
101
99
  /** Server mode: 'dev' uses source files, 'preview' uses built files (default: 'dev') */
102
100
  mode?: 'dev' | 'preview';
103
101
  }
@@ -151,8 +149,6 @@ export interface DevServerOptions {
151
149
  worker?: WorkerConfig[];
152
150
  /** Enable logging (default: true) */
153
151
  logging?: boolean;
154
- /** Custom middleware */
155
- middleware?: ((req: any, res: any, next: () => void) => void)[];
156
152
  /** API router for REST endpoints */
157
153
  api?: Router;
158
154
  /** SSR render function - returns HTML VNode or string */
@@ -250,8 +246,6 @@ export interface PreviewOptions {
250
246
  open?: boolean;
251
247
  /** Enable logging (default: true) */
252
248
  logging?: boolean;
253
- /** Custom middleware */
254
- middleware?: ((req: any, res: any, next: () => void) => void)[];
255
249
  /** API router for REST endpoints */
256
250
  api?: Router;
257
251
  /** SSR render function - returns HTML VNode or string */