@vue-skuilder/cli 0.1.4 → 0.1.6

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/CLAUDE.md ADDED
@@ -0,0 +1,84 @@
1
+ # @vue-skuilder/cli Package
2
+
3
+ Command-line scaffolding tool for creating and managing vue-skuilder course projects.
4
+
5
+ ## Commands
6
+ - Build: `yarn workspace @vue-skuilder/cli build` (TypeScript compilation)
7
+ - Dev: `yarn workspace @vue-skuilder/cli dev` (TypeScript watch mode)
8
+ - Lint: `yarn workspace @vue-skuilder/cli lint:fix`
9
+
10
+ ## Binary Usage
11
+ Once built, the CLI is available as `skuilder` command:
12
+ ```bash
13
+ # Install globally or use via npx
14
+ npx @vue-skuilder/cli init my-course
15
+ npx @vue-skuilder/cli pack my-course
16
+ ```
17
+
18
+ ## Build System
19
+ - **TypeScript**: Direct compilation to CommonJS in `dist/`
20
+ - **Binary Entry**: `dist/cli.js` with executable shebang
21
+ - **Module Type**: ES module with `.js` extension
22
+
23
+ ## CLI Commands
24
+
25
+ ### Project Initialization
26
+ - **init**: Scaffolds new course project structure
27
+ - **pack**: Packages course content for distribution
28
+
29
+ ## Dependencies
30
+
31
+ ### Core CLI Framework
32
+ - `commander` - Command-line argument parsing
33
+ - `inquirer` - Interactive prompts and wizards
34
+ - `chalk` - Terminal color output
35
+
36
+ ### Vue-Skuilder Integration
37
+ - `@vue-skuilder/db` - Database utilities for course packaging
38
+ - `@vue-skuilder/standalone-ui` - Standalone player for packaged courses
39
+
40
+ ### File Management
41
+ - `fs-extra` - Enhanced file system operations
42
+ - `pouchdb` - Local database for course data
43
+
44
+ ## Command Implementation
45
+
46
+ ### Init Command (`commands/init.ts`)
47
+ - **Project Setup**: Creates course directory structure
48
+ - **Template System**: Applies course template files
49
+ - **Configuration**: Generates initial course configuration
50
+ - **Dependencies**: Installs required npm packages
51
+
52
+ ### Pack Command (`commands/pack.ts`)
53
+ - **Course Compilation**: Bundles course content for distribution
54
+ - **Static Data**: Converts dynamic course data to static format
55
+ - **Optimization**: Minifies and optimizes course assets
56
+ - **Packaging**: Creates deployable course bundle
57
+
58
+ ## Utilities
59
+
60
+ ### Template Management (`utils/template.ts`)
61
+ - **File Templates**: Course file and directory templates
62
+ - **Variable Substitution**: Dynamic template content generation
63
+ - **Asset Copying**: Static asset management
64
+
65
+ ### Course Packing (`utils/pack-courses.ts`)
66
+ - **Data Extraction**: Converts CouchDB data to static files
67
+ - **Asset Bundling**: Packages course media and content
68
+ - **Optimization**: Compresses and optimizes output
69
+
70
+ ### Interactive Prompts (`utils/prompts.ts`)
71
+ - **User Input**: Course configuration prompts
72
+ - **Validation**: Input validation and error handling
73
+ - **Help Text**: Contextual assistance
74
+
75
+ ## Package Publishing
76
+ - **NPM Package**: Published as `@vue-skuilder/cli`
77
+ - **Global Installation**: Can be installed globally for `skuilder` command
78
+ - **Binary Linking**: Automatically creates `skuilder` command alias
79
+
80
+ ## Use Cases
81
+ - **Course Authors**: Initialize new course projects
82
+ - **Content Creators**: Package courses for distribution
83
+ - **Developers**: Bootstrap vue-skuilder development environment
84
+ - **Deployment**: Automated course packaging for CI/CD
package/dist/cli.js CHANGED
@@ -3,7 +3,8 @@ import { Command } from 'commander';
3
3
  import { readFileSync } from 'fs';
4
4
  import { fileURLToPath } from 'url';
5
5
  import { dirname, join } from 'path';
6
- import { initCommand } from './commands/init.js';
6
+ import { createInitCommand } from './commands/init.js';
7
+ import { createPackCommand } from './commands/pack.js';
7
8
  const __filename = fileURLToPath(import.meta.url);
8
9
  const __dirname = dirname(__filename);
9
10
  // Read package.json to get version
@@ -14,22 +15,17 @@ program
14
15
  .name('skuilder')
15
16
  .description('CLI tool for scaffolding Skuilder course applications')
16
17
  .version(packageJson.version);
17
- program
18
- .command('init')
19
- .argument('<project-name>', 'name of the project to create')
20
- .description('create a new Skuilder course application')
21
- .option('--data-layer <type>', 'data layer type (static|dynamic)', 'dynamic')
22
- .option('--theme <name>', 'theme name (default|medical|educational|corporate)', 'default')
23
- .option('--no-interactive', 'skip interactive prompts')
24
- .option('--couchdb-url <url>', 'CouchDB server URL (for dynamic data layer)')
25
- .option('--course-id <id>', 'course ID to import (for dynamic data layer)')
26
- .action(initCommand);
18
+ // Add commands
19
+ program.addCommand(createInitCommand());
20
+ program.addCommand(createPackCommand());
27
21
  program.on('--help', () => {
28
22
  console.log('');
29
23
  console.log('Examples:');
30
24
  console.log(' $ skuilder init my-anatomy-course');
31
25
  console.log(' $ skuilder init biology-101 --data-layer=static --theme=medical');
32
26
  console.log(' $ skuilder init physics --no-interactive --data-layer=dynamic');
27
+ console.log(' $ skuilder pack sample-course-id');
28
+ console.log(' $ skuilder pack biology-101 --server http://localhost:5984 --username admin');
33
29
  });
34
30
  program.parse();
35
31
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,mCAAmC;AACnC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,uDAAuD,CAAC;KACpE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,QAAQ,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;KAC3D,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,EAAE,SAAS,CAAC;KAC5E,MAAM,CAAC,gBAAgB,EAAE,oDAAoD,EAAE,SAAS,CAAC;KACzF,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;KACtD,MAAM,CAAC,qBAAqB,EAAE,6CAA6C,CAAC;KAC5E,MAAM,CAAC,kBAAkB,EAAE,8CAA8C,CAAC;KAC1E,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;AACjF,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,mCAAmC;AACnC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,uDAAuD,CAAC;KACpE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAExC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;AAC/F,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1,3 +1,3 @@
1
- import { CliOptions } from '../types.js';
2
- export declare function initCommand(projectName: string, options: CliOptions): Promise<void>;
1
+ import { Command } from 'commander';
2
+ export declare function createInitCommand(): Command;
3
3
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CA2Df"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,iBAAiB,IAAI,OAAO,CAU3C"}
@@ -1,20 +1,39 @@
1
- import { existsSync } from 'fs';
2
- import path from 'path';
3
1
  import chalk from 'chalk';
4
- import { gatherProjectConfig, confirmProjectCreation } from '../utils/prompts.js';
5
- import { processTemplate } from '../utils/template.js';
6
- import { readFileSync } from 'fs';
2
+ import { Command } from 'commander';
3
+ import { existsSync, readFileSync } from 'fs';
4
+ import path, { dirname, join } from 'path';
7
5
  import { fileURLToPath } from 'url';
8
- import { dirname, join } from 'path';
6
+ import { PREDEFINED_THEMES } from '../types.js';
7
+ import { confirmProjectCreation, displayThemePreview, gatherProjectConfig, } from '../utils/prompts.js';
8
+ import { processTemplate } from '../utils/template.js';
9
+ import { packCourses } from '../utils/pack-courses.js';
9
10
  const __filename = fileURLToPath(import.meta.url);
10
11
  const __dirname = dirname(__filename);
11
- export async function initCommand(projectName, options) {
12
+ export function createInitCommand() {
13
+ return new Command('init')
14
+ .argument('<project-name>', 'name of the project to create')
15
+ .description('create a new Skuilder course application')
16
+ .option('--data-layer <type>', 'data layer type (static|dynamic)', 'dynamic')
17
+ .option('--theme <name>', 'theme name (default|medical|educational|corporate)', 'default')
18
+ .option('--no-interactive', 'skip interactive prompts')
19
+ .option('--couchdb-url <url>', 'CouchDB server URL (for dynamic data layer)')
20
+ .option('--course-id <id>', 'course ID to import (for dynamic data layer)')
21
+ .action(initCommand);
22
+ }
23
+ async function initCommand(projectName, options) {
12
24
  try {
13
25
  // Validate project name
14
26
  if (!isValidProjectName(projectName)) {
15
27
  console.error(chalk.red('āŒ Invalid project name. Use only letters, numbers, hyphens, and underscores.'));
16
28
  process.exit(1);
17
29
  }
30
+ // Validate theme option
31
+ const validThemes = Object.keys(PREDEFINED_THEMES);
32
+ if (!validThemes.includes(options.theme)) {
33
+ console.error(chalk.red(`āŒ Invalid theme: "${options.theme}"`));
34
+ console.error(chalk.yellow(`Valid themes: ${validThemes.join(', ')}`));
35
+ process.exit(1);
36
+ }
18
37
  // Check if directory already exists
19
38
  const projectPath = path.resolve(process.cwd(), projectName);
20
39
  if (existsSync(projectPath)) {
@@ -25,10 +44,18 @@ export async function initCommand(projectName, options) {
25
44
  const packagePath = join(__dirname, '..', '..', 'package.json');
26
45
  const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));
27
46
  const cliVersion = packageJson.version;
47
+ // Convert options to CliOptions format
48
+ const cliOptions = {
49
+ dataLayer: options.dataLayer,
50
+ theme: options.theme,
51
+ interactive: options.interactive,
52
+ couchdbUrl: options.couchdbUrl,
53
+ courseId: options.courseId,
54
+ };
28
55
  // Gather project configuration
29
- const config = await gatherProjectConfig(projectName, options);
56
+ const config = await gatherProjectConfig(projectName, cliOptions);
30
57
  // Confirm project creation (only in interactive mode)
31
- if (options.interactive) {
58
+ if (cliOptions.interactive) {
32
59
  const confirmed = await confirmProjectCreation(config, projectPath);
33
60
  if (!confirmed) {
34
61
  console.log(chalk.yellow('Project creation cancelled.'));
@@ -38,9 +65,41 @@ export async function initCommand(projectName, options) {
38
65
  console.log(chalk.cyan(`\nšŸ› ļø Creating project "${projectName}"...\n`));
39
66
  // Process template and create project
40
67
  await processTemplate(projectPath, config, cliVersion);
68
+ // Import course data if requested for static data layer
69
+ if (config.dataLayerType === 'static' && config.importCourseData && config.importCourseIds && config.importCourseIds.length > 0) {
70
+ console.log(chalk.cyan('\nšŸ“¦ Importing course data...\n'));
71
+ try {
72
+ await packCourses({
73
+ server: config.importServerUrl,
74
+ username: config.importUsername,
75
+ password: config.importPassword,
76
+ courseIds: config.importCourseIds,
77
+ targetProjectDir: projectPath
78
+ });
79
+ console.log(chalk.green('āœ… Course data imported successfully!'));
80
+ }
81
+ catch (error) {
82
+ console.error(chalk.red('\nāŒ Failed to import course data:'));
83
+ let errorMessage = 'Unknown error';
84
+ if (error instanceof Error) {
85
+ errorMessage = error.message;
86
+ }
87
+ else if (typeof error === 'string') {
88
+ errorMessage = error;
89
+ }
90
+ else if (error && typeof error === 'object' && 'message' in error) {
91
+ errorMessage = String(error.message);
92
+ }
93
+ console.error(chalk.red(errorMessage));
94
+ console.log(chalk.yellow('\nāš ļø Project created successfully, but without course data.'));
95
+ console.log(chalk.yellow('You can import course data later using the pack command.'));
96
+ }
97
+ }
41
98
  // Success message
42
99
  console.log(chalk.green('\nšŸŽ‰ Project created successfully!\n'));
43
- console.log(chalk.cyan('Next steps:'));
100
+ // Show theme preview
101
+ displayThemePreview(config.theme.name);
102
+ console.log(chalk.cyan('\nNext steps:'));
44
103
  console.log(` ${chalk.white('cd')} ${projectName}`);
45
104
  console.log(` ${chalk.white('npm install')}`);
46
105
  console.log(` ${chalk.white('npm run dev')}`);
@@ -52,12 +111,28 @@ export async function initCommand(projectName, options) {
52
111
  }
53
112
  }
54
113
  else {
55
- console.log(chalk.yellow('šŸ“ Note: This project uses static data. Sample course data has been included.'));
114
+ if (config.importCourseIds && config.importCourseIds.length > 0) {
115
+ console.log(chalk.yellow(`šŸ“š Note: This project uses static data with ${config.importCourseIds.length} imported course(s).`));
116
+ console.log(chalk.yellow(`šŸ“‚ Course data is available in the public/static-courses/ directory.`));
117
+ }
118
+ else {
119
+ console.log(chalk.yellow('šŸ“ Note: This project uses static data. No course data has been imported.'));
120
+ }
56
121
  }
57
122
  }
58
123
  catch (error) {
59
124
  console.error(chalk.red('\nāŒ Failed to create project:'));
60
- console.error(chalk.red(error instanceof Error ? error.message : String(error)));
125
+ let errorMessage = 'Unknown error';
126
+ if (error instanceof Error) {
127
+ errorMessage = error.message;
128
+ }
129
+ else if (typeof error === 'string') {
130
+ errorMessage = error;
131
+ }
132
+ else if (error && typeof error === 'object' && 'message' in error) {
133
+ errorMessage = String(error.message);
134
+ }
135
+ console.error(chalk.red(errorMessage));
61
136
  process.exit(1);
62
137
  }
63
138
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,OAAmB;IAEnB,IAAI,CAAC;QACH,wBAAwB;QACxB,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC,CAAC;YACzG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,oCAAoC;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAC7D,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,WAAW,mBAAmB,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,gDAAgD;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC;QAEvC,+BAA+B;QAC/B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE/D,sDAAsD;QACtD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;gBACzD,OAAO;YACT,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,WAAW,QAAQ,CAAC,CAAC,CAAC;QAEzE,sCAAsC;QACtC,MAAM,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAEvD,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,MAAM,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mEAAmE,CAAC,CAAC,CAAC;YAC/F,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,MAAM,CAAC,MAAM,qCAAqC,CAAC,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+EAA+E,CAAC,CAAC,CAAC;QAC7G,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,mDAAmD;IACnD,qCAAqC;IACrC,MAAM,cAAc,GAAG,6BAA6B,CAAC;IACrD,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createPackCommand(): Command;
3
+ //# sourceMappingURL=pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../src/commands/pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,iBAAiB,IAAI,OAAO,CAW3C"}
@@ -0,0 +1,141 @@
1
+ import { Command } from 'commander';
2
+ import PouchDB from 'pouchdb';
3
+ import fs from 'fs-extra';
4
+ import path from 'path';
5
+ import chalk from 'chalk';
6
+ import { CouchDBToStaticPacker } from '@vue-skuilder/db/packer';
7
+ export function createPackCommand() {
8
+ return new Command('pack')
9
+ .description('Pack a CouchDB course into static files')
10
+ .argument('<courseId>', 'Course ID to pack')
11
+ .option('-s, --server <url>', 'CouchDB server URL', 'http://localhost:5984')
12
+ .option('-u, --username <username>', 'CouchDB username')
13
+ .option('-p, --password <password>', 'CouchDB password')
14
+ .option('-o, --output <dir>', 'Output directory', './static-courses')
15
+ .option('-c, --chunk-size <size>', 'Documents per chunk', '1000')
16
+ .option('--no-attachments', 'Exclude attachments')
17
+ .action(packCourse);
18
+ }
19
+ async function packCourse(courseId, options) {
20
+ try {
21
+ console.log(chalk.cyan(`šŸ”§ Packing course: ${courseId}`));
22
+ // Validate courseId
23
+ if (!courseId || courseId.trim() === '') {
24
+ throw new Error('Course ID is required');
25
+ }
26
+ // Connect to CouchDB
27
+ const dbUrl = `${options.server}/coursedb-${courseId}`;
28
+ const dbOptions = {};
29
+ if (options.username && options.password) {
30
+ dbOptions.auth = {
31
+ username: options.username,
32
+ password: options.password,
33
+ };
34
+ }
35
+ console.log(chalk.gray(`šŸ“” Connecting to: ${dbUrl}`));
36
+ const sourceDB = new PouchDB(dbUrl, dbOptions);
37
+ // Test connection
38
+ try {
39
+ await sourceDB.info();
40
+ console.log(chalk.green('āœ… Connected to database'));
41
+ }
42
+ catch (error) {
43
+ let errorMessage = 'Unknown error';
44
+ if (error instanceof Error) {
45
+ errorMessage = error.message;
46
+ }
47
+ else if (typeof error === 'string') {
48
+ errorMessage = error;
49
+ }
50
+ else if (error && typeof error === 'object' && 'message' in error) {
51
+ errorMessage = String(error.message);
52
+ }
53
+ throw new Error(`Failed to connect to database: ${errorMessage}`);
54
+ }
55
+ // Configure packer (data transformation only)
56
+ const packerConfig = {
57
+ chunkSize: parseInt(options.chunkSize),
58
+ includeAttachments: !options.noAttachments,
59
+ };
60
+ console.log(chalk.gray(`šŸ“¦ Chunk size: ${packerConfig.chunkSize} documents`));
61
+ console.log(chalk.gray(`šŸ“Ž Include attachments: ${packerConfig.includeAttachments}`));
62
+ // Pack the course (data transformation)
63
+ console.log(chalk.cyan('šŸ”„ Processing course data...'));
64
+ const packer = new CouchDBToStaticPacker(packerConfig);
65
+ const packedData = await packer.packCourse(sourceDB, courseId);
66
+ // Create output directory
67
+ const outputDir = path.resolve(options.output, courseId);
68
+ await fs.ensureDir(outputDir);
69
+ console.log(chalk.gray(`šŸ“ Output directory: ${outputDir}`));
70
+ // Write files
71
+ await writePackedData(packedData, outputDir);
72
+ // Success summary
73
+ console.log(chalk.green('\nāœ… Successfully packed course!'));
74
+ console.log(chalk.white(`šŸ“Š Course: ${packedData.manifest.courseName}`));
75
+ console.log(chalk.white(`šŸ“„ Documents: ${packedData.manifest.documentCount}`));
76
+ console.log(chalk.white(`šŸ—‚ļø Chunks: ${packedData.manifest.chunks.length}`));
77
+ console.log(chalk.white(`šŸ—ƒļø Indices: ${packedData.manifest.indices.length}`));
78
+ if (packedData.attachments && packedData.attachments.size > 0) {
79
+ console.log(chalk.white(`šŸ“Ž Attachments: ${packedData.attachments.size}`));
80
+ }
81
+ console.log(chalk.white(`šŸ“ Location: ${outputDir}`));
82
+ }
83
+ catch (error) {
84
+ console.error(chalk.red('\nāŒ Packing failed:'));
85
+ let errorMessage = 'Unknown error';
86
+ if (error instanceof Error) {
87
+ errorMessage = error.message;
88
+ }
89
+ else if (typeof error === 'string') {
90
+ errorMessage = error;
91
+ }
92
+ else if (error && typeof error === 'object' && 'message' in error) {
93
+ errorMessage = String(error.message);
94
+ }
95
+ console.error(chalk.red(errorMessage));
96
+ process.exit(1);
97
+ }
98
+ }
99
+ async function writePackedData(packedData, outputDir) {
100
+ console.log(chalk.cyan('šŸ’¾ Writing files...'));
101
+ // Write manifest
102
+ const manifestPath = path.join(outputDir, 'manifest.json');
103
+ await fs.writeJson(manifestPath, packedData.manifest, { spaces: 2 });
104
+ console.log(chalk.gray(`šŸ“‹ Wrote manifest: ${manifestPath}`));
105
+ // Create directories
106
+ const chunksDir = path.join(outputDir, 'chunks');
107
+ const indicesDir = path.join(outputDir, 'indices');
108
+ await fs.ensureDir(chunksDir);
109
+ await fs.ensureDir(indicesDir);
110
+ // Write chunks
111
+ let chunkCount = 0;
112
+ for (const [chunkId, chunkData] of packedData.chunks) {
113
+ const chunkPath = path.join(chunksDir, `${chunkId}.json`);
114
+ await fs.writeJson(chunkPath, chunkData);
115
+ chunkCount++;
116
+ }
117
+ console.log(chalk.gray(`šŸ“¦ Wrote ${chunkCount} chunks`));
118
+ // Write indices
119
+ let indexCount = 0;
120
+ for (const [indexName, indexData] of packedData.indices) {
121
+ const indexPath = path.join(indicesDir, `${indexName}.json`);
122
+ await fs.writeJson(indexPath, indexData, { spaces: 2 });
123
+ indexCount++;
124
+ }
125
+ console.log(chalk.gray(`šŸ—ƒļø Wrote ${indexCount} indices`));
126
+ // Write attachments
127
+ if (packedData.attachments && packedData.attachments.size > 0) {
128
+ console.log(chalk.cyan('šŸ“Ž Writing attachments...'));
129
+ let attachmentCount = 0;
130
+ for (const [attachmentPath, attachmentData] of packedData.attachments) {
131
+ const fullAttachmentPath = path.join(outputDir, attachmentPath);
132
+ // Ensure directory exists
133
+ await fs.ensureDir(path.dirname(fullAttachmentPath));
134
+ // Write binary file
135
+ await fs.writeFile(fullAttachmentPath, attachmentData.buffer);
136
+ attachmentCount++;
137
+ }
138
+ console.log(chalk.gray(`šŸ“Ž Wrote ${attachmentCount} attachment files`));
139
+ }
140
+ }
141
+ //# sourceMappingURL=pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/commands/pack.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -12,15 +12,42 @@ export interface ProjectConfig {
12
12
  course?: string;
13
13
  couchdbUrl?: string;
14
14
  theme: ThemeConfig;
15
+ importCourseData?: boolean;
16
+ importServerUrl?: string;
17
+ importUsername?: string;
18
+ importPassword?: string;
19
+ importCourseIds?: string[];
15
20
  }
16
- export interface ThemeConfig {
17
- name: string;
21
+ export interface VuetifyThemeDefinition {
22
+ dark: boolean;
18
23
  colors: {
19
24
  primary: string;
20
25
  secondary: string;
21
26
  accent: string;
27
+ error: string;
28
+ info: string;
29
+ success: string;
30
+ warning: string;
31
+ background: string;
32
+ surface: string;
33
+ 'surface-bright': string;
34
+ 'surface-light': string;
35
+ 'surface-variant': string;
36
+ 'on-surface-variant': string;
37
+ 'primary-darken-1': string;
38
+ 'secondary-darken-1': string;
39
+ 'on-primary': string;
40
+ 'on-secondary': string;
41
+ 'on-background': string;
42
+ 'on-surface': string;
22
43
  };
23
44
  }
45
+ export interface ThemeConfig {
46
+ name: string;
47
+ light: VuetifyThemeDefinition;
48
+ dark: VuetifyThemeDefinition;
49
+ defaultMode: 'light' | 'dark';
50
+ }
24
51
  export interface SkuilderConfig {
25
52
  title: string;
26
53
  course?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAC3D,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAiCzD,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAC3D,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IAEnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QAEN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAGhB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,oBAAoB,EAAE,MAAM,CAAC;QAG7B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,oBAAoB,EAAE,MAAM,CAAC;QAG7B,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,sBAAsB,CAAC;IAC9B,IAAI,EAAE,sBAAsB,CAAC;IAC7B,WAAW,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAiNzD,CAAC"}