@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.
- package/bin/lingxia.js +91 -0
- package/dist/builder/commands/build.d.ts +3 -0
- package/dist/builder/commands/build.d.ts.map +1 -0
- package/dist/builder/commands/build.js +317 -0
- package/dist/builder/commands/build.js.map +1 -0
- package/dist/builder/core/builders/logic.d.ts +48 -0
- package/dist/builder/core/builders/logic.d.ts.map +1 -0
- package/dist/builder/core/builders/logic.js +212 -0
- package/dist/builder/core/builders/logic.js.map +1 -0
- package/dist/builder/core/builders/page-functions.d.ts +2 -0
- package/dist/builder/core/builders/page-functions.d.ts.map +1 -0
- package/dist/builder/core/builders/page-functions.js +119 -0
- package/dist/builder/core/builders/page-functions.js.map +1 -0
- package/dist/builder/core/builders/page-path-injector.d.ts +5 -0
- package/dist/builder/core/builders/page-path-injector.d.ts.map +1 -0
- package/dist/builder/core/builders/page-path-injector.js +94 -0
- package/dist/builder/core/builders/page-path-injector.js.map +1 -0
- package/dist/builder/core/builders/page.d.ts +37 -0
- package/dist/builder/core/builders/page.d.ts.map +1 -0
- package/dist/builder/core/builders/page.js +246 -0
- package/dist/builder/core/builders/page.js.map +1 -0
- package/dist/builder/core/builders/view.d.ts +23 -0
- package/dist/builder/core/builders/view.d.ts.map +1 -0
- package/dist/builder/core/builders/view.js +194 -0
- package/dist/builder/core/builders/view.js.map +1 -0
- package/dist/builder/core/config/alias-config.d.ts +4 -0
- package/dist/builder/core/config/alias-config.d.ts.map +1 -0
- package/dist/builder/core/config/alias-config.js +29 -0
- package/dist/builder/core/config/alias-config.js.map +1 -0
- package/dist/builder/core/config/build-config.d.ts +8 -0
- package/dist/builder/core/config/build-config.d.ts.map +1 -0
- package/dist/builder/core/config/build-config.js +33 -0
- package/dist/builder/core/config/build-config.js.map +1 -0
- package/dist/builder/core/config/framework.d.ts +3 -0
- package/dist/builder/core/config/framework.d.ts.map +1 -0
- package/dist/builder/core/config/framework.js +51 -0
- package/dist/builder/core/config/framework.js.map +1 -0
- package/dist/builder/core/config/lingxia-config.d.ts +55 -0
- package/dist/builder/core/config/lingxia-config.d.ts.map +1 -0
- package/dist/builder/core/config/lingxia-config.js +174 -0
- package/dist/builder/core/config/lingxia-config.js.map +1 -0
- package/dist/builder/core/config/view-build-schema.d.ts +17 -0
- package/dist/builder/core/config/view-build-schema.d.ts.map +1 -0
- package/dist/builder/core/config/view-build-schema.js +2 -0
- package/dist/builder/core/config/view-build-schema.js.map +1 -0
- package/dist/builder/core/config/view-config.d.ts +11 -0
- package/dist/builder/core/config/view-config.d.ts.map +1 -0
- package/dist/builder/core/config/view-config.js +79 -0
- package/dist/builder/core/config/view-config.js.map +1 -0
- package/dist/builder/core/config.d.ts +34 -0
- package/dist/builder/core/config.d.ts.map +1 -0
- package/dist/builder/core/config.js +73 -0
- package/dist/builder/core/config.js.map +1 -0
- package/dist/builder/core/constants/source-dirs.d.ts +4 -0
- package/dist/builder/core/constants/source-dirs.d.ts.map +1 -0
- package/dist/builder/core/constants/source-dirs.js +24 -0
- package/dist/builder/core/constants/source-dirs.js.map +1 -0
- package/dist/builder/core/constants/static-dirs.d.ts +4 -0
- package/dist/builder/core/constants/static-dirs.d.ts.map +1 -0
- package/dist/builder/core/constants/static-dirs.js +51 -0
- package/dist/builder/core/constants/static-dirs.js.map +1 -0
- package/dist/builder/core/frameworks/base.d.ts +49 -0
- package/dist/builder/core/frameworks/base.d.ts.map +1 -0
- package/dist/builder/core/frameworks/base.js +61 -0
- package/dist/builder/core/frameworks/base.js.map +1 -0
- package/dist/builder/core/frameworks/factory.d.ts +29 -0
- package/dist/builder/core/frameworks/factory.d.ts.map +1 -0
- package/dist/builder/core/frameworks/factory.js +59 -0
- package/dist/builder/core/frameworks/factory.js.map +1 -0
- package/dist/builder/core/frameworks/html.d.ts +30 -0
- package/dist/builder/core/frameworks/html.d.ts.map +1 -0
- package/dist/builder/core/frameworks/html.js +92 -0
- package/dist/builder/core/frameworks/html.js.map +1 -0
- package/dist/builder/core/frameworks/react.d.ts +33 -0
- package/dist/builder/core/frameworks/react.d.ts.map +1 -0
- package/dist/builder/core/frameworks/react.js +161 -0
- package/dist/builder/core/frameworks/react.js.map +1 -0
- package/dist/builder/core/frameworks/templates.d.ts +2 -0
- package/dist/builder/core/frameworks/templates.d.ts.map +1 -0
- package/dist/builder/core/frameworks/templates.js +3 -0
- package/dist/builder/core/frameworks/templates.js.map +1 -0
- package/dist/builder/core/frameworks/vue.d.ts +33 -0
- package/dist/builder/core/frameworks/vue.d.ts.map +1 -0
- package/dist/builder/core/frameworks/vue.js +161 -0
- package/dist/builder/core/frameworks/vue.js.map +1 -0
- package/dist/builder/core/registry.d.ts +43 -0
- package/dist/builder/core/registry.d.ts.map +1 -0
- package/dist/builder/core/registry.js +79 -0
- package/dist/builder/core/registry.js.map +1 -0
- package/dist/builder/core/template.d.ts +7 -0
- package/dist/builder/core/template.d.ts.map +1 -0
- package/dist/builder/core/template.js +57 -0
- package/dist/builder/core/template.js.map +1 -0
- package/dist/builder/core/templates/embedded.d.ts +17 -0
- package/dist/builder/core/templates/embedded.d.ts.map +1 -0
- package/dist/builder/core/templates/embedded.js +121 -0
- package/dist/builder/core/templates/embedded.js.map +1 -0
- package/dist/builder/core/utils/file.d.ts +35 -0
- package/dist/builder/core/utils/file.d.ts.map +1 -0
- package/dist/builder/core/utils/file.js +99 -0
- package/dist/builder/core/utils/file.js.map +1 -0
- package/dist/builder/core/utils/page.d.ts +14 -0
- package/dist/builder/core/utils/page.d.ts.map +1 -0
- package/dist/builder/core/utils/page.js +46 -0
- package/dist/builder/core/utils/page.js.map +1 -0
- package/dist/builder/index.d.ts +2 -0
- package/dist/builder/index.d.ts.map +1 -0
- package/dist/builder/index.js +2 -0
- package/dist/builder/index.js.map +1 -0
- package/dist/builder/types/index.d.ts +67 -0
- package/dist/builder/types/index.d.ts.map +1 -0
- package/dist/builder/types/index.js +2 -0
- package/dist/builder/types/index.js.map +1 -0
- package/dist/commands/create.d.ts +7 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +151 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/package.json +49 -0
- package/scripts/ensure-deps.cjs +54 -0
- package/scripts/install.cjs +62 -0
- package/scripts/set-version.cjs +34 -0
- package/scripts/sync-templates.cjs +36 -0
- package/templates/android-native/app/build.gradle.kts +48 -0
- package/templates/android-native/app/proguard-rules.pro +21 -0
- package/templates/android-native/app/src/main/AndroidManifest.xml +21 -0
- package/templates/android-native/app/src/main/java/MainActivity.kt +27 -0
- package/templates/android-native/app/src/main/res/values/strings.xml +3 -0
- package/templates/android-native/build.gradle.kts +5 -0
- package/templates/android-native/gradle/libs.versions.toml +16 -0
- package/templates/android-native/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/templates/android-native/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/templates/android-native/gradle.properties +4 -0
- package/templates/android-native/gradlew +185 -0
- package/templates/android-native/gradlew.bat +89 -0
- package/templates/android-native/settings.gradle.kts +25 -0
- package/templates/lxapp-create/react/lxapp.config.json +8 -0
- package/templates/lxapp-create/react/lxapp.json +8 -0
- package/templates/lxapp-create/react/lxapp.ts +8 -0
- package/templates/lxapp-create/react/package.json +26 -0
- package/templates/lxapp-create/react/pages/home/index.json +3 -0
- package/templates/lxapp-create/react/pages/home/index.ts +14 -0
- package/templates/lxapp-create/react/pages/home/index.tsx +60 -0
- package/templates/lxapp-create/react/public/.gitkeep +0 -0
- package/templates/lxapp-create/react/shared/.gitkeep +0 -0
- package/templates/lxapp-create/react/tsconfig.json +20 -0
- package/templates/lxapp-create/vue/lxapp.config.json +8 -0
- package/templates/lxapp-create/vue/lxapp.json +8 -0
- package/templates/lxapp-create/vue/lxapp.ts +8 -0
- package/templates/lxapp-create/vue/package.json +24 -0
- package/templates/lxapp-create/vue/pages/home/index.json +3 -0
- package/templates/lxapp-create/vue/pages/home/index.ts +14 -0
- package/templates/lxapp-create/vue/pages/home/index.vue +48 -0
- package/templates/lxapp-create/vue/public/.gitkeep +0 -0
- package/templates/lxapp-create/vue/shared/.gitkeep +0 -0
- package/templates/lxapp-create/vue/tsconfig.json +20 -0
- package/templates/rust-lib/Cargo.toml +13 -0
- package/templates/rust-lib/README.md +14 -0
- package/templates/rust-lib/src/lib.rs +13 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|