@vobs/cli 0.3.0 → 1.2.0
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/LICENSE +1 -1
- package/README.md +116 -0
- package/bin/vobs.js +12 -0
- package/dist/banner.cjs +37 -0
- package/dist/banner.cjs.map +1 -0
- package/dist/banner.d.cts +18 -0
- package/dist/banner.d.ts +18 -0
- package/dist/banner.js +33 -0
- package/dist/banner.js.map +1 -0
- package/dist/cli.cjs +416 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.cts +5 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.js +389 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add.cjs +113 -0
- package/dist/commands/add.cjs.map +1 -0
- package/dist/commands/add.d.cts +5 -0
- package/dist/commands/add.d.ts +5 -0
- package/dist/commands/add.js +88 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/build.cjs +55 -0
- package/dist/commands/build.cjs.map +1 -0
- package/dist/commands/build.d.cts +5 -0
- package/dist/commands/build.d.ts +5 -0
- package/dist/commands/build.js +49 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/dev.cjs +57 -0
- package/dist/commands/dev.cjs.map +1 -0
- package/dist/commands/dev.d.cts +5 -0
- package/dist/commands/dev.d.ts +5 -0
- package/dist/commands/dev.js +51 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/generate.cjs +153 -0
- package/dist/commands/generate.cjs.map +1 -0
- package/dist/commands/generate.d.cts +5 -0
- package/dist/commands/generate.d.ts +5 -0
- package/dist/commands/generate.js +126 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/index.cjs +331 -0
- package/dist/commands/index.cjs.map +1 -0
- package/dist/commands/index.d.cts +6 -0
- package/dist/commands/index.d.ts +6 -0
- package/dist/commands/index.js +300 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.cjs +187 -0
- package/dist/commands/init.cjs.map +1 -0
- package/dist/commands/init.d.cts +5 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.js +160 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/index.cjs +561 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +14 -0
- package/dist/index.d.ts +14 -18
- package/dist/index.js +489 -486
- package/dist/index.js.map +1 -0
- package/dist/repl.cjs +436 -0
- package/dist/repl.cjs.map +1 -0
- package/dist/repl.d.cts +8 -0
- package/dist/repl.d.ts +8 -0
- package/dist/repl.js +409 -0
- package/dist/repl.js.map +1 -0
- package/dist/start.cjs +543 -0
- package/dist/start.cjs.map +1 -0
- package/dist/start.d.cts +4 -0
- package/dist/start.d.ts +4 -0
- package/dist/start.js +516 -0
- package/dist/start.js.map +1 -0
- package/dist/templates/basic/.gitignore.hbs +4 -0
- package/dist/templates/basic/index.html.hbs +12 -0
- package/dist/templates/basic/package.json.hbs +25 -0
- package/dist/templates/basic/src/App.tsx.hbs +8 -0
- package/dist/templates/basic/src/app.css.hbs +32 -0
- package/dist/templates/basic/src/main.ts.hbs +20 -0
- package/dist/templates/basic/tsconfig.json.hbs +19 -0
- package/dist/templates/basic/vite.config.ts.hbs +10 -0
- package/dist/templates/component.hbs +7 -0
- package/dist/templates/page.hbs +7 -0
- package/dist/types.cjs +4 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +71 -0
- package/dist/types.d.ts +71 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/file.cjs +79 -0
- package/dist/utils/file.cjs.map +1 -0
- package/dist/utils/file.d.cts +14 -0
- package/dist/utils/file.d.ts +14 -0
- package/dist/utils/file.js +67 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/logger.cjs +45 -0
- package/dist/utils/logger.cjs.map +1 -0
- package/dist/utils/logger.d.cts +14 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.js +34 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pm.cjs +38 -0
- package/dist/utils/pm.cjs.map +1 -0
- package/dist/utils/pm.d.cts +9 -0
- package/dist/utils/pm.d.ts +9 -0
- package/dist/utils/pm.js +34 -0
- package/dist/utils/pm.js.map +1 -0
- package/package.json +30 -40
- package/src/banner.ts +41 -0
- package/src/cli.ts +108 -0
- package/src/commands/add.ts +37 -0
- package/src/commands/build.ts +17 -0
- package/src/commands/dev.ts +19 -0
- package/src/commands/generate.ts +87 -0
- package/src/commands/index.ts +5 -0
- package/src/commands/init.ts +84 -0
- package/src/index.ts +13 -0
- package/src/repl.ts +140 -0
- package/src/start.ts +20 -0
- package/src/templates/basic/.gitignore.hbs +4 -0
- package/src/templates/basic/index.html.hbs +12 -0
- package/src/templates/basic/package.json.hbs +25 -0
- package/src/templates/basic/src/App.tsx.hbs +8 -0
- package/src/templates/basic/src/app.css.hbs +32 -0
- package/src/templates/basic/src/main.ts.hbs +20 -0
- package/src/templates/basic/tsconfig.json.hbs +19 -0
- package/src/templates/basic/vite.config.ts.hbs +10 -0
- package/src/templates/component.hbs +7 -0
- package/src/templates/page.hbs +7 -0
- package/src/types.ts +78 -0
- package/src/utils/file.ts +77 -0
- package/src/utils/logger.ts +27 -0
- package/src/utils/pm.ts +42 -0
- package/dist/ai-server.d.ts +0 -11
- package/dist/ai-server.js +0 -212
- package/dist/context.d.ts +0 -12
- package/dist/context.js +0 -301
- package/dist/diagnose.d.ts +0 -12
- package/dist/diagnose.js +0 -122
- package/dist/enterprise-template.d.ts +0 -83
- package/dist/enterprise-template.js +0 -638
- package/dist/inspect.d.ts +0 -11
- package/dist/inspect.js +0 -576
- package/dist/logo/cli-logo.d.ts +0 -5
- package/dist/logo/cli-logo.js +0 -16
- package/dist/scaffold.d.ts +0 -23
- package/dist/scaffold.js +0 -448
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
* {
|
|
2
|
+
margin: 0;
|
|
3
|
+
padding: 0;
|
|
4
|
+
box-sizing: border-box;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
body {
|
|
8
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
9
|
+
line-height: 1.6;
|
|
10
|
+
color: #1e2233;
|
|
11
|
+
background: #f8f9fb;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
#app {
|
|
15
|
+
min-height: 100vh;
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
align-items: center;
|
|
19
|
+
justify-content: center;
|
|
20
|
+
text-align: center;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
h1 {
|
|
24
|
+
font-size: 2.5rem;
|
|
25
|
+
margin-bottom: 0.5rem;
|
|
26
|
+
color: #6366f1;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
p {
|
|
30
|
+
font-size: 1.125rem;
|
|
31
|
+
color: #6b7280;
|
|
32
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createVobs } from '@vobs/dom'
|
|
2
|
+
import { i18nPlugin } from '@vobs/i18n'
|
|
3
|
+
import { notificationPlugin } from '@vobs/notification'
|
|
4
|
+
import { routerPlugin } from '@vobs/router'
|
|
5
|
+
import { createBrowserHistory } from '@vobs/router/history'
|
|
6
|
+
import App from './App.js'
|
|
7
|
+
import './app.css'
|
|
8
|
+
|
|
9
|
+
const app = createVobs({
|
|
10
|
+
render: App,
|
|
11
|
+
plugins: [
|
|
12
|
+
i18nPlugin(),
|
|
13
|
+
notificationPlugin(),
|
|
14
|
+
routerPlugin({
|
|
15
|
+
history: createBrowserHistory('/'),
|
|
16
|
+
}),
|
|
17
|
+
],
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
app.mount('#app')
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2020",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"jsx": "preserve",
|
|
7
|
+
"jsxImportSource": "@vobs/dom",
|
|
8
|
+
"strict": true,
|
|
9
|
+
"noUnusedLocals": true,
|
|
10
|
+
"noUnusedParameters": true,
|
|
11
|
+
"noFallthroughCasesInSwitch": true,
|
|
12
|
+
"declaration": true,
|
|
13
|
+
"declarationMap": true,
|
|
14
|
+
"sourceMap": true,
|
|
15
|
+
"outDir": "dist",
|
|
16
|
+
"skipLibCheck": true
|
|
17
|
+
},
|
|
18
|
+
"include": ["src"]
|
|
19
|
+
}
|
package/dist/types.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"types.cjs"}
|
package/dist/types.d.cts
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
interface InitOptions {
|
|
2
|
+
/** Project name */
|
|
3
|
+
name: string;
|
|
4
|
+
/** Target directory */
|
|
5
|
+
targetDir: string;
|
|
6
|
+
/** Package manager to use */
|
|
7
|
+
packageManager?: 'pnpm' | 'npm' | 'yarn';
|
|
8
|
+
/** Use TypeScript */
|
|
9
|
+
typescript?: boolean;
|
|
10
|
+
/** Initialize git repo */
|
|
11
|
+
git?: boolean;
|
|
12
|
+
}
|
|
13
|
+
interface GenerateOptions {
|
|
14
|
+
/** Generator type: component | page */
|
|
15
|
+
type: 'component' | 'page';
|
|
16
|
+
/** Name of the generated artifact */
|
|
17
|
+
name: string;
|
|
18
|
+
/** Target directory (defaults to src/components/ or src/pages/) */
|
|
19
|
+
targetDir?: string;
|
|
20
|
+
}
|
|
21
|
+
interface DevOptions {
|
|
22
|
+
/** Vite config file path */
|
|
23
|
+
config?: string;
|
|
24
|
+
/** Port to listen on */
|
|
25
|
+
port?: number;
|
|
26
|
+
/** Open browser on start */
|
|
27
|
+
open?: boolean;
|
|
28
|
+
}
|
|
29
|
+
interface BuildOptions {
|
|
30
|
+
/** Vite config file path */
|
|
31
|
+
config?: string;
|
|
32
|
+
/** Output directory */
|
|
33
|
+
outDir?: string;
|
|
34
|
+
/** Mode (production | development) */
|
|
35
|
+
mode?: string;
|
|
36
|
+
}
|
|
37
|
+
interface AddOptions {
|
|
38
|
+
/** Package name to add */
|
|
39
|
+
package: string;
|
|
40
|
+
/** Save as dev dependency */
|
|
41
|
+
dev?: boolean;
|
|
42
|
+
}
|
|
43
|
+
interface TemplateContext {
|
|
44
|
+
/** Project name */
|
|
45
|
+
name: string;
|
|
46
|
+
/** Package name (kebab-case) */
|
|
47
|
+
packageName: string;
|
|
48
|
+
/** Use TypeScript */
|
|
49
|
+
typescript: boolean;
|
|
50
|
+
/** @vobs/* version to use */
|
|
51
|
+
vobsVersion: string;
|
|
52
|
+
}
|
|
53
|
+
interface ComponentTemplateContext {
|
|
54
|
+
/** Component name (PascalCase) */
|
|
55
|
+
name: string;
|
|
56
|
+
/** Component name (kebab-case) */
|
|
57
|
+
kebabName: string;
|
|
58
|
+
}
|
|
59
|
+
interface PageTemplateContext {
|
|
60
|
+
/** Page name (PascalCase) */
|
|
61
|
+
name: string;
|
|
62
|
+
/** Route path */
|
|
63
|
+
path: string;
|
|
64
|
+
}
|
|
65
|
+
type LoggerLevel = 'info' | 'success' | 'warn' | 'error';
|
|
66
|
+
interface CLIOptions {
|
|
67
|
+
/** Enable debug output */
|
|
68
|
+
debug?: boolean;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export type { AddOptions, BuildOptions, CLIOptions, ComponentTemplateContext, DevOptions, GenerateOptions, InitOptions, LoggerLevel, PageTemplateContext, TemplateContext };
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
interface InitOptions {
|
|
2
|
+
/** Project name */
|
|
3
|
+
name: string;
|
|
4
|
+
/** Target directory */
|
|
5
|
+
targetDir: string;
|
|
6
|
+
/** Package manager to use */
|
|
7
|
+
packageManager?: 'pnpm' | 'npm' | 'yarn';
|
|
8
|
+
/** Use TypeScript */
|
|
9
|
+
typescript?: boolean;
|
|
10
|
+
/** Initialize git repo */
|
|
11
|
+
git?: boolean;
|
|
12
|
+
}
|
|
13
|
+
interface GenerateOptions {
|
|
14
|
+
/** Generator type: component | page */
|
|
15
|
+
type: 'component' | 'page';
|
|
16
|
+
/** Name of the generated artifact */
|
|
17
|
+
name: string;
|
|
18
|
+
/** Target directory (defaults to src/components/ or src/pages/) */
|
|
19
|
+
targetDir?: string;
|
|
20
|
+
}
|
|
21
|
+
interface DevOptions {
|
|
22
|
+
/** Vite config file path */
|
|
23
|
+
config?: string;
|
|
24
|
+
/** Port to listen on */
|
|
25
|
+
port?: number;
|
|
26
|
+
/** Open browser on start */
|
|
27
|
+
open?: boolean;
|
|
28
|
+
}
|
|
29
|
+
interface BuildOptions {
|
|
30
|
+
/** Vite config file path */
|
|
31
|
+
config?: string;
|
|
32
|
+
/** Output directory */
|
|
33
|
+
outDir?: string;
|
|
34
|
+
/** Mode (production | development) */
|
|
35
|
+
mode?: string;
|
|
36
|
+
}
|
|
37
|
+
interface AddOptions {
|
|
38
|
+
/** Package name to add */
|
|
39
|
+
package: string;
|
|
40
|
+
/** Save as dev dependency */
|
|
41
|
+
dev?: boolean;
|
|
42
|
+
}
|
|
43
|
+
interface TemplateContext {
|
|
44
|
+
/** Project name */
|
|
45
|
+
name: string;
|
|
46
|
+
/** Package name (kebab-case) */
|
|
47
|
+
packageName: string;
|
|
48
|
+
/** Use TypeScript */
|
|
49
|
+
typescript: boolean;
|
|
50
|
+
/** @vobs/* version to use */
|
|
51
|
+
vobsVersion: string;
|
|
52
|
+
}
|
|
53
|
+
interface ComponentTemplateContext {
|
|
54
|
+
/** Component name (PascalCase) */
|
|
55
|
+
name: string;
|
|
56
|
+
/** Component name (kebab-case) */
|
|
57
|
+
kebabName: string;
|
|
58
|
+
}
|
|
59
|
+
interface PageTemplateContext {
|
|
60
|
+
/** Page name (PascalCase) */
|
|
61
|
+
name: string;
|
|
62
|
+
/** Route path */
|
|
63
|
+
path: string;
|
|
64
|
+
}
|
|
65
|
+
type LoggerLevel = 'info' | 'success' | 'warn' | 'error';
|
|
66
|
+
interface CLIOptions {
|
|
67
|
+
/** Enable debug output */
|
|
68
|
+
debug?: boolean;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export type { AddOptions, BuildOptions, CLIOptions, ComponentTemplateContext, DevOptions, GenerateOptions, InitOptions, LoggerLevel, PageTemplateContext, TemplateContext };
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"types.js"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs');
|
|
4
|
+
var path = require('path');
|
|
5
|
+
var url = require('url');
|
|
6
|
+
var Handlebars = require('handlebars');
|
|
7
|
+
|
|
8
|
+
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var Handlebars__default = /*#__PURE__*/_interopDefault(Handlebars);
|
|
12
|
+
|
|
13
|
+
var __defProp = Object.defineProperty;
|
|
14
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
15
|
+
var __dirname$1 = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('file.cjs', document.baseURI).href))));
|
|
16
|
+
var TEMPLATES_ROOT = path.resolve(__dirname$1, "..", "templates");
|
|
17
|
+
function getTemplatesDir() {
|
|
18
|
+
return TEMPLATES_ROOT;
|
|
19
|
+
}
|
|
20
|
+
__name(getTemplatesDir, "getTemplatesDir");
|
|
21
|
+
function renderTemplate(templatePath, context) {
|
|
22
|
+
const source = fs.readFileSync(templatePath, "utf-8");
|
|
23
|
+
const template = Handlebars__default.default.compile(source);
|
|
24
|
+
return template(context);
|
|
25
|
+
}
|
|
26
|
+
__name(renderTemplate, "renderTemplate");
|
|
27
|
+
function writeFile(dir, filename, content) {
|
|
28
|
+
const filePath = path.resolve(dir, filename);
|
|
29
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
30
|
+
fs.writeFileSync(filePath, content, "utf-8");
|
|
31
|
+
}
|
|
32
|
+
__name(writeFile, "writeFile");
|
|
33
|
+
function ensureDir(dir) {
|
|
34
|
+
if (!fs.existsSync(dir)) {
|
|
35
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
__name(ensureDir, "ensureDir");
|
|
39
|
+
function pathExists(path) {
|
|
40
|
+
return fs.existsSync(path);
|
|
41
|
+
}
|
|
42
|
+
__name(pathExists, "pathExists");
|
|
43
|
+
async function copyDirRecursive(srcDir, destDir, context) {
|
|
44
|
+
const { readdirSync } = await import('fs');
|
|
45
|
+
const { join } = await import('path');
|
|
46
|
+
const entries = readdirSync(srcDir, { withFileTypes: true });
|
|
47
|
+
for (const entry of entries) {
|
|
48
|
+
const srcPath = join(srcDir, entry.name);
|
|
49
|
+
const isHbs = entry.name.endsWith(".hbs");
|
|
50
|
+
const destName = isHbs ? entry.name.slice(0, -4) : entry.name;
|
|
51
|
+
const destPath = join(destDir, destName);
|
|
52
|
+
if (entry.isDirectory()) {
|
|
53
|
+
ensureDir(destPath);
|
|
54
|
+
await copyDirRecursive(srcPath, destPath, context);
|
|
55
|
+
} else if (isHbs) {
|
|
56
|
+
const content = renderTemplate(srcPath, context);
|
|
57
|
+
writeFile(destDir, destName, content);
|
|
58
|
+
} else {
|
|
59
|
+
const content = fs.readFileSync(srcPath, "utf-8");
|
|
60
|
+
writeFile(destDir, destName, content);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
__name(copyDirRecursive, "copyDirRecursive");
|
|
65
|
+
async function scaffoldProject(targetDir, context) {
|
|
66
|
+
const templateDir = path.resolve(TEMPLATES_ROOT, "basic");
|
|
67
|
+
ensureDir(targetDir);
|
|
68
|
+
await copyDirRecursive(templateDir, targetDir, context);
|
|
69
|
+
}
|
|
70
|
+
__name(scaffoldProject, "scaffoldProject");
|
|
71
|
+
|
|
72
|
+
exports.ensureDir = ensureDir;
|
|
73
|
+
exports.getTemplatesDir = getTemplatesDir;
|
|
74
|
+
exports.pathExists = pathExists;
|
|
75
|
+
exports.renderTemplate = renderTemplate;
|
|
76
|
+
exports.scaffoldProject = scaffoldProject;
|
|
77
|
+
exports.writeFile = writeFile;
|
|
78
|
+
//# sourceMappingURL=file.cjs.map
|
|
79
|
+
//# sourceMappingURL=file.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/file.ts"],"names":["__dirname","dirname","fileURLToPath","resolve","readFileSync","Handlebars","mkdirSync","writeFileSync","existsSync"],"mappings":"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","file":"file.cjs","sourcesContent":["import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs'\nimport { resolve, dirname } from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport Handlebars from 'handlebars'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\nconst TEMPLATES_ROOT = resolve(__dirname, '..', 'templates')\n\n/** Get the absolute path to the templates directory */\nexport function getTemplatesDir(): string {\n return TEMPLATES_ROOT\n}\n\n/** Read a template file and compile it with Handlebars */\nexport function renderTemplate(\n templatePath: string,\n context: Record<string, unknown>\n): string {\n const source = readFileSync(templatePath, 'utf-8')\n const template = Handlebars.compile(source)\n return template(context)\n}\n\n/** Write a file, creating parent directories if needed */\nexport function writeFile(dir: string, filename: string, content: string): void {\n const filePath = resolve(dir, filename)\n mkdirSync(dirname(filePath), { recursive: true })\n writeFileSync(filePath, content, 'utf-8')\n}\n\n/** Ensure a directory exists */\nexport function ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true })\n }\n}\n\n/** Check if a path exists */\nexport function pathExists(path: string): boolean {\n return existsSync(path)\n}\n\n/** Copy a template directory recursively, rendering each .hbs file */\nasync function copyDirRecursive(srcDir: string, destDir: string, context: Record<string, unknown>): Promise<void> {\n const { readdirSync } = await import('node:fs')\n const { join } = await import('node:path')\n\n const entries = readdirSync(srcDir, { withFileTypes: true })\n\n for (const entry of entries) {\n const srcPath = join(srcDir, entry.name)\n const isHbs = entry.name.endsWith('.hbs')\n const destName = isHbs ? entry.name.slice(0, -4) : entry.name\n const destPath = join(destDir, destName)\n\n if (entry.isDirectory()) {\n ensureDir(destPath)\n await copyDirRecursive(srcPath, destPath, context)\n } else if (isHbs) {\n const content = renderTemplate(srcPath, context)\n writeFile(destDir, destName, content)\n } else {\n const content = readFileSync(srcPath, 'utf-8')\n writeFile(destDir, destName, content)\n }\n }\n}\n\n/** Scaffold a project from the basic template */\nexport async function scaffoldProject(\n targetDir: string,\n context: Record<string, unknown>\n): Promise<void> {\n const templateDir = resolve(TEMPLATES_ROOT, 'basic')\n ensureDir(targetDir)\n await copyDirRecursive(templateDir, targetDir, context)\n}"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Get the absolute path to the templates directory */
|
|
2
|
+
declare function getTemplatesDir(): string;
|
|
3
|
+
/** Read a template file and compile it with Handlebars */
|
|
4
|
+
declare function renderTemplate(templatePath: string, context: Record<string, unknown>): string;
|
|
5
|
+
/** Write a file, creating parent directories if needed */
|
|
6
|
+
declare function writeFile(dir: string, filename: string, content: string): void;
|
|
7
|
+
/** Ensure a directory exists */
|
|
8
|
+
declare function ensureDir(dir: string): void;
|
|
9
|
+
/** Check if a path exists */
|
|
10
|
+
declare function pathExists(path: string): boolean;
|
|
11
|
+
/** Scaffold a project from the basic template */
|
|
12
|
+
declare function scaffoldProject(targetDir: string, context: Record<string, unknown>): Promise<void>;
|
|
13
|
+
|
|
14
|
+
export { ensureDir, getTemplatesDir, pathExists, renderTemplate, scaffoldProject, writeFile };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Get the absolute path to the templates directory */
|
|
2
|
+
declare function getTemplatesDir(): string;
|
|
3
|
+
/** Read a template file and compile it with Handlebars */
|
|
4
|
+
declare function renderTemplate(templatePath: string, context: Record<string, unknown>): string;
|
|
5
|
+
/** Write a file, creating parent directories if needed */
|
|
6
|
+
declare function writeFile(dir: string, filename: string, content: string): void;
|
|
7
|
+
/** Ensure a directory exists */
|
|
8
|
+
declare function ensureDir(dir: string): void;
|
|
9
|
+
/** Check if a path exists */
|
|
10
|
+
declare function pathExists(path: string): boolean;
|
|
11
|
+
/** Scaffold a project from the basic template */
|
|
12
|
+
declare function scaffoldProject(targetDir: string, context: Record<string, unknown>): Promise<void>;
|
|
13
|
+
|
|
14
|
+
export { ensureDir, getTemplatesDir, pathExists, renderTemplate, scaffoldProject, writeFile };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { readFileSync, mkdirSync, writeFileSync, existsSync } from 'fs';
|
|
2
|
+
import { dirname, resolve } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import Handlebars from 'handlebars';
|
|
5
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
|
+
var __dirname$1 = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
var TEMPLATES_ROOT = resolve(__dirname$1, "..", "templates");
|
|
10
|
+
function getTemplatesDir() {
|
|
11
|
+
return TEMPLATES_ROOT;
|
|
12
|
+
}
|
|
13
|
+
__name(getTemplatesDir, "getTemplatesDir");
|
|
14
|
+
function renderTemplate(templatePath, context) {
|
|
15
|
+
const source = readFileSync(templatePath, "utf-8");
|
|
16
|
+
const template = Handlebars.compile(source);
|
|
17
|
+
return template(context);
|
|
18
|
+
}
|
|
19
|
+
__name(renderTemplate, "renderTemplate");
|
|
20
|
+
function writeFile(dir, filename, content) {
|
|
21
|
+
const filePath = resolve(dir, filename);
|
|
22
|
+
mkdirSync(dirname(filePath), { recursive: true });
|
|
23
|
+
writeFileSync(filePath, content, "utf-8");
|
|
24
|
+
}
|
|
25
|
+
__name(writeFile, "writeFile");
|
|
26
|
+
function ensureDir(dir) {
|
|
27
|
+
if (!existsSync(dir)) {
|
|
28
|
+
mkdirSync(dir, { recursive: true });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
__name(ensureDir, "ensureDir");
|
|
32
|
+
function pathExists(path) {
|
|
33
|
+
return existsSync(path);
|
|
34
|
+
}
|
|
35
|
+
__name(pathExists, "pathExists");
|
|
36
|
+
async function copyDirRecursive(srcDir, destDir, context) {
|
|
37
|
+
const { readdirSync } = await import('fs');
|
|
38
|
+
const { join } = await import('path');
|
|
39
|
+
const entries = readdirSync(srcDir, { withFileTypes: true });
|
|
40
|
+
for (const entry of entries) {
|
|
41
|
+
const srcPath = join(srcDir, entry.name);
|
|
42
|
+
const isHbs = entry.name.endsWith(".hbs");
|
|
43
|
+
const destName = isHbs ? entry.name.slice(0, -4) : entry.name;
|
|
44
|
+
const destPath = join(destDir, destName);
|
|
45
|
+
if (entry.isDirectory()) {
|
|
46
|
+
ensureDir(destPath);
|
|
47
|
+
await copyDirRecursive(srcPath, destPath, context);
|
|
48
|
+
} else if (isHbs) {
|
|
49
|
+
const content = renderTemplate(srcPath, context);
|
|
50
|
+
writeFile(destDir, destName, content);
|
|
51
|
+
} else {
|
|
52
|
+
const content = readFileSync(srcPath, "utf-8");
|
|
53
|
+
writeFile(destDir, destName, content);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
__name(copyDirRecursive, "copyDirRecursive");
|
|
58
|
+
async function scaffoldProject(targetDir, context) {
|
|
59
|
+
const templateDir = resolve(TEMPLATES_ROOT, "basic");
|
|
60
|
+
ensureDir(targetDir);
|
|
61
|
+
await copyDirRecursive(templateDir, targetDir, context);
|
|
62
|
+
}
|
|
63
|
+
__name(scaffoldProject, "scaffoldProject");
|
|
64
|
+
|
|
65
|
+
export { ensureDir, getTemplatesDir, pathExists, renderTemplate, scaffoldProject, writeFile };
|
|
66
|
+
//# sourceMappingURL=file.js.map
|
|
67
|
+
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/file.ts"],"names":["__dirname"],"mappings":"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","file":"file.js","sourcesContent":["import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs'\nimport { resolve, dirname } from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport Handlebars from 'handlebars'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\nconst TEMPLATES_ROOT = resolve(__dirname, '..', 'templates')\n\n/** Get the absolute path to the templates directory */\nexport function getTemplatesDir(): string {\n return TEMPLATES_ROOT\n}\n\n/** Read a template file and compile it with Handlebars */\nexport function renderTemplate(\n templatePath: string,\n context: Record<string, unknown>\n): string {\n const source = readFileSync(templatePath, 'utf-8')\n const template = Handlebars.compile(source)\n return template(context)\n}\n\n/** Write a file, creating parent directories if needed */\nexport function writeFile(dir: string, filename: string, content: string): void {\n const filePath = resolve(dir, filename)\n mkdirSync(dirname(filePath), { recursive: true })\n writeFileSync(filePath, content, 'utf-8')\n}\n\n/** Ensure a directory exists */\nexport function ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true })\n }\n}\n\n/** Check if a path exists */\nexport function pathExists(path: string): boolean {\n return existsSync(path)\n}\n\n/** Copy a template directory recursively, rendering each .hbs file */\nasync function copyDirRecursive(srcDir: string, destDir: string, context: Record<string, unknown>): Promise<void> {\n const { readdirSync } = await import('node:fs')\n const { join } = await import('node:path')\n\n const entries = readdirSync(srcDir, { withFileTypes: true })\n\n for (const entry of entries) {\n const srcPath = join(srcDir, entry.name)\n const isHbs = entry.name.endsWith('.hbs')\n const destName = isHbs ? entry.name.slice(0, -4) : entry.name\n const destPath = join(destDir, destName)\n\n if (entry.isDirectory()) {\n ensureDir(destPath)\n await copyDirRecursive(srcPath, destPath, context)\n } else if (isHbs) {\n const content = renderTemplate(srcPath, context)\n writeFile(destDir, destName, content)\n } else {\n const content = readFileSync(srcPath, 'utf-8')\n writeFile(destDir, destName, content)\n }\n }\n}\n\n/** Scaffold a project from the basic template */\nexport async function scaffoldProject(\n targetDir: string,\n context: Record<string, unknown>\n): Promise<void> {\n const templateDir = resolve(TEMPLATES_ROOT, 'basic')\n ensureDir(targetDir)\n await copyDirRecursive(templateDir, targetDir, context)\n}"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var pc = require('picocolors');
|
|
4
|
+
|
|
5
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
+
|
|
7
|
+
var pc__default = /*#__PURE__*/_interopDefault(pc);
|
|
8
|
+
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
11
|
+
function timestamp() {
|
|
12
|
+
return pc__default.default.dim(`[${(/* @__PURE__ */ new Date()).toLocaleTimeString()}]`);
|
|
13
|
+
}
|
|
14
|
+
__name(timestamp, "timestamp");
|
|
15
|
+
function info(msg) {
|
|
16
|
+
console.log(`${timestamp()} ${pc__default.default.cyan("\u2139")} ${msg}`);
|
|
17
|
+
}
|
|
18
|
+
__name(info, "info");
|
|
19
|
+
function success(msg) {
|
|
20
|
+
console.log(`${timestamp()} ${pc__default.default.green("\u2714")} ${msg}`);
|
|
21
|
+
}
|
|
22
|
+
__name(success, "success");
|
|
23
|
+
function warn(msg) {
|
|
24
|
+
console.log(`${timestamp()} ${pc__default.default.yellow("\u26A0")} ${msg}`);
|
|
25
|
+
}
|
|
26
|
+
__name(warn, "warn");
|
|
27
|
+
function error(msg) {
|
|
28
|
+
console.error(`${timestamp()} ${pc__default.default.red("\u2716")} ${msg}`);
|
|
29
|
+
}
|
|
30
|
+
__name(error, "error");
|
|
31
|
+
function step(msg) {
|
|
32
|
+
console.log(`
|
|
33
|
+
${pc__default.default.bold(pc__default.default.cyan(msg))}`);
|
|
34
|
+
}
|
|
35
|
+
__name(step, "step");
|
|
36
|
+
var logger = { info, success, warn, error, step };
|
|
37
|
+
|
|
38
|
+
exports.error = error;
|
|
39
|
+
exports.info = info;
|
|
40
|
+
exports.logger = logger;
|
|
41
|
+
exports.step = step;
|
|
42
|
+
exports.success = success;
|
|
43
|
+
exports.warn = warn;
|
|
44
|
+
//# sourceMappingURL=logger.cjs.map
|
|
45
|
+
//# sourceMappingURL=logger.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/logger.ts"],"names":["pc"],"mappings":";;;;;;;;;;AAEA,SAAS,SAAA,GAAoB;AAC3B,EAAA,OAAOA,mBAAA,CAAG,IAAI,CAAA,CAAA,EAAA,iBAAI,IAAI,MAAK,EAAE,kBAAA,EAAoB,CAAA,CAAA,CAAG,CAAA;AACtD;AAFS,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;AAIF,SAAS,KAAK,GAAA,EAAmB;AACtC,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,SAAA,EAAW,CAAA,CAAA,EAAIA,mBAAA,CAAG,IAAA,CAAK,QAAG,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AACrD;AAFgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAIT,SAAS,QAAQ,GAAA,EAAmB;AACzC,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,SAAA,EAAW,CAAA,CAAA,EAAIA,mBAAA,CAAG,KAAA,CAAM,QAAG,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AACtD;AAFgB,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA;AAIT,SAAS,KAAK,GAAA,EAAmB;AACtC,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,SAAA,EAAW,CAAA,CAAA,EAAIA,mBAAA,CAAG,MAAA,CAAO,QAAG,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AACvD;AAFgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAIT,SAAS,MAAM,GAAA,EAAmB;AACvC,EAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,SAAA,EAAW,CAAA,CAAA,EAAIA,mBAAA,CAAG,GAAA,CAAI,QAAG,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AACtD;AAFgB,MAAA,CAAA,KAAA,EAAA,OAAA,CAAA;AAIT,SAAS,KAAK,GAAA,EAAmB;AACtC,EAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,EAAA,EAAOA,oBAAG,IAAA,CAAKA,mBAAA,CAAG,KAAK,GAAG,CAAC,CAAC,CAAA,CAAE,CAAA;AAC5C;AAFgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAIT,IAAM,SAAS,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,OAAO,IAAA","file":"logger.cjs","sourcesContent":["import pc from 'picocolors'\n\nfunction timestamp(): string {\n return pc.dim(`[${new Date().toLocaleTimeString()}]`)\n}\n\nexport function info(msg: string): void {\n console.log(`${timestamp()} ${pc.cyan('ℹ')} ${msg}`)\n}\n\nexport function success(msg: string): void {\n console.log(`${timestamp()} ${pc.green('✔')} ${msg}`)\n}\n\nexport function warn(msg: string): void {\n console.log(`${timestamp()} ${pc.yellow('⚠')} ${msg}`)\n}\n\nexport function error(msg: string): void {\n console.error(`${timestamp()} ${pc.red('✖')} ${msg}`)\n}\n\nexport function step(msg: string): void {\n console.log(`\\n ${pc.bold(pc.cyan(msg))}`)\n}\n\nexport const logger = { info, success, warn, error, step }"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare function info(msg: string): void;
|
|
2
|
+
declare function success(msg: string): void;
|
|
3
|
+
declare function warn(msg: string): void;
|
|
4
|
+
declare function error(msg: string): void;
|
|
5
|
+
declare function step(msg: string): void;
|
|
6
|
+
declare const logger: {
|
|
7
|
+
info: typeof info;
|
|
8
|
+
success: typeof success;
|
|
9
|
+
warn: typeof warn;
|
|
10
|
+
error: typeof error;
|
|
11
|
+
step: typeof step;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { error, info, logger, step, success, warn };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare function info(msg: string): void;
|
|
2
|
+
declare function success(msg: string): void;
|
|
3
|
+
declare function warn(msg: string): void;
|
|
4
|
+
declare function error(msg: string): void;
|
|
5
|
+
declare function step(msg: string): void;
|
|
6
|
+
declare const logger: {
|
|
7
|
+
info: typeof info;
|
|
8
|
+
success: typeof success;
|
|
9
|
+
warn: typeof warn;
|
|
10
|
+
error: typeof error;
|
|
11
|
+
step: typeof step;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { error, info, logger, step, success, warn };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import pc from 'picocolors';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
5
|
+
function timestamp() {
|
|
6
|
+
return pc.dim(`[${(/* @__PURE__ */ new Date()).toLocaleTimeString()}]`);
|
|
7
|
+
}
|
|
8
|
+
__name(timestamp, "timestamp");
|
|
9
|
+
function info(msg) {
|
|
10
|
+
console.log(`${timestamp()} ${pc.cyan("\u2139")} ${msg}`);
|
|
11
|
+
}
|
|
12
|
+
__name(info, "info");
|
|
13
|
+
function success(msg) {
|
|
14
|
+
console.log(`${timestamp()} ${pc.green("\u2714")} ${msg}`);
|
|
15
|
+
}
|
|
16
|
+
__name(success, "success");
|
|
17
|
+
function warn(msg) {
|
|
18
|
+
console.log(`${timestamp()} ${pc.yellow("\u26A0")} ${msg}`);
|
|
19
|
+
}
|
|
20
|
+
__name(warn, "warn");
|
|
21
|
+
function error(msg) {
|
|
22
|
+
console.error(`${timestamp()} ${pc.red("\u2716")} ${msg}`);
|
|
23
|
+
}
|
|
24
|
+
__name(error, "error");
|
|
25
|
+
function step(msg) {
|
|
26
|
+
console.log(`
|
|
27
|
+
${pc.bold(pc.cyan(msg))}`);
|
|
28
|
+
}
|
|
29
|
+
__name(step, "step");
|
|
30
|
+
var logger = { info, success, warn, error, step };
|
|
31
|
+
|
|
32
|
+
export { error, info, logger, step, success, warn };
|
|
33
|
+
//# sourceMappingURL=logger.js.map
|
|
34
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;AAEA,SAAS,SAAA,GAAoB;AAC3B,EAAA,OAAO,EAAA,CAAG,IAAI,CAAA,CAAA,EAAA,iBAAI,IAAI,MAAK,EAAE,kBAAA,EAAoB,CAAA,CAAA,CAAG,CAAA;AACtD;AAFS,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;AAIF,SAAS,KAAK,GAAA,EAAmB;AACtC,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,SAAA,EAAW,CAAA,CAAA,EAAI,EAAA,CAAG,IAAA,CAAK,QAAG,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AACrD;AAFgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAIT,SAAS,QAAQ,GAAA,EAAmB;AACzC,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,SAAA,EAAW,CAAA,CAAA,EAAI,EAAA,CAAG,KAAA,CAAM,QAAG,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AACtD;AAFgB,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA;AAIT,SAAS,KAAK,GAAA,EAAmB;AACtC,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,SAAA,EAAW,CAAA,CAAA,EAAI,EAAA,CAAG,MAAA,CAAO,QAAG,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AACvD;AAFgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAIT,SAAS,MAAM,GAAA,EAAmB;AACvC,EAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,SAAA,EAAW,CAAA,CAAA,EAAI,EAAA,CAAG,GAAA,CAAI,QAAG,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AACtD;AAFgB,MAAA,CAAA,KAAA,EAAA,OAAA,CAAA;AAIT,SAAS,KAAK,GAAA,EAAmB;AACtC,EAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,EAAA,EAAO,GAAG,IAAA,CAAK,EAAA,CAAG,KAAK,GAAG,CAAC,CAAC,CAAA,CAAE,CAAA;AAC5C;AAFgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAIT,IAAM,SAAS,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,OAAO,IAAA","file":"logger.js","sourcesContent":["import pc from 'picocolors'\n\nfunction timestamp(): string {\n return pc.dim(`[${new Date().toLocaleTimeString()}]`)\n}\n\nexport function info(msg: string): void {\n console.log(`${timestamp()} ${pc.cyan('ℹ')} ${msg}`)\n}\n\nexport function success(msg: string): void {\n console.log(`${timestamp()} ${pc.green('✔')} ${msg}`)\n}\n\nexport function warn(msg: string): void {\n console.log(`${timestamp()} ${pc.yellow('⚠')} ${msg}`)\n}\n\nexport function error(msg: string): void {\n console.error(`${timestamp()} ${pc.red('✖')} ${msg}`)\n}\n\nexport function step(msg: string): void {\n console.log(`\\n ${pc.bold(pc.cyan(msg))}`)\n}\n\nexport const logger = { info, success, warn, error, step }"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs');
|
|
4
|
+
var path = require('path');
|
|
5
|
+
var child_process = require('child_process');
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
function detectPackageManager(targetDir) {
|
|
10
|
+
if (targetDir) {
|
|
11
|
+
if (fs.existsSync(path.resolve(targetDir, "pnpm-lock.yaml"))) return "pnpm";
|
|
12
|
+
if (fs.existsSync(path.resolve(targetDir, "yarn.lock"))) return "yarn";
|
|
13
|
+
if (fs.existsSync(path.resolve(targetDir, "package-lock.json"))) return "npm";
|
|
14
|
+
}
|
|
15
|
+
const userAgent = process.env.npm_config_user_agent || "";
|
|
16
|
+
if (userAgent.startsWith("pnpm")) return "pnpm";
|
|
17
|
+
if (userAgent.startsWith("yarn")) return "yarn";
|
|
18
|
+
if (userAgent.startsWith("npm")) return "npm";
|
|
19
|
+
return "pnpm";
|
|
20
|
+
}
|
|
21
|
+
__name(detectPackageManager, "detectPackageManager");
|
|
22
|
+
function installDependencies(targetDir, pm) {
|
|
23
|
+
const cmd = pm === "yarn" ? "yarn" : `${pm} install`;
|
|
24
|
+
child_process.execSync(cmd, { cwd: targetDir, stdio: "inherit" });
|
|
25
|
+
}
|
|
26
|
+
__name(installDependencies, "installDependencies");
|
|
27
|
+
function addPackage(targetDir, pm, pkg, dev) {
|
|
28
|
+
const installFlag = dev ? "-D" : "";
|
|
29
|
+
const cmd = pm === "npm" ? `npm install ${installFlag} ${pkg}` : pm === "yarn" ? `yarn add ${installFlag} ${pkg}` : `pnpm add ${installFlag} ${pkg}`;
|
|
30
|
+
child_process.execSync(cmd, { cwd: targetDir, stdio: "inherit" });
|
|
31
|
+
}
|
|
32
|
+
__name(addPackage, "addPackage");
|
|
33
|
+
|
|
34
|
+
exports.addPackage = addPackage;
|
|
35
|
+
exports.detectPackageManager = detectPackageManager;
|
|
36
|
+
exports.installDependencies = installDependencies;
|
|
37
|
+
//# sourceMappingURL=pm.cjs.map
|
|
38
|
+
//# sourceMappingURL=pm.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/pm.ts"],"names":["existsSync","resolve","execSync"],"mappings":";;;;;;;;AAOO,SAAS,qBAAqB,SAAA,EAAoC;AAEvE,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,IAAIA,cAAWC,YAAA,CAAQ,SAAA,EAAW,gBAAgB,CAAC,GAAG,OAAO,MAAA;AAC7D,IAAA,IAAID,cAAWC,YAAA,CAAQ,SAAA,EAAW,WAAW,CAAC,GAAG,OAAO,MAAA;AACxD,IAAA,IAAID,cAAWC,YAAA,CAAQ,SAAA,EAAW,mBAAmB,CAAC,GAAG,OAAO,KAAA;AAAA,EAClE;AAGA,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,GAAA,CAAI,qBAAA,IAAyB,EAAA;AACvD,EAAA,IAAI,SAAA,CAAU,UAAA,CAAW,MAAM,CAAA,EAAG,OAAO,MAAA;AACzC,EAAA,IAAI,SAAA,CAAU,UAAA,CAAW,MAAM,CAAA,EAAG,OAAO,MAAA;AACzC,EAAA,IAAI,SAAA,CAAU,UAAA,CAAW,KAAK,CAAA,EAAG,OAAO,KAAA;AAGxC,EAAA,OAAO,MAAA;AACT;AAhBgB,MAAA,CAAA,oBAAA,EAAA,sBAAA,CAAA;AAmBT,SAAS,mBAAA,CAAoB,WAAmB,EAAA,EAA0B;AAC/E,EAAA,MAAM,GAAA,GAAM,EAAA,KAAO,MAAA,GAAS,MAAA,GAAS,GAAG,EAAE,CAAA,QAAA,CAAA;AAC1C,EAAAC,sBAAA,CAAS,KAAK,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,WAAW,CAAA;AACpD;AAHgB,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;AAMT,SAAS,UAAA,CAAW,SAAA,EAAmB,EAAA,EAAoB,GAAA,EAAa,GAAA,EAAoB;AACjG,EAAA,MAAM,WAAA,GAAc,MAAM,IAAA,GAAO,EAAA;AACjC,EAAA,MAAM,MAAM,EAAA,KAAO,KAAA,GACf,eAAe,WAAW,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,GACjC,EAAA,KAAO,MAAA,GACL,CAAA,SAAA,EAAY,WAAW,CAAA,CAAA,EAAI,GAAG,KAC9B,CAAA,SAAA,EAAY,WAAW,IAAI,GAAG,CAAA,CAAA;AAEpC,EAAAA,sBAAA,CAAS,KAAK,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,WAAW,CAAA;AACpD;AATgB,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA","file":"pm.cjs","sourcesContent":["import { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\nimport { execSync } from 'node:child_process'\n\nexport type PackageManager = 'pnpm' | 'npm' | 'yarn'\n\n/** Detect the package manager to use */\nexport function detectPackageManager(targetDir?: string): PackageManager {\n // Check if a specific package manager is locked\n if (targetDir) {\n if (existsSync(resolve(targetDir, 'pnpm-lock.yaml'))) return 'pnpm'\n if (existsSync(resolve(targetDir, 'yarn.lock'))) return 'yarn'\n if (existsSync(resolve(targetDir, 'package-lock.json'))) return 'npm'\n }\n\n // Check for global preference\n const userAgent = process.env.npm_config_user_agent || ''\n if (userAgent.startsWith('pnpm')) return 'pnpm'\n if (userAgent.startsWith('yarn')) return 'yarn'\n if (userAgent.startsWith('npm')) return 'npm'\n\n // Default to pnpm\n return 'pnpm'\n}\n\n/** Install dependencies in a directory */\nexport function installDependencies(targetDir: string, pm: PackageManager): void {\n const cmd = pm === 'yarn' ? 'yarn' : `${pm} install`\n execSync(cmd, { cwd: targetDir, stdio: 'inherit' })\n}\n\n/** Add a package as a dependency */\nexport function addPackage(targetDir: string, pm: PackageManager, pkg: string, dev: boolean): void {\n const installFlag = dev ? '-D' : ''\n const cmd = pm === 'npm'\n ? `npm install ${installFlag} ${pkg}`\n : pm === 'yarn'\n ? `yarn add ${installFlag} ${pkg}`\n : `pnpm add ${installFlag} ${pkg}`\n\n execSync(cmd, { cwd: targetDir, stdio: 'inherit' })\n}"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type PackageManager = 'pnpm' | 'npm' | 'yarn';
|
|
2
|
+
/** Detect the package manager to use */
|
|
3
|
+
declare function detectPackageManager(targetDir?: string): PackageManager;
|
|
4
|
+
/** Install dependencies in a directory */
|
|
5
|
+
declare function installDependencies(targetDir: string, pm: PackageManager): void;
|
|
6
|
+
/** Add a package as a dependency */
|
|
7
|
+
declare function addPackage(targetDir: string, pm: PackageManager, pkg: string, dev: boolean): void;
|
|
8
|
+
|
|
9
|
+
export { type PackageManager, addPackage, detectPackageManager, installDependencies };
|