@swissjs/swite 0.3.0 → 0.3.1

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 (157) hide show
  1. package/dist/adapters/proxy/SwiteProxyError.d.ts.map +1 -0
  2. package/dist/{proxy → adapters/proxy}/proxyToPython.d.ts +1 -1
  3. package/dist/adapters/proxy/proxyToPython.d.ts.map +1 -0
  4. package/dist/build-engine/builder.d.ts.map +1 -0
  5. package/dist/{builder.js → build-engine/builder.js} +8 -14
  6. package/dist/cli.js +5 -5
  7. package/dist/config/config-loader.d.ts.map +1 -0
  8. package/dist/config/config.d.ts.map +1 -0
  9. package/dist/config/env.d.ts +25 -0
  10. package/dist/config/env.d.ts.map +1 -0
  11. package/dist/config/env.js +84 -0
  12. package/dist/{handlers → dev-engine/handlers}/base-handler.d.ts +3 -1
  13. package/dist/dev-engine/handlers/base-handler.d.ts.map +1 -0
  14. package/dist/{handlers → dev-engine/handlers}/base-handler.js +22 -2
  15. package/dist/dev-engine/handlers/js-handler.d.ts.map +1 -0
  16. package/dist/{handlers → dev-engine/handlers}/js-handler.js +1 -1
  17. package/dist/dev-engine/handlers/mjs-handler.d.ts.map +1 -0
  18. package/dist/{handlers → dev-engine/handlers}/mjs-handler.js +1 -1
  19. package/dist/dev-engine/handlers/node-module-handler.d.ts.map +1 -0
  20. package/dist/{handlers → dev-engine/handlers}/node-module-handler.js +4 -4
  21. package/dist/{handlers → dev-engine/handlers}/ts-handler.d.ts +0 -4
  22. package/dist/dev-engine/handlers/ts-handler.d.ts.map +1 -0
  23. package/dist/{handlers → dev-engine/handlers}/ts-handler.js +5 -28
  24. package/dist/{handlers → dev-engine/handlers}/ui-handler.d.ts +0 -4
  25. package/dist/dev-engine/handlers/ui-handler.d.ts.map +1 -0
  26. package/dist/dev-engine/handlers/ui-handler.js +84 -0
  27. package/dist/{handlers → dev-engine/handlers}/uix-handler.d.ts +0 -4
  28. package/dist/dev-engine/handlers/uix-handler.d.ts.map +1 -0
  29. package/dist/dev-engine/handlers/uix-handler.js +70 -0
  30. package/dist/dev-engine/hmr/hmr-client-template.d.ts +10 -0
  31. package/dist/dev-engine/hmr/hmr-client-template.d.ts.map +1 -0
  32. package/dist/dev-engine/hmr/hmr-client-template.js +122 -0
  33. package/dist/dev-engine/hmr/hmr.d.ts.map +1 -0
  34. package/dist/{hmr.js → dev-engine/hmr/hmr.js} +2 -134
  35. package/dist/{middleware → dev-engine/middleware}/hmr-routes.d.ts +2 -2
  36. package/dist/dev-engine/middleware/hmr-routes.d.ts.map +1 -0
  37. package/dist/{middleware → dev-engine/middleware}/hmr-routes.js +1 -1
  38. package/dist/dev-engine/middleware/middleware-setup.d.ts +34 -0
  39. package/dist/dev-engine/middleware/middleware-setup.d.ts.map +1 -0
  40. package/dist/dev-engine/middleware/middleware-setup.js +327 -0
  41. package/dist/dev-engine/middleware/static-files.d.ts.map +1 -0
  42. package/dist/{middleware → dev-engine/middleware}/static-files.js +2 -2
  43. package/dist/{dev → dev-engine}/pythonDevManager.d.ts +1 -1
  44. package/dist/dev-engine/pythonDevManager.d.ts.map +1 -0
  45. package/dist/{dev → dev-engine}/pythonDevManager.js +1 -1
  46. package/dist/{router → dev-engine/router}/file-router.d.ts +4 -4
  47. package/dist/dev-engine/router/file-router.d.ts.map +1 -0
  48. package/dist/{router → dev-engine/router}/file-router.js +4 -4
  49. package/dist/dev-engine/server.d.ts.map +1 -0
  50. package/dist/{server.js → dev-engine/server.js} +6 -6
  51. package/dist/index.d.ts +13 -13
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +9 -9
  54. package/dist/internal/cache/compilation-cache.d.ts.map +1 -0
  55. package/dist/{cache → internal/cache}/compilation-cache.js +3 -2
  56. package/dist/internal/generate-import-map-cli.d.ts.map +1 -0
  57. package/dist/{utils → internal}/generate-import-map-cli.js +1 -1
  58. package/dist/internal/generate-import-map.d.ts.map +1 -0
  59. package/dist/{utils → internal}/generate-import-map.js +3 -3
  60. package/dist/{utils → kernel}/package-finder.d.ts +3 -1
  61. package/dist/kernel/package-finder.d.ts.map +1 -0
  62. package/dist/{utils → kernel}/package-finder.js +29 -52
  63. package/dist/kernel/package-registry.d.ts.map +1 -0
  64. package/dist/kernel/workspace.d.ts.map +1 -0
  65. package/dist/{resolver → resolution}/bare-import-resolver.d.ts +1 -1
  66. package/dist/resolution/bare-import-resolver.d.ts.map +1 -0
  67. package/dist/{resolver → resolution}/bare-import-resolver.js +12 -49
  68. package/dist/resolution/cdn/cdn-fallback.d.ts.map +1 -0
  69. package/dist/resolution/path/file-path-resolver.d.ts.map +1 -0
  70. package/dist/{utils → resolution/path}/file-path-resolver.js +11 -20
  71. package/dist/resolution/path/path-fixup.d.ts +13 -0
  72. package/dist/resolution/path/path-fixup.d.ts.map +1 -0
  73. package/dist/resolution/path/path-fixup.js +20 -0
  74. package/dist/{resolver.d.ts → resolution/resolver.d.ts} +1 -1
  75. package/dist/resolution/resolver.d.ts.map +1 -0
  76. package/dist/{resolver.js → resolution/resolver.js} +8 -37
  77. package/dist/{import-rewriter.d.ts → resolution/rewriting/import-rewriter.d.ts} +1 -1
  78. package/dist/resolution/rewriting/import-rewriter.d.ts.map +1 -0
  79. package/dist/resolution/rewriting/import-rewriter.js +199 -0
  80. package/dist/{resolver → resolution}/symlink-registry.d.ts +1 -1
  81. package/dist/resolution/symlink-registry.d.ts.map +1 -0
  82. package/dist/{resolver → resolution}/symlink-registry.js +1 -1
  83. package/dist/resolution/url-resolver.d.ts.map +1 -0
  84. package/dist/{resolver → resolution}/url-resolver.js +38 -109
  85. package/dist/resolution/workspace-package-resolver.d.ts.map +1 -0
  86. package/dist/resolution/workspace-package-resolver.js +77 -0
  87. package/package.json +24 -15
  88. package/src/cli.ts +1 -1
  89. package/src/resolution/url-resolver.ts +1 -1
  90. package/dist/builder.d.ts.map +0 -1
  91. package/dist/cache/compilation-cache.d.ts.map +0 -1
  92. package/dist/config-loader.d.ts.map +0 -1
  93. package/dist/config.d.ts.map +0 -1
  94. package/dist/dev/pythonDevManager.d.ts.map +0 -1
  95. package/dist/env.d.ts +0 -19
  96. package/dist/env.d.ts.map +0 -1
  97. package/dist/env.js +0 -112
  98. package/dist/handlers/base-handler.d.ts.map +0 -1
  99. package/dist/handlers/js-handler.d.ts.map +0 -1
  100. package/dist/handlers/mjs-handler.d.ts.map +0 -1
  101. package/dist/handlers/node-module-handler.d.ts.map +0 -1
  102. package/dist/handlers/ts-handler.d.ts.map +0 -1
  103. package/dist/handlers/ui-handler.d.ts.map +0 -1
  104. package/dist/handlers/ui-handler.js +0 -182
  105. package/dist/handlers/uix-handler.d.ts.map +0 -1
  106. package/dist/handlers/uix-handler.js +0 -135
  107. package/dist/hmr.d.ts.map +0 -1
  108. package/dist/import-rewriter.d.ts.map +0 -1
  109. package/dist/import-rewriter.js +0 -351
  110. package/dist/middleware/hmr-routes.d.ts.map +0 -1
  111. package/dist/middleware/middleware-setup.d.ts +0 -23
  112. package/dist/middleware/middleware-setup.d.ts.map +0 -1
  113. package/dist/middleware/middleware-setup.js +0 -596
  114. package/dist/middleware/static-files.d.ts.map +0 -1
  115. package/dist/proxy/SwiteProxyError.d.ts.map +0 -1
  116. package/dist/proxy/proxyToPython.d.ts.map +0 -1
  117. package/dist/resolver/bare-import-resolver.d.ts.map +0 -1
  118. package/dist/resolver/symlink-registry.d.ts.map +0 -1
  119. package/dist/resolver/url-resolver.d.ts.map +0 -1
  120. package/dist/resolver/workspace-package-resolver.d.ts.map +0 -1
  121. package/dist/resolver/workspace-package-resolver.js +0 -185
  122. package/dist/resolver.d.ts.map +0 -1
  123. package/dist/router/file-router.d.ts.map +0 -1
  124. package/dist/server.d.ts.map +0 -1
  125. package/dist/utils/cdn-fallback.d.ts.map +0 -1
  126. package/dist/utils/file-path-resolver.d.ts.map +0 -1
  127. package/dist/utils/generate-import-map-cli.d.ts.map +0 -1
  128. package/dist/utils/generate-import-map.d.ts.map +0 -1
  129. package/dist/utils/package-finder.d.ts.map +0 -1
  130. package/dist/utils/package-registry.d.ts.map +0 -1
  131. package/dist/utils/workspace.d.ts.map +0 -1
  132. /package/dist/{proxy → adapters/proxy}/SwiteProxyError.d.ts +0 -0
  133. /package/dist/{proxy → adapters/proxy}/SwiteProxyError.js +0 -0
  134. /package/dist/{proxy → adapters/proxy}/proxyToPython.js +0 -0
  135. /package/dist/{builder.d.ts → build-engine/builder.d.ts} +0 -0
  136. /package/dist/{config-loader.d.ts → config/config-loader.d.ts} +0 -0
  137. /package/dist/{config-loader.js → config/config-loader.js} +0 -0
  138. /package/dist/{config.d.ts → config/config.d.ts} +0 -0
  139. /package/dist/{config.js → config/config.js} +0 -0
  140. /package/dist/{handlers → dev-engine/handlers}/js-handler.d.ts +0 -0
  141. /package/dist/{handlers → dev-engine/handlers}/mjs-handler.d.ts +0 -0
  142. /package/dist/{handlers → dev-engine/handlers}/node-module-handler.d.ts +0 -0
  143. /package/dist/{hmr.d.ts → dev-engine/hmr/hmr.d.ts} +0 -0
  144. /package/dist/{middleware → dev-engine/middleware}/static-files.d.ts +0 -0
  145. /package/dist/{server.d.ts → dev-engine/server.d.ts} +0 -0
  146. /package/dist/{cache → internal/cache}/compilation-cache.d.ts +0 -0
  147. /package/dist/{utils → internal}/generate-import-map-cli.d.ts +0 -0
  148. /package/dist/{utils → internal}/generate-import-map.d.ts +0 -0
  149. /package/dist/{utils → kernel}/package-registry.d.ts +0 -0
  150. /package/dist/{utils → kernel}/package-registry.js +0 -0
  151. /package/dist/{utils → kernel}/workspace.d.ts +0 -0
  152. /package/dist/{utils → kernel}/workspace.js +0 -0
  153. /package/dist/{utils → resolution/cdn}/cdn-fallback.d.ts +0 -0
  154. /package/dist/{utils → resolution/cdn}/cdn-fallback.js +0 -0
  155. /package/dist/{utils → resolution/path}/file-path-resolver.d.ts +0 -0
  156. /package/dist/{resolver → resolution}/url-resolver.d.ts +0 -0
  157. /package/dist/{resolver → resolution}/workspace-package-resolver.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swissjs/swite",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "SWITE - SWISS Development Server (Vite replacement)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -8,10 +8,20 @@
8
8
  "bin": {
9
9
  "swite": "dist/cli.js"
10
10
  },
11
+ "scripts": {
12
+ "build": "tsc -b",
13
+ "dev": "tsc -b --watch",
14
+ "clean": "rm -rf dist node_modules && rm -f tsconfig.tsbuildinfo",
15
+ "generate-import-map": "tsx src/internal/generate-import-map-cli.ts",
16
+ "test": "node --import tsx --test __tests__/import-rewriter-bug.test.ts",
17
+ "changeset": "changeset",
18
+ "release:version": "changeset version",
19
+ "release:publish": "changeset publish"
20
+ },
11
21
  "dependencies": {
12
- "@swissjs/core": "link:../swiss-lib/runtime",
13
- "@swissjs/compiler": "link:../swiss-lib/compiler",
14
- "@swissjs/plugin-file-router": "link:../swiss-lib/plugins/file-router",
22
+ "@swissjs/core": "0.1.5",
23
+ "@swissjs/compiler": "0.1.4",
24
+ "@swissjs/plugin-file-router": "1.0.2",
15
25
  "chalk": "^5.3.0",
16
26
  "chokidar": "^3.5.3",
17
27
  "es-module-lexer": "^1.3.1",
@@ -32,18 +42,17 @@
32
42
  "access": "public"
33
43
  },
34
44
  "license": "MIT",
45
+ "pnpm": {
46
+ "onlyBuiltDependencies": [
47
+ "esbuild"
48
+ ],
49
+ "overrides": {
50
+ "path-to-regexp": "^0.1.13",
51
+ "picomatch": "^2.3.2"
52
+ }
53
+ },
35
54
  "repository": {
36
55
  "type": "git",
37
56
  "url": "git+https://github.com/kibologic/alpine-erp-core.git"
38
- },
39
- "scripts": {
40
- "build": "tsc -b",
41
- "dev": "tsc -b --watch",
42
- "clean": "rm -rf dist node_modules && rm -f tsconfig.tsbuildinfo",
43
- "generate-import-map": "tsx src/internal/generate-import-map-cli.ts",
44
- "test": "node --import tsx --test __tests__/import-rewriter-bug.test.ts",
45
- "changeset": "changeset",
46
- "release:version": "changeset version",
47
- "release:publish": "changeset publish"
48
57
  }
49
- }
58
+ }
package/src/cli.ts CHANGED
@@ -69,7 +69,7 @@ async function start(): Promise<void> {
69
69
  }
70
70
 
71
71
  async function build(): Promise<void> {
72
- const { SwiteBuilder } = await import("./builder.js");
72
+ const { SwiteBuilder } = await import("./build-engine/builder.js");
73
73
  const config = await loadUserConfig(root);
74
74
  const builder = new SwiteBuilder({
75
75
  root,
@@ -97,7 +97,7 @@ export async function toUrl(
97
97
  // Only prefer src over dist for workspace packages — never for node_modules
98
98
  if (normalized.includes("/dist/") && !normalized.includes("/src/") && !normalized.includes("/node_modules/")) {
99
99
  const srcPath = normalized.replace("/dist/", "/src/").replace(/\.js$/, ".ts");
100
- const { resolveFilePath } = await import("../path/file-path-resolver.js");
100
+ const { resolveFilePath } = await import("./path/file-path-resolver.js");
101
101
  const workspaceRoot = await context.getWorkspaceRoot();
102
102
  const srcFilePath = await resolveFilePath(srcPath, context.root, workspaceRoot);
103
103
  if (await context.fileExists(srcFilePath)) {
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,QAAQ,CAAiB;gBAErB,MAAM,EAAE,WAAW;IAezB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA6Bd,cAAc;YAMd,iBAAiB;YA+BjB,gBAAgB;YAsEhB,6BAA6B;YA+J7B,MAAM;YAsdN,gBAAgB;YAchB,cAAc;YAuBd,SAAS;YAuBT,OAAO;IAgBrB,OAAO,CAAC,WAAW;YAQL,iBAAiB;YAyBjB,UAAU;YASV,aAAa;CAiC5B;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"compilation-cache.d.ts","sourceRoot":"","sources":["../../src/cache/compilation-cache.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAEhC;;OAEG;IACG,GAAG,CACP,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,GACvD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA+EzB;;OAEG;IACG,GAAG,CACP,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,GACvD,OAAO,CAAC,IAAI,CAAC;IAiChB;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAKhB;;OAEG;IACH,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAM9C;AAGD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../src/config-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAgC3E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,SAAS,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAErE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pythonDevManager.d.ts","sourceRoot":"","sources":["../../src/dev/pythonDevManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAQxD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C"}
package/dist/env.d.ts DELETED
@@ -1,19 +0,0 @@
1
- export interface EnvConfig {
2
- mode?: "development" | "production";
3
- prefix?: string;
4
- }
5
- /**
6
- * Load environment variables from .env files
7
- * Supports .env, .env.local, .env.[mode], .env.[mode].local
8
- */
9
- export declare function loadEnv(root: string, mode?: string): Record<string, string>;
10
- /**
11
- * Generate import.meta.env replacement code
12
- * Injects environment variables as a module that can be imported
13
- */
14
- export declare function generateEnvModule(env: Record<string, string>, prefix?: string): string;
15
- /**
16
- * Inject import.meta.env polyfill into code
17
- */
18
- export declare function injectEnvPolyfill(code: string): string;
19
- //# sourceMappingURL=env.d.ts.map
package/dist/env.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAsB,GAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBxB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,MAAM,GAAE,MAAiB,GACxB,MAAM,CAwCR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqCtD"}
package/dist/env.js DELETED
@@ -1,112 +0,0 @@
1
- /*
2
- * Environment Variable Support for SWITE
3
- * Provides import.meta.env replacement for SWITE
4
- */
5
- import { readFileSync, existsSync } from "node:fs";
6
- import { join } from "node:path";
7
- /**
8
- * Load environment variables from .env files
9
- * Supports .env, .env.local, .env.[mode], .env.[mode].local
10
- */
11
- export function loadEnv(root, mode = "development") {
12
- const env = {};
13
- const envFiles = [`.env.${mode}.local`, `.env.${mode}`, `.env.local`, `.env`];
14
- for (const file of envFiles) {
15
- const envPath = join(root, file);
16
- if (existsSync(envPath)) {
17
- const content = readFileSync(envPath, "utf-8");
18
- for (const line of content.split("\n")) {
19
- const trimmed = line.trim();
20
- if (trimmed && !trimmed.startsWith("#")) {
21
- const match = trimmed.match(/^([^=]+)=(.*)$/);
22
- if (match) {
23
- const [, key, value] = match;
24
- // Remove quotes if present
25
- const cleanValue = value.replace(/^["']|["']$/g, "");
26
- env[key.trim()] = cleanValue;
27
- }
28
- }
29
- }
30
- }
31
- }
32
- return env;
33
- }
34
- /**
35
- * Generate import.meta.env replacement code
36
- * Injects environment variables as a module that can be imported
37
- */
38
- export function generateEnvModule(env, prefix = "SWITE_") {
39
- // Filter env vars by prefix and expose them
40
- const switeEnv = {};
41
- const publicEnv = {};
42
- for (const [key, value] of Object.entries(env)) {
43
- if (key.startsWith(prefix)) {
44
- // Remove prefix for SWITE_ prefixed vars
45
- const cleanKey = key.slice(prefix.length);
46
- switeEnv[cleanKey] = value;
47
- publicEnv[key] = value;
48
- }
49
- else if (key.startsWith("PUBLIC_")) {
50
- // PUBLIC_ vars are always exposed
51
- publicEnv[key] = value;
52
- }
53
- }
54
- // Build env object with all variables
55
- const allEnvEntries = [
56
- ...Object.entries(switeEnv).map(([key, value]) => [key, value]),
57
- ...Object.entries(publicEnv).map(([key, value]) => [key, value]),
58
- ["MODE", process.env.NODE_ENV || "development"],
59
- ["DEV", process.env.NODE_ENV !== "production"],
60
- ["PROD", process.env.NODE_ENV === "production"],
61
- ];
62
- return `
63
- // SWITE Environment Variables
64
- // Generated at runtime - do not edit manually
65
- export const env = {
66
- ${allEnvEntries
67
- .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)
68
- .join(",\n ")},
69
- };
70
-
71
- // For import.meta.env compatibility
72
- if (typeof globalThis !== 'undefined') {
73
- globalThis.__swite_env__ = env;
74
- }
75
- `;
76
- }
77
- /**
78
- * Inject import.meta.env polyfill into code
79
- */
80
- export function injectEnvPolyfill(code) {
81
- // Check if import.meta.env is used
82
- if (!code.includes("import.meta.env") && !code.includes("__swite_env__")) {
83
- return code;
84
- }
85
- // Inject polyfill at the top - load env module first
86
- const polyfill = `
87
- // SWITE import.meta.env polyfill
88
- import { env as switeEnv } from '/__swite_env';
89
- if (typeof globalThis !== 'undefined') {
90
- globalThis.__swite_env__ = switeEnv;
91
- }
92
- if (typeof import !== 'undefined' && import.meta) {
93
- import.meta.env = switeEnv;
94
- } else if (typeof globalThis !== 'undefined') {
95
- // Fallback for environments without import.meta
96
- if (!globalThis.import) {
97
- globalThis.import = { meta: {} };
98
- }
99
- if (!globalThis.import.meta) {
100
- globalThis.import.meta = {};
101
- }
102
- globalThis.import.meta.env = switeEnv;
103
- }
104
- `;
105
- // Find the first import statement or start of file
106
- const firstImport = code.match(/^import\s+/m);
107
- if (firstImport) {
108
- const insertIndex = firstImport.index;
109
- return (code.slice(0, insertIndex) + polyfill + "\n" + code.slice(insertIndex));
110
- }
111
- return polyfill + "\n" + code;
112
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/base-handler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAMjD;AAED;;GAEG;AACH,qBAAa,WAAW;IACV,SAAS,CAAC,OAAO,EAAE,cAAc;gBAAvB,OAAO,EAAE,cAAc;cAE7B,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAI7C,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAQ/D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/js-handler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,OAAO,EACL,WAAW,EAEX,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAK3B,qBAAa,SAAU,SAAQ,WAAW;IACxC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAY;gBAEjB,OAAO,EAAE,cAAc;IAO7B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAsGxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mjs-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/mjs-handler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,OAAO,EACL,WAAW,EAEX,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAC,SAAS,CAAY;gBAEjB,OAAO,EAAE,cAAc;IAK7B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAuCxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-module-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/node-module-handler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKxC,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOrE,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAY;gBAEjB,OAAO,EAAE,cAAc;IAO7B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAqRvD;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;CA0BjC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ts-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/ts-handler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKxC,OAAO,EACL,WAAW,EAEX,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,SAAU,SAAQ,WAAW;gBAC5B,OAAO,EAAE,cAAc;IAInC;;OAEG;YACW,eAAe;IAwBvB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAuHxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/ui-handler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMxC,OAAO,EACL,WAAW,EAEX,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,SAAU,SAAQ,WAAW;IACxC,OAAO,CAAC,QAAQ,CAAoB;gBAExB,OAAO,EAAE,cAAc;IAInC;;OAEG;YACW,eAAe;IAyBvB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAwLxD"}
@@ -1,182 +0,0 @@
1
- /*
2
- * Copyright (c) 2024 Themba Mzumara
3
- * SWITE - SWISS Development Server
4
- * Licensed under the MIT License.
5
- */
6
- import { promises as fs } from "node:fs";
7
- import { UiCompiler } from "@kibologic/compiler";
8
- import chalk from "chalk";
9
- import { rewriteImports } from "../import-rewriter.js";
10
- import { compilationCache } from "../cache/compilation-cache.js";
11
- import { BaseHandler, setDevHeaders, } from "./base-handler.js";
12
- export class UIHandler extends BaseHandler {
13
- constructor(context) {
14
- super(context);
15
- this.compiler = new UiCompiler();
16
- }
17
- /**
18
- * Extract dependencies from compiled code (import paths)
19
- */
20
- async getDependencies(compiled) {
21
- const deps = [];
22
- const importPattern = /(?:import|from|export).*['"]([^'"]+)['"]/g;
23
- let match;
24
- while ((match = importPattern.exec(compiled)) !== null) {
25
- const specifier = match[1];
26
- // Only track absolute paths and workspace paths (not relative)
27
- if (specifier.startsWith("/") || specifier.startsWith("@")) {
28
- try {
29
- // Try to resolve to actual file path
30
- const resolved = await this.context.resolver.resolve(specifier, "");
31
- if (resolved && !resolved.startsWith("http")) {
32
- deps.push(resolved);
33
- }
34
- }
35
- catch {
36
- // Ignore resolution errors for dependency tracking
37
- }
38
- }
39
- }
40
- return deps;
41
- }
42
- async handle(url, res) {
43
- const filePath = await this.resolveFilePath(url);
44
- console.log(chalk.blue(`[.ui] ${url} → ${filePath}`));
45
- // Check if file exists
46
- try {
47
- await fs.access(filePath);
48
- }
49
- catch (error) {
50
- console.error(chalk.red(`[.ui] File not found: ${filePath}`));
51
- throw new Error(`File not found: ${url} (resolved to: ${filePath})`);
52
- }
53
- // Check cache first
54
- let cached = await compilationCache.get(filePath, (compiled) => this.getDependencies(compiled));
55
- if (cached) {
56
- console.log(chalk.yellow(`[.ui] Cache hit for ${url}`));
57
- console.log(chalk.yellow(`[.ui] Cached content starts with: ${cached.substring(0, 50).replace(/\n/g, "\\n")}`));
58
- // CRITICAL: Strip /swiss-lib/ paths from cached code too
59
- // Old cache entries may have /swiss-lib/ paths from before the fix
60
- if (cached.includes("/swiss-lib/")) {
61
- console.log(chalk.yellow(`[.ui] Fixing /swiss-lib/ paths in cached code for ${url}`));
62
- cached = cached.replace(/\/swiss-lib\/packages\//g, "/swiss-packages/");
63
- cached = cached.replace(/\/swiss-lib\//g, "/swiss-packages/");
64
- // Also fix in import statements and URLs (preserve quote type)
65
- cached = cached.replace(/(['"])\/swiss-lib\//g, '$1/swiss-packages/');
66
- }
67
- setDevHeaders(res);
68
- res.setHeader("Content-Type", "application/javascript; charset=utf-8");
69
- res.setHeader("Content-Length", Buffer.byteLength(cached, "utf-8"));
70
- res.end(cached, "utf-8");
71
- return;
72
- }
73
- // Cache miss - compile
74
- const source = await fs.readFile(filePath, "utf-8");
75
- console.log(chalk.yellow(`[.ui] Compiling file: ${filePath}`));
76
- console.log(chalk.yellow(`[.ui] Source starts with: ${source.substring(0, 50).replace(/\n/g, "\\n")}`));
77
- let compiled = await this.compiler.compileAsync(source, filePath);
78
- // Transform TypeScript output to plain JavaScript via esbuild
79
- const esbuild = await import("esbuild");
80
- const tsResult = await esbuild.transform(compiled, {
81
- loader: "ts",
82
- format: "esm",
83
- target: "esnext",
84
- sourcefile: filePath,
85
- });
86
- compiled = tsResult.code;
87
- console.log(chalk.yellow(`[.ui] Compiled result starts with: ${compiled.substring(0, 50).replace(/\n/g, "\\n")}`));
88
- // CRITICAL: Strip /swiss-lib/ paths from compiled output BEFORE import rewriting
89
- // The compiler may output /swiss-lib/ paths directly in the code
90
- if (compiled.includes("/swiss-lib/")) {
91
- const beforeSwissLibFix = compiled;
92
- // Fix all variations of /swiss-lib/ paths
93
- compiled = compiled.replace(/\/swiss-lib\/packages\//g, "/swiss-packages/");
94
- compiled = compiled.replace(/\/swiss-lib\//g, "/swiss-packages/");
95
- // Also fix in import statements and URLs (preserve quote type)
96
- compiled = compiled.replace(/(['"])\/swiss-lib\//g, '$1/swiss-packages/');
97
- if (beforeSwissLibFix !== compiled) {
98
- console.log(chalk.yellow(`[.ui] Fixed /swiss-lib/ paths in compiled output for ${url}`));
99
- }
100
- }
101
- // Strip CSS imports - they should be handled as static assets, not modules
102
- // Use aggressive regex that matches all CSS import patterns
103
- const beforeCssStrip = compiled;
104
- // Pattern 1: Match standalone import statements for CSS (with or without semicolon, on their own line)
105
- compiled = compiled.replace(/^\s*import\s+.*?\.css\s*['"];?\s*$/gm, '');
106
- // Pattern 2: Match CSS imports anywhere in the code (more aggressive) - including without quotes
107
- compiled = compiled.replace(/\bimport\s+.*?\.css\s*['"];?/g, '');
108
- compiled = compiled.replace(/\bimport\s+['"].*?\.css['"];?/g, '');
109
- // Pattern 3: Match dynamic imports for CSS
110
- compiled = compiled.replace(/import\s*\(\s*['"].*?\.css['"]\s*\)/g, '');
111
- // Pattern 4: Match CSS imports with different quote styles and whitespace
112
- compiled = compiled.replace(/import\s+['"](.*?\.css)['"];?/g, '');
113
- if (beforeCssStrip !== compiled) {
114
- console.log(chalk.blue(`[.ui] Stripped CSS imports from ${url}`));
115
- }
116
- // Debug: Check for bare imports (only match actual bare imports, not paths)
117
- // Pattern matches: import ... from "@package/name" or import("@package/name")
118
- // But NOT: import ... from "/path/to/@package/name" (already a path)
119
- const bareImportPattern = /(?:import|from|export).*['"](@[^'"]+\/[^'"]+)(?!\/)[^'"]*['"]/;
120
- if (bareImportPattern.test(compiled)) {
121
- console.log(chalk.yellow(`[.ui] WARNING: Compiled code contains bare imports: ${url}`));
122
- }
123
- const rewritten = await rewriteImports(compiled, filePath, this.context.resolver);
124
- // FINAL SAFETY: Strip any remaining /swiss-lib/ paths after import rewriting
125
- // This catches any paths that might have slipped through
126
- let finalCode = rewritten;
127
- if (finalCode.includes("/swiss-lib/")) {
128
- const beforeFinal = finalCode;
129
- const count = (beforeFinal.match(/\/swiss-lib\//g) || []).length;
130
- console.log(chalk.red(`[.ui] 🚨 FINAL PASS TRIGGERED: Found ${count} /swiss-lib/ paths in ${url}`));
131
- // Multiple passes to catch all variations
132
- finalCode = finalCode.replace(/\/swiss-lib\/packages\//g, "/swiss-packages/");
133
- finalCode = finalCode.replace(/\/swiss-lib\//g, "/swiss-packages/");
134
- finalCode = finalCode.replace(/(['"])\/swiss-lib\//g, '$1/swiss-packages/');
135
- if (beforeFinal !== finalCode) {
136
- const afterCount = (finalCode.match(/\/swiss-lib\//g) || []).length;
137
- console.log(chalk.green(`[.ui] ✅ FINAL PASS: Fixed ${count} /swiss-lib/ paths (${afterCount} remaining) in ${url}`));
138
- if (afterCount > 0) {
139
- console.log(chalk.red(`[.ui] ❌ STILL HAS /swiss-lib/: ${finalCode.substring(0, 500)}`));
140
- }
141
- }
142
- else {
143
- console.log(chalk.red(`[.ui] ❌ FINAL PASS FAILED: No changes made!`));
144
- console.log(chalk.yellow(`[.ui] Sample: ${beforeFinal.substring(0, 200)}`));
145
- }
146
- }
147
- // Store in cache
148
- await compilationCache.set(filePath, compiled, finalCode, (compiled) => this.getDependencies(compiled));
149
- // Debug: Verify no bare imports remain after rewriting
150
- if (bareImportPattern.test(finalCode)) {
151
- console.log(chalk.red(`[.ui] ERROR: Bare imports still present after rewriting: ${url}`));
152
- const matches = Array.from(rewritten.matchAll(/(?:import|from|export).*['"](@[^'"]+\/[^'"]+)(?!\/)[^'"]*['"]/g));
153
- for (const match of matches.slice(0, 3)) {
154
- console.log(chalk.red(`[.ui] Unresolved import: ${match[1]}`));
155
- }
156
- }
157
- // Set headers BEFORE sending response
158
- setDevHeaders(res);
159
- // Explicitly set Content-Type to ensure it's not overridden
160
- res.setHeader("Content-Type", "application/javascript; charset=utf-8");
161
- // Log the Content-Type being sent
162
- console.log(chalk.green(`[.ui] Sending response with Content-Type: ${res.getHeader("Content-Type")}`));
163
- console.log(chalk.green(`[.ui] Response body length: ${rewritten.length} chars`));
164
- console.log(chalk.green(`[.ui] Response body preview: ${rewritten.substring(0, 100)}...`));
165
- // Send response - use res.end() to ensure headers are final
166
- // Double-check Content-Type one more time
167
- const finalContentType = res.getHeader("Content-Type");
168
- if (finalContentType !== "application/javascript; charset=utf-8") {
169
- console.error(chalk.red(`[.ui] ⚠️ Content-Type is wrong before send! Expected: application/javascript, Got: ${finalContentType}`));
170
- res.setHeader("Content-Type", "application/javascript; charset=utf-8");
171
- }
172
- console.log(chalk.green(`[.ui] Final Content-Type: ${res.getHeader("Content-Type")}`));
173
- console.log(chalk.green(`[.ui] Sending ${finalCode.length} bytes of JavaScript`));
174
- // Use res.end() instead of res.send() to have more control
175
- res.setHeader("Content-Length", Buffer.byteLength(finalCode, "utf-8"));
176
- res.end(finalCode, "utf-8");
177
- // Ensure headersSent is set (should be set by res.end(), but verify)
178
- if (!res.headersSent) {
179
- console.error(chalk.red(`[.ui] ⚠️ res.end() called but headersSent is still false!`));
180
- }
181
- }
182
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"uix-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/uix-handler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMxC,OAAO,EACL,WAAW,EAEX,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAC,QAAQ,CAAoB;gBAExB,OAAO,EAAE,cAAc;IAInC;;OAEG;YACW,eAAe;IAwBvB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAuIxD"}
@@ -1,135 +0,0 @@
1
- /*
2
- * Copyright (c) 2024 Themba Mzumara
3
- * SWITE - SWISS Development Server
4
- * Licensed under the MIT License.
5
- */
6
- import { promises as fs } from "node:fs";
7
- import { UiCompiler } from "@kibologic/compiler";
8
- import chalk from "chalk";
9
- import { rewriteImports } from "../import-rewriter.js";
10
- import { compilationCache } from "../cache/compilation-cache.js";
11
- import { BaseHandler, setDevHeaders, } from "./base-handler.js";
12
- export class UIXHandler extends BaseHandler {
13
- constructor(context) {
14
- super(context);
15
- this.compiler = new UiCompiler();
16
- }
17
- /**
18
- * Extract dependencies from compiled code (import paths)
19
- */
20
- async getDependencies(compiled) {
21
- const deps = [];
22
- const importPattern = /(?:import|from|export).*['"]([^'"]+)['"]/g;
23
- let match;
24
- while ((match = importPattern.exec(compiled)) !== null) {
25
- const specifier = match[1];
26
- // Only track absolute paths and workspace paths (not relative)
27
- if (specifier.startsWith("/") || specifier.startsWith("@")) {
28
- try {
29
- const resolved = await this.context.resolver.resolve(specifier, "");
30
- if (resolved && !resolved.startsWith("http")) {
31
- deps.push(resolved);
32
- }
33
- }
34
- catch {
35
- // Ignore resolution errors
36
- }
37
- }
38
- }
39
- return deps;
40
- }
41
- async handle(url, res) {
42
- const filePath = await this.resolveFilePath(url);
43
- console.log(chalk.blue(`[.uix] ${url}`));
44
- // Check cache first
45
- let cached = await compilationCache.get(filePath, (compiled) => this.getDependencies(compiled));
46
- if (cached) {
47
- // CRITICAL: Strip /swiss-lib/ paths from cached code too
48
- // Old cache entries may have /swiss-lib/ paths from before the fix
49
- if (cached.includes("/swiss-lib/")) {
50
- console.log(chalk.yellow(`[.uix] Fixing /swiss-lib/ paths in cached code for ${url}`));
51
- cached = cached.replace(/\/swiss-lib\/packages\//g, "/swiss-packages/");
52
- cached = cached.replace(/\/swiss-lib\//g, "/swiss-packages/");
53
- // Also fix in import statements and URLs (preserve quote type)
54
- cached = cached.replace(/(['"])\/swiss-lib\//g, '$1/swiss-packages/');
55
- }
56
- setDevHeaders(res);
57
- res.setHeader("Content-Type", "application/javascript; charset=utf-8");
58
- res.send(cached);
59
- return;
60
- }
61
- // Cache miss - compile
62
- const source = await fs.readFile(filePath, "utf-8");
63
- let compiled = await this.compiler.compileAsync(source, filePath);
64
- // Transform TypeScript output to plain JavaScript via esbuild
65
- const esbuild = await import("esbuild");
66
- const tsResult = await esbuild.transform(compiled, {
67
- loader: "ts",
68
- format: "esm",
69
- target: "esnext",
70
- sourcefile: filePath,
71
- });
72
- compiled = tsResult.code;
73
- // CRITICAL: Strip /swiss-lib/ paths from compiled output BEFORE import rewriting
74
- // The compiler may output /swiss-lib/ paths directly in the code
75
- if (compiled.includes("/swiss-lib/")) {
76
- const beforeSwissLibFix = compiled;
77
- // Fix all variations of /swiss-lib/ paths
78
- compiled = compiled.replace(/\/swiss-lib\/packages\//g, "/swiss-packages/");
79
- compiled = compiled.replace(/\/swiss-lib\//g, "/swiss-packages/");
80
- // Also fix in import statements and URLs (preserve quote type)
81
- compiled = compiled.replace(/(['"])\/swiss-lib\//g, '$1/swiss-packages/');
82
- if (beforeSwissLibFix !== compiled) {
83
- console.log(chalk.yellow(`[.uix] Fixed /swiss-lib/ paths in compiled output for ${url}`));
84
- }
85
- }
86
- // Strip CSS imports - they should be handled as static assets, not modules
87
- // Use aggressive regex that matches all CSS import patterns
88
- const beforeCssStrip = compiled;
89
- // Pattern 1: Match standalone import statements for CSS (with or without semicolon, on their own line)
90
- compiled = compiled.replace(/^\s*import\s+.*?\.css\s*['"];?\s*$/gm, '');
91
- // Pattern 2: Match CSS imports anywhere in the code (more aggressive) - including without quotes
92
- compiled = compiled.replace(/\bimport\s+.*?\.css\s*['"];?/g, '');
93
- compiled = compiled.replace(/\bimport\s+['"].*?\.css['"];?/g, '');
94
- // Pattern 3: Match dynamic imports for CSS
95
- compiled = compiled.replace(/import\s*\(\s*['"].*?\.css['"]\s*\)/g, '');
96
- // Pattern 4: Match CSS imports with different quote styles and whitespace
97
- compiled = compiled.replace(/import\s+['"](.*?\.css)['"];?/g, '');
98
- if (beforeCssStrip !== compiled) {
99
- console.log(chalk.blue(`[.uix] Stripped CSS imports from ${url}`));
100
- }
101
- // Debug: Check for bare imports (only match actual bare imports, not paths)
102
- // Pattern matches: import ... from "@package/name" or import("@package/name")
103
- // But NOT: import ... from "/path/to/@package/name" (already a path)
104
- const bareImportPattern = /(?:import|from|export).*['"](@[^'"]+\/[^'"]+)(?!\/)[^'"]*['"]/;
105
- if (bareImportPattern.test(compiled)) {
106
- console.log(chalk.yellow(`[.uix] WARNING: Compiled code contains bare imports: ${url}`));
107
- }
108
- const rewritten = await rewriteImports(compiled, filePath, this.context.resolver);
109
- // FINAL SAFETY: Strip any remaining /swiss-lib/ paths after import rewriting
110
- // This catches any paths that might have slipped through
111
- let finalCode = rewritten;
112
- if (finalCode.includes("/swiss-lib/")) {
113
- const beforeFinal = finalCode;
114
- finalCode = finalCode.replace(/\/swiss-lib\/packages\//g, "/swiss-packages/");
115
- finalCode = finalCode.replace(/\/swiss-lib\//g, "/swiss-packages/");
116
- finalCode = finalCode.replace(/(['"])\/swiss-lib\//g, '$1/swiss-packages/');
117
- if (beforeFinal !== finalCode) {
118
- console.log(chalk.red(`[.uix] ⚠️ FINAL PASS: Fixed ${beforeFinal.split('/swiss-lib/').length - 1} remaining /swiss-lib/ paths in ${url}`));
119
- }
120
- }
121
- // Store in cache
122
- await compilationCache.set(filePath, compiled, finalCode, (compiled) => this.getDependencies(compiled));
123
- // Debug: Verify no bare imports remain after rewriting
124
- if (bareImportPattern.test(finalCode)) {
125
- console.log(chalk.red(`[.uix] ERROR: Bare imports still present after rewriting: ${url}`));
126
- const matches = Array.from(rewritten.matchAll(/(?:import|from|export).*['"](@[^'"]+\/[^'"]+)(?!\/)[^'"]*['"]/g));
127
- for (const match of matches.slice(0, 3)) {
128
- console.log(chalk.red(`[.uix] Unresolved import: ${match[1]}`));
129
- }
130
- }
131
- setDevHeaders(res);
132
- res.setHeader("Content-Type", "application/javascript; charset=utf-8");
133
- res.send(finalCode);
134
- }
135
- }
package/dist/hmr.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"hmr.d.ts","sourceRoot":"","sources":["../src/hmr.ts"],"names":[],"mappings":"AASA,qBAAa,SAAS;IAOlB,OAAO,CAAC,IAAI;IANd,OAAO,CAAC,GAAG,CAAmB;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAqB;IACrC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,IAAI,CAAS;gBAGX,IAAI,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM;IAOZ,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAiBnB,kBAAkB;IAUhC,OAAO,CAAC,cAAc;YAYR,YAAY;IAmB1B,OAAO,IAAI,MAAM;IAIX,KAAK;IA4BX,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAYpC,eAAe,IAAI,MAAM;IAyIzB,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,SAAS;IAcX,IAAI;CAIX"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"import-rewriter.d.ts","sourceRoot":"","sources":["../src/import-rewriter.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAM/C,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,CAkbjB"}