@lingxia/cli 0.0.7

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 (163) hide show
  1. package/bin/lingxia.js +91 -0
  2. package/dist/builder/commands/build.d.ts +3 -0
  3. package/dist/builder/commands/build.d.ts.map +1 -0
  4. package/dist/builder/commands/build.js +317 -0
  5. package/dist/builder/commands/build.js.map +1 -0
  6. package/dist/builder/core/builders/logic.d.ts +48 -0
  7. package/dist/builder/core/builders/logic.d.ts.map +1 -0
  8. package/dist/builder/core/builders/logic.js +212 -0
  9. package/dist/builder/core/builders/logic.js.map +1 -0
  10. package/dist/builder/core/builders/page-functions.d.ts +2 -0
  11. package/dist/builder/core/builders/page-functions.d.ts.map +1 -0
  12. package/dist/builder/core/builders/page-functions.js +119 -0
  13. package/dist/builder/core/builders/page-functions.js.map +1 -0
  14. package/dist/builder/core/builders/page-path-injector.d.ts +5 -0
  15. package/dist/builder/core/builders/page-path-injector.d.ts.map +1 -0
  16. package/dist/builder/core/builders/page-path-injector.js +94 -0
  17. package/dist/builder/core/builders/page-path-injector.js.map +1 -0
  18. package/dist/builder/core/builders/page.d.ts +37 -0
  19. package/dist/builder/core/builders/page.d.ts.map +1 -0
  20. package/dist/builder/core/builders/page.js +246 -0
  21. package/dist/builder/core/builders/page.js.map +1 -0
  22. package/dist/builder/core/builders/view.d.ts +23 -0
  23. package/dist/builder/core/builders/view.d.ts.map +1 -0
  24. package/dist/builder/core/builders/view.js +194 -0
  25. package/dist/builder/core/builders/view.js.map +1 -0
  26. package/dist/builder/core/config/alias-config.d.ts +4 -0
  27. package/dist/builder/core/config/alias-config.d.ts.map +1 -0
  28. package/dist/builder/core/config/alias-config.js +29 -0
  29. package/dist/builder/core/config/alias-config.js.map +1 -0
  30. package/dist/builder/core/config/build-config.d.ts +8 -0
  31. package/dist/builder/core/config/build-config.d.ts.map +1 -0
  32. package/dist/builder/core/config/build-config.js +33 -0
  33. package/dist/builder/core/config/build-config.js.map +1 -0
  34. package/dist/builder/core/config/framework.d.ts +3 -0
  35. package/dist/builder/core/config/framework.d.ts.map +1 -0
  36. package/dist/builder/core/config/framework.js +51 -0
  37. package/dist/builder/core/config/framework.js.map +1 -0
  38. package/dist/builder/core/config/lingxia-config.d.ts +55 -0
  39. package/dist/builder/core/config/lingxia-config.d.ts.map +1 -0
  40. package/dist/builder/core/config/lingxia-config.js +174 -0
  41. package/dist/builder/core/config/lingxia-config.js.map +1 -0
  42. package/dist/builder/core/config/view-build-schema.d.ts +17 -0
  43. package/dist/builder/core/config/view-build-schema.d.ts.map +1 -0
  44. package/dist/builder/core/config/view-build-schema.js +2 -0
  45. package/dist/builder/core/config/view-build-schema.js.map +1 -0
  46. package/dist/builder/core/config/view-config.d.ts +11 -0
  47. package/dist/builder/core/config/view-config.d.ts.map +1 -0
  48. package/dist/builder/core/config/view-config.js +79 -0
  49. package/dist/builder/core/config/view-config.js.map +1 -0
  50. package/dist/builder/core/config.d.ts +34 -0
  51. package/dist/builder/core/config.d.ts.map +1 -0
  52. package/dist/builder/core/config.js +73 -0
  53. package/dist/builder/core/config.js.map +1 -0
  54. package/dist/builder/core/constants/source-dirs.d.ts +4 -0
  55. package/dist/builder/core/constants/source-dirs.d.ts.map +1 -0
  56. package/dist/builder/core/constants/source-dirs.js +24 -0
  57. package/dist/builder/core/constants/source-dirs.js.map +1 -0
  58. package/dist/builder/core/constants/static-dirs.d.ts +4 -0
  59. package/dist/builder/core/constants/static-dirs.d.ts.map +1 -0
  60. package/dist/builder/core/constants/static-dirs.js +51 -0
  61. package/dist/builder/core/constants/static-dirs.js.map +1 -0
  62. package/dist/builder/core/frameworks/base.d.ts +49 -0
  63. package/dist/builder/core/frameworks/base.d.ts.map +1 -0
  64. package/dist/builder/core/frameworks/base.js +61 -0
  65. package/dist/builder/core/frameworks/base.js.map +1 -0
  66. package/dist/builder/core/frameworks/factory.d.ts +29 -0
  67. package/dist/builder/core/frameworks/factory.d.ts.map +1 -0
  68. package/dist/builder/core/frameworks/factory.js +59 -0
  69. package/dist/builder/core/frameworks/factory.js.map +1 -0
  70. package/dist/builder/core/frameworks/html.d.ts +30 -0
  71. package/dist/builder/core/frameworks/html.d.ts.map +1 -0
  72. package/dist/builder/core/frameworks/html.js +92 -0
  73. package/dist/builder/core/frameworks/html.js.map +1 -0
  74. package/dist/builder/core/frameworks/react.d.ts +33 -0
  75. package/dist/builder/core/frameworks/react.d.ts.map +1 -0
  76. package/dist/builder/core/frameworks/react.js +161 -0
  77. package/dist/builder/core/frameworks/react.js.map +1 -0
  78. package/dist/builder/core/frameworks/templates.d.ts +2 -0
  79. package/dist/builder/core/frameworks/templates.d.ts.map +1 -0
  80. package/dist/builder/core/frameworks/templates.js +3 -0
  81. package/dist/builder/core/frameworks/templates.js.map +1 -0
  82. package/dist/builder/core/frameworks/vue.d.ts +33 -0
  83. package/dist/builder/core/frameworks/vue.d.ts.map +1 -0
  84. package/dist/builder/core/frameworks/vue.js +161 -0
  85. package/dist/builder/core/frameworks/vue.js.map +1 -0
  86. package/dist/builder/core/registry.d.ts +43 -0
  87. package/dist/builder/core/registry.d.ts.map +1 -0
  88. package/dist/builder/core/registry.js +79 -0
  89. package/dist/builder/core/registry.js.map +1 -0
  90. package/dist/builder/core/template.d.ts +7 -0
  91. package/dist/builder/core/template.d.ts.map +1 -0
  92. package/dist/builder/core/template.js +57 -0
  93. package/dist/builder/core/template.js.map +1 -0
  94. package/dist/builder/core/templates/embedded.d.ts +17 -0
  95. package/dist/builder/core/templates/embedded.d.ts.map +1 -0
  96. package/dist/builder/core/templates/embedded.js +121 -0
  97. package/dist/builder/core/templates/embedded.js.map +1 -0
  98. package/dist/builder/core/utils/file.d.ts +35 -0
  99. package/dist/builder/core/utils/file.d.ts.map +1 -0
  100. package/dist/builder/core/utils/file.js +99 -0
  101. package/dist/builder/core/utils/file.js.map +1 -0
  102. package/dist/builder/core/utils/page.d.ts +14 -0
  103. package/dist/builder/core/utils/page.d.ts.map +1 -0
  104. package/dist/builder/core/utils/page.js +46 -0
  105. package/dist/builder/core/utils/page.js.map +1 -0
  106. package/dist/builder/index.d.ts +2 -0
  107. package/dist/builder/index.d.ts.map +1 -0
  108. package/dist/builder/index.js +2 -0
  109. package/dist/builder/index.js.map +1 -0
  110. package/dist/builder/types/index.d.ts +67 -0
  111. package/dist/builder/types/index.d.ts.map +1 -0
  112. package/dist/builder/types/index.js +2 -0
  113. package/dist/builder/types/index.js.map +1 -0
  114. package/dist/commands/create.d.ts +7 -0
  115. package/dist/commands/create.d.ts.map +1 -0
  116. package/dist/commands/create.js +151 -0
  117. package/dist/commands/create.js.map +1 -0
  118. package/dist/index.d.ts +2 -0
  119. package/dist/index.d.ts.map +1 -0
  120. package/dist/index.js +45 -0
  121. package/dist/index.js.map +1 -0
  122. package/package.json +49 -0
  123. package/scripts/ensure-deps.cjs +54 -0
  124. package/scripts/install.cjs +62 -0
  125. package/scripts/set-version.cjs +34 -0
  126. package/scripts/sync-templates.cjs +36 -0
  127. package/templates/android-native/app/build.gradle.kts +48 -0
  128. package/templates/android-native/app/proguard-rules.pro +21 -0
  129. package/templates/android-native/app/src/main/AndroidManifest.xml +21 -0
  130. package/templates/android-native/app/src/main/java/MainActivity.kt +27 -0
  131. package/templates/android-native/app/src/main/res/values/strings.xml +3 -0
  132. package/templates/android-native/build.gradle.kts +5 -0
  133. package/templates/android-native/gradle/libs.versions.toml +16 -0
  134. package/templates/android-native/gradle/wrapper/gradle-wrapper.jar +0 -0
  135. package/templates/android-native/gradle/wrapper/gradle-wrapper.properties +6 -0
  136. package/templates/android-native/gradle.properties +4 -0
  137. package/templates/android-native/gradlew +185 -0
  138. package/templates/android-native/gradlew.bat +89 -0
  139. package/templates/android-native/settings.gradle.kts +25 -0
  140. package/templates/lxapp-create/react/lxapp.config.json +8 -0
  141. package/templates/lxapp-create/react/lxapp.json +8 -0
  142. package/templates/lxapp-create/react/lxapp.ts +8 -0
  143. package/templates/lxapp-create/react/package.json +26 -0
  144. package/templates/lxapp-create/react/pages/home/index.json +3 -0
  145. package/templates/lxapp-create/react/pages/home/index.ts +14 -0
  146. package/templates/lxapp-create/react/pages/home/index.tsx +60 -0
  147. package/templates/lxapp-create/react/public/.gitkeep +0 -0
  148. package/templates/lxapp-create/react/shared/.gitkeep +0 -0
  149. package/templates/lxapp-create/react/tsconfig.json +20 -0
  150. package/templates/lxapp-create/vue/lxapp.config.json +8 -0
  151. package/templates/lxapp-create/vue/lxapp.json +8 -0
  152. package/templates/lxapp-create/vue/lxapp.ts +8 -0
  153. package/templates/lxapp-create/vue/package.json +24 -0
  154. package/templates/lxapp-create/vue/pages/home/index.json +3 -0
  155. package/templates/lxapp-create/vue/pages/home/index.ts +14 -0
  156. package/templates/lxapp-create/vue/pages/home/index.vue +48 -0
  157. package/templates/lxapp-create/vue/public/.gitkeep +0 -0
  158. package/templates/lxapp-create/vue/shared/.gitkeep +0 -0
  159. package/templates/lxapp-create/vue/tsconfig.json +20 -0
  160. package/templates/rust-lib/Cargo.toml +13 -0
  161. package/templates/rust-lib/README.md +14 -0
  162. package/templates/rust-lib/src/lib.rs +13 -0
  163. package/vendor/.gitkeep +1 -0
@@ -0,0 +1,51 @@
1
+ import fg from 'fast-glob';
2
+ import path from 'path';
3
+ import { loadLingxiaConfig } from '../config/lingxia-config.js';
4
+ const FALLBACK_STATIC_DIRS = ['public'];
5
+ export const DEFAULT_STATIC_DIRS = [...FALLBACK_STATIC_DIRS];
6
+ export function resolveStaticDirs(projectPath, config) {
7
+ const resolvedConfig = config ?? loadLingxiaConfig(projectPath);
8
+ const dirs = Array.isArray(resolvedConfig?.staticDirs)
9
+ ? resolvedConfig.staticDirs
10
+ : null;
11
+ if (!dirs)
12
+ return DEFAULT_STATIC_DIRS;
13
+ const normalized = dirs
14
+ .filter(dir => typeof dir === 'string')
15
+ .map(dir => dir.trim())
16
+ .filter(dir => dir.length > 0);
17
+ if (normalized.length === 0) {
18
+ return DEFAULT_STATIC_DIRS;
19
+ }
20
+ const expanded = normalized.flatMap(entry => expandStaticDirEntry(projectPath, entry));
21
+ if (expanded.length === 0) {
22
+ return DEFAULT_STATIC_DIRS;
23
+ }
24
+ return Array.from(new Set(expanded));
25
+ }
26
+ function expandStaticDirEntry(projectPath, entry) {
27
+ if (!looksLikeGlob(entry)) {
28
+ return [entry];
29
+ }
30
+ try {
31
+ const matches = fg.sync(entry, {
32
+ cwd: projectPath,
33
+ onlyDirectories: true,
34
+ dot: false
35
+ });
36
+ if (matches.length === 0) {
37
+ // Silently skip unmatched globs - this is expected when optional static dirs don't exist
38
+ return [];
39
+ }
40
+ // Normalize to posix-style relative paths regardless of platform separators
41
+ return matches.map(match => match.split(path.sep).join('/'));
42
+ }
43
+ catch (error) {
44
+ console.warn(`⚠️ Failed to expand staticDirs glob ${entry}:`, error instanceof Error ? error.message : String(error));
45
+ return [];
46
+ }
47
+ }
48
+ function looksLikeGlob(value) {
49
+ return /[*?\[\]{}()!+@]/.test(value);
50
+ }
51
+ //# sourceMappingURL=static-dirs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-dirs.js","sourceRoot":"","sources":["../../../../src/builder/core/constants/static-dirs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,oBAAoB,GAAG,CAAC,QAAQ,CAAU,CAAC;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,oBAAoB,CAAC,CAAC;AAE7D,MAAM,UAAU,iBAAiB,CAC/B,WAAmB,EACnB,MAAoB;IAEpB,MAAM,cAAc,GAAG,MAAM,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC;QACpD,CAAC,CAAC,cAAc,CAAC,UAAU;QAC3B,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,CAAC,IAAI;QAAE,OAAO,mBAAmB,CAAC;IAEtC,MAAM,UAAU,GAAG,IAAI;SACpB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC;SACtC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACtB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEjC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IACvF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB,EAAE,KAAa;IAC9D,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;YAC7B,GAAG,EAAE,WAAW;YAChB,eAAe,EAAE,IAAI;YACrB,GAAG,EAAE,KAAK;SACX,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,yFAAyF;YACzF,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,4EAA4E;QAC5E,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,uCAAuC,KAAK,GAAG,EAC/C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,49 @@
1
+ import type { Page, PageFiles } from '../../types/index.js';
2
+ /**
3
+ * Abstract base class for framework processors
4
+ * Each framework implements this interface for specific handling
5
+ */
6
+ export declare abstract class FrameworkProcessor {
7
+ protected projectPath: string;
8
+ protected outputDir: string;
9
+ constructor(projectPath: string, outputDir: string, _templatesDir?: string);
10
+ /**
11
+ * Get framework name
12
+ */
13
+ abstract getFrameworkName(): string;
14
+ /**
15
+ * Get framework-specific file extensions
16
+ */
17
+ abstract getExtensions(): string[];
18
+ /**
19
+ * Setup framework-specific build environment
20
+ */
21
+ abstract setupBuild(buildDir: string, page: Page, pageFiles: PageFiles, pageFunctions: string[]): Promise<void>;
22
+ /**
23
+ * Generate final output for this framework
24
+ */
25
+ abstract generateOutput(page: Page, pageFiles: PageFiles, buildResult: {
26
+ distDir: string;
27
+ assetDir?: string;
28
+ entryHtml?: string;
29
+ entryJs?: string;
30
+ }, bridgeScript: string): Promise<void>;
31
+ /**
32
+ * Get package.json dependencies for this framework
33
+ */
34
+ abstract getDependencies(): {
35
+ dependencies: any;
36
+ devDependencies: any;
37
+ };
38
+ /**
39
+ * Process page title in framework-specific way
40
+ */
41
+ protected processPageTitle(content: string, pageTitle: string): string;
42
+ /**
43
+ * Copy framework templates to build directory (uses embedded templates)
44
+ */
45
+ protected copyTemplates(buildDir: string): void;
46
+ protected normalizeAssetDir(dir?: string): string;
47
+ protected injectRuntimeScript(htmlContent: string): string;
48
+ }
49
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/frameworks/base.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAG5D;;;GAGG;AACH,8BAAsB,kBAAkB;IACtC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEhB,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;IAK1E;;OAEG;IACH,QAAQ,CAAC,gBAAgB,IAAI,MAAM;IAEnC;;OAEG;IACH,QAAQ,CAAC,aAAa,IAAI,MAAM,EAAE;IAElC;;OAEG;IACH,QAAQ,CAAC,UAAU,CACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,cAAc,CACrB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EACzF,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,eAAe,IAAI;QAAE,YAAY,EAAE,GAAG,CAAC;QAAC,eAAe,EAAE,GAAG,CAAA;KAAE;IAEvE;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAMtE;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAY/C,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM;IAKjD,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;CAwB3D"}
@@ -0,0 +1,61 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { getFrameworkTemplates } from './templates.js';
4
+ /**
5
+ * Abstract base class for framework processors
6
+ * Each framework implements this interface for specific handling
7
+ */
8
+ export class FrameworkProcessor {
9
+ projectPath;
10
+ outputDir;
11
+ constructor(projectPath, outputDir, _templatesDir) {
12
+ this.projectPath = projectPath;
13
+ this.outputDir = outputDir;
14
+ }
15
+ /**
16
+ * Process page title in framework-specific way
17
+ */
18
+ processPageTitle(content, pageTitle) {
19
+ // Default implementation - can be overridden
20
+ const titlePattern = new RegExp(`<title>LingXia ${this.getFrameworkName()} Page</title>`, 'i');
21
+ return content.replace(titlePattern, `<title>${pageTitle}</title>`);
22
+ }
23
+ /**
24
+ * Copy framework templates to build directory (uses embedded templates)
25
+ */
26
+ copyTemplates(buildDir) {
27
+ const frameworkName = this.getFrameworkName().toLowerCase();
28
+ const templates = getFrameworkTemplates(frameworkName);
29
+ if (!templates) {
30
+ throw new Error(`Framework templates not found: ${this.getFrameworkName()}`);
31
+ }
32
+ fs.writeFileSync(path.join(buildDir, 'index.html'), templates.indexHtml);
33
+ fs.writeFileSync(path.join(buildDir, templates.mainEntryFilename), templates.mainEntry);
34
+ }
35
+ normalizeAssetDir(dir) {
36
+ const normalized = (dir ?? 'assets').replace(/^\/+/, '').replace(/\/+$/, '');
37
+ return normalized.length > 0 ? normalized : 'assets';
38
+ }
39
+ injectRuntimeScript(htmlContent) {
40
+ const runtimeSrc = 'lx://assets/runtime.js';
41
+ if (htmlContent.toLowerCase().includes(runtimeSrc)) {
42
+ return htmlContent;
43
+ }
44
+ const scriptTag = `<script src="${runtimeSrc}"></script>`;
45
+ const lower = htmlContent.toLowerCase();
46
+ const headIndex = lower.indexOf('</head>');
47
+ if (headIndex !== -1) {
48
+ return `${htmlContent.slice(0, headIndex)}${scriptTag}\n${htmlContent.slice(headIndex)}`;
49
+ }
50
+ const bodyIndex = lower.indexOf('<body');
51
+ if (bodyIndex !== -1) {
52
+ const bodyEnd = htmlContent.indexOf('>', bodyIndex);
53
+ if (bodyEnd !== -1) {
54
+ const insertPos = bodyEnd + 1;
55
+ return `${htmlContent.slice(0, insertPos)}${scriptTag}\n${htmlContent.slice(insertPos)}`;
56
+ }
57
+ }
58
+ return `${scriptTag}\n${htmlContent}`;
59
+ }
60
+ }
61
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/builder/core/frameworks/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { FrameworkProcessor } from './base.js';
2
+ /**
3
+ * Framework Factory - Creates appropriate framework processor
4
+ * Adding new frameworks only requires adding them here
5
+ */
6
+ export declare class FrameworkFactory {
7
+ private static processors;
8
+ /**
9
+ * Create framework processor for given framework
10
+ */
11
+ static createProcessor(framework: string, projectPath: string, outputDir: string): FrameworkProcessor;
12
+ /**
13
+ * Detect framework from file path
14
+ */
15
+ static detectFramework(filePath: string): string;
16
+ /**
17
+ * Get all supported frameworks
18
+ */
19
+ static getSupportedFrameworks(): string[];
20
+ /**
21
+ * Register a new framework processor
22
+ */
23
+ static registerFramework(name: string, processorClass: new (projectPath: string, outputDir: string) => FrameworkProcessor): void;
24
+ /**
25
+ * Check if framework is supported
26
+ */
27
+ static isSupported(framework: string): boolean;
28
+ }
29
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/frameworks/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAK/C;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,UAAU,CAItB;IAEH;;OAEG;IACH,MAAM,CAAC,eAAe,CACpB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,kBAAkB;IAUrB;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAchD;;OAEG;IACH,MAAM,CAAC,sBAAsB,IAAI,MAAM,EAAE;IAIzC;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,kBAAkB,GACjF,IAAI;IAIP;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAG/C"}
@@ -0,0 +1,59 @@
1
+ import { ReactProcessor } from './react.js';
2
+ import { VueProcessor } from './vue.js';
3
+ import { HtmlProcessor } from './html.js';
4
+ /**
5
+ * Framework Factory - Creates appropriate framework processor
6
+ * Adding new frameworks only requires adding them here
7
+ */
8
+ export class FrameworkFactory {
9
+ static processors = new Map([
10
+ ['react', ReactProcessor],
11
+ ['vue', VueProcessor],
12
+ ['html', HtmlProcessor]
13
+ ]);
14
+ /**
15
+ * Create framework processor for given framework
16
+ */
17
+ static createProcessor(framework, projectPath, outputDir) {
18
+ const ProcessorClass = this.processors.get(framework.toLowerCase());
19
+ if (!ProcessorClass) {
20
+ throw new Error(`Unsupported framework: ${framework}`);
21
+ }
22
+ return new ProcessorClass(projectPath, outputDir);
23
+ }
24
+ /**
25
+ * Detect framework from file path
26
+ */
27
+ static detectFramework(filePath) {
28
+ const ext = path.extname(filePath).toLowerCase();
29
+ // Create temporary processors to check extensions
30
+ for (const [frameworkName, ProcessorClass] of this.processors) {
31
+ const tempProcessor = new ProcessorClass('', '');
32
+ if (tempProcessor.getExtensions().includes(ext)) {
33
+ return frameworkName;
34
+ }
35
+ }
36
+ return 'html'; // Default fallback
37
+ }
38
+ /**
39
+ * Get all supported frameworks
40
+ */
41
+ static getSupportedFrameworks() {
42
+ return Array.from(this.processors.keys());
43
+ }
44
+ /**
45
+ * Register a new framework processor
46
+ */
47
+ static registerFramework(name, processorClass) {
48
+ this.processors.set(name.toLowerCase(), processorClass);
49
+ }
50
+ /**
51
+ * Check if framework is supported
52
+ */
53
+ static isSupported(framework) {
54
+ return this.processors.has(framework.toLowerCase());
55
+ }
56
+ }
57
+ // Import path for detectFramework method
58
+ import * as path from 'path';
59
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/builder/core/frameworks/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,CAA6E;QAC9G,CAAC,OAAO,EAAE,cAAc,CAAC;QACzB,CAAC,KAAK,EAAE,YAAY,CAAC;QACrB,CAAC,MAAM,EAAE,aAAa,CAAC;KACxB,CAAC,CAAC;IAEH;;OAEG;IACH,MAAM,CAAC,eAAe,CACpB,SAAiB,EACjB,WAAmB,EACnB,SAAiB;QAEjB,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,IAAI,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAgB;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAEjD,kDAAkD;QAClD,KAAK,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9D,MAAM,aAAa,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,aAAa,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,OAAO,aAAa,CAAC;YACvB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,CAAC,mBAAmB;IACpC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,sBAAsB;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,IAAY,EACZ,cAAkF;QAElF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,SAAiB;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;;AAGH,yCAAyC;AACzC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { FrameworkProcessor } from './base.js';
2
+ import type { Page, PageFiles } from '../../types/index.js';
3
+ /**
4
+ * HTML framework processor
5
+ * Handles static HTML pages
6
+ */
7
+ export declare class HtmlProcessor extends FrameworkProcessor {
8
+ private fileUtils;
9
+ constructor(projectPath: string, outputDir: string);
10
+ getFrameworkName(): string;
11
+ getExtensions(): string[];
12
+ getDependencies(): {
13
+ dependencies: any;
14
+ devDependencies: any;
15
+ };
16
+ createViteConfig(buildDir: string, options?: any): Promise<any>;
17
+ setupBuild(buildDir: string, page: Page, pageFiles: PageFiles, pageFunctions: string[]): Promise<void>;
18
+ generateOutput(page: Page, pageFiles: PageFiles, buildResult: {
19
+ distDir: string;
20
+ assetDir?: string;
21
+ entryHtml?: string;
22
+ entryJs?: string;
23
+ }, bridgeScript: string): Promise<void>;
24
+ /**
25
+ * Process HTML page title based on page configuration
26
+ * Handles both cases: existing title and no title
27
+ */
28
+ private processHtmlPageTitle;
29
+ }
30
+ //# sourceMappingURL=html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/frameworks/html.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAI5D;;;GAGG;AACH,qBAAa,aAAc,SAAQ,kBAAkB;IACnD,OAAO,CAAC,SAAS,CAAY;gBAEjB,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKlD,gBAAgB,IAAI,MAAM;IAI1B,aAAa,IAAI,MAAM,EAAE;IAIzB,eAAe,IAAI;QAAE,YAAY,EAAE,GAAG,CAAC;QAAC,eAAe,EAAE,GAAG,CAAA;KAAE;IAOxD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAKnE,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC;IAKV,cAAc,CAClB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EACzF,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAsChB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CA0B7B"}
@@ -0,0 +1,92 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { FrameworkProcessor } from './base.js';
4
+ import { getPageTitle } from '../utils/page.js';
5
+ import { FileUtils } from '../utils/file.js';
6
+ /**
7
+ * HTML framework processor
8
+ * Handles static HTML pages
9
+ */
10
+ export class HtmlProcessor extends FrameworkProcessor {
11
+ fileUtils;
12
+ constructor(projectPath, outputDir) {
13
+ super(projectPath, outputDir);
14
+ this.fileUtils = new FileUtils();
15
+ }
16
+ getFrameworkName() {
17
+ return 'HTML';
18
+ }
19
+ getExtensions() {
20
+ return ['.html'];
21
+ }
22
+ getDependencies() {
23
+ return {
24
+ dependencies: {},
25
+ devDependencies: {}
26
+ };
27
+ }
28
+ async createViteConfig(buildDir, options = {}) {
29
+ // HTML doesn't need Vite config
30
+ return null;
31
+ }
32
+ async setupBuild(buildDir, page, pageFiles, pageFunctions) {
33
+ // HTML pages don't need build setup
34
+ // They are processed directly
35
+ }
36
+ async generateOutput(page, pageFiles, buildResult, bridgeScript) {
37
+ const pageOutputDir = path.join(this.outputDir, path.dirname(page.path));
38
+ const baseName = path.basename(page.path, path.extname(page.path));
39
+ // Read and process HTML content
40
+ let htmlContent = fs.readFileSync(pageFiles.view.path, 'utf-8');
41
+ // Process page title
42
+ const pageTitle = getPageTitle(page, pageFiles);
43
+ htmlContent = this.processHtmlPageTitle(htmlContent, pageTitle);
44
+ htmlContent = this.injectRuntimeScript(htmlContent);
45
+ // Inject page function bridge
46
+ htmlContent = htmlContent.replace('</body>', `<script>\n${bridgeScript}\n</script>\n</body>`);
47
+ // Ensure output directory exists
48
+ this.fileUtils.ensureDirectory(pageOutputDir);
49
+ // Copy page CSS if exists
50
+ if (pageFiles.style.exists) {
51
+ const cssOutputPath = path.join(pageOutputDir, `${baseName}.css`);
52
+ fs.copyFileSync(pageFiles.style.path, cssOutputPath);
53
+ }
54
+ // Copy page config if exists
55
+ if (pageFiles.config.exists) {
56
+ const configOutputPath = path.join(pageOutputDir, `${baseName}.json`);
57
+ fs.copyFileSync(pageFiles.config.path, configOutputPath);
58
+ }
59
+ // Write final HTML
60
+ const htmlOutputPath = path.join(pageOutputDir, `${baseName}.html`);
61
+ fs.writeFileSync(htmlOutputPath, htmlContent);
62
+ }
63
+ /**
64
+ * Process HTML page title based on page configuration
65
+ * Handles both cases: existing title and no title
66
+ */
67
+ processHtmlPageTitle(htmlContent, pageTitle) {
68
+ // Check if HTML already has a title tag
69
+ const titleRegex = /<title[^>]*>.*?<\/title>/i;
70
+ const hasTitle = titleRegex.test(htmlContent);
71
+ if (hasTitle) {
72
+ // Replace existing title
73
+ return htmlContent.replace(titleRegex, `<title>${pageTitle}</title>`);
74
+ }
75
+ else {
76
+ // Add title to head section
77
+ const headRegex = /<head[^>]*>/i;
78
+ if (headRegex.test(htmlContent)) {
79
+ return htmlContent.replace(headRegex, `$&\n <title>${pageTitle}</title>`);
80
+ }
81
+ else {
82
+ // Fallback: add after opening html tag
83
+ const htmlRegex = /<html[^>]*>/i;
84
+ if (htmlRegex.test(htmlContent)) {
85
+ return htmlContent.replace(htmlRegex, `$&\n<head>\n <title>${pageTitle}</title>\n</head>`);
86
+ }
87
+ }
88
+ }
89
+ return htmlContent;
90
+ }
91
+ }
92
+ //# sourceMappingURL=html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../../../src/builder/core/frameworks/html.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { FrameworkProcessor } from './base.js';
2
+ import type { Page, PageFiles } from '../../types/index.js';
3
+ /**
4
+ * React framework processor
5
+ * Uses templates and framework-specific logic
6
+ */
7
+ export declare class ReactProcessor extends FrameworkProcessor {
8
+ private fileUtils;
9
+ private templateManager;
10
+ constructor(projectPath: string, outputDir: string);
11
+ getFrameworkName(): string;
12
+ getExtensions(): string[];
13
+ getDependencies(): {
14
+ dependencies: any;
15
+ devDependencies: any;
16
+ };
17
+ setupBuild(buildDir: string, page: Page, pageFiles: PageFiles, pageFunctions: string[]): Promise<void>;
18
+ generateOutput(page: Page, pageFiles: PageFiles, buildResult: {
19
+ distDir: string;
20
+ assetDir?: string;
21
+ entryHtml?: string;
22
+ entryJs?: string;
23
+ }, bridgeScript: string): Promise<void>;
24
+ private processTemplates;
25
+ /**
26
+ * Fix HTML paths to use relative paths for React
27
+ */
28
+ private fixHtmlPaths;
29
+ private rewriteLinkHrefs;
30
+ private linkHasRel;
31
+ private resolveSourceImportPath;
32
+ }
33
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/frameworks/react.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAK5D;;;GAGG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;IACpD,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,eAAe,CAAkB;gBAE7B,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAMlD,gBAAgB,IAAI,MAAM;IAI1B,aAAa,IAAI,MAAM,EAAE;IAIzB,eAAe,IAAI;QAAE,YAAY,EAAE,GAAG,CAAC;QAAC,eAAe,EAAE,GAAG,CAAA;KAAE;IAIxD,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC;IAQV,cAAc,CAClB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EACzF,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;YAkDF,gBAAgB;IAkC9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAiDpB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,uBAAuB;CAIhC"}
@@ -0,0 +1,161 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { load } from 'cheerio';
4
+ import { FrameworkProcessor } from './base.js';
5
+ import { getPageTitle } from '../utils/page.js';
6
+ import { FileUtils } from '../utils/file.js';
7
+ import { TemplateManager } from '../template.js';
8
+ /**
9
+ * React framework processor
10
+ * Uses templates and framework-specific logic
11
+ */
12
+ export class ReactProcessor extends FrameworkProcessor {
13
+ fileUtils;
14
+ templateManager;
15
+ constructor(projectPath, outputDir) {
16
+ super(projectPath, outputDir);
17
+ this.fileUtils = new FileUtils();
18
+ this.templateManager = new TemplateManager();
19
+ }
20
+ getFrameworkName() {
21
+ return 'React';
22
+ }
23
+ getExtensions() {
24
+ return ['.tsx', '.jsx'];
25
+ }
26
+ getDependencies() {
27
+ return { dependencies: {}, devDependencies: {} };
28
+ }
29
+ async setupBuild(buildDir, page, pageFiles, pageFunctions) {
30
+ // Copy framework templates
31
+ this.copyTemplates(buildDir);
32
+ // Process templates with page-specific data
33
+ await this.processTemplates(buildDir, page, pageFiles, pageFunctions);
34
+ }
35
+ async generateOutput(page, pageFiles, buildResult, bridgeScript) {
36
+ const pageOutputDir = path.join(this.outputDir, path.dirname(page.path));
37
+ const baseName = path.basename(page.path, path.extname(page.path));
38
+ const assetDir = this.normalizeAssetDir(buildResult.assetDir);
39
+ // Copy built assets
40
+ const builtIndexHtml = buildResult.entryHtml
41
+ ? path.join(buildResult.distDir, buildResult.entryHtml)
42
+ : path.join(buildResult.distDir, 'index.html');
43
+ const builtMainJs = buildResult.entryJs
44
+ ? path.join(buildResult.distDir, buildResult.entryJs)
45
+ : path.join(buildResult.distDir, 'main.js');
46
+ let htmlContent = fs.readFileSync(builtIndexHtml, 'utf-8');
47
+ // Ensure output directory exists
48
+ this.fileUtils.ensureDirectory(pageOutputDir);
49
+ // Process JS
50
+ if (fs.existsSync(builtMainJs)) {
51
+ fs.copyFileSync(builtMainJs, path.join(pageOutputDir, 'view.js'));
52
+ }
53
+ // Copy page config
54
+ if (pageFiles.config) {
55
+ const configOutputPath = path.join(pageOutputDir, `${baseName}.json`);
56
+ fs.copyFileSync(pageFiles.config.path, configOutputPath);
57
+ }
58
+ // Fix HTML paths and inject bridge script
59
+ const assetRelativePath = path
60
+ .relative(pageOutputDir, path.join(this.outputDir, assetDir))
61
+ .split(path.sep)
62
+ .join('/');
63
+ htmlContent = this.fixHtmlPaths(htmlContent, baseName, assetDir, assetRelativePath);
64
+ htmlContent = this.injectRuntimeScript(htmlContent);
65
+ htmlContent = htmlContent.replace('</body>', `<script>\n${bridgeScript}\n</script>\n</body>`);
66
+ // Write final component file
67
+ const componentOutputPath = path.join(pageOutputDir, `${baseName}.tsx`);
68
+ fs.writeFileSync(componentOutputPath, htmlContent);
69
+ }
70
+ async processTemplates(buildDir, page, pageFiles, pageFunctions) {
71
+ const pageTitle = getPageTitle(page, pageFiles);
72
+ // Process index.html
73
+ const indexHtmlPath = path.join(buildDir, 'index.html');
74
+ if (fs.existsSync(indexHtmlPath)) {
75
+ let indexHtml = fs.readFileSync(indexHtmlPath, 'utf-8');
76
+ indexHtml = this.processPageTitle(indexHtml, pageTitle);
77
+ fs.writeFileSync(indexHtmlPath, indexHtml);
78
+ }
79
+ // Process main.jsx
80
+ const mainJsxPath = path.join(buildDir, 'main.jsx');
81
+ if (fs.existsSync(mainJsxPath)) {
82
+ let mainJsx = fs.readFileSync(mainJsxPath, 'utf-8');
83
+ // Inject page functions
84
+ const bridgeScript = this.templateManager.generateFunctionBridge(pageFunctions);
85
+ mainJsx = mainJsx.replace('/* {{PAGE_FUNCTIONS}} */', bridgeScript);
86
+ const appImport = `import App from '${this.resolveSourceImportPath(buildDir, pageFiles.view.path)}';`;
87
+ if (mainJsx.includes('/* {{APP_IMPORT}} */')) {
88
+ mainJsx = mainJsx.replace('/* {{APP_IMPORT}} */', appImport);
89
+ }
90
+ fs.writeFileSync(mainJsxPath, mainJsx);
91
+ }
92
+ }
93
+ /**
94
+ * Fix HTML paths to use relative paths for React
95
+ */
96
+ fixHtmlPaths(htmlContent, baseName, assetDir, assetRelativePath) {
97
+ const normalizedAssetRelativePath = assetRelativePath.length === 0 ? '.' : assetRelativePath.replace(/\/+$/, '');
98
+ const escapedDir = assetDir.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
99
+ const $ = load(htmlContent);
100
+ $('script[src]').each((_, element) => {
101
+ const $element = $(element);
102
+ const src = $element.attr('src');
103
+ if (!src)
104
+ return;
105
+ if (/^\/pages\/[^/]+\/[^/]+\.js(?:[?#].*)?$/i.test(src)) {
106
+ $element.attr('src', './view.js');
107
+ }
108
+ });
109
+ const buildAssetHref = (file, suffix) => {
110
+ const basePath = normalizedAssetRelativePath === '.' ? `./${file}` : `${normalizedAssetRelativePath}/${file}`;
111
+ return `${basePath}${suffix}`;
112
+ };
113
+ const rewriteAssetHref = (href) => {
114
+ if (!href)
115
+ return null;
116
+ let normalized = href.trim();
117
+ if (normalized.startsWith('./')) {
118
+ normalized = normalized.slice(2);
119
+ }
120
+ const assetPattern = new RegExp(`^/?${escapedDir}/([^?#]+)([?#].*)?$`, 'i');
121
+ const match = normalized.match(assetPattern);
122
+ if (!match) {
123
+ return null;
124
+ }
125
+ const file = match[1];
126
+ const suffix = match[2] ?? '';
127
+ return buildAssetHref(file, suffix);
128
+ };
129
+ this.rewriteLinkHrefs($, 'stylesheet', rewriteAssetHref);
130
+ this.rewriteLinkHrefs($, 'modulepreload', rewriteAssetHref);
131
+ return $.html();
132
+ }
133
+ rewriteLinkHrefs($, rel, transform) {
134
+ $('link[rel][href]').each((_, element) => {
135
+ const $element = $(element);
136
+ if (!this.linkHasRel($element.attr('rel'), rel)) {
137
+ return;
138
+ }
139
+ const currentHref = $element.attr('href');
140
+ const nextHref = transform(currentHref ?? '');
141
+ if (!nextHref || nextHref === currentHref) {
142
+ return;
143
+ }
144
+ $element.attr('href', nextHref);
145
+ });
146
+ }
147
+ linkHasRel(relAttr, target) {
148
+ if (!relAttr)
149
+ return false;
150
+ const relValue = relAttr
151
+ .split(/\s+/)
152
+ .map(value => value.toLowerCase())
153
+ .filter(Boolean);
154
+ return relValue.includes(target.toLowerCase());
155
+ }
156
+ resolveSourceImportPath(buildDir, sourcePath) {
157
+ const relativePath = path.relative(buildDir, sourcePath).split(path.sep).join('/');
158
+ return relativePath.startsWith('.') ? relativePath : `./${relativePath}`;
159
+ }
160
+ }
161
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../../src/builder/core/frameworks/react.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { getFrameworkTemplates, hasFrameworkTemplates } from '../templates/embedded.js';
2
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/frameworks/templates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Re-export embedded templates for framework processors
2
+ export { getFrameworkTemplates, hasFrameworkTemplates } from '../templates/embedded.js';
3
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../src/builder/core/frameworks/templates.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC"}