atxp 1.0.2 → 1.0.4
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/README.md +62 -24
- package/dist/check-dependencies.d.ts +12 -0
- package/dist/check-dependencies.d.ts.map +1 -0
- package/dist/check-dependencies.js +58 -0
- package/dist/check-dependencies.js.map +1 -0
- package/dist/check-dependencies.test.d.ts +2 -0
- package/dist/check-dependencies.test.d.ts.map +1 -0
- package/dist/check-dependencies.test.js +27 -0
- package/dist/check-dependencies.test.js.map +1 -0
- package/dist/create-project.js +9 -2
- package/dist/create-project.js.map +1 -1
- package/dist/create-project.test.d.ts +2 -0
- package/dist/create-project.test.d.ts.map +1 -0
- package/dist/create-project.test.js +19 -0
- package/dist/create-project.test.js.map +1 -0
- package/dist/git-optimization.test.d.ts +2 -0
- package/dist/git-optimization.test.d.ts.map +1 -0
- package/dist/git-optimization.test.js +48 -0
- package/dist/git-optimization.test.js.map +1 -0
- package/dist/help.d.ts +2 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +35 -0
- package/dist/help.js.map +1 -0
- package/dist/index.js +81 -8
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +11 -2
- package/dist/index.test.js.map +1 -1
- package/dist/run-demo.d.ts +9 -1
- package/dist/run-demo.d.ts.map +1 -1
- package/dist/run-demo.js +69 -30
- package/dist/run-demo.js.map +1 -1
- package/dist/run-demo.test.d.ts +2 -0
- package/dist/run-demo.test.d.ts.map +1 -0
- package/dist/run-demo.test.js +17 -0
- package/dist/run-demo.test.js.map +1 -0
- package/package.json +3 -4
package/README.md
CHANGED
|
@@ -1,42 +1,80 @@
|
|
|
1
1
|
# ATXP CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Command line tool for creating ATXP projects and running demos.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Installation
|
|
6
6
|
|
|
7
|
-
### Create a new ATXP project
|
|
8
7
|
```bash
|
|
9
|
-
|
|
8
|
+
# Run directly with npx (recommended)
|
|
9
|
+
npx atxp
|
|
10
|
+
|
|
11
|
+
# Or install globally
|
|
12
|
+
npm install -g atxp
|
|
10
13
|
```
|
|
11
|
-
Creates a new project with interactive prompts for:
|
|
12
|
-
- Project name and template
|
|
13
|
-
- Solana network configuration
|
|
14
|
-
- Environment setup
|
|
15
|
-
- Git initialization
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
18
17
|
```bash
|
|
18
|
+
# Show help and available commands
|
|
19
19
|
npx atxp
|
|
20
|
+
|
|
21
|
+
# Run the interactive demo
|
|
22
|
+
npx atxp demo
|
|
23
|
+
|
|
24
|
+
# Create a new project
|
|
25
|
+
npx atxp create my-app
|
|
20
26
|
```
|
|
21
|
-
Downloads and runs the latest ATXP agent demo from GitHub, showcasing a full web-based agent with MCP servers.
|
|
22
27
|
|
|
23
|
-
##
|
|
28
|
+
## Commands
|
|
29
|
+
|
|
30
|
+
### `npx atxp`
|
|
31
|
+
Shows help information and available commands.
|
|
24
32
|
|
|
25
|
-
|
|
33
|
+
### `npx atxp demo [options]`
|
|
34
|
+
Runs the interactive ATXP demo application.
|
|
26
35
|
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
36
|
+
**Options:**
|
|
37
|
+
- `--verbose, -v` - Show detailed logs
|
|
38
|
+
- `--refresh` - Force refresh demo from GitHub
|
|
39
|
+
- `--port, -p` - Specify port number (default: 8016)
|
|
40
|
+
- `--dir, -d` - Specify demo directory (default: ~/.cache/atxp/demo)
|
|
31
41
|
|
|
32
|
-
|
|
42
|
+
**Examples:**
|
|
43
|
+
```bash
|
|
44
|
+
npx atxp demo
|
|
45
|
+
npx atxp demo --verbose
|
|
46
|
+
npx atxp demo --port 3000
|
|
47
|
+
npx atxp demo --dir ./my-demo
|
|
48
|
+
npx atxp demo --port 3000 --dir ./my-demo --verbose
|
|
49
|
+
npx atxp demo --refresh
|
|
50
|
+
```
|
|
33
51
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
52
|
+
### `npx atxp create [project-name]`
|
|
53
|
+
Creates a new ATXP project with the specified name.
|
|
54
|
+
|
|
55
|
+
**Examples:**
|
|
56
|
+
```bash
|
|
57
|
+
npx atxp create my-app
|
|
58
|
+
npx atxp create my-agent-project
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### `npx atxp help`
|
|
62
|
+
Displays help information (same as running `npx atxp`).
|
|
63
|
+
|
|
64
|
+
## About ATXP
|
|
65
|
+
|
|
66
|
+
ATXP is a platform for building web agents with OAuth and payment capabilities. This CLI tool helps you:
|
|
67
|
+
|
|
68
|
+
- Explore ATXP features through interactive demos
|
|
69
|
+
- Bootstrap new projects with ATXP integration
|
|
70
|
+
- Set up development environments quickly
|
|
37
71
|
|
|
38
72
|
## Learn More
|
|
39
73
|
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
74
|
+
- Website: https://atxp.dev
|
|
75
|
+
- GitHub: https://github.com/atxp-dev/cli
|
|
76
|
+
- Documentation: https://docs.atxp.dev
|
|
77
|
+
|
|
78
|
+
## License
|
|
79
|
+
|
|
80
|
+
MIT
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface DependencyCheck {
|
|
2
|
+
name: string;
|
|
3
|
+
command: string;
|
|
4
|
+
args: string[];
|
|
5
|
+
requiredFor: string[];
|
|
6
|
+
installInstructions: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function checkDependency(dependency: DependencyCheck): Promise<boolean>;
|
|
9
|
+
export declare function checkAllDependencies(command?: string): Promise<boolean>;
|
|
10
|
+
export declare function showDependencyError(command: string): void;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=check-dependencies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-dependencies.d.ts","sourceRoot":"","sources":["../src/check-dependencies.ts"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAmBD,wBAAsB,eAAe,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAcnF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAqB7E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAOzD"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
const DEPENDENCIES = [
|
|
4
|
+
{
|
|
5
|
+
name: 'Git',
|
|
6
|
+
command: 'git',
|
|
7
|
+
args: ['--version'],
|
|
8
|
+
requiredFor: ['demo', 'create'],
|
|
9
|
+
installInstructions: 'Please install Git from https://git-scm.com/downloads'
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
name: 'npm',
|
|
13
|
+
command: 'npm',
|
|
14
|
+
args: ['--version'],
|
|
15
|
+
requiredFor: ['demo'],
|
|
16
|
+
installInstructions: 'Please install Node.js (which includes npm) from https://nodejs.org/'
|
|
17
|
+
}
|
|
18
|
+
];
|
|
19
|
+
export async function checkDependency(dependency) {
|
|
20
|
+
return new Promise((resolve) => {
|
|
21
|
+
const process = spawn(dependency.command, dependency.args, {
|
|
22
|
+
stdio: 'ignore'
|
|
23
|
+
});
|
|
24
|
+
process.on('close', (code) => {
|
|
25
|
+
resolve(code === 0);
|
|
26
|
+
});
|
|
27
|
+
process.on('error', () => {
|
|
28
|
+
resolve(false);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export async function checkAllDependencies(command) {
|
|
33
|
+
let allDependenciesOk = true;
|
|
34
|
+
for (const dependency of DEPENDENCIES) {
|
|
35
|
+
// If a specific command is provided, only check dependencies for that command
|
|
36
|
+
if (command && !dependency.requiredFor.includes(command)) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const isAvailable = await checkDependency(dependency);
|
|
40
|
+
if (!isAvailable) {
|
|
41
|
+
console.error(chalk.red(`✗ ${dependency.name} is not installed or not available in PATH`));
|
|
42
|
+
console.error(chalk.yellow(` Required for: ${dependency.requiredFor.join(', ')}`));
|
|
43
|
+
console.error(chalk.white(` ${dependency.installInstructions}`));
|
|
44
|
+
console.error('');
|
|
45
|
+
allDependenciesOk = false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return allDependenciesOk;
|
|
49
|
+
}
|
|
50
|
+
export function showDependencyError(command) {
|
|
51
|
+
console.error(chalk.red(`Cannot run "${command}" command due to missing dependencies.`));
|
|
52
|
+
console.error(chalk.yellow('Please install the required dependencies and try again.'));
|
|
53
|
+
console.error('');
|
|
54
|
+
console.error(chalk.white('For help with installation, visit:'));
|
|
55
|
+
console.error(chalk.blue(' Git: https://git-scm.com/downloads'));
|
|
56
|
+
console.error(chalk.blue(' Node.js/npm: https://nodejs.org/'));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=check-dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-dependencies.js","sourceRoot":"","sources":["../src/check-dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,MAAM,YAAY,GAAsB;IACtC;QACE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,WAAW,CAAC;QACnB,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC/B,mBAAmB,EAAE,uDAAuD;KAC7E;IACD;QACE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,WAAW,CAAC;QACnB,WAAW,EAAE,CAAC,MAAM,CAAC;QACrB,mBAAmB,EAAE,sEAAsE;KAC5F;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAA2B;IAC/D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;YACzD,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAgB;IACzD,IAAI,iBAAiB,GAAG,IAAI,CAAC;IAE7B,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;QACtC,8EAA8E;QAC9E,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACzD,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,IAAI,4CAA4C,CAAC,CAAC,CAAC;YAC3F,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,iBAAiB,GAAG,KAAK,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,OAAO,wCAAwC,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAC;IACvF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-dependencies.test.d.ts","sourceRoot":"","sources":["../src/check-dependencies.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { checkDependency } from './check-dependencies.js';
|
|
3
|
+
describe('checkDependency', () => {
|
|
4
|
+
it('should return true for available commands', async () => {
|
|
5
|
+
const nodeDependency = {
|
|
6
|
+
name: 'Node.js',
|
|
7
|
+
command: 'node',
|
|
8
|
+
args: ['--version'],
|
|
9
|
+
requiredFor: ['demo'],
|
|
10
|
+
installInstructions: 'Please install Node.js'
|
|
11
|
+
};
|
|
12
|
+
const result = await checkDependency(nodeDependency);
|
|
13
|
+
expect(result).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
it('should return false for unavailable commands', async () => {
|
|
16
|
+
const fakeDependency = {
|
|
17
|
+
name: 'Fake Command',
|
|
18
|
+
command: 'nonexistent-command-12345',
|
|
19
|
+
args: ['--version'],
|
|
20
|
+
requiredFor: ['demo'],
|
|
21
|
+
installInstructions: 'This command does not exist'
|
|
22
|
+
};
|
|
23
|
+
const result = await checkDependency(fakeDependency);
|
|
24
|
+
expect(result).toBe(false);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=check-dependencies.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-dependencies.test.js","sourceRoot":"","sources":["../src/check-dependencies.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,cAAc,GAAG;YACrB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,WAAW,CAAC;YACnB,WAAW,EAAE,CAAC,MAAM,CAAC;YACrB,mBAAmB,EAAE,wBAAwB;SAC9C,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,cAAc,GAAG;YACrB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,2BAA2B;YACpC,IAAI,EAAE,CAAC,WAAW,CAAC;YACnB,WAAW,EAAE,CAAC,MAAM,CAAC;YACrB,mBAAmB,EAAE,6BAA6B;SACnD,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/create-project.js
CHANGED
|
@@ -6,7 +6,7 @@ import { spawn } from 'child_process';
|
|
|
6
6
|
// Template repositories
|
|
7
7
|
const TEMPLATES = {
|
|
8
8
|
agent: {
|
|
9
|
-
url: 'https://github.com/atxp-dev/
|
|
9
|
+
url: 'https://github.com/atxp-dev/atxp-express-example.git',
|
|
10
10
|
humanText: 'Agent Demo (Full-stack web agent)'
|
|
11
11
|
}
|
|
12
12
|
};
|
|
@@ -109,7 +109,14 @@ async function cloneTemplate(template, projectPath) {
|
|
|
109
109
|
}
|
|
110
110
|
return new Promise((resolve, reject) => {
|
|
111
111
|
console.log(chalk.blue('Downloading template from GitHub...'));
|
|
112
|
-
const git = spawn('git', [
|
|
112
|
+
const git = spawn('git', [
|
|
113
|
+
'clone',
|
|
114
|
+
'--depth', '1', // Shallow clone - only latest commit
|
|
115
|
+
'--single-branch', // Only clone the default branch
|
|
116
|
+
'--branch', 'main', // Explicitly target main branch
|
|
117
|
+
templateConfig.url,
|
|
118
|
+
projectPath
|
|
119
|
+
], {
|
|
113
120
|
stdio: 'inherit'
|
|
114
121
|
});
|
|
115
122
|
git.on('close', (code) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-project.js","sourceRoot":"","sources":["../src/create-project.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAatC,wBAAwB;AACxB,MAAM,SAAS,GAAG;IAChB,KAAK,EAAE;QACL,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"create-project.js","sourceRoot":"","sources":["../src/create-project.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAatC,wBAAwB;AACxB,MAAM,SAAS,GAAG;IAChB,KAAK,EAAE;QACL,GAAG,EAAE,sDAAsD;QAC3D,SAAS,EAAE,mCAAmC;KAC/C;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAiB;YACpD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,6BAA6B;gBACtC,OAAO,EAAE,aAAa;gBACtB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;wBAAE,OAAO,0BAA0B,CAAC;oBACrD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBACpC,OAAO,0EAA0E,CAAC;oBACpF,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,oBAAoB;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC3D,IAAI,EAAE,QAAQ,CAAC,SAAS;oBACxB,KAAK,EAAE,GAAG;iBACX,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO;aACjB;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,4BAA4B;gBACrC,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAE7D,oCAAoC;QACpC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,WAAW,kBAAkB,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC,CAAC;QAE9D,2BAA2B;QAC3B,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAEhC,6BAA6B;QAC7B,MAAM,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE3C,+CAA+C;QAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACxC,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,wCAAwC;QACxC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC/D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAgB,CAAC;YACtE,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC;YAC/B,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,qDAAqD;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,8BAA8B;QAC9B,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACnD,IAAI,CAAC;gBACH,QAAQ,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sEAAsE,CAAC,CAAC,CAAC;IAEpG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,WAAmB;IAChE,MAAM,cAAc,GAAG,SAAS,CAAC,QAAkC,CAAC,CAAC;IAErE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,aAAa,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAE/D,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE;YACvB,OAAO;YACP,SAAS,EAAE,GAAG,EAAY,uCAAuC;YACjE,iBAAiB,EAAS,gCAAgC;YAC1D,UAAU,EAAE,MAAM,EAAQ,gCAAgC;YAC1D,cAAc,CAAC,GAAG;YAClB,WAAW;SACZ,EAAE;YACD,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBAC7D,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAa,EAAE,EAAE;YAChC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-project.test.d.ts","sourceRoot":"","sources":["../src/create-project.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
describe('createProject', () => {
|
|
3
|
+
it('should validate project names correctly', () => {
|
|
4
|
+
const validateProjectName = (input) => {
|
|
5
|
+
if (!input.trim())
|
|
6
|
+
return 'Project name is required';
|
|
7
|
+
if (!/^[a-zA-Z0-9-_]+$/.test(input)) {
|
|
8
|
+
return 'Project name can only contain letters, numbers, hyphens, and underscores';
|
|
9
|
+
}
|
|
10
|
+
return true;
|
|
11
|
+
};
|
|
12
|
+
expect(validateProjectName('my-project')).toBe(true);
|
|
13
|
+
expect(validateProjectName('project_123')).toBe(true);
|
|
14
|
+
expect(validateProjectName('')).toBe('Project name is required');
|
|
15
|
+
expect(validateProjectName('invalid name')).toBe('Project name can only contain letters, numbers, hyphens, and underscores');
|
|
16
|
+
expect(validateProjectName('invalid@name')).toBe('Project name can only contain letters, numbers, hyphens, and underscores');
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=create-project.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-project.test.js","sourceRoot":"","sources":["../src/create-project.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE;YAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBAAE,OAAO,0BAA0B,CAAC;YACrD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,OAAO,0EAA0E,CAAC;YACpF,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACjE,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;QAC7H,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IAC/H,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-optimization.test.d.ts","sourceRoot":"","sources":["../src/git-optimization.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
describe('Git optimization', () => {
|
|
3
|
+
it('should use shallow clone parameters for demo repository', () => {
|
|
4
|
+
// This test documents the expected git clone parameters for optimal performance
|
|
5
|
+
const expectedCloneArgs = [
|
|
6
|
+
'clone',
|
|
7
|
+
'--depth', '1', // Shallow clone - only latest commit
|
|
8
|
+
'--single-branch', // Only clone the default branch
|
|
9
|
+
'--branch', 'main', // Explicitly target main branch
|
|
10
|
+
'DEMO_REPO_URL',
|
|
11
|
+
'demoDir'
|
|
12
|
+
];
|
|
13
|
+
expect(expectedCloneArgs).toContain('--depth');
|
|
14
|
+
expect(expectedCloneArgs).toContain('1');
|
|
15
|
+
expect(expectedCloneArgs).toContain('--single-branch');
|
|
16
|
+
expect(expectedCloneArgs).toContain('--branch');
|
|
17
|
+
expect(expectedCloneArgs).toContain('main');
|
|
18
|
+
});
|
|
19
|
+
it('should use shallow clone parameters for project templates', () => {
|
|
20
|
+
// This test documents the expected git clone parameters for project creation
|
|
21
|
+
const expectedCloneArgs = [
|
|
22
|
+
'clone',
|
|
23
|
+
'--depth', '1', // Shallow clone - only latest commit
|
|
24
|
+
'--single-branch', // Only clone the default branch
|
|
25
|
+
'--branch', 'main', // Explicitly target main branch
|
|
26
|
+
'templateUrl',
|
|
27
|
+
'projectPath'
|
|
28
|
+
];
|
|
29
|
+
expect(expectedCloneArgs).toContain('--depth');
|
|
30
|
+
expect(expectedCloneArgs).toContain('1');
|
|
31
|
+
expect(expectedCloneArgs).toContain('--single-branch');
|
|
32
|
+
expect(expectedCloneArgs).toContain('--branch');
|
|
33
|
+
expect(expectedCloneArgs).toContain('main');
|
|
34
|
+
});
|
|
35
|
+
it('should use optimized pull parameters for demo updates', () => {
|
|
36
|
+
// This test documents the expected git pull parameters for updates
|
|
37
|
+
const expectedPullArgs = [
|
|
38
|
+
'pull',
|
|
39
|
+
'--depth', '1', // Keep shallow history during pull
|
|
40
|
+
'origin', 'main' // Explicitly pull from main branch
|
|
41
|
+
];
|
|
42
|
+
expect(expectedPullArgs).toContain('--depth');
|
|
43
|
+
expect(expectedPullArgs).toContain('1');
|
|
44
|
+
expect(expectedPullArgs).toContain('origin');
|
|
45
|
+
expect(expectedPullArgs).toContain('main');
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=git-optimization.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-optimization.test.js","sourceRoot":"","sources":["../src/git-optimization.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,gFAAgF;QAChF,MAAM,iBAAiB,GAAG;YACxB,OAAO;YACP,SAAS,EAAE,GAAG,EAAY,qCAAqC;YAC/D,iBAAiB,EAAS,kCAAkC;YAC5D,UAAU,EAAE,MAAM,EAAQ,gCAAgC;YAC1D,eAAe;YACf,SAAS;SACV,CAAC;QAEF,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACvD,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,6EAA6E;QAC7E,MAAM,iBAAiB,GAAG;YACxB,OAAO;YACP,SAAS,EAAE,GAAG,EAAY,qCAAqC;YAC/D,iBAAiB,EAAS,gCAAgC;YAC1D,UAAU,EAAE,MAAM,EAAQ,gCAAgC;YAC1D,aAAa;YACb,aAAa;SACd,CAAC;QAEF,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACvD,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,mEAAmE;QACnE,MAAM,gBAAgB,GAAG;YACvB,MAAM;YACN,SAAS,EAAE,GAAG,EAAY,mCAAmC;YAC7D,QAAQ,EAAE,MAAM,CAAU,mCAAmC;SAC9D,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/help.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,IAAI,IAAI,CAqC/B"}
|
package/dist/help.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
export function showHelp() {
|
|
3
|
+
console.log(chalk.bold(chalk.blue('ATXP CLI')));
|
|
4
|
+
console.log(chalk.gray('Command line tool for creating ATXP projects and running demos'));
|
|
5
|
+
console.log();
|
|
6
|
+
console.log(chalk.bold('Usage:'));
|
|
7
|
+
console.log(' npx atxp <command> [options]');
|
|
8
|
+
console.log();
|
|
9
|
+
console.log(chalk.bold('Commands:'));
|
|
10
|
+
console.log(' ' + chalk.cyan('demo') + ' ' + 'Run the ATXP demo application');
|
|
11
|
+
console.log(' ' + chalk.cyan('create') + ' ' + 'Create a new ATXP project');
|
|
12
|
+
console.log(' ' + chalk.cyan('help') + ' ' + 'Show this help message');
|
|
13
|
+
console.log();
|
|
14
|
+
console.log(chalk.bold('Demo Options:'));
|
|
15
|
+
console.log(' ' + chalk.yellow('--verbose, -v') + ' ' + 'Show detailed logs');
|
|
16
|
+
console.log(' ' + chalk.yellow('--refresh') + ' ' + 'Force refresh the demo from GitHub');
|
|
17
|
+
console.log(' ' + chalk.yellow('--frontend-port, --fp') + ' ' + 'Specify frontend port (default: 8016)');
|
|
18
|
+
console.log(' ' + chalk.yellow('--backend-port, --bp') + ' ' + 'Specify backend port (default: 8017)');
|
|
19
|
+
console.log(' ' + chalk.yellow('--dir, -d') + ' ' + 'Specify demo directory (default: ~/.cache/atxp/demo)');
|
|
20
|
+
console.log();
|
|
21
|
+
console.log(chalk.bold('Examples:'));
|
|
22
|
+
console.log(' npx atxp demo # Run the demo with defaults (frontend: 8016, backend: 8017)');
|
|
23
|
+
console.log(' npx atxp demo --verbose # Run demo with detailed logs');
|
|
24
|
+
console.log(' npx atxp demo --frontend-port 4000 # Run demo with frontend on port 4000');
|
|
25
|
+
console.log(' npx atxp demo --backend-port 4001 # Run demo with backend on port 4001');
|
|
26
|
+
console.log(' npx atxp demo --dir ./my-demo # Use custom demo directory');
|
|
27
|
+
console.log(' npx atxp demo --frontend-port 4000 --backend-port 4001 # Custom ports');
|
|
28
|
+
console.log(' npx atxp demo --dir ./my-demo --frontend-port 4000 # Custom directory and port');
|
|
29
|
+
console.log(' npx atxp create # Create a new project');
|
|
30
|
+
console.log();
|
|
31
|
+
console.log(chalk.bold('Learn more:'));
|
|
32
|
+
console.log(' Website: ' + chalk.underline('https://atxp.dev'));
|
|
33
|
+
console.log(' GitHub: ' + chalk.underline('https://github.com/atxp-dev/cli'));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=help.js.map
|
package/dist/help.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,89 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import os from 'os';
|
|
2
4
|
import { createProject } from './create-project.js';
|
|
3
5
|
import { runDemo } from './run-demo.js';
|
|
6
|
+
import { showHelp } from './help.js';
|
|
7
|
+
import { checkAllDependencies, showDependencyError } from './check-dependencies.js';
|
|
8
|
+
// Parse command line arguments
|
|
9
|
+
function parseArgs() {
|
|
10
|
+
const command = process.argv[2];
|
|
11
|
+
// Parse demo options
|
|
12
|
+
const getArgValue = (flag, shortFlag) => {
|
|
13
|
+
const index = process.argv.findIndex(arg => arg === flag || arg === shortFlag);
|
|
14
|
+
return index !== -1 ? process.argv[index + 1] : undefined;
|
|
15
|
+
};
|
|
16
|
+
const frontendPort = (() => {
|
|
17
|
+
const portValue = getArgValue('--frontend-port', '--fp');
|
|
18
|
+
if (portValue) {
|
|
19
|
+
const parsed = parseInt(portValue, 10);
|
|
20
|
+
if (parsed > 0 && parsed < 65536)
|
|
21
|
+
return parsed;
|
|
22
|
+
}
|
|
23
|
+
return 8016; // default frontend port
|
|
24
|
+
})();
|
|
25
|
+
const backendPort = (() => {
|
|
26
|
+
const portValue = getArgValue('--backend-port', '--bp');
|
|
27
|
+
if (portValue) {
|
|
28
|
+
const parsed = parseInt(portValue, 10);
|
|
29
|
+
if (parsed > 0 && parsed < 65536)
|
|
30
|
+
return parsed;
|
|
31
|
+
}
|
|
32
|
+
return 8017; // default backend port
|
|
33
|
+
})();
|
|
34
|
+
const dir = (() => {
|
|
35
|
+
const dirValue = getArgValue('--dir', '-d');
|
|
36
|
+
return dirValue ? path.resolve(dirValue) : path.join(os.homedir(), '.cache', 'atxp', 'demo');
|
|
37
|
+
})();
|
|
38
|
+
const verbose = process.argv.includes('--verbose') || process.argv.includes('-v');
|
|
39
|
+
const refresh = process.argv.includes('--refresh');
|
|
40
|
+
return {
|
|
41
|
+
command,
|
|
42
|
+
demoOptions: { frontendPort, backendPort, dir, verbose, refresh }
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const { command, demoOptions } = parseArgs();
|
|
4
46
|
// Detect if we're in create mode (npm create atxp or npx atxp create)
|
|
5
47
|
const isCreateMode = process.env.npm_config_argv?.includes('create') ||
|
|
6
48
|
process.argv.includes('--create') ||
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
49
|
+
command === 'create';
|
|
50
|
+
// Handle different commands
|
|
51
|
+
async function main() {
|
|
52
|
+
if (isCreateMode) {
|
|
53
|
+
console.log('Creating new ATXP project...');
|
|
54
|
+
const dependenciesOk = await checkAllDependencies('create');
|
|
55
|
+
if (!dependenciesOk) {
|
|
56
|
+
showDependencyError('create');
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
createProject();
|
|
60
|
+
}
|
|
61
|
+
else if (command === 'demo') {
|
|
62
|
+
console.log('Starting ATXP demo...');
|
|
63
|
+
const dependenciesOk = await checkAllDependencies('demo');
|
|
64
|
+
if (!dependenciesOk) {
|
|
65
|
+
showDependencyError('demo');
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
runDemo(demoOptions);
|
|
69
|
+
}
|
|
70
|
+
else if (command === 'help' || command === '--help' || command === '-h') {
|
|
71
|
+
showHelp();
|
|
72
|
+
}
|
|
73
|
+
else if (!command) {
|
|
74
|
+
// No command provided - show help instead of running demo
|
|
75
|
+
showHelp();
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// Unknown command - show help instead of just error
|
|
79
|
+
console.log(`Unknown command: ${command}`);
|
|
80
|
+
console.log();
|
|
81
|
+
showHelp();
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
15
84
|
}
|
|
85
|
+
main().catch((error) => {
|
|
86
|
+
console.error('An unexpected error occurred:', error.message);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
});
|
|
16
89
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAUpF,+BAA+B;AAC/B,SAAS,SAAS;IAChB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhC,qBAAqB;IACrB,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAsB,EAAE;QAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC;QAC/E,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;QACzB,MAAM,SAAS,GAAG,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK;gBAAE,OAAO,MAAM,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,wBAAwB;IACvC,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE;QACxB,MAAM,SAAS,GAAG,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK;gBAAE,OAAO,MAAM,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,uBAAuB;IACtC,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;QAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/F,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEnD,OAAO;QACL,OAAO;QACP,WAAW,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;KAClE,CAAC;AACJ,CAAC;AAED,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;AAE7C,sEAAsE;AACtE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IACjC,OAAO,KAAK,QAAQ,CAAC;AAE1C,4BAA4B;AAC5B,KAAK,UAAU,IAAI;IACjB,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,aAAa,EAAE,CAAC;IAClB,CAAC;SAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,WAAW,CAAC,CAAC;IACvB,CAAC;SAAM,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1E,QAAQ,EAAE,CAAC;IACb,CAAC;SAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpB,0DAA0D;QAC1D,QAAQ,EAAE,CAAC;IACb,CAAC;SAAM,CAAC;QACN,oDAAoD;QACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/index.test.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
2
|
describe('ATXP CLI', () => {
|
|
3
|
-
it('should
|
|
4
|
-
|
|
3
|
+
it('should detect create mode logic', () => {
|
|
4
|
+
// Test the logic without importing the actual module
|
|
5
|
+
const testCreateMode = (npmConfigArgv, argv = []) => {
|
|
6
|
+
return npmConfigArgv?.includes('create') ||
|
|
7
|
+
argv.includes('--create') ||
|
|
8
|
+
argv[2] === 'create';
|
|
9
|
+
};
|
|
10
|
+
expect(testCreateMode('create')).toBe(true);
|
|
11
|
+
expect(testCreateMode(undefined, ['node', 'script', 'create'])).toBe(true);
|
|
12
|
+
expect(testCreateMode(undefined, ['node', 'script', '--create'])).toBe(true);
|
|
13
|
+
expect(testCreateMode()).toBe(false);
|
|
5
14
|
});
|
|
6
15
|
});
|
|
7
16
|
//# sourceMappingURL=index.test.js.map
|
package/dist/index.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,qDAAqD;QACrD,MAAM,cAAc,GAAG,CAAC,aAAsB,EAAE,OAAiB,EAAE,EAAE,EAAE;YACrE,OAAO,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC;gBACjC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACzB,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;QAC9B,CAAC,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7E,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/run-demo.d.ts
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
interface DemoOptions {
|
|
2
|
+
frontendPort: number;
|
|
3
|
+
backendPort: number;
|
|
4
|
+
dir: string;
|
|
5
|
+
verbose: boolean;
|
|
6
|
+
refresh: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function runDemo(options: DemoOptions): Promise<void>;
|
|
9
|
+
export {};
|
|
2
10
|
//# sourceMappingURL=run-demo.d.ts.map
|
package/dist/run-demo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-demo.d.ts","sourceRoot":"","sources":["../src/run-demo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-demo.d.ts","sourceRoot":"","sources":["../src/run-demo.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BjE"}
|
package/dist/run-demo.js
CHANGED
|
@@ -1,45 +1,49 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { spawn } from 'child_process';
|
|
3
3
|
import fs from 'fs-extra';
|
|
4
|
-
import path from 'path';
|
|
5
4
|
import open from 'open';
|
|
6
|
-
import
|
|
7
|
-
const DEMO_REPO_URL = 'https://github.com/atxp-dev/
|
|
8
|
-
|
|
9
|
-
const DEMO_PORT = 8016;
|
|
10
|
-
const isVerbose = process.argv.includes('--verbose') || process.argv.includes('-v');
|
|
11
|
-
const shouldRefresh = process.argv.includes('--refresh');
|
|
12
|
-
export async function runDemo() {
|
|
5
|
+
import path from 'path';
|
|
6
|
+
const DEMO_REPO_URL = 'https://github.com/atxp-dev/atxp-express-example.git';
|
|
7
|
+
export async function runDemo(options) {
|
|
13
8
|
try {
|
|
14
9
|
// Check if demo directory exists, if not clone it
|
|
15
|
-
if (!await fs.pathExists(
|
|
10
|
+
if (!await fs.pathExists(options.dir)) {
|
|
16
11
|
console.log(chalk.blue('Downloading demo from GitHub...'));
|
|
17
|
-
await cloneDemoRepo();
|
|
12
|
+
await cloneDemoRepo(options.dir, options.verbose);
|
|
18
13
|
}
|
|
19
|
-
else if (
|
|
14
|
+
else if (options.refresh) {
|
|
20
15
|
// Force refresh if --refresh flag is used
|
|
21
16
|
console.log(chalk.blue('Forcing demo refresh...'));
|
|
22
|
-
await fs.remove(
|
|
23
|
-
await cloneDemoRepo();
|
|
17
|
+
await fs.remove(options.dir);
|
|
18
|
+
await cloneDemoRepo(options.dir, options.verbose);
|
|
24
19
|
}
|
|
25
20
|
else {
|
|
26
21
|
console.log(chalk.blue('Using existing demo...'));
|
|
27
22
|
// Pull latest changes
|
|
28
|
-
await updateDemoRepo();
|
|
23
|
+
await updateDemoRepo(options.dir, options.verbose);
|
|
29
24
|
}
|
|
30
25
|
// Install dependencies if needed
|
|
31
|
-
await installDependencies();
|
|
26
|
+
await installDependencies(options.dir, options.verbose);
|
|
27
|
+
// Create .env files for configuration
|
|
28
|
+
await createEnvFiles(options.dir, options.frontendPort, options.backendPort, options.verbose);
|
|
32
29
|
// Start the demo and open browser
|
|
33
|
-
await startDemo();
|
|
30
|
+
await startDemo(options.frontendPort, options.backendPort, options.dir, options.verbose);
|
|
34
31
|
}
|
|
35
32
|
catch (error) {
|
|
36
33
|
console.error(chalk.red('Error starting demo:'), error.message);
|
|
37
34
|
process.exit(1);
|
|
38
35
|
}
|
|
39
36
|
}
|
|
40
|
-
async function cloneDemoRepo() {
|
|
37
|
+
async function cloneDemoRepo(demoDir, isVerbose) {
|
|
41
38
|
return new Promise((resolve, reject) => {
|
|
42
|
-
const git = spawn('git', [
|
|
39
|
+
const git = spawn('git', [
|
|
40
|
+
'clone',
|
|
41
|
+
'--depth', '1', // Shallow clone - only latest commit
|
|
42
|
+
'--single-branch', // Only clone the default branch
|
|
43
|
+
'--branch', 'main', // Explicitly target main branch
|
|
44
|
+
DEMO_REPO_URL,
|
|
45
|
+
demoDir
|
|
46
|
+
], {
|
|
43
47
|
stdio: isVerbose ? 'inherit' : 'pipe'
|
|
44
48
|
});
|
|
45
49
|
git.on('close', (code) => {
|
|
@@ -56,10 +60,14 @@ async function cloneDemoRepo() {
|
|
|
56
60
|
});
|
|
57
61
|
});
|
|
58
62
|
}
|
|
59
|
-
async function updateDemoRepo() {
|
|
63
|
+
async function updateDemoRepo(demoDir, isVerbose) {
|
|
60
64
|
return new Promise((resolve, _reject) => {
|
|
61
|
-
const git = spawn('git', [
|
|
62
|
-
|
|
65
|
+
const git = spawn('git', [
|
|
66
|
+
'pull',
|
|
67
|
+
'--depth', '1', // Keep shallow history during pull
|
|
68
|
+
'origin', 'main' // Explicitly pull from main branch
|
|
69
|
+
], {
|
|
70
|
+
cwd: demoDir,
|
|
63
71
|
stdio: isVerbose ? 'inherit' : 'pipe'
|
|
64
72
|
});
|
|
65
73
|
git.on('close', (code) => {
|
|
@@ -78,13 +86,13 @@ async function updateDemoRepo() {
|
|
|
78
86
|
});
|
|
79
87
|
});
|
|
80
88
|
}
|
|
81
|
-
async function installDependencies() {
|
|
89
|
+
async function installDependencies(demoDir, isVerbose) {
|
|
82
90
|
console.log(chalk.blue('Installing dependencies...'));
|
|
83
91
|
return new Promise((resolve, reject) => {
|
|
84
92
|
// Use --silent flag to reduce npm output
|
|
85
93
|
const npmArgs = isVerbose ? ['run', 'install-all'] : ['run', 'install-all', '--silent'];
|
|
86
94
|
const npm = spawn('npm', npmArgs, {
|
|
87
|
-
cwd:
|
|
95
|
+
cwd: demoDir,
|
|
88
96
|
stdio: isVerbose ? 'inherit' : 'pipe'
|
|
89
97
|
});
|
|
90
98
|
npm.on('close', (code) => {
|
|
@@ -101,9 +109,10 @@ async function installDependencies() {
|
|
|
101
109
|
});
|
|
102
110
|
});
|
|
103
111
|
}
|
|
104
|
-
async function startDemo() {
|
|
112
|
+
async function startDemo(frontendPort, backendPort, demoDir, isVerbose) {
|
|
105
113
|
console.log(chalk.blue('Starting demo application...'));
|
|
106
|
-
console.log(chalk.green(`Demo will be available at: http://localhost:${
|
|
114
|
+
console.log(chalk.green(`Demo will be available at: http://localhost:${frontendPort}`));
|
|
115
|
+
console.log(chalk.gray(`Demo directory: ${demoDir}`));
|
|
107
116
|
console.log(chalk.yellow('Press Ctrl+C to stop the demo'));
|
|
108
117
|
if (!isVerbose) {
|
|
109
118
|
console.log(chalk.gray('Run with --verbose to see detailed logs'));
|
|
@@ -112,14 +121,19 @@ async function startDemo() {
|
|
|
112
121
|
// Set the port environment variable for the demo
|
|
113
122
|
const env = {
|
|
114
123
|
...process.env,
|
|
115
|
-
PORT
|
|
124
|
+
// Backend will use PORT from its .env file, frontend will use PORT from its .env file
|
|
125
|
+
// We don't set PORT globally to avoid conflicts - let each service read its own .env
|
|
126
|
+
FRONTEND_PORT: frontendPort.toString(),
|
|
127
|
+
BACKEND_PORT: backendPort.toString(),
|
|
128
|
+
REACT_APP_BACKEND_PORT: backendPort.toString(),
|
|
129
|
+
NODE_ENV: 'production',
|
|
116
130
|
// Suppress deprecation warnings
|
|
117
131
|
NODE_NO_WARNINGS: '1',
|
|
118
132
|
// Suppress React warnings in development
|
|
119
133
|
CI: 'false'
|
|
120
134
|
};
|
|
121
|
-
const demo = spawn('npm', ['run', '
|
|
122
|
-
cwd:
|
|
135
|
+
const demo = spawn('npm', ['run', 'start'], {
|
|
136
|
+
cwd: demoDir,
|
|
123
137
|
stdio: 'pipe', // Always use pipe to capture output
|
|
124
138
|
env
|
|
125
139
|
});
|
|
@@ -159,11 +173,11 @@ async function startDemo() {
|
|
|
159
173
|
if (!demoOpenedBrowser) {
|
|
160
174
|
try {
|
|
161
175
|
console.log(chalk.blue('Opening browser...'));
|
|
162
|
-
await open(`http://localhost:${
|
|
176
|
+
await open(`http://localhost:${frontendPort}`);
|
|
163
177
|
}
|
|
164
178
|
catch {
|
|
165
179
|
console.log(chalk.yellow('Could not open browser automatically'));
|
|
166
|
-
console.log(chalk.white(`Please open http://localhost:${
|
|
180
|
+
console.log(chalk.white(`Please open http://localhost:${frontendPort} in your browser`));
|
|
167
181
|
}
|
|
168
182
|
}
|
|
169
183
|
}, 2000);
|
|
@@ -191,6 +205,31 @@ async function startDemo() {
|
|
|
191
205
|
});
|
|
192
206
|
});
|
|
193
207
|
}
|
|
208
|
+
async function createEnvFiles(demoDir, frontendPort, backendPort, isVerbose) {
|
|
209
|
+
if (isVerbose) {
|
|
210
|
+
console.log(chalk.blue('Creating .env files...'));
|
|
211
|
+
}
|
|
212
|
+
try {
|
|
213
|
+
// Create backend .env file
|
|
214
|
+
const backendEnvPath = path.join(demoDir, 'backend', '.env');
|
|
215
|
+
const backendEnvContent = `PORT=${backendPort}\nFRONTEND_PORT=${frontendPort}\n`;
|
|
216
|
+
await fs.writeFile(backendEnvPath, backendEnvContent);
|
|
217
|
+
if (isVerbose) {
|
|
218
|
+
console.log(chalk.gray(`Created backend .env: ${backendEnvPath}`));
|
|
219
|
+
}
|
|
220
|
+
// Create frontend .env file
|
|
221
|
+
const frontendEnvPath = path.join(demoDir, 'frontend', '.env');
|
|
222
|
+
const frontendEnvContent = `PORT=${frontendPort}\nREACT_APP_BACKEND_PORT=${backendPort}\n`;
|
|
223
|
+
await fs.writeFile(frontendEnvPath, frontendEnvContent);
|
|
224
|
+
if (isVerbose) {
|
|
225
|
+
console.log(chalk.gray(`Created frontend .env: ${frontendEnvPath}`));
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
console.log(chalk.yellow(`Warning: Could not create .env files: ${error.message}`));
|
|
230
|
+
console.log(chalk.gray('Demo will use environment variables passed directly'));
|
|
231
|
+
}
|
|
232
|
+
}
|
|
194
233
|
async function cleanup() {
|
|
195
234
|
try {
|
|
196
235
|
// Optionally clean up the demo directory
|
package/dist/run-demo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-demo.js","sourceRoot":"","sources":["../src/run-demo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"run-demo.js","sourceRoot":"","sources":["../src/run-demo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AAUxB,MAAM,aAAa,GAAG,sDAAsD,CAAC;AAE7E,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoB;IAChD,IAAI,CAAC;QACH,kDAAkD;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC3D,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3B,0CAA0C;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACnD,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAClD,sBAAsB;YACtB,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;QAED,iCAAiC;QACjC,MAAM,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAExD,sCAAsC;QACtC,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAE9F,kCAAkC;QAClC,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,SAAkB;IAC9D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE;YACvB,OAAO;YACP,SAAS,EAAE,GAAG,EAAY,qCAAqC;YAC/D,iBAAiB,EAAS,gCAAgC;YAC1D,UAAU,EAAE,MAAM,EAAQ,gCAAgC;YAC1D,aAAa;YACb,OAAO;SACR,EAAE;YACD,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;SACtC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;gBACzD,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;YACzB,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,SAAkB;IAC/D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE;YACvB,MAAM;YACN,SAAS,EAAE,GAAG,EAAY,mCAAmC;YAC7D,QAAQ,EAAE,MAAM,CAAU,mCAAmC;SAC9D,EAAE;YACD,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;SACtC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBACtD,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC,CAAC;gBAC3E,OAAO,EAAE,CAAC,CAAC,6BAA6B;YAC1C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC,CAAC;YAC3E,OAAO,EAAE,CAAC,CAAC,6BAA6B;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,OAAe,EAAE,SAAkB;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAEtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,yCAAyC;QACzC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAExF,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;YAChC,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;SACtC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;gBAChE,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,YAAoB,EAAE,WAAmB,EAAE,OAAe,EAAE,SAAkB;IACrG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+CAA+C,YAAY,EAAE,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,iDAAiD;QACjD,MAAM,GAAG,GAAG;YACV,GAAG,OAAO,CAAC,GAAG;YACd,sFAAsF;YACtF,qFAAqF;YACrF,aAAa,EAAE,YAAY,CAAC,QAAQ,EAAE;YACtC,YAAY,EAAE,WAAW,CAAC,QAAQ,EAAE;YACpC,sBAAsB,EAAE,WAAW,CAAC,QAAQ,EAAE;YAC9C,QAAQ,EAAE,YAAY;YACtB,gCAAgC;YAChC,gBAAgB,EAAE,GAAG;YACrB,yCAAyC;YACzC,EAAE,EAAE,OAAO;SACZ,CAAC;QAEF,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;YAC1C,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,MAAM,EAAE,oCAAoC;YACnD,GAAG;SACJ,CAAC,CAAC;QAEH,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,6BAA6B;QAC7B,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,UAAU,IAAI,MAAM,CAAC;YAErB,IAAI,SAAS,EAAE,CAAC;gBACd,mCAAmC;gBACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,+DAA+D;gBAC/D,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE/B,IAAI,SAAS,EAAE,CAAC;gBACd,mCAAmC;gBACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,sDAAsD;gBACtD,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,oDAAoD;QACpD,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,iBAAiB,GAAG,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAElE,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;oBAC9C,MAAM,IAAI,CAAC,oBAAoB,YAAY,EAAE,CAAC,CAAC;gBACjD,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;oBAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,YAAY,kBAAkB,CAAC,CAAC,CAAC;gBAC3F,CAAC;YACH,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,2BAA2B;QAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBACtD,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC,CAAC;gBACzD,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACzB,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,YAAoB,EAAE,WAAmB,EAAE,SAAkB;IAC1G,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,iBAAiB,GAAG,QAAQ,WAAW,mBAAmB,YAAY,IAAI,CAAC;QACjF,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;QAEtD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,cAAc,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,4BAA4B;QAC5B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,kBAAkB,GAAG,QAAQ,YAAY,4BAA4B,WAAW,IAAI,CAAC;QAC3F,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;QAExD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,eAAe,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yCAA0C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,IAAI,CAAC;QACH,yCAAyC;QACzC,wEAAwE;QACxE,6BAA6B;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-demo.test.d.ts","sourceRoot":"","sources":["../src/run-demo.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
describe('runDemo', () => {
|
|
3
|
+
it('should parse command line flags correctly', () => {
|
|
4
|
+
const parseFlags = (argv) => {
|
|
5
|
+
return {
|
|
6
|
+
isVerbose: argv.includes('--verbose') || argv.includes('-v'),
|
|
7
|
+
shouldRefresh: argv.includes('--refresh')
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
expect(parseFlags(['node', 'script'])).toEqual({ isVerbose: false, shouldRefresh: false });
|
|
11
|
+
expect(parseFlags(['node', 'script', '--verbose'])).toEqual({ isVerbose: true, shouldRefresh: false });
|
|
12
|
+
expect(parseFlags(['node', 'script', '-v'])).toEqual({ isVerbose: true, shouldRefresh: false });
|
|
13
|
+
expect(parseFlags(['node', 'script', '--refresh'])).toEqual({ isVerbose: false, shouldRefresh: true });
|
|
14
|
+
expect(parseFlags(['node', 'script', '--verbose', '--refresh'])).toEqual({ isVerbose: true, shouldRefresh: true });
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=run-demo.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-demo.test.js","sourceRoot":"","sources":["../src/run-demo.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,UAAU,GAAG,CAAC,IAAc,EAAE,EAAE;YACpC,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC5D,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;aAC1C,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3F,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QACvG,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAChG,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACvG,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACrH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "atxp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "ATXP CLI - Command line tool for creating ATXP projects and running demos",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "git+https://github.com/atxp-dev/
|
|
9
|
-
"directory": "packages/atxp"
|
|
8
|
+
"url": "git+https://github.com/atxp-dev/cli.git"
|
|
10
9
|
},
|
|
11
10
|
"main": "dist/index.js",
|
|
12
11
|
"bin": {
|
|
13
|
-
"atxp": "
|
|
12
|
+
"atxp": "dist/index.js"
|
|
14
13
|
},
|
|
15
14
|
"type": "module",
|
|
16
15
|
"files": [
|