@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,246 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { createRequire } from 'module';
4
+ import { pathToFileURL } from 'url';
5
+ import { FileUtils } from '../utils/file.js';
6
+ import { TemplateManager } from '../template.js';
7
+ import { FrameworkFactory } from '../frameworks/factory.js';
8
+ import { ViewConfigManager, DEFAULT_ASSET_DIR } from '../config/view-config.js';
9
+ import { extractViewOverrides, extractPluginSpecs, loadLingxiaConfig } from '../config/lingxia-config.js';
10
+ import { readProjectFramework } from '../config/framework.js';
11
+ import { DEFAULT_STATIC_DIRS } from '../constants/static-dirs.js';
12
+ import { DEFAULT_SOURCE_DIRS, resolveSourceDirs } from '../constants/source-dirs.js';
13
+ import { resolveAliasMap } from '../config/alias-config.js';
14
+ export class PageProcessor {
15
+ projectPath;
16
+ outputDir;
17
+ fileUtils;
18
+ templateManager;
19
+ viewConfigManager;
20
+ staticDirs;
21
+ alias;
22
+ sourceDirs;
23
+ pluginSpecs;
24
+ projectRequire;
25
+ framework;
26
+ constructor(projectPath, outputDir, staticDirs = DEFAULT_STATIC_DIRS, buildConfig) {
27
+ this.projectPath = projectPath;
28
+ this.outputDir = outputDir;
29
+ this.fileUtils = new FileUtils();
30
+ this.templateManager = new TemplateManager();
31
+ this.framework = readProjectFramework(projectPath);
32
+ const lingxiaConfig = buildConfig ? undefined : loadLingxiaConfig(projectPath);
33
+ const viewOverrides = extractViewOverrides(lingxiaConfig, this.framework);
34
+ const combinedOverrides = buildConfig?.assetDir && !viewOverrides?.assetDir
35
+ ? { ...viewOverrides, assetDir: buildConfig.assetDir }
36
+ : viewOverrides;
37
+ this.pluginSpecs = extractPluginSpecs(lingxiaConfig);
38
+ this.viewConfigManager = new ViewConfigManager(projectPath, combinedOverrides);
39
+ this.staticDirs = staticDirs;
40
+ this.alias = resolveAliasMap(projectPath, buildConfig);
41
+ this.sourceDirs =
42
+ resolveSourceDirs(projectPath, buildConfig) ?? DEFAULT_SOURCE_DIRS;
43
+ this.projectRequire = this.createProjectRequire(projectPath);
44
+ }
45
+ /**
46
+ * Batch build multiple pages for a single framework using Vite multi-entry.
47
+ * Writes a dedicated multi-entry vite.config.js (no framework API changes),
48
+ * installs once, builds once, then normalizes per-entry to existing processor
49
+ * expectations by temporarily mapping <entry>.html/js to index.html/main.js.
50
+ */
51
+ async buildPagesBatch(framework, items, options = {}) {
52
+ if (framework !== this.framework) {
53
+ throw new Error(`Project configured for ${this.framework} views, but attempted to build ${framework} pages.`);
54
+ }
55
+ if (items.length === 0)
56
+ return;
57
+ const processor = FrameworkFactory.createProcessor(framework, this.projectPath, this.outputDir);
58
+ const buildDir = path.join(this.projectPath, '.lingxia-build', `view-${framework}`);
59
+ this.fileUtils.cleanDirectory(buildDir);
60
+ // Shared package.json: copy from root and override build script for Vite
61
+ // Copy shared assets/config
62
+ await this.copySourceDirectories(buildDir);
63
+ await this.copyStaticDirectories(buildDir);
64
+ // Prepare per-page subdirs and collect multi-entry inputs
65
+ const inputs = {};
66
+ const entryNameByPagePath = {};
67
+ for (const { page, pageFiles, pageFunctions } of items) {
68
+ const entryName = page.name || path.dirname(page.path).replace(/^pages\//, '') || path.basename(page.path, path.extname(page.path));
69
+ const subDir = path.join(buildDir, 'pages', entryName);
70
+ this.fileUtils.ensureDirectory(subDir);
71
+ await processor.setupBuild(subDir, page, pageFiles, pageFunctions);
72
+ inputs[entryName] = path.join(subDir, 'index.html');
73
+ entryNameByPagePath[page.path] = entryName;
74
+ }
75
+ const frameworkConfig = this.viewConfigManager.getFrameworkConfig(framework);
76
+ const assetDir = frameworkConfig.assetDir ?? DEFAULT_ASSET_DIR;
77
+ // CLI --target option overrides config
78
+ const target = options.target ?? frameworkConfig.target;
79
+ const esbuild = frameworkConfig.esbuild;
80
+ await this.runViteBuild(buildDir, framework, {
81
+ options,
82
+ inputs,
83
+ frameworkConfig,
84
+ output: frameworkConfig.output.multi,
85
+ cssCodeSplit: frameworkConfig.cssCodeSplitMulti,
86
+ target,
87
+ esbuild,
88
+ alias: this.alias
89
+ });
90
+ const distDir = path.join(buildDir, 'dist');
91
+ // Copy assets from build dist to final output
92
+ const buildAssetsDir = path.join(distDir, assetDir);
93
+ if (fs.existsSync(buildAssetsDir)) {
94
+ const finalAssetsDir = path.join(this.outputDir, assetDir);
95
+ this.fileUtils.ensureDirectory(finalAssetsDir);
96
+ await this.fileUtils.copyDirectory(buildAssetsDir, finalAssetsDir);
97
+ }
98
+ // For each entry, pass explicit file paths to the processor
99
+ for (const { page, pageFiles, pageFunctions } of items) {
100
+ const entryName = entryNameByPagePath[page.path];
101
+ // Determine relative paths based on Vite output structure
102
+ const entryHtml = path.join('pages', entryName, 'index.html');
103
+ const entryJs = path.join('pages', entryName, `${entryName}.js`);
104
+ // Generate bridge and output via updated processor API
105
+ const bridgeScript = this.templateManager.generateFunctionBridge(pageFunctions);
106
+ await processor.generateOutput(page, pageFiles, {
107
+ distDir,
108
+ assetDir,
109
+ entryHtml,
110
+ entryJs
111
+ }, bridgeScript);
112
+ }
113
+ }
114
+ async runViteBuild(buildDir, framework, config) {
115
+ const { build } = await import('vite');
116
+ const plugins = await this.resolveFrameworkPlugins(framework, config.frameworkConfig);
117
+ const css = await this.createCssConfig(buildDir, config.frameworkConfig);
118
+ const isDev = Boolean(config.options.dev);
119
+ const isProd = Boolean(config.options.prod);
120
+ await build({
121
+ configFile: false,
122
+ root: buildDir,
123
+ logLevel: 'warn',
124
+ mode: isDev ? 'development' : isProd ? 'production' : undefined,
125
+ plugins,
126
+ css,
127
+ resolve: {
128
+ alias: config.alias
129
+ },
130
+ esbuild: config.esbuild,
131
+ build: {
132
+ outDir: path.join(buildDir, 'dist'),
133
+ emptyOutDir: true,
134
+ rollupOptions: {
135
+ input: config.inputs,
136
+ output: config.output
137
+ },
138
+ cssCodeSplit: config.cssCodeSplit ?? true,
139
+ target: config.target,
140
+ minify: isProd ? (config.frameworkConfig.minifyStrategy ?? 'esbuild') : false,
141
+ sourcemap: isDev
142
+ }
143
+ });
144
+ }
145
+ async resolveFrameworkPlugins(framework, config) {
146
+ const pluginFactories = await config.resolvePlugins?.(framework);
147
+ let plugins;
148
+ if (pluginFactories && pluginFactories.length > 0) {
149
+ plugins = [...pluginFactories];
150
+ }
151
+ else if (framework === 'react') {
152
+ const reactModule = await import('@vitejs/plugin-react');
153
+ const pluginFactory = reactModule.default ?? reactModule;
154
+ plugins = [pluginFactory()];
155
+ }
156
+ else {
157
+ const vueModule = await import('@vitejs/plugin-vue');
158
+ const pluginFactory = vueModule.default ?? vueModule;
159
+ plugins = [pluginFactory()];
160
+ }
161
+ const userPlugins = await this.loadUserPlugins(framework);
162
+ if (userPlugins.length > 0) {
163
+ plugins.push(...userPlugins);
164
+ }
165
+ return plugins;
166
+ }
167
+ async createCssConfig(buildDir, config) {
168
+ if (config.cssConfig === false) {
169
+ return undefined;
170
+ }
171
+ if (typeof config.cssConfig === 'function') {
172
+ return config.cssConfig(buildDir);
173
+ }
174
+ return undefined;
175
+ }
176
+ async copySourceDirectories(buildDir) {
177
+ for (const dir of this.sourceDirs) {
178
+ const sourceDir = path.join(this.projectPath, dir);
179
+ if (fs.existsSync(sourceDir)) {
180
+ const destDir = path.join(buildDir, dir);
181
+ await this.fileUtils.copyDirectory(sourceDir, destDir);
182
+ }
183
+ }
184
+ }
185
+ async copyStaticDirectories(buildDir) {
186
+ for (const dirName of this.staticDirs) {
187
+ const sourceDir = path.join(this.projectPath, dirName);
188
+ if (fs.existsSync(sourceDir)) {
189
+ const destDir = path.join(buildDir, dirName);
190
+ await this.fileUtils.copyDirectory(sourceDir, destDir);
191
+ }
192
+ }
193
+ }
194
+ async loadUserPlugins(framework) {
195
+ const specs = this.pluginSpecs?.[framework];
196
+ if (!specs || specs.length === 0) {
197
+ return [];
198
+ }
199
+ const plugins = [];
200
+ for (const spec of specs) {
201
+ if ('plugin' in spec && spec.plugin) {
202
+ plugins.push(spec.plugin);
203
+ }
204
+ else {
205
+ plugins.push(await this.instantiatePlugin(spec));
206
+ }
207
+ }
208
+ return plugins;
209
+ }
210
+ async instantiatePlugin(spec) {
211
+ const resolvedPath = this.resolveModulePath(spec.module);
212
+ const moduleUrl = pathToFileURL(resolvedPath).href;
213
+ const imported = await import(moduleUrl);
214
+ const factory = spec.namedExport
215
+ ? imported[spec.namedExport]
216
+ : imported.default ?? imported;
217
+ if (typeof factory !== 'function') {
218
+ throw new Error(`Plugin module "${spec.module}" must export a function (default or named) returning a Vite plugin.`);
219
+ }
220
+ return await factory(spec.options);
221
+ }
222
+ resolveModulePath(moduleId) {
223
+ try {
224
+ return this.projectRequire.resolve(moduleId);
225
+ }
226
+ catch {
227
+ throw new Error(`Cannot resolve plugin module "${moduleId}" from project ${this.projectPath}.`);
228
+ }
229
+ }
230
+ createProjectRequire(projectPath) {
231
+ const candidateFiles = [
232
+ 'package.json',
233
+ 'lxapp.config.json',
234
+ 'lingxia.config.ts',
235
+ 'lingxia.config.js'
236
+ ];
237
+ for (const file of candidateFiles) {
238
+ const fullPath = path.join(projectPath, file);
239
+ if (fs.existsSync(fullPath)) {
240
+ return createRequire(fullPath);
241
+ }
242
+ }
243
+ return createRequire(path.join(projectPath, 'index.js'));
244
+ }
245
+ }
246
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../src/builder/core/builders/page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EAGlB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,MAAM,OAAO,aAAa;IAChB,WAAW,CAAS;IACpB,SAAS,CAAS;IAClB,SAAS,CAAY;IACrB,eAAe,CAAkB;IACjC,iBAAiB,CAAoB;IACrC,UAAU,CAAW;IACrB,KAAK,CAAyB;IAC9B,UAAU,CAAW;IACrB,WAAW,CAA4D;IACvE,cAAc,CAAiB;IAC/B,SAAS,CAAmB;IAEpC,YACE,WAAmB,EACnB,SAAiB,EACjB,aAAuB,mBAAmB,EAC1C,WAAyB;QAEzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC/E,MAAM,aAAa,GAAG,oBAAoB,CACxC,aAAoB,EACpB,IAAI,CAAC,SAAS,CACf,CAAC;QACF,MAAM,iBAAiB,GACrB,WAAW,EAAE,QAAQ,IAAI,CAAC,aAAa,EAAE,QAAQ;YAC/C,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE;YACtD,CAAC,CAAC,aAAa,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC,aAAoB,CAAC,CAAC;QAC5D,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAC5C,WAAW,EACX,iBAAiB,CAClB,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU;YACb,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,mBAAmB,CAAC;QACrE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CACnB,SAA0B,EAC1B,KAAsE,EACtE,UAAwB,EAAE;QAE1B,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAI,CAAC,SAAS,kCAAkC,SAAS,SAAS,CAC7F,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,eAAe,CAChD,SAAS,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CACf,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CACxB,IAAI,CAAC,WAAW,EAChB,gBAAgB,EAChB,QAAQ,SAAS,EAAE,CACpB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAExC,yEAAyE;QACzE,4BAA4B;QAC5B,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAE3C,0DAA0D;QAC1D,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,MAAM,mBAAmB,GAA2B,EAAE,CAAC;QACvD,KAAK,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,KAAK,EAAE,CAAC;YACvD,MAAM,SAAS,GAAI,IAAY,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7I,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAEvC,MAAM,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YACnE,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACpD,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;QAC7C,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,IAAI,iBAAiB,CAAC;QAE/D,uCAAuC;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC;QACxD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;QAExC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE;YAC3C,OAAO;YACP,MAAM;YACN,eAAe;YACf,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK;YACpC,YAAY,EAAE,eAAe,CAAC,iBAAiB;YAC/C,MAAM;YACN,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE5C,8CAA8C;QAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC3D,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QACrE,CAAC;QAED,4DAA4D;QAC5D,KAAK,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,KAAK,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjD,0DAA0D;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;YAEjE,uDAAuD;YACvD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;YAChF,MAAM,SAAS,CAAC,cAAc,CAC5B,IAAI,EACJ,SAAS,EACT;gBACE,OAAO;gBACP,QAAQ;gBACR,SAAS;gBACT,OAAO;aACR,EACD,YAAY,CACb,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,QAAgB,EAChB,SAA0B,EAC1B,MASC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QACtF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5C,MAAM,KAAK,CAAC;YACV,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YAC/D,OAAO;YACP,GAAG;YACH,OAAO,EAAE;gBACP,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB;YACD,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACnC,WAAW,EAAE,IAAI;gBACjB,aAAa,EAAE;oBACb,KAAK,EAAE,MAAM,CAAC,MAAM;oBACpB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;gBACD,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;gBACzC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,cAAc,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK;gBAC7E,SAAS,EAAE,KAAK;aACjB;SACF,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,SAA0B,EAAE,MAAuB;QACvF,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,OAA0B,CAAC;QAC/B,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YACzD,MAAM,aAAa,GAAI,WAAmB,CAAC,OAAO,IAAI,WAAW,CAAC;YAClE,OAAO,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACrD,MAAM,aAAa,GAAI,SAAiB,CAAC,OAAO,IAAI,SAAS,CAAC;YAC9D,OAAO,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,MAAuB;QACrE,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,QAAgB;QAClD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACnD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,QAAgB;QAClD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACvD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC7C,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,SAA0B;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAU,EAAE,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAW,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,IAAgC;QAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;YAC9B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;YAC5B,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC;QACjC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,MAAM,sEAAsE,CACpG,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAEO,iBAAiB,CAAC,QAAgB;QACxC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,iCAAiC,QAAQ,kBAAkB,IAAI,CAAC,WAAW,GAAG,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,WAAmB;QAC9C,MAAM,cAAc,GAAG;YACrB,cAAc;YACd,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;SACpB,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ import type { Page, BuildOptions } from '../../types/index.js';
2
+ import type { BuildConfig } from '../config/build-config.js';
3
+ export declare class ViewBuilder {
4
+ private projectPath;
5
+ private outputDir;
6
+ private fileUtils;
7
+ private pageProcessor;
8
+ private staticDirs;
9
+ private framework;
10
+ constructor(projectPath: string, outputDir: string, buildConfig?: BuildConfig);
11
+ buildPages(pages: Page[], options?: BuildOptions): Promise<void>;
12
+ private detectPageFiles;
13
+ /**
14
+ * Find logic file (.ts or .js) for a page
15
+ */
16
+ private findLogicFile;
17
+ private extractPageFunctions;
18
+ private copyStaticAssets;
19
+ private copyRootFiles;
20
+ private processLxappCss;
21
+ private resolveCssImports;
22
+ }
23
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/builders/view.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAa,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAO1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,SAAS,CAAmB;gBAExB,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAcvE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqD1E,OAAO,CAAC,eAAe;IAiCvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,oBAAoB;YAcd,gBAAgB;YAUhB,aAAa;YAeb,eAAe;YAMf,iBAAiB;CA+ChC"}
@@ -0,0 +1,194 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { FileUtils } from '../utils/file.js';
4
+ import { PageProcessor } from './page.js';
5
+ import { extractPageFunctionsFromSource } from './page-functions.js';
6
+ import { resolveStaticDirs } from '../constants/static-dirs.js';
7
+ import { readProjectFramework } from '../config/framework.js';
8
+ export class ViewBuilder {
9
+ projectPath;
10
+ outputDir;
11
+ fileUtils;
12
+ pageProcessor;
13
+ staticDirs;
14
+ framework;
15
+ constructor(projectPath, outputDir, buildConfig) {
16
+ this.projectPath = projectPath;
17
+ this.outputDir = outputDir;
18
+ this.fileUtils = new FileUtils();
19
+ this.staticDirs = resolveStaticDirs(projectPath, buildConfig);
20
+ this.framework = readProjectFramework(projectPath);
21
+ this.pageProcessor = new PageProcessor(projectPath, outputDir, this.staticDirs, buildConfig);
22
+ }
23
+ async buildPages(pages, options = {}) {
24
+ await this.copyStaticAssets();
25
+ await this.copyRootFiles();
26
+ // Group pages by framework and validate supported types
27
+ const reactPages = [];
28
+ const vuePages = [];
29
+ const unsupported = [];
30
+ for (const p of pages) {
31
+ if (p.type === 'react')
32
+ reactPages.push(p);
33
+ else if (p.type === 'vue')
34
+ vuePages.push(p);
35
+ else
36
+ unsupported.push(p);
37
+ }
38
+ if (unsupported.length > 0) {
39
+ const paths = unsupported.map(p => p.path).join(', ');
40
+ throw new Error(`HTML pages are no longer supported. Please migrate these entries to React/Vue: ${paths}`);
41
+ }
42
+ if (this.framework === 'react' && vuePages.length > 0) {
43
+ throw new Error(`Project configured for React, but found Vue pages. Please keep only one framework.`);
44
+ }
45
+ if (this.framework === 'vue' && reactPages.length > 0) {
46
+ throw new Error(`Project configured for Vue, but found React pages. Please keep only one framework.`);
47
+ }
48
+ // Batch build React/Vue using multi-entry
49
+ const buildBatch = async (framework, subset) => {
50
+ if (subset.length === 0)
51
+ return;
52
+ const items = subset.map(page => {
53
+ const pageFiles = this.detectPageFiles(page);
54
+ const pageFunctions = this.extractPageFunctions(pageFiles);
55
+ return { page, pageFiles, pageFunctions };
56
+ });
57
+ // Always use Vite for view builds
58
+ await this.pageProcessor.buildPagesBatch(framework, items, options);
59
+ };
60
+ // Parallel build for better performance
61
+ if (this.framework === 'react') {
62
+ await buildBatch('react', reactPages);
63
+ }
64
+ else {
65
+ await buildBatch('vue', vuePages);
66
+ }
67
+ }
68
+ detectPageFiles(page) {
69
+ const pageDir = path.dirname(page.path);
70
+ const baseName = path.basename(page.path, path.extname(page.path));
71
+ const sourcePageDir = path.join(this.projectPath, pageDir);
72
+ // The view file is the page file itself (use actual path from lxapp.json)
73
+ const viewPath = path.join(this.projectPath, page.path);
74
+ const viewExists = fs.existsSync(viewPath);
75
+ const logicPath = this.findLogicFile(sourcePageDir, baseName);
76
+ return {
77
+ view: {
78
+ path: viewPath,
79
+ exists: viewExists,
80
+ type: page.type
81
+ },
82
+ logic: {
83
+ path: logicPath ?? undefined,
84
+ exists: logicPath !== null
85
+ },
86
+ config: {
87
+ path: path.join(sourcePageDir, `${baseName}.json`),
88
+ exists: fs.existsSync(path.join(sourcePageDir, `${baseName}.json`))
89
+ },
90
+ style: {
91
+ path: path.join(sourcePageDir, `${baseName}.css`),
92
+ exists: fs.existsSync(path.join(sourcePageDir, `${baseName}.css`))
93
+ }
94
+ };
95
+ }
96
+ /**
97
+ * Find logic file (.ts or .js) for a page
98
+ */
99
+ findLogicFile(sourcePageDir, baseName) {
100
+ const tsPath = path.join(sourcePageDir, `${baseName}.ts`);
101
+ const jsPath = path.join(sourcePageDir, `${baseName}.js`);
102
+ if (fs.existsSync(tsPath)) {
103
+ return tsPath;
104
+ }
105
+ else if (fs.existsSync(jsPath)) {
106
+ return jsPath;
107
+ }
108
+ return null;
109
+ }
110
+ extractPageFunctions(pageFiles) {
111
+ if (!pageFiles.logic.exists || !pageFiles.logic.path) {
112
+ return [];
113
+ }
114
+ try {
115
+ const logicContent = fs.readFileSync(pageFiles.logic.path, 'utf-8');
116
+ return extractPageFunctionsFromSource(logicContent);
117
+ }
118
+ catch (error) {
119
+ console.warn(`⚠️ Failed to extract functions from ${pageFiles.logic.path}`);
120
+ return [];
121
+ }
122
+ }
123
+ async copyStaticAssets() {
124
+ for (const dirName of this.staticDirs) {
125
+ const sourceDir = path.join(this.projectPath, dirName);
126
+ if (fs.existsSync(sourceDir)) {
127
+ const destDir = path.join(this.outputDir, dirName);
128
+ await this.fileUtils.copyDirectory(sourceDir, destDir);
129
+ }
130
+ }
131
+ }
132
+ async copyRootFiles() {
133
+ // Copy lxapp.json
134
+ const lxappJson = path.join(this.projectPath, 'lxapp.json');
135
+ if (fs.existsSync(lxappJson)) {
136
+ const destFile = path.join(this.outputDir, 'lxapp.json');
137
+ fs.copyFileSync(lxappJson, destFile);
138
+ }
139
+ // Process lxapp.css with import resolution
140
+ const lxappCss = path.join(this.projectPath, 'lxapp.css');
141
+ if (fs.existsSync(lxappCss)) {
142
+ await this.processLxappCss(lxappCss);
143
+ }
144
+ }
145
+ async processLxappCss(cssPath) {
146
+ const finalCss = await this.resolveCssImports(cssPath, new Set());
147
+ const destFile = path.join(this.outputDir, 'lxapp.css');
148
+ fs.writeFileSync(destFile, finalCss);
149
+ }
150
+ async resolveCssImports(cssPath, processedFiles) {
151
+ const absolutePath = path.resolve(cssPath);
152
+ if (processedFiles.has(absolutePath)) {
153
+ console.warn(`⚠️ Circular import detected: ${cssPath}`);
154
+ return '';
155
+ }
156
+ processedFiles.add(absolutePath);
157
+ if (!fs.existsSync(cssPath)) {
158
+ console.warn(`⚠️ CSS file not found: ${cssPath}`);
159
+ return '';
160
+ }
161
+ const cssContent = fs.readFileSync(cssPath, 'utf-8');
162
+ const cssDir = path.dirname(cssPath);
163
+ let resolvedCss = '';
164
+ const lines = cssContent.split('\n');
165
+ for (const line of lines) {
166
+ const trimmedLine = line.trim();
167
+ const importMatch = trimmedLine.match(/^@import\s+['"]([^'"]+)['"];?/);
168
+ if (importMatch) {
169
+ const importPath = importMatch[1];
170
+ let resolvedPath;
171
+ if (importPath.startsWith('./') || importPath.startsWith('../')) {
172
+ resolvedPath = path.resolve(cssDir, importPath);
173
+ }
174
+ else if (!importPath.startsWith('http') && !importPath.startsWith('//')) {
175
+ resolvedPath = path.resolve(this.projectPath, importPath);
176
+ }
177
+ else {
178
+ resolvedCss += line + '\n';
179
+ continue;
180
+ }
181
+ const importedCss = await this.resolveCssImports(resolvedPath, processedFiles);
182
+ if (importedCss) {
183
+ resolvedCss += `/* Imported from: ${importPath} */\n`;
184
+ resolvedCss += importedCss + '\n';
185
+ }
186
+ }
187
+ else {
188
+ resolvedCss += line + '\n';
189
+ }
190
+ }
191
+ return resolvedCss;
192
+ }
193
+ }
194
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../../src/builder/core/builders/view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { BuildConfig } from './build-config.js';
2
+ export type AliasMap = Record<string, string>;
3
+ export declare function resolveAliasMap(projectPath: string, config?: BuildConfig): AliasMap;
4
+ //# sourceMappingURL=alias-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alias-config.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/config/alias-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AA6B9C,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,QAAQ,CAOV"}
@@ -0,0 +1,29 @@
1
+ import path from 'path';
2
+ import { loadLingxiaConfig } from './lingxia-config.js';
3
+ const DEFAULT_ROOT_ALIAS = '@lingxia';
4
+ function normalizeAliases(projectPath, config) {
5
+ if (!config?.alias || typeof config.alias !== 'object') {
6
+ return {};
7
+ }
8
+ const entries = Object.entries(config.alias).filter(entry => {
9
+ const [key, value] = entry;
10
+ return (typeof key === 'string' &&
11
+ key.trim().length > 0 &&
12
+ typeof value === 'string' &&
13
+ value.trim().length > 0);
14
+ });
15
+ const alias = {};
16
+ for (const [key, value] of entries) {
17
+ alias[key] = path.resolve(projectPath, value);
18
+ }
19
+ return alias;
20
+ }
21
+ export function resolveAliasMap(projectPath, config) {
22
+ const resolvedConfig = config ?? loadLingxiaConfig(projectPath);
23
+ const alias = normalizeAliases(projectPath, resolvedConfig);
24
+ if (!alias[DEFAULT_ROOT_ALIAS]) {
25
+ alias[DEFAULT_ROOT_ALIAS] = projectPath;
26
+ }
27
+ return alias;
28
+ }
29
+ //# sourceMappingURL=alias-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alias-config.js","sourceRoot":"","sources":["../../../../src/builder/core/config/alias-config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAEtC,SAAS,gBAAgB,CACvB,WAAmB,EACnB,MAAgD;IAEhD,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC1D,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;QAC3B,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;YACvB,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YACrB,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CACxB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,MAAoB;IAEpB,MAAM,cAAc,GAAG,MAAM,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,kBAAkB,CAAC,GAAG,WAAW,CAAC;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface BuildConfig {
2
+ staticDirs?: string[];
3
+ alias?: Record<string, string>;
4
+ sourceDirs?: string[];
5
+ assetDir?: string;
6
+ }
7
+ export declare function loadLxappBuildConfig(projectPath: string): BuildConfig | undefined;
8
+ //# sourceMappingURL=build-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/config/build-config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAgCjF"}
@@ -0,0 +1,33 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ export function loadLxappBuildConfig(projectPath) {
4
+ const configPath = path.join(projectPath, 'lxapp.config.json');
5
+ if (!fs.existsSync(configPath)) {
6
+ return undefined;
7
+ }
8
+ try {
9
+ const raw = fs.readFileSync(configPath, 'utf-8');
10
+ const parsed = JSON.parse(raw);
11
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
12
+ throw new Error('lxapp.config.json must be a JSON object');
13
+ }
14
+ const rawConfig = parsed;
15
+ const alias = rawConfig.alias && typeof rawConfig.alias === 'object' && !Array.isArray(rawConfig.alias)
16
+ ? rawConfig.alias
17
+ : undefined;
18
+ return {
19
+ staticDirs: Array.isArray(rawConfig.staticDirs)
20
+ ? rawConfig.staticDirs
21
+ : undefined,
22
+ alias,
23
+ sourceDirs: Array.isArray(rawConfig.sourceDirs)
24
+ ? rawConfig.sourceDirs
25
+ : undefined,
26
+ assetDir: typeof rawConfig.assetDir === 'string' ? rawConfig.assetDir : undefined
27
+ };
28
+ }
29
+ catch (error) {
30
+ throw new Error(`Invalid JSON: lxapp.config.json\n${error instanceof Error ? error.message : String(error)}`);
31
+ }
32
+ }
33
+ //# sourceMappingURL=build-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-config.js","sourceRoot":"","sources":["../../../../src/builder/core/config/build-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,SAAS,GAAG,MAAiC,CAAC;QACpD,MAAM,KAAK,GACT,SAAS,CAAC,KAAK,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;YACvF,CAAC,CAAE,SAAS,CAAC,KAAgC;YAC7C,CAAC,CAAC,SAAS,CAAC;QAChB,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;gBAC7C,CAAC,CAAE,SAAS,CAAC,UAAuB;gBACpC,CAAC,CAAC,SAAS;YACb,KAAK;YACL,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;gBAC7C,CAAC,CAAE,SAAS,CAAC,UAAuB;gBACpC,CAAC,CAAC,SAAS;YACb,QAAQ,EAAE,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAClF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7F,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type ProjectFramework = 'react' | 'vue';
2
+ export declare function readProjectFramework(projectPath: string): ProjectFramework;
3
+ //# sourceMappingURL=framework.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../../../src/builder/core/config/framework.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,KAAK,CAAC;AAE/C,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAqB1E"}