@vue-skuilder/cli 0.1.7 → 0.1.8-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/README.md +122 -8
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +34 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/pack.d.ts +10 -0
- package/dist/commands/pack.d.ts.map +1 -1
- package/dist/commands/pack.js +1 -1
- package/dist/commands/pack.js.map +1 -1
- package/dist/commands/studio.d.ts.map +1 -1
- package/dist/commands/studio.js +640 -105
- package/dist/commands/studio.js.map +1 -1
- package/dist/commands/unpack.d.ts +12 -0
- package/dist/commands/unpack.d.ts.map +1 -1
- package/dist/commands/unpack.js +1 -1
- package/dist/commands/unpack.js.map +1 -1
- package/dist/express-assets/app.d.ts +6 -0
- package/dist/express-assets/app.d.ts.map +1 -0
- package/dist/express-assets/app.js +209 -0
- package/dist/express-assets/app.js.map +1 -0
- package/dist/express-assets/assets/classroomDesignDoc.js +24 -0
- package/dist/express-assets/assets/courseValidateDocUpdate.js +56 -0
- package/dist/express-assets/assets/get-tagsDesignDoc.json +9 -0
- package/dist/express-assets/attachment-preprocessing/index.d.ts +11 -0
- package/dist/express-assets/attachment-preprocessing/index.d.ts.map +1 -0
- package/dist/express-assets/attachment-preprocessing/index.js +204 -0
- package/dist/express-assets/attachment-preprocessing/index.js.map +1 -0
- package/dist/express-assets/attachment-preprocessing/normalize.d.ts +7 -0
- package/dist/express-assets/attachment-preprocessing/normalize.d.ts.map +1 -0
- package/dist/express-assets/attachment-preprocessing/normalize.js +90 -0
- package/dist/express-assets/attachment-preprocessing/normalize.js.map +1 -0
- package/dist/express-assets/client-requests/classroom-requests.d.ts +26 -0
- package/dist/express-assets/client-requests/classroom-requests.d.ts.map +1 -0
- package/dist/express-assets/client-requests/classroom-requests.js +171 -0
- package/dist/express-assets/client-requests/classroom-requests.js.map +1 -0
- package/dist/express-assets/client-requests/course-requests.d.ts +10 -0
- package/dist/express-assets/client-requests/course-requests.d.ts.map +1 -0
- package/dist/express-assets/client-requests/course-requests.js +135 -0
- package/dist/express-assets/client-requests/course-requests.js.map +1 -0
- package/dist/express-assets/client-requests/pack-requests.d.ts +19 -0
- package/dist/express-assets/client-requests/pack-requests.d.ts.map +1 -0
- package/dist/express-assets/client-requests/pack-requests.js +130 -0
- package/dist/express-assets/client-requests/pack-requests.js.map +1 -0
- package/dist/express-assets/client.d.ts +31 -0
- package/dist/express-assets/client.d.ts.map +1 -0
- package/dist/express-assets/client.js +70 -0
- package/dist/express-assets/client.js.map +1 -0
- package/dist/express-assets/couchdb/authentication.d.ts +4 -0
- package/dist/express-assets/couchdb/authentication.d.ts.map +1 -0
- package/dist/express-assets/couchdb/authentication.js +69 -0
- package/dist/express-assets/couchdb/authentication.js.map +1 -0
- package/dist/express-assets/couchdb/index.d.ts +18 -0
- package/dist/express-assets/couchdb/index.d.ts.map +1 -0
- package/dist/express-assets/couchdb/index.js +52 -0
- package/dist/express-assets/couchdb/index.js.map +1 -0
- package/dist/express-assets/design-docs.d.ts +63 -0
- package/dist/express-assets/design-docs.d.ts.map +1 -0
- package/dist/express-assets/design-docs.js +90 -0
- package/dist/express-assets/design-docs.js.map +1 -0
- package/dist/express-assets/logger.d.ts +3 -0
- package/dist/express-assets/logger.d.ts.map +1 -0
- package/dist/express-assets/logger.js +62 -0
- package/dist/express-assets/logger.js.map +1 -0
- package/dist/express-assets/routes/logs.d.ts +3 -0
- package/dist/express-assets/routes/logs.d.ts.map +1 -0
- package/dist/express-assets/routes/logs.js +274 -0
- package/dist/express-assets/routes/logs.js.map +1 -0
- package/dist/express-assets/utils/env.d.ts +11 -0
- package/dist/express-assets/utils/env.d.ts.map +1 -0
- package/dist/express-assets/utils/env.js +39 -0
- package/dist/express-assets/utils/env.js.map +1 -0
- package/dist/express-assets/utils/processQueue.d.ts +39 -0
- package/dist/express-assets/utils/processQueue.d.ts.map +1 -0
- package/dist/express-assets/utils/processQueue.js +175 -0
- package/dist/express-assets/utils/processQueue.js.map +1 -0
- package/dist/studio-ui-src/App.vue +132 -0
- package/dist/studio-ui-src/api/index.ts +30 -0
- package/dist/studio-ui-src/components/StudioFlush.vue +108 -0
- package/dist/studio-ui-src/config/development.ts +98 -0
- package/dist/studio-ui-src/index.html +13 -0
- package/dist/studio-ui-src/main.ts +148 -0
- package/dist/studio-ui-src/package.json +35 -0
- package/dist/studio-ui-src/router/index.ts +32 -0
- package/dist/studio-ui-src/stores/useAuthStore.ts +3 -0
- package/dist/studio-ui-src/tsconfig.json +28 -0
- package/dist/studio-ui-src/views/BrowseView.vue +82 -0
- package/dist/studio-ui-src/views/BulkImportView.vue +89 -0
- package/dist/studio-ui-src/views/CourseEditorView.vue +62 -0
- package/dist/studio-ui-src/views/CreateCardView.vue +140 -0
- package/dist/studio-ui-src/vite.config.base.js +100 -0
- package/dist/studio-ui-src/vite.config.ts +26 -0
- package/dist/templates/.skuilder/README.md +29 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/ExpressManager.d.ts +28 -0
- package/dist/utils/ExpressManager.d.ts.map +1 -0
- package/dist/utils/ExpressManager.js +166 -0
- package/dist/utils/ExpressManager.js.map +1 -0
- package/dist/utils/NodeFileSystemAdapter.d.ts +6 -0
- package/dist/utils/NodeFileSystemAdapter.d.ts.map +1 -1
- package/dist/utils/NodeFileSystemAdapter.js +29 -1
- package/dist/utils/NodeFileSystemAdapter.js.map +1 -1
- package/dist/utils/error-reporting.d.ts +54 -0
- package/dist/utils/error-reporting.d.ts.map +1 -0
- package/dist/utils/error-reporting.js +143 -0
- package/dist/utils/error-reporting.js.map +1 -0
- package/dist/utils/pack-courses.d.ts.map +1 -1
- package/dist/utils/pack-courses.js +10 -27
- package/dist/utils/pack-courses.js.map +1 -1
- package/dist/utils/prompts.d.ts.map +1 -1
- package/dist/utils/prompts.js +24 -0
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/questions-hash.d.ts +22 -0
- package/dist/utils/questions-hash.d.ts.map +1 -0
- package/dist/utils/questions-hash.js +96 -0
- package/dist/utils/questions-hash.js.map +1 -0
- package/dist/utils/template.d.ts +1 -1
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +202 -25
- package/dist/utils/template.js.map +1 -1
- package/eslint.config.mjs +1 -1
- package/package.json +30 -11
- package/src/cli.ts +3 -1
- package/src/commands/init.ts +48 -3
- package/src/commands/pack.ts +1 -1
- package/src/commands/studio.ts +850 -121
- package/src/commands/unpack.ts +1 -1
- package/src/types.ts +5 -0
- package/src/utils/ExpressManager.ts +210 -0
- package/src/utils/NodeFileSystemAdapter.ts +46 -2
- package/src/utils/error-reporting.ts +192 -0
- package/src/utils/pack-courses.ts +11 -36
- package/src/utils/prompts.ts +34 -0
- package/src/utils/questions-hash.ts +109 -0
- package/src/utils/template.ts +231 -27
- package/templates/.skuilder/README.md +29 -0
- package/dist/studio-ui-assets/assets/BrowseView-BJbixGOU.js +0 -2
- package/dist/studio-ui-assets/assets/BrowseView-BJbixGOU.js.map +0 -1
- package/dist/studio-ui-assets/assets/BrowseView-CM4HBO4j.css +0 -1
- package/dist/studio-ui-assets/assets/BulkImportView-DB6DYDJU.js +0 -2
- package/dist/studio-ui-assets/assets/BulkImportView-DB6DYDJU.js.map +0 -1
- package/dist/studio-ui-assets/assets/BulkImportView-g4wQUfPA.css +0 -1
- package/dist/studio-ui-assets/assets/CourseEditorView-BIlhlhw1.js +0 -2
- package/dist/studio-ui-assets/assets/CourseEditorView-BIlhlhw1.js.map +0 -1
- package/dist/studio-ui-assets/assets/CourseEditorView-WuPNLVKp.css +0 -1
- package/dist/studio-ui-assets/assets/CreateCardView-CyNOKCkm.css +0 -1
- package/dist/studio-ui-assets/assets/CreateCardView-DPjPvzzt.js +0 -2
- package/dist/studio-ui-assets/assets/CreateCardView-DPjPvzzt.js.map +0 -1
- package/dist/studio-ui-assets/assets/edit-ui.es-DiUxqbgF.js +0 -330
- package/dist/studio-ui-assets/assets/edit-ui.es-DiUxqbgF.js.map +0 -1
- package/dist/studio-ui-assets/assets/index--zY88pg6.css +0 -14
- package/dist/studio-ui-assets/assets/index-BnAv1C72.js +0 -287
- package/dist/studio-ui-assets/assets/index-BnAv1C72.js.map +0 -1
- package/dist/studio-ui-assets/assets/index-DHMXQY3-.js +0 -192
- package/dist/studio-ui-assets/assets/index-DHMXQY3-.js.map +0 -1
- package/dist/studio-ui-assets/assets/materialdesignicons-webfont-B7mPwVP_.ttf +0 -0
- package/dist/studio-ui-assets/assets/materialdesignicons-webfont-CSr8KVlo.eot +0 -0
- package/dist/studio-ui-assets/assets/materialdesignicons-webfont-Dp5v-WZN.woff2 +0 -0
- package/dist/studio-ui-assets/assets/materialdesignicons-webfont-PXm3-2wK.woff +0 -0
- package/dist/studio-ui-assets/assets/vue-DZcMATiC.js +0 -28
- package/dist/studio-ui-assets/assets/vue-DZcMATiC.js.map +0 -1
- package/dist/studio-ui-assets/assets/vuetify-qg7mRxy_.js +0 -6
- package/dist/studio-ui-assets/assets/vuetify-qg7mRxy_.js.map +0 -1
- package/dist/studio-ui-assets/index.html +0 -16
package/dist/utils/template.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { promises as fs, existsSync } from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
|
+
import { randomUUID } from 'crypto';
|
|
4
5
|
import chalk from 'chalk';
|
|
5
6
|
const __filename = fileURLToPath(import.meta.url);
|
|
6
7
|
const __dirname = path.dirname(__filename);
|
|
@@ -50,19 +51,22 @@ export async function transformPackageJson(packageJsonPath, projectName, cliVers
|
|
|
50
51
|
packageJson.name = projectName;
|
|
51
52
|
packageJson.description = `Skuilder course application: ${projectName}`;
|
|
52
53
|
packageJson.version = '1.0.0';
|
|
53
|
-
// Transform workspace dependencies to published versions
|
|
54
|
+
// Transform workspace and file dependencies to published versions
|
|
54
55
|
if (packageJson.dependencies) {
|
|
55
56
|
for (const [depName, version] of Object.entries(packageJson.dependencies)) {
|
|
56
|
-
if (typeof version === 'string' && version.startsWith('workspace:')) {
|
|
57
|
-
// Replace workspace references with CLI's version
|
|
57
|
+
if (typeof version === 'string' && (version.startsWith('workspace:') || version.startsWith('file:'))) {
|
|
58
|
+
// Replace workspace and file references with CLI's version
|
|
58
59
|
packageJson.dependencies[depName] = `^${cliVersion}`;
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
|
-
// Add missing
|
|
63
|
+
// Add missing devDependencies for build system
|
|
63
64
|
if (packageJson.devDependencies && !packageJson.devDependencies['terser']) {
|
|
64
65
|
packageJson.devDependencies['terser'] = '^5.39.0';
|
|
65
66
|
}
|
|
67
|
+
if (packageJson.devDependencies && !packageJson.devDependencies['vite-plugin-dts']) {
|
|
68
|
+
packageJson.devDependencies['vite-plugin-dts'] = '^4.3.0';
|
|
69
|
+
}
|
|
66
70
|
// Add CLI as devDependency for all projects
|
|
67
71
|
if (!packageJson.devDependencies) {
|
|
68
72
|
packageJson.devDependencies = {};
|
|
@@ -85,19 +89,34 @@ export async function transformPackageJson(packageJsonPath, projectName, cliVers
|
|
|
85
89
|
* // [ ] This should be revised so that it works from the existing vite.config.ts in standalone-ui. As is, it recreates 95% of the same config.
|
|
86
90
|
*/
|
|
87
91
|
export async function createViteConfig(viteConfigPath) {
|
|
88
|
-
// Create
|
|
89
|
-
const transformedContent =
|
|
90
|
-
import { defineConfig } from 'vite';
|
|
92
|
+
// Create dual build config similar to standalone-ui but without workspace dependencies
|
|
93
|
+
const transformedContent = `import { defineConfig } from 'vite';
|
|
91
94
|
import vue from '@vitejs/plugin-vue';
|
|
95
|
+
import dts from 'vite-plugin-dts';
|
|
96
|
+
import { resolve } from 'path';
|
|
92
97
|
import { fileURLToPath, URL } from 'node:url';
|
|
93
98
|
|
|
99
|
+
// Determine build mode from environment variable
|
|
100
|
+
const buildMode = process.env.BUILD_MODE || 'webapp';
|
|
101
|
+
|
|
94
102
|
export default defineConfig({
|
|
95
|
-
plugins: [
|
|
103
|
+
plugins: [
|
|
104
|
+
vue(),
|
|
105
|
+
// Only include dts plugin for library builds
|
|
106
|
+
...(buildMode === 'library'
|
|
107
|
+
? [dts({
|
|
108
|
+
insertTypesEntry: true,
|
|
109
|
+
include: ['src/questions/**/*.ts', 'src/questions/**/*.vue'],
|
|
110
|
+
exclude: ['**/*.spec.ts', '**/*.test.ts'],
|
|
111
|
+
outDir: 'dist-lib',
|
|
112
|
+
})]
|
|
113
|
+
: []
|
|
114
|
+
)
|
|
115
|
+
],
|
|
96
116
|
resolve: {
|
|
97
117
|
alias: {
|
|
98
118
|
// Alias for internal src paths
|
|
99
119
|
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
|
100
|
-
|
|
101
120
|
// Add events alias if needed (often required by dependencies)
|
|
102
121
|
events: 'events',
|
|
103
122
|
},
|
|
@@ -116,8 +135,8 @@ export default defineConfig({
|
|
|
116
135
|
},
|
|
117
136
|
// --- Dependencies optimization ---
|
|
118
137
|
optimizeDeps: {
|
|
119
|
-
// Help Vite pre-bundle dependencies from published packages
|
|
120
138
|
include: [
|
|
139
|
+
'events',
|
|
121
140
|
'@vue-skuilder/common-ui',
|
|
122
141
|
'@vue-skuilder/db',
|
|
123
142
|
'@vue-skuilder/common',
|
|
@@ -127,14 +146,65 @@ export default defineConfig({
|
|
|
127
146
|
server: {
|
|
128
147
|
port: 5173, // Use standard Vite port for standalone projects
|
|
129
148
|
},
|
|
130
|
-
build:
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
149
|
+
build: buildMode === 'library'
|
|
150
|
+
? {
|
|
151
|
+
// Library build configuration
|
|
152
|
+
sourcemap: true,
|
|
153
|
+
target: 'es2020',
|
|
154
|
+
minify: 'terser',
|
|
155
|
+
terserOptions: {
|
|
156
|
+
keep_classnames: true,
|
|
157
|
+
},
|
|
158
|
+
lib: {
|
|
159
|
+
entry: resolve(__dirname, 'src/questions/index.ts'),
|
|
160
|
+
name: 'VueSkuilderStandaloneQuestions',
|
|
161
|
+
fileName: (format) => \`questions.\${format === 'es' ? 'mjs' : 'cjs.js'}\`,
|
|
162
|
+
},
|
|
163
|
+
rollupOptions: {
|
|
164
|
+
// External packages that shouldn't be bundled in library mode
|
|
165
|
+
external: [
|
|
166
|
+
'vue',
|
|
167
|
+
'vue-router',
|
|
168
|
+
'vuetify',
|
|
169
|
+
'pinia',
|
|
170
|
+
'@vue-skuilder/common',
|
|
171
|
+
'@vue-skuilder/common-ui',
|
|
172
|
+
'@vue-skuilder/courses',
|
|
173
|
+
'@vue-skuilder/db',
|
|
174
|
+
],
|
|
175
|
+
output: {
|
|
176
|
+
// Global variables for UMD build
|
|
177
|
+
globals: {
|
|
178
|
+
'vue': 'Vue',
|
|
179
|
+
'vue-router': 'VueRouter',
|
|
180
|
+
'vuetify': 'Vuetify',
|
|
181
|
+
'pinia': 'Pinia',
|
|
182
|
+
'@vue-skuilder/common': 'VueSkuilderCommon',
|
|
183
|
+
'@vue-skuilder/common-ui': 'VueSkuilderCommonUI',
|
|
184
|
+
'@vue-skuilder/courses': 'VueSkuilderCourses',
|
|
185
|
+
'@vue-skuilder/db': 'VueSkuilderDB',
|
|
186
|
+
},
|
|
187
|
+
exports: 'named',
|
|
188
|
+
// Preserve CSS in the output bundle
|
|
189
|
+
assetFileNames: 'assets/[name].[ext]',
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
// Output to separate directory for library build
|
|
193
|
+
outDir: 'dist-lib',
|
|
194
|
+
// Allow CSS code splitting for component libraries
|
|
195
|
+
cssCodeSplit: true,
|
|
196
|
+
}
|
|
197
|
+
: {
|
|
198
|
+
// Webapp build configuration (existing)
|
|
199
|
+
sourcemap: true,
|
|
200
|
+
target: 'es2020',
|
|
201
|
+
minify: 'terser',
|
|
202
|
+
terserOptions: {
|
|
203
|
+
keep_classnames: true,
|
|
204
|
+
},
|
|
205
|
+
// Standard webapp output directory
|
|
206
|
+
outDir: 'dist',
|
|
207
|
+
},
|
|
138
208
|
// Add define block for process polyfills
|
|
139
209
|
define: {
|
|
140
210
|
global: 'window',
|
|
@@ -149,7 +219,7 @@ export default defineConfig({
|
|
|
149
219
|
/**
|
|
150
220
|
* Generate skuilder.config.json based on project configuration
|
|
151
221
|
*/
|
|
152
|
-
export async function generateSkuilderConfig(configPath, config) {
|
|
222
|
+
export async function generateSkuilderConfig(configPath, config, outputPath) {
|
|
153
223
|
const skuilderConfig = {
|
|
154
224
|
title: config.title,
|
|
155
225
|
dataLayerType: config.dataLayerType,
|
|
@@ -158,11 +228,15 @@ export async function generateSkuilderConfig(configPath, config) {
|
|
|
158
228
|
if (config.dataLayerType === 'couch' && config.course) {
|
|
159
229
|
skuilderConfig.course = config.course;
|
|
160
230
|
}
|
|
161
|
-
// For static data layer
|
|
162
|
-
if (config.dataLayerType === 'static'
|
|
163
|
-
config.importCourseIds &&
|
|
164
|
-
|
|
165
|
-
|
|
231
|
+
// For static data layer, use imported course ID or generate new one
|
|
232
|
+
if (config.dataLayerType === 'static') {
|
|
233
|
+
if (config.importCourseIds && config.importCourseIds.length > 0) {
|
|
234
|
+
skuilderConfig.course = config.importCourseIds[0];
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
// Generate UUID for new static courses without imports
|
|
238
|
+
skuilderConfig.course = randomUUID();
|
|
239
|
+
}
|
|
166
240
|
}
|
|
167
241
|
if (config.couchdbUrl) {
|
|
168
242
|
skuilderConfig.couchdbUrl = config.couchdbUrl;
|
|
@@ -171,6 +245,10 @@ export async function generateSkuilderConfig(configPath, config) {
|
|
|
171
245
|
skuilderConfig.theme = config.theme;
|
|
172
246
|
}
|
|
173
247
|
await fs.writeFile(configPath, JSON.stringify(skuilderConfig, null, 2));
|
|
248
|
+
// For static data layer without imports, create empty course structure
|
|
249
|
+
if (config.dataLayerType === 'static' && (!config.importCourseIds || config.importCourseIds.length === 0) && outputPath) {
|
|
250
|
+
await createEmptyCourseStructure(outputPath, skuilderConfig.course, config.title);
|
|
251
|
+
}
|
|
174
252
|
}
|
|
175
253
|
/**
|
|
176
254
|
* Transform tsconfig.json to be standalone (remove base config reference)
|
|
@@ -204,6 +282,51 @@ export async function transformTsConfig(tsconfigPath) {
|
|
|
204
282
|
};
|
|
205
283
|
await fs.writeFile(tsconfigPath, JSON.stringify(tsconfig, null, 2));
|
|
206
284
|
}
|
|
285
|
+
/**
|
|
286
|
+
* Create empty course structure for new static courses
|
|
287
|
+
*/
|
|
288
|
+
async function createEmptyCourseStructure(projectPath, courseId, title) {
|
|
289
|
+
const staticCoursesPath = path.join(projectPath, 'public', 'static-courses');
|
|
290
|
+
const coursePath = path.join(staticCoursesPath, courseId);
|
|
291
|
+
// Create directory structure
|
|
292
|
+
await fs.mkdir(coursePath, { recursive: true });
|
|
293
|
+
await fs.mkdir(path.join(coursePath, 'chunks'), { recursive: true });
|
|
294
|
+
await fs.mkdir(path.join(coursePath, 'indices'), { recursive: true });
|
|
295
|
+
// Create minimal CourseConfig
|
|
296
|
+
const courseConfig = {
|
|
297
|
+
courseID: courseId,
|
|
298
|
+
name: title,
|
|
299
|
+
description: '',
|
|
300
|
+
public: false,
|
|
301
|
+
deleted: false,
|
|
302
|
+
creator: 'system',
|
|
303
|
+
admins: [],
|
|
304
|
+
moderators: [],
|
|
305
|
+
dataShapes: [],
|
|
306
|
+
questionTypes: []
|
|
307
|
+
};
|
|
308
|
+
// Create manifest.json with proper structure
|
|
309
|
+
const manifest = {
|
|
310
|
+
version: '1.0.0',
|
|
311
|
+
courseId,
|
|
312
|
+
courseName: title,
|
|
313
|
+
courseConfig,
|
|
314
|
+
lastUpdated: new Date().toISOString(),
|
|
315
|
+
documentCount: 0,
|
|
316
|
+
chunks: [],
|
|
317
|
+
indices: [],
|
|
318
|
+
designDocs: []
|
|
319
|
+
};
|
|
320
|
+
await fs.writeFile(path.join(coursePath, 'manifest.json'), JSON.stringify(manifest, null, 2));
|
|
321
|
+
// Create empty tags index
|
|
322
|
+
await fs.writeFile(path.join(coursePath, 'indices', 'tags.json'), JSON.stringify({ tags: [] }, null, 2));
|
|
323
|
+
// Create CourseConfig chunk
|
|
324
|
+
await fs.writeFile(path.join(coursePath, 'chunks', 'CourseConfig.json'), JSON.stringify([{
|
|
325
|
+
_id: 'CourseConfig',
|
|
326
|
+
...courseConfig
|
|
327
|
+
}], null, 2));
|
|
328
|
+
console.log(chalk.green(`✅ Created empty course structure for ${courseId}`));
|
|
329
|
+
}
|
|
207
330
|
/**
|
|
208
331
|
* Generate .gitignore file for the project
|
|
209
332
|
*/
|
|
@@ -322,6 +445,7 @@ Thumbs.db
|
|
|
322
445
|
|
|
323
446
|
# Skuilder specific
|
|
324
447
|
/src/data/local-*.json
|
|
448
|
+
.skuilder/
|
|
325
449
|
`;
|
|
326
450
|
await fs.writeFile(gitignorePath, gitignoreContent);
|
|
327
451
|
}
|
|
@@ -363,8 +487,32 @@ npm run dev
|
|
|
363
487
|
Build for production:
|
|
364
488
|
\`\`\`bash
|
|
365
489
|
npm run build
|
|
490
|
+
\`\`\`${config.dataLayerType === 'static'
|
|
491
|
+
? `
|
|
492
|
+
|
|
493
|
+
## Studio Mode (Content Editing)
|
|
494
|
+
|
|
495
|
+
This project supports **Studio Mode** - a content editing web interface for modifying course data:
|
|
496
|
+
|
|
497
|
+
\`\`\`bash
|
|
498
|
+
npm run studio
|
|
366
499
|
\`\`\`
|
|
367
500
|
|
|
501
|
+
Studio mode provides:
|
|
502
|
+
- **Visual Course Editor**: Interactive interface for editing course content
|
|
503
|
+
- **Live Preview**: See changes immediately in the browser
|
|
504
|
+
- **Hot Reload**: Changes are saved automatically to your course files
|
|
505
|
+
- **No Setup Required**: Built into the Skuilder CLI - just run the command
|
|
506
|
+
|
|
507
|
+
When you run \`npm run studio\`, it will:
|
|
508
|
+
1. Start a local CouchDB instance for temporary editing
|
|
509
|
+
2. Load your course data from \`public/static-courses/\`
|
|
510
|
+
3. Launch the studio interface at http://localhost:7174
|
|
511
|
+
4. Save changes back to your static course files when you flush
|
|
512
|
+
|
|
513
|
+
**Important**: Studio mode **overwrites** existing static data source files in \`public/static-courses/\`. Make sure to commit or backup your course data before making major edits.`
|
|
514
|
+
: ''}
|
|
515
|
+
|
|
368
516
|
## Configuration
|
|
369
517
|
|
|
370
518
|
Course configuration is managed in \`skuilder.config.json\`. You can modify:
|
|
@@ -430,6 +578,33 @@ Visit the [Skuilder documentation](https://github.com/NiloCK/vue-skuilder) for m
|
|
|
430
578
|
`;
|
|
431
579
|
await fs.writeFile(readmePath, readme);
|
|
432
580
|
}
|
|
581
|
+
/**
|
|
582
|
+
* Create .skuilder directory structure for studio builds cache
|
|
583
|
+
*/
|
|
584
|
+
async function createSkuilderDirectory(projectPath) {
|
|
585
|
+
const skuilderPath = path.join(projectPath, '.skuilder');
|
|
586
|
+
const templatesPath = path.join(__dirname, '..', '..', 'templates', '.skuilder');
|
|
587
|
+
// Create .skuilder directory
|
|
588
|
+
await fs.mkdir(skuilderPath, { recursive: true });
|
|
589
|
+
// Create studio-builds subdirectory
|
|
590
|
+
await fs.mkdir(path.join(skuilderPath, 'studio-builds'), { recursive: true });
|
|
591
|
+
// Copy README template if it exists
|
|
592
|
+
if (existsSync(templatesPath)) {
|
|
593
|
+
await copyDirectory(templatesPath, skuilderPath);
|
|
594
|
+
}
|
|
595
|
+
else {
|
|
596
|
+
// Fallback: create basic README
|
|
597
|
+
const readmeContent = `# .skuilder Directory
|
|
598
|
+
|
|
599
|
+
**⚠️ WARNING: GENERATED CONTENT - DO NOT EDIT MANUALLY ⚠️**
|
|
600
|
+
|
|
601
|
+
This directory contains files generated by the Skuilder CLI tools.
|
|
602
|
+
|
|
603
|
+
Generated by @vue-skuilder/cli
|
|
604
|
+
`;
|
|
605
|
+
await fs.writeFile(path.join(skuilderPath, 'README.md'), readmeContent);
|
|
606
|
+
}
|
|
607
|
+
}
|
|
433
608
|
/**
|
|
434
609
|
* Copy and transform the standalone-ui template to create a new project
|
|
435
610
|
*/
|
|
@@ -453,13 +628,15 @@ export async function processTemplate(projectPath, config, cliVersion) {
|
|
|
453
628
|
}
|
|
454
629
|
console.log(chalk.blue('🔧 Generating configuration...'));
|
|
455
630
|
const configPath = path.join(projectPath, 'skuilder.config.json');
|
|
456
|
-
await generateSkuilderConfig(configPath, config);
|
|
631
|
+
await generateSkuilderConfig(configPath, config, projectPath);
|
|
457
632
|
console.log(chalk.blue('📝 Creating README...'));
|
|
458
633
|
const readmePath = path.join(projectPath, 'README.md');
|
|
459
634
|
await generateReadme(readmePath, config);
|
|
460
635
|
console.log(chalk.blue('📄 Generating .gitignore...'));
|
|
461
636
|
const gitignorePath = path.join(projectPath, '.gitignore');
|
|
462
637
|
await generateGitignore(gitignorePath);
|
|
638
|
+
console.log(chalk.blue('📁 Creating .skuilder directory structure...'));
|
|
639
|
+
await createSkuilderDirectory(projectPath);
|
|
463
640
|
console.log(chalk.green('✅ Template processing complete!'));
|
|
464
641
|
}
|
|
465
642
|
//# sourceMappingURL=template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"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"}
|
package/eslint.config.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import backendConfig from '../../eslint.config.backend.mjs';
|
|
|
3
3
|
export default [
|
|
4
4
|
...backendConfig,
|
|
5
5
|
{
|
|
6
|
-
ignores: ['node_modules/**', 'dist/**', 'eslint.config.mjs', 'tsconfig.json'],
|
|
6
|
+
ignores: ['node_modules/**', 'dist/**', 'eslint.config.mjs', 'tsconfig.json', 'testproject/**'],
|
|
7
7
|
},
|
|
8
8
|
{
|
|
9
9
|
languageOptions: {
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.1.
|
|
6
|
+
"version": "0.1.8-0",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"description": "CLI scaffolding tool for vue-skuilder projects",
|
|
9
9
|
"bin": {
|
|
@@ -18,13 +18,16 @@
|
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
|
-
"build": "rm -rf dist && npm run build:
|
|
22
|
-
"build:
|
|
23
|
-
"embed:studio-ui": "mkdir -p dist/studio-ui-
|
|
21
|
+
"build": "rm -rf dist && npm run build:express && tsc && npm run embed:studio-ui-src && npm run embed:express && npm run embed:templates",
|
|
22
|
+
"build:express": "cd ../express && npm run build",
|
|
23
|
+
"embed:studio-ui-src": "mkdir -p dist/studio-ui-src && cp -r ../studio-ui/src/* dist/studio-ui-src/ && cp ../studio-ui/package.json dist/studio-ui-src/ && cp ../studio-ui/vite.config.ts dist/studio-ui-src/ && cp ../studio-ui/tsconfig.json dist/studio-ui-src/ && cp ../studio-ui/index.html dist/studio-ui-src/ && cp ../../vite.config.base.js dist/studio-ui-src/ && sed -i 's|../../vite.config.base.js|./vite.config.base.js|' dist/studio-ui-src/vite.config.ts && sed -i 's|resolve(__dirname, \\.\\., \\.\\.)|resolve(__dirname)|' dist/studio-ui-src/vite.config.ts && sed -i 's|/src/main.ts|./main.ts|' dist/studio-ui-src/index.html",
|
|
24
|
+
"embed:express": "mkdir -p dist/express-assets && cp -r ../express/dist/* dist/express-assets/ && cp -r ../express/assets dist/express-assets/",
|
|
25
|
+
"embed:templates": "mkdir -p dist/templates && cp -r templates/.skuilder dist/templates/",
|
|
24
26
|
"dev": "tsc --watch",
|
|
25
27
|
"lint": "npx eslint .",
|
|
26
28
|
"lint:fix": "npx eslint . --fix",
|
|
27
|
-
"lint:check": "npx eslint . --max-warnings 0"
|
|
29
|
+
"lint:check": "npx eslint . --max-warnings 0",
|
|
30
|
+
"try:init": "node dist/cli.js init testproject --dangerously-clobber --no-interactive --data-layer static --import-course-data --import-server-url http://localhost:5984 --import-username admin --import-password password --import-course-ids 2aeb8315ef78f3e89ca386992d00825b && cd testproject && npm i && npm install --save-dev @vue-skuilder/cli@file:.. && npm install @vue-skuilder/db@file:../../db @vue-skuilder/courses@file:../../courses @vue-skuilder/common-ui@file:../../common-ui"
|
|
28
31
|
},
|
|
29
32
|
"keywords": [
|
|
30
33
|
"cli",
|
|
@@ -35,23 +38,39 @@
|
|
|
35
38
|
"course"
|
|
36
39
|
],
|
|
37
40
|
"dependencies": {
|
|
38
|
-
"@
|
|
39
|
-
"@vue-skuilder/
|
|
41
|
+
"@mdi/font": "^7.3.67",
|
|
42
|
+
"@vue-skuilder/common": "0.1.8-0",
|
|
43
|
+
"@vue-skuilder/common-ui": "0.1.8-0",
|
|
44
|
+
"@vue-skuilder/courses": "0.1.8-0",
|
|
45
|
+
"@vue-skuilder/db": "0.1.8-0",
|
|
46
|
+
"@vue-skuilder/edit-ui": "0.1.8-0",
|
|
47
|
+
"@vue-skuilder/standalone-ui": "^0.1.8-0",
|
|
40
48
|
"chalk": "^5.3.0",
|
|
41
49
|
"commander": "^11.0.0",
|
|
42
50
|
"fs-extra": "^11.2.0",
|
|
43
51
|
"inquirer": "^9.2.0",
|
|
44
|
-
"
|
|
52
|
+
"pinia": "^2.3.0",
|
|
53
|
+
"pouchdb": "^9.0.0",
|
|
54
|
+
"serve-static": "^1.15.0",
|
|
55
|
+
"vue": "^3.5.13",
|
|
56
|
+
"vue-router": "^4.2.0",
|
|
57
|
+
"vuetify": "^3.7.0"
|
|
45
58
|
},
|
|
46
59
|
"devDependencies": {
|
|
47
60
|
"@types/fs-extra": "^11.0.0",
|
|
48
61
|
"@types/inquirer": "^9.0.0",
|
|
49
62
|
"@types/node": "^20.0.0",
|
|
50
|
-
"@
|
|
51
|
-
"
|
|
63
|
+
"@types/serve-static": "^1.15.0",
|
|
64
|
+
"@vitejs/plugin-vue": "^5.2.1",
|
|
65
|
+
"@vue-skuilder/express": "0.1.8-0",
|
|
66
|
+
"@vue-skuilder/studio-ui": "0.1.8-0",
|
|
67
|
+
"typescript": "~5.7.2",
|
|
68
|
+
"vite": "^6.0.9",
|
|
69
|
+
"vue-tsc": "^1.8.0"
|
|
52
70
|
},
|
|
53
71
|
"engines": {
|
|
54
72
|
"node": ">=18.0.0"
|
|
55
73
|
},
|
|
56
|
-
"packageManager": "yarn@4.6.0"
|
|
74
|
+
"packageManager": "yarn@4.6.0",
|
|
75
|
+
"stableVersion": "0.1.7"
|
|
57
76
|
}
|
package/src/cli.ts
CHANGED
|
@@ -16,12 +16,14 @@ const __dirname = dirname(__filename);
|
|
|
16
16
|
const packagePath = join(__dirname, '..', 'package.json');
|
|
17
17
|
const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));
|
|
18
18
|
|
|
19
|
+
export const VERSION: string = packageJson.version;
|
|
20
|
+
|
|
19
21
|
const program = new Command();
|
|
20
22
|
|
|
21
23
|
program
|
|
22
24
|
.name('skuilder')
|
|
23
25
|
.description('CLI tool for scaffolding Skuilder course applications')
|
|
24
|
-
.version(
|
|
26
|
+
.version(VERSION);
|
|
25
27
|
|
|
26
28
|
// Add commands
|
|
27
29
|
program.addCommand(createInitCommand());
|
package/src/commands/init.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
-
import { existsSync, readFileSync } from 'fs';
|
|
3
|
+
import { existsSync, readFileSync, rmSync } from 'fs';
|
|
4
4
|
import path, { dirname, join } from 'path';
|
|
5
5
|
import { fileURLToPath } from 'url';
|
|
6
6
|
import { CliOptions, PREDEFINED_THEMES } from '../types.js';
|
|
@@ -24,6 +24,12 @@ export function createInitCommand(): Command {
|
|
|
24
24
|
.option('--no-interactive', 'skip interactive prompts')
|
|
25
25
|
.option('--couchdb-url <url>', 'CouchDB server URL (for dynamic data layer)')
|
|
26
26
|
.option('--course-id <id>', 'course ID to import (for dynamic data layer)')
|
|
27
|
+
.option('--import-course-data', 'import course data from CouchDB (for static data layer)')
|
|
28
|
+
.option('--import-server-url <url>', 'CouchDB server URL for course import (for static data layer)')
|
|
29
|
+
.option('--import-username <username>', 'username for course import server')
|
|
30
|
+
.option('--import-password <password>', 'password for course import server')
|
|
31
|
+
.option('--import-course-ids <ids>', 'comma-separated course IDs to import')
|
|
32
|
+
.option('--dangerously-clobber', 'overwrite existing directory')
|
|
27
33
|
.action(initCommand);
|
|
28
34
|
}
|
|
29
35
|
|
|
@@ -33,6 +39,12 @@ interface InitOptions {
|
|
|
33
39
|
interactive: boolean;
|
|
34
40
|
couchdbUrl?: string;
|
|
35
41
|
courseId?: string;
|
|
42
|
+
importCourseData?: boolean;
|
|
43
|
+
importServerUrl?: string;
|
|
44
|
+
importUsername?: string;
|
|
45
|
+
importPassword?: string;
|
|
46
|
+
importCourseIds?: string;
|
|
47
|
+
dangerouslyClobber?: boolean;
|
|
36
48
|
}
|
|
37
49
|
|
|
38
50
|
async function initCommand(projectName: string, options: InitOptions): Promise<void> {
|
|
@@ -45,6 +57,29 @@ async function initCommand(projectName: string, options: InitOptions): Promise<v
|
|
|
45
57
|
process.exit(1);
|
|
46
58
|
}
|
|
47
59
|
|
|
60
|
+
// Validate that import-* options require --import-course-data flag
|
|
61
|
+
const importOptions = [
|
|
62
|
+
{ flag: '--import-server-url', value: options.importServerUrl },
|
|
63
|
+
{ flag: '--import-username', value: options.importUsername },
|
|
64
|
+
{ flag: '--import-password', value: options.importPassword },
|
|
65
|
+
{ flag: '--import-course-ids', value: options.importCourseIds }
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
const usedImportOptions = importOptions.filter(opt => opt.value !== undefined);
|
|
69
|
+
|
|
70
|
+
if (usedImportOptions.length > 0 && !options.importCourseData) {
|
|
71
|
+
console.error(
|
|
72
|
+
chalk.red('❌ Import options require the --import-course-data flag.')
|
|
73
|
+
);
|
|
74
|
+
console.error(
|
|
75
|
+
chalk.yellow(`Used options: ${usedImportOptions.map(opt => opt.flag).join(', ')}`)
|
|
76
|
+
);
|
|
77
|
+
console.error(
|
|
78
|
+
chalk.yellow('Add --import-course-data to enable course data import.')
|
|
79
|
+
);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
|
|
48
83
|
// Validate theme option
|
|
49
84
|
const validThemes = Object.keys(PREDEFINED_THEMES);
|
|
50
85
|
if (!validThemes.includes(options.theme)) {
|
|
@@ -60,8 +95,13 @@ async function initCommand(projectName: string, options: InitOptions): Promise<v
|
|
|
60
95
|
// Check if directory already exists
|
|
61
96
|
const projectPath = path.resolve(process.cwd(), projectName);
|
|
62
97
|
if (existsSync(projectPath)) {
|
|
63
|
-
|
|
64
|
-
|
|
98
|
+
if (options.dangerouslyClobber) {
|
|
99
|
+
console.log(chalk.yellow(`--dangerously-clobber specified, removing existing directory: ${projectPath}`));
|
|
100
|
+
rmSync(projectPath, { recursive: true, force: true });
|
|
101
|
+
} else {
|
|
102
|
+
console.error(chalk.red(`❌ Directory "${projectName}" already exists.`));
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
65
105
|
}
|
|
66
106
|
|
|
67
107
|
// Get CLI version for dependency transformation
|
|
@@ -76,6 +116,11 @@ async function initCommand(projectName: string, options: InitOptions): Promise<v
|
|
|
76
116
|
interactive: options.interactive,
|
|
77
117
|
couchdbUrl: options.couchdbUrl,
|
|
78
118
|
courseId: options.courseId,
|
|
119
|
+
importCourseData: options.importCourseData,
|
|
120
|
+
importServerUrl: options.importServerUrl,
|
|
121
|
+
importUsername: options.importUsername,
|
|
122
|
+
importPassword: options.importPassword,
|
|
123
|
+
importCourseIds: options.importCourseIds,
|
|
79
124
|
};
|
|
80
125
|
|
|
81
126
|
// Gather project configuration
|
package/src/commands/pack.ts
CHANGED
|
@@ -27,7 +27,7 @@ interface PackOptions {
|
|
|
27
27
|
noAttachments: boolean;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
async function packCourse(courseId: string, options: PackOptions) {
|
|
30
|
+
export async function packCourse(courseId: string, options: PackOptions) {
|
|
31
31
|
try {
|
|
32
32
|
console.log(chalk.cyan(`🔧 Packing course: ${courseId}`));
|
|
33
33
|
|