@lingxia/cli 0.0.8 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/lingxia.js +207 -32
- package/dist/builder/commands/build.d.ts +1 -1
- package/dist/builder/commands/build.d.ts.map +1 -1
- package/dist/builder/commands/build.js +138 -103
- package/dist/builder/commands/build.js.map +1 -1
- package/dist/builder/core/builders/logic.d.ts +3 -3
- package/dist/builder/core/builders/logic.d.ts.map +1 -1
- package/dist/builder/core/builders/logic.js +55 -46
- package/dist/builder/core/builders/logic.js.map +1 -1
- package/dist/builder/core/builders/page-functions.d.ts.map +1 -1
- package/dist/builder/core/builders/page-functions.js +43 -35
- package/dist/builder/core/builders/page-functions.js.map +1 -1
- package/dist/builder/core/builders/page-path-injector.js +27 -27
- package/dist/builder/core/builders/page-path-injector.js.map +1 -1
- package/dist/builder/core/builders/page-types.d.ts +22 -0
- package/dist/builder/core/builders/page-types.d.ts.map +1 -0
- package/dist/builder/core/builders/page-types.js +374 -0
- package/dist/builder/core/builders/page-types.js.map +1 -0
- package/dist/builder/core/builders/page.d.ts +5 -4
- package/dist/builder/core/builders/page.d.ts.map +1 -1
- package/dist/builder/core/builders/page.js +54 -52
- package/dist/builder/core/builders/page.js.map +1 -1
- package/dist/builder/core/builders/view-validator.d.ts +9 -0
- package/dist/builder/core/builders/view-validator.d.ts.map +1 -0
- package/dist/builder/core/builders/view-validator.js +58 -0
- package/dist/builder/core/builders/view-validator.js.map +1 -0
- package/dist/builder/core/builders/view.d.ts +40 -3
- package/dist/builder/core/builders/view.d.ts.map +1 -1
- package/dist/builder/core/builders/view.js +406 -55
- package/dist/builder/core/builders/view.js.map +1 -1
- package/dist/builder/core/config/alias-config.d.ts +1 -1
- package/dist/builder/core/config/alias-config.d.ts.map +1 -1
- package/dist/builder/core/config/alias-config.js +8 -8
- package/dist/builder/core/config/alias-config.js.map +1 -1
- package/dist/builder/core/config/framework.d.ts +1 -1
- package/dist/builder/core/config/framework.d.ts.map +1 -1
- package/dist/builder/core/config/framework.js +14 -11
- package/dist/builder/core/config/framework.js.map +1 -1
- package/dist/builder/core/config/lxapp-config.d.ts +74 -0
- package/dist/builder/core/config/lxapp-config.d.ts.map +1 -0
- package/dist/builder/core/config/lxapp-config.js +195 -0
- package/dist/builder/core/config/lxapp-config.js.map +1 -0
- package/dist/builder/core/config/view-build-schema.d.ts +2 -2
- package/dist/builder/core/config/view-config.d.ts +3 -3
- package/dist/builder/core/config/view-config.d.ts.map +1 -1
- package/dist/builder/core/config/view-config.js +16 -16
- package/dist/builder/core/config/view-config.js.map +1 -1
- package/dist/builder/core/config.d.ts +1 -1
- package/dist/builder/core/config.js +11 -11
- package/dist/builder/core/constants/source-dirs.d.ts +1 -1
- package/dist/builder/core/constants/source-dirs.js +9 -9
- package/dist/builder/core/constants/source-dirs.js.map +1 -1
- package/dist/builder/core/constants/static-dirs.d.ts +1 -1
- package/dist/builder/core/constants/static-dirs.d.ts.map +1 -1
- package/dist/builder/core/constants/static-dirs.js +11 -11
- package/dist/builder/core/constants/static-dirs.js.map +1 -1
- package/dist/builder/core/frameworks/base.d.ts +1 -1
- package/dist/builder/core/frameworks/base.d.ts.map +1 -1
- package/dist/builder/core/frameworks/base.js +13 -11
- package/dist/builder/core/frameworks/base.js.map +1 -1
- package/dist/builder/core/frameworks/factory.d.ts +1 -1
- package/dist/builder/core/frameworks/factory.d.ts.map +1 -1
- package/dist/builder/core/frameworks/factory.js +9 -9
- package/dist/builder/core/frameworks/factory.js.map +1 -1
- package/dist/builder/core/frameworks/html.d.ts +2 -2
- package/dist/builder/core/frameworks/html.d.ts.map +1 -1
- package/dist/builder/core/frameworks/html.js +10 -10
- package/dist/builder/core/frameworks/html.js.map +1 -1
- package/dist/builder/core/frameworks/react.d.ts +3 -3
- package/dist/builder/core/frameworks/react.d.ts.map +1 -1
- package/dist/builder/core/frameworks/react.js +45 -43
- package/dist/builder/core/frameworks/react.js.map +1 -1
- package/dist/builder/core/frameworks/templates.d.ts +1 -1
- package/dist/builder/core/frameworks/templates.d.ts.map +1 -1
- package/dist/builder/core/frameworks/templates.js +1 -1
- package/dist/builder/core/frameworks/templates.js.map +1 -1
- package/dist/builder/core/frameworks/vue.d.ts +3 -3
- package/dist/builder/core/frameworks/vue.d.ts.map +1 -1
- package/dist/builder/core/frameworks/vue.js +48 -43
- package/dist/builder/core/frameworks/vue.js.map +1 -1
- package/dist/builder/core/registry.d.ts.map +1 -1
- package/dist/builder/core/registry.js +34 -25
- package/dist/builder/core/registry.js.map +1 -1
- package/dist/builder/core/template.d.ts +1 -1
- package/dist/builder/core/template.d.ts.map +1 -1
- package/dist/builder/core/template.js +19 -14
- package/dist/builder/core/template.js.map +1 -1
- package/dist/builder/core/templates/embedded.d.ts +3 -3
- package/dist/builder/core/templates/embedded.d.ts.map +1 -1
- package/dist/builder/core/templates/embedded.js +62 -31
- package/dist/builder/core/templates/embedded.js.map +1 -1
- package/dist/builder/core/type-generator.d.ts +17 -0
- package/dist/builder/core/type-generator.d.ts.map +1 -0
- package/dist/builder/core/type-generator.js +172 -0
- package/dist/builder/core/type-generator.js.map +1 -0
- package/dist/builder/core/utils/file.js +4 -4
- package/dist/builder/core/utils/incremental.d.ts +59 -0
- package/dist/builder/core/utils/incremental.d.ts.map +1 -0
- package/dist/builder/core/utils/incremental.js +177 -0
- package/dist/builder/core/utils/incremental.js.map +1 -0
- package/dist/builder/core/utils/page.d.ts +12 -2
- package/dist/builder/core/utils/page.d.ts.map +1 -1
- package/dist/builder/core/utils/page.js +63 -8
- package/dist/builder/core/utils/page.js.map +1 -1
- package/dist/builder/index.d.ts +1 -1
- package/dist/builder/index.js +1 -1
- package/dist/builder/types/index.d.ts +7 -6
- package/dist/builder/types/index.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -25
- package/dist/index.js.map +1 -1
- package/package.json +8 -6
- package/templates/AppIcon.png +0 -0
- package/templates/android-native/app/build.gradle.kts +1 -1
- package/templates/android-native/app/src/main/java/MainActivity.kt +2 -2
- package/templates/android-native/app/src/main/res/values/strings.xml +1 -1
- package/templates/android-native/settings.gradle.kts +4 -2
- package/templates/harmony-native/AppScope/app.json5 +10 -0
- package/templates/harmony-native/AppScope/resources/base/element/string.json +8 -0
- package/templates/harmony-native/build-profile.json5 +41 -0
- package/templates/harmony-native/entry/build-profile.json5 +8 -0
- package/templates/harmony-native/entry/hvigorfile.ts +6 -0
- package/templates/harmony-native/entry/oh-package.json5 +11 -0
- package/templates/harmony-native/entry/src/main/ets/entryability/EntryAbility.ets +38 -0
- package/templates/harmony-native/entry/src/main/ets/pages/Index.ets +15 -0
- package/templates/harmony-native/entry/src/main/module.json5 +38 -0
- package/templates/harmony-native/entry/src/main/resources/base/element/color.json +8 -0
- package/templates/harmony-native/entry/src/main/resources/base/element/string.json +16 -0
- package/templates/harmony-native/entry/src/main/resources/base/profile/main_pages.json +5 -0
- package/templates/harmony-native/entry/src/main/resources/dark/element/color.json +8 -0
- package/templates/harmony-native/hvigor/hvigor-config.json5 +13 -0
- package/templates/harmony-native/hvigorfile.ts +6 -0
- package/templates/harmony-native/oh-package.json5 +10 -0
- package/templates/ios-native/App.entitlements +10 -0
- package/templates/ios-native/Info.plist +8 -0
- package/templates/ios-native/Package.swift +31 -0
- package/templates/ios-native/Sources/App.swift +44 -0
- package/templates/lxapp-create/html/global.d.ts +1 -0
- package/templates/lxapp-create/html/lxapp.config.ts +5 -0
- package/templates/lxapp-create/html/lxapp.json +8 -0
- package/templates/lxapp-create/html/lxapp.ts +8 -0
- package/templates/lxapp-create/html/package.json +20 -0
- package/templates/lxapp-create/html/pages/home/index.html +32 -0
- package/templates/lxapp-create/html/pages/home/index.json +3 -0
- package/templates/lxapp-create/html/pages/home/index.ts +14 -0
- package/templates/lxapp-create/html/tsconfig.json +13 -0
- package/templates/lxapp-create/html/view/home.ts +19 -0
- package/templates/lxapp-create/react/app.css +20 -0
- package/templates/lxapp-create/react/lxapp.config.ts +8 -0
- package/templates/lxapp-create/react/lxapp.json +1 -1
- package/templates/lxapp-create/react/package.json +6 -4
- package/templates/lxapp-create/react/pages/home/index.json +1 -1
- package/templates/lxapp-create/react/pages/home/index.ts +8 -3
- package/templates/lxapp-create/react/pages/home/index.tsx +113 -42
- package/templates/lxapp-create/react/tsconfig.json +5 -2
- package/templates/lxapp-create/vue/app.css +20 -0
- package/templates/lxapp-create/vue/lxapp.config.ts +8 -0
- package/templates/lxapp-create/vue/lxapp.json +1 -1
- package/templates/lxapp-create/vue/package.json +5 -3
- package/templates/lxapp-create/vue/pages/home/index.json +1 -1
- package/templates/lxapp-create/vue/pages/home/index.ts +8 -3
- package/templates/lxapp-create/vue/pages/home/index.vue +124 -37
- package/templates/lxapp-create/vue/tsconfig.json +5 -2
- package/templates/macos-native/Info.plist +40 -0
- package/templates/macos-native/Package.swift +30 -0
- package/templates/macos-native/Sources/main.swift +23 -0
- package/templates/rust-lib/Cargo.toml +17 -2
- package/templates/rust-lib/README.md +1 -1
- package/templates/rust-lib/src/lib.rs +39 -1
- package/vendor/lingxia +0 -0
- package/dist/commands/create.d.ts +0 -7
- package/dist/commands/create.d.ts.map +0 -1
- package/dist/commands/create.js +0 -151
- package/dist/commands/create.js.map +0 -1
- package/templates/lxapp-create/react/lxapp.config.json +0 -8
- package/templates/lxapp-create/react/public/.gitkeep +0 -0
- package/templates/lxapp-create/vue/lxapp.config.json +0 -8
- package/templates/lxapp-create/vue/public/.gitkeep +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import AppKit
|
|
2
|
+
import lingxia
|
|
3
|
+
|
|
4
|
+
class LingXiaAppDelegate: NSObject, NSApplicationDelegate {
|
|
5
|
+
|
|
6
|
+
func applicationDidFinishLaunching(_ notification: Notification) {
|
|
7
|
+
// Enable WebView debugging BEFORE LxApp.initialize()
|
|
8
|
+
// This ensures debugging is enabled before the first WebView is created
|
|
9
|
+
LxApp.enableWebViewDebugging()
|
|
10
|
+
|
|
11
|
+
LxApp.initialize()
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
|
|
15
|
+
return true
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Entry point
|
|
20
|
+
let app = NSApplication.shared
|
|
21
|
+
let delegate = LingXiaAppDelegate()
|
|
22
|
+
app.delegate = delegate
|
|
23
|
+
app.run()
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[package]
|
|
2
|
-
name = "{{
|
|
2
|
+
name = "{{PROJECT_NAME}}"
|
|
3
3
|
version = "0.1.0"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
description = "Native library for LingXia App (builds to .so/.a)"
|
|
@@ -10,4 +10,19 @@ name = "lingxia"
|
|
|
10
10
|
crate-type = ["cdylib", "staticlib"]
|
|
11
11
|
|
|
12
12
|
[dependencies]
|
|
13
|
-
lingxia = "
|
|
13
|
+
lingxia = "{{CRATE_VERSION}}"
|
|
14
|
+
|
|
15
|
+
# Platform-specific dependencies for FFI
|
|
16
|
+
[target.'cfg(target_os = "android")'.dependencies]
|
|
17
|
+
jni = "0.21"
|
|
18
|
+
|
|
19
|
+
[target.'cfg(target_env = "ohos")'.dependencies]
|
|
20
|
+
napi-ohos = "1.1"
|
|
21
|
+
napi-derive-ohos = "1.1"
|
|
22
|
+
|
|
23
|
+
# Release profile: optimize for size
|
|
24
|
+
[profile.release]
|
|
25
|
+
opt-level = 'z'
|
|
26
|
+
lto = true
|
|
27
|
+
codegen-units = 1
|
|
28
|
+
strip = true
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
//! Native library for the example app (builds to .so/.a).
|
|
2
2
|
//!
|
|
3
|
-
//! This crate
|
|
3
|
+
//! This crate:
|
|
4
|
+
//! 1. Re-exports platform FFI symbols from lingxia
|
|
5
|
+
//! 2. Exports extension registration via platform FFI (JNI/NAPI/C)
|
|
4
6
|
|
|
5
7
|
// Re-export platform FFI symbols from lingxia
|
|
6
8
|
#[cfg(target_os = "android")]
|
|
@@ -11,3 +13,39 @@ pub use lingxia::apple::*;
|
|
|
11
13
|
|
|
12
14
|
#[cfg(target_env = "ohos")]
|
|
13
15
|
pub use lingxia::harmony::*;
|
|
16
|
+
|
|
17
|
+
// Custom Extensions Registration
|
|
18
|
+
// This function is called from the native host before LxApp initialization.
|
|
19
|
+
fn do_register_extensions() {
|
|
20
|
+
// Register custom extensions here
|
|
21
|
+
// Example: lingxia::register_logic_extension(Box::new(MyExtension));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Android: JNI export
|
|
25
|
+
#[cfg(target_os = "android")]
|
|
26
|
+
mod android {
|
|
27
|
+
use jni::JNIEnv;
|
|
28
|
+
use jni::objects::JClass;
|
|
29
|
+
|
|
30
|
+
#[unsafe(no_mangle)]
|
|
31
|
+
pub extern "system" fn Java_{{PACKAGE_ID_UNDERSCORE}}_MainActivity_registerNativeExtensions(
|
|
32
|
+
_env: JNIEnv,
|
|
33
|
+
_class: JClass,
|
|
34
|
+
) {
|
|
35
|
+
super::do_register_extensions();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Harmony: NAPI export
|
|
40
|
+
#[cfg(target_env = "ohos")]
|
|
41
|
+
#[napi_derive_ohos::napi]
|
|
42
|
+
pub fn lingxia_register_extensions() {
|
|
43
|
+
do_register_extensions();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// iOS/macOS: C export
|
|
47
|
+
#[cfg(any(target_os = "ios", target_os = "macos"))]
|
|
48
|
+
#[unsafe(no_mangle)]
|
|
49
|
+
pub extern "C" fn lingxia_register_extensions() {
|
|
50
|
+
do_register_extensions();
|
|
51
|
+
}
|
package/vendor/lingxia
CHANGED
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAMA,KAAK,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AAEjC,KAAK,aAAa,GAAG;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAoBF,wBAAsB,aAAa,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBvG"}
|
package/dist/commands/create.js
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import { fileURLToPath } from 'url';
|
|
3
|
-
import { existsSync, promises as fs } from 'fs';
|
|
4
|
-
import { createInterface } from 'readline/promises';
|
|
5
|
-
import { stdin as input, stdout as output } from 'process';
|
|
6
|
-
const TEMPLATE_ROOT = resolveTemplateRoot();
|
|
7
|
-
function resolveTemplateRoot() {
|
|
8
|
-
// From npm/dist/commands/create.js → ../../templates/lxapp-create
|
|
9
|
-
// Dev fallback → ../../../templates/lxapp-create (repo root templates)
|
|
10
|
-
const candidates = [
|
|
11
|
-
new URL('../../templates/lxapp-create', import.meta.url),
|
|
12
|
-
new URL('../../../templates/lxapp-create', import.meta.url),
|
|
13
|
-
];
|
|
14
|
-
for (const candidate of candidates) {
|
|
15
|
-
const resolved = fileURLToPath(candidate);
|
|
16
|
-
if (existsSync(resolved))
|
|
17
|
-
return resolved;
|
|
18
|
-
}
|
|
19
|
-
return fileURLToPath(candidates[0]);
|
|
20
|
-
}
|
|
21
|
-
export async function createCommand(projectNameArg, options = {}) {
|
|
22
|
-
const prompts = new PromptManager();
|
|
23
|
-
try {
|
|
24
|
-
const projectName = await resolveProjectName(projectNameArg, prompts);
|
|
25
|
-
const framework = await resolveFramework(options.framework, prompts);
|
|
26
|
-
const targetDir = path.resolve(process.cwd(), projectName);
|
|
27
|
-
await ensureTargetDirectory(targetDir);
|
|
28
|
-
const templateDir = path.join(TEMPLATE_ROOT, framework);
|
|
29
|
-
await copyTemplate(templateDir, targetDir);
|
|
30
|
-
await applyPlaceholders(targetDir, projectName);
|
|
31
|
-
await recordFrameworkMetadata(targetDir, framework);
|
|
32
|
-
console.log('\n✅ Project scaffolded!');
|
|
33
|
-
console.log(`\nNext steps:`);
|
|
34
|
-
console.log(` cd ${path.relative(process.cwd(), targetDir) || '.'}`);
|
|
35
|
-
console.log(` npm install`);
|
|
36
|
-
console.log(` npm run dev # or npm run build`);
|
|
37
|
-
}
|
|
38
|
-
finally {
|
|
39
|
-
prompts.dispose();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
async function resolveProjectName(projectNameArg, prompts) {
|
|
43
|
-
const defaultName = 'lingxia-app';
|
|
44
|
-
if (projectNameArg && projectNameArg.trim().length > 0) {
|
|
45
|
-
return projectNameArg.trim();
|
|
46
|
-
}
|
|
47
|
-
return prompts.input(`Project name (${defaultName}): `, defaultName);
|
|
48
|
-
}
|
|
49
|
-
async function resolveFramework(current, prompts) {
|
|
50
|
-
if (current === 'react' || current === 'vue') {
|
|
51
|
-
return current;
|
|
52
|
-
}
|
|
53
|
-
const answer = await prompts.select('Choose framework', ['react', 'vue']);
|
|
54
|
-
return answer;
|
|
55
|
-
}
|
|
56
|
-
async function ensureTargetDirectory(targetDir) {
|
|
57
|
-
if (existsSync(targetDir)) {
|
|
58
|
-
const entries = await fs.readdir(targetDir);
|
|
59
|
-
if (entries.length > 0) {
|
|
60
|
-
throw new Error(`Target directory "${targetDir}" is not empty. Please choose a different name or empty the folder.`);
|
|
61
|
-
}
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
await fs.mkdir(targetDir, { recursive: true });
|
|
65
|
-
}
|
|
66
|
-
async function copyTemplate(templateDir, targetDir) {
|
|
67
|
-
await fs.cp(templateDir, targetDir, { recursive: true });
|
|
68
|
-
}
|
|
69
|
-
async function applyPlaceholders(targetDir, projectName) {
|
|
70
|
-
const pkgPath = path.join(targetDir, 'package.json');
|
|
71
|
-
const appPath = path.join(targetDir, 'lxapp.json');
|
|
72
|
-
const packageName = slugify(projectName);
|
|
73
|
-
const appId = packageName;
|
|
74
|
-
const displayName = titleCase(projectName);
|
|
75
|
-
const replacements = {
|
|
76
|
-
__APP_PACKAGE_NAME__: packageName,
|
|
77
|
-
__APP_ID__: appId,
|
|
78
|
-
__APP_DISPLAY_NAME__: displayName
|
|
79
|
-
};
|
|
80
|
-
await replacePlaceholders(pkgPath, replacements);
|
|
81
|
-
await replacePlaceholders(appPath, replacements);
|
|
82
|
-
}
|
|
83
|
-
async function recordFrameworkMetadata(targetDir, framework) {
|
|
84
|
-
const pkgPath = path.join(targetDir, 'package.json');
|
|
85
|
-
if (!existsSync(pkgPath))
|
|
86
|
-
return;
|
|
87
|
-
const pkg = JSON.parse(await fs.readFile(pkgPath, 'utf8'));
|
|
88
|
-
pkg.lingxia = { ...(pkg.lingxia ?? {}), framework };
|
|
89
|
-
await fs.writeFile(pkgPath, JSON.stringify(pkg, null, 2));
|
|
90
|
-
}
|
|
91
|
-
async function replacePlaceholders(filePath, replacements) {
|
|
92
|
-
if (!existsSync(filePath))
|
|
93
|
-
return;
|
|
94
|
-
let content = await fs.readFile(filePath, 'utf8');
|
|
95
|
-
for (const [token, value] of Object.entries(replacements)) {
|
|
96
|
-
content = content.replace(new RegExp(token, 'g'), value);
|
|
97
|
-
}
|
|
98
|
-
await fs.writeFile(filePath, content);
|
|
99
|
-
}
|
|
100
|
-
class PromptManager {
|
|
101
|
-
rl = null;
|
|
102
|
-
ensureInterface() {
|
|
103
|
-
if (!this.rl) {
|
|
104
|
-
this.rl = createInterface({ input, output });
|
|
105
|
-
}
|
|
106
|
-
return this.rl;
|
|
107
|
-
}
|
|
108
|
-
async input(message, fallback) {
|
|
109
|
-
const answer = await this.ensureInterface().question(message);
|
|
110
|
-
return answer.trim().length > 0 ? answer.trim() : fallback;
|
|
111
|
-
}
|
|
112
|
-
async select(message, options) {
|
|
113
|
-
const formatted = options.map((option, index) => `${index + 1}) ${option}`).join('\n');
|
|
114
|
-
const prompt = `${message}:\n${formatted}\nEnter choice: `;
|
|
115
|
-
const answer = await this.ensureInterface().question(prompt);
|
|
116
|
-
const index = Number.parseInt(answer, 10);
|
|
117
|
-
if (!Number.isNaN(index) && index >= 1 && index <= options.length) {
|
|
118
|
-
return options[index - 1];
|
|
119
|
-
}
|
|
120
|
-
return options[0];
|
|
121
|
-
}
|
|
122
|
-
async confirm(message, defaultValue) {
|
|
123
|
-
const suffix = defaultValue ? 'Y/n' : 'y/N';
|
|
124
|
-
const answer = (await this.ensureInterface().question(message || `Confirm (${suffix}): `)).trim().toLowerCase();
|
|
125
|
-
if (answer === '') {
|
|
126
|
-
return defaultValue;
|
|
127
|
-
}
|
|
128
|
-
return ['y', 'yes'].includes(answer);
|
|
129
|
-
}
|
|
130
|
-
dispose() {
|
|
131
|
-
this.rl?.close();
|
|
132
|
-
this.rl = null;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
function slugify(value) {
|
|
136
|
-
const slug = value
|
|
137
|
-
.trim()
|
|
138
|
-
.toLowerCase()
|
|
139
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
140
|
-
.replace(/^-+|-+$/g, '');
|
|
141
|
-
return slug.length > 0 ? slug : 'lingxia-app';
|
|
142
|
-
}
|
|
143
|
-
function titleCase(value) {
|
|
144
|
-
return value
|
|
145
|
-
.trim()
|
|
146
|
-
.split(/[\s\-_.]+/)
|
|
147
|
-
.filter(Boolean)
|
|
148
|
-
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
149
|
-
.join(' ') || 'LingXia App';
|
|
150
|
-
}
|
|
151
|
-
//# sourceMappingURL=create.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|