@vue-skuilder/cli 0.1.6 → 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.
Files changed (141) hide show
  1. package/README.md +122 -8
  2. package/dist/cli.d.ts +1 -1
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +10 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/init.d.ts.map +1 -1
  7. package/dist/commands/init.js +34 -3
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/pack.d.ts +10 -0
  10. package/dist/commands/pack.d.ts.map +1 -1
  11. package/dist/commands/pack.js +1 -1
  12. package/dist/commands/pack.js.map +1 -1
  13. package/dist/commands/studio.d.ts +3 -0
  14. package/dist/commands/studio.d.ts.map +1 -0
  15. package/dist/commands/studio.js +931 -0
  16. package/dist/commands/studio.js.map +1 -0
  17. package/dist/commands/unpack.d.ts +15 -0
  18. package/dist/commands/unpack.d.ts.map +1 -0
  19. package/dist/commands/unpack.js +228 -0
  20. package/dist/commands/unpack.js.map +1 -0
  21. package/dist/express-assets/app.d.ts +6 -0
  22. package/dist/express-assets/app.d.ts.map +1 -0
  23. package/dist/express-assets/app.js +209 -0
  24. package/dist/express-assets/app.js.map +1 -0
  25. package/dist/express-assets/assets/classroomDesignDoc.js +24 -0
  26. package/dist/express-assets/assets/courseValidateDocUpdate.js +56 -0
  27. package/dist/express-assets/assets/get-tagsDesignDoc.json +9 -0
  28. package/dist/express-assets/attachment-preprocessing/index.d.ts +11 -0
  29. package/dist/express-assets/attachment-preprocessing/index.d.ts.map +1 -0
  30. package/dist/express-assets/attachment-preprocessing/index.js +204 -0
  31. package/dist/express-assets/attachment-preprocessing/index.js.map +1 -0
  32. package/dist/express-assets/attachment-preprocessing/normalize.d.ts +7 -0
  33. package/dist/express-assets/attachment-preprocessing/normalize.d.ts.map +1 -0
  34. package/dist/express-assets/attachment-preprocessing/normalize.js +90 -0
  35. package/dist/express-assets/attachment-preprocessing/normalize.js.map +1 -0
  36. package/dist/express-assets/client-requests/classroom-requests.d.ts +26 -0
  37. package/dist/express-assets/client-requests/classroom-requests.d.ts.map +1 -0
  38. package/dist/express-assets/client-requests/classroom-requests.js +171 -0
  39. package/dist/express-assets/client-requests/classroom-requests.js.map +1 -0
  40. package/dist/express-assets/client-requests/course-requests.d.ts +10 -0
  41. package/dist/express-assets/client-requests/course-requests.d.ts.map +1 -0
  42. package/dist/express-assets/client-requests/course-requests.js +135 -0
  43. package/dist/express-assets/client-requests/course-requests.js.map +1 -0
  44. package/dist/express-assets/client-requests/pack-requests.d.ts +19 -0
  45. package/dist/express-assets/client-requests/pack-requests.d.ts.map +1 -0
  46. package/dist/express-assets/client-requests/pack-requests.js +130 -0
  47. package/dist/express-assets/client-requests/pack-requests.js.map +1 -0
  48. package/dist/express-assets/client.d.ts +31 -0
  49. package/dist/express-assets/client.d.ts.map +1 -0
  50. package/dist/express-assets/client.js +70 -0
  51. package/dist/express-assets/client.js.map +1 -0
  52. package/dist/express-assets/couchdb/authentication.d.ts +4 -0
  53. package/dist/express-assets/couchdb/authentication.d.ts.map +1 -0
  54. package/dist/express-assets/couchdb/authentication.js +69 -0
  55. package/dist/express-assets/couchdb/authentication.js.map +1 -0
  56. package/dist/express-assets/couchdb/index.d.ts +18 -0
  57. package/dist/express-assets/couchdb/index.d.ts.map +1 -0
  58. package/dist/express-assets/couchdb/index.js +52 -0
  59. package/dist/express-assets/couchdb/index.js.map +1 -0
  60. package/dist/express-assets/design-docs.d.ts +63 -0
  61. package/dist/express-assets/design-docs.d.ts.map +1 -0
  62. package/dist/express-assets/design-docs.js +90 -0
  63. package/dist/express-assets/design-docs.js.map +1 -0
  64. package/dist/express-assets/logger.d.ts +3 -0
  65. package/dist/express-assets/logger.d.ts.map +1 -0
  66. package/dist/express-assets/logger.js +62 -0
  67. package/dist/express-assets/logger.js.map +1 -0
  68. package/dist/express-assets/routes/logs.d.ts +3 -0
  69. package/dist/express-assets/routes/logs.d.ts.map +1 -0
  70. package/dist/express-assets/routes/logs.js +274 -0
  71. package/dist/express-assets/routes/logs.js.map +1 -0
  72. package/dist/express-assets/utils/env.d.ts +11 -0
  73. package/dist/express-assets/utils/env.d.ts.map +1 -0
  74. package/dist/express-assets/utils/env.js +39 -0
  75. package/dist/express-assets/utils/env.js.map +1 -0
  76. package/dist/express-assets/utils/processQueue.d.ts +39 -0
  77. package/dist/express-assets/utils/processQueue.d.ts.map +1 -0
  78. package/dist/express-assets/utils/processQueue.js +175 -0
  79. package/dist/express-assets/utils/processQueue.js.map +1 -0
  80. package/dist/studio-ui-src/App.vue +132 -0
  81. package/dist/studio-ui-src/api/index.ts +30 -0
  82. package/dist/studio-ui-src/components/StudioFlush.vue +108 -0
  83. package/dist/studio-ui-src/config/development.ts +98 -0
  84. package/dist/studio-ui-src/index.html +13 -0
  85. package/dist/studio-ui-src/main.ts +148 -0
  86. package/dist/studio-ui-src/package.json +35 -0
  87. package/dist/studio-ui-src/router/index.ts +32 -0
  88. package/dist/studio-ui-src/stores/useAuthStore.ts +3 -0
  89. package/dist/studio-ui-src/tsconfig.json +28 -0
  90. package/dist/studio-ui-src/views/BrowseView.vue +82 -0
  91. package/dist/studio-ui-src/views/BulkImportView.vue +89 -0
  92. package/dist/studio-ui-src/views/CourseEditorView.vue +62 -0
  93. package/dist/studio-ui-src/views/CreateCardView.vue +140 -0
  94. package/dist/studio-ui-src/vite.config.base.js +100 -0
  95. package/dist/studio-ui-src/vite.config.ts +26 -0
  96. package/dist/templates/.skuilder/README.md +29 -0
  97. package/dist/types.d.ts +5 -0
  98. package/dist/types.d.ts.map +1 -1
  99. package/dist/types.js.map +1 -1
  100. package/dist/utils/ExpressManager.d.ts +28 -0
  101. package/dist/utils/ExpressManager.d.ts.map +1 -0
  102. package/dist/utils/ExpressManager.js +166 -0
  103. package/dist/utils/ExpressManager.js.map +1 -0
  104. package/dist/utils/NodeFileSystemAdapter.d.ts +20 -0
  105. package/dist/utils/NodeFileSystemAdapter.d.ts.map +1 -0
  106. package/dist/utils/NodeFileSystemAdapter.js +83 -0
  107. package/dist/utils/NodeFileSystemAdapter.js.map +1 -0
  108. package/dist/utils/error-reporting.d.ts +54 -0
  109. package/dist/utils/error-reporting.d.ts.map +1 -0
  110. package/dist/utils/error-reporting.js +143 -0
  111. package/dist/utils/error-reporting.js.map +1 -0
  112. package/dist/utils/pack-courses.d.ts.map +1 -1
  113. package/dist/utils/pack-courses.js +10 -27
  114. package/dist/utils/pack-courses.js.map +1 -1
  115. package/dist/utils/prompts.d.ts.map +1 -1
  116. package/dist/utils/prompts.js +24 -0
  117. package/dist/utils/prompts.js.map +1 -1
  118. package/dist/utils/questions-hash.d.ts +22 -0
  119. package/dist/utils/questions-hash.d.ts.map +1 -0
  120. package/dist/utils/questions-hash.js +96 -0
  121. package/dist/utils/questions-hash.js.map +1 -0
  122. package/dist/utils/template.d.ts +2 -2
  123. package/dist/utils/template.d.ts.map +1 -1
  124. package/dist/utils/template.js +218 -27
  125. package/dist/utils/template.js.map +1 -1
  126. package/eslint.config.mjs +1 -1
  127. package/package.json +30 -8
  128. package/src/cli.ts +11 -1
  129. package/src/commands/init.ts +48 -3
  130. package/src/commands/pack.ts +1 -1
  131. package/src/commands/studio.ts +1226 -0
  132. package/src/commands/unpack.ts +259 -0
  133. package/src/types.ts +5 -0
  134. package/src/utils/ExpressManager.ts +210 -0
  135. package/src/utils/NodeFileSystemAdapter.ts +116 -0
  136. package/src/utils/error-reporting.ts +192 -0
  137. package/src/utils/pack-courses.ts +11 -36
  138. package/src/utils/prompts.ts +34 -0
  139. package/src/utils/questions-hash.ts +109 -0
  140. package/src/utils/template.ts +252 -29
  141. package/templates/.skuilder/README.md +29 -0
@@ -0,0 +1,100 @@
1
+ import { resolve } from 'path';
2
+
3
+ const isDev = process.env.NODE_ENV !== 'production';
4
+
5
+ console.info(`[VITE] shared config loaded in ${isDev ? 'development' : 'production'} mode`);
6
+
7
+ /**
8
+ * Creates shared alias mappings for monorepo packages
9
+ * @param {string} rootDir - Path to the monorepo root directory
10
+ * @returns {Object} Alias configuration object
11
+ */
12
+ export function createBaseAliases(rootDir = process.cwd()) {
13
+ return {
14
+ // Inter-package aliases using actual package names from imports
15
+ '@vue-skuilder/db': isDev
16
+ ? resolve(rootDir, './packages/db/src') // Dev: source directory
17
+ : resolve(rootDir, './packages/db/dist/index.mjs'), // Prod: ES module build
18
+ '@vue-skuilder/common': isDev
19
+ ? resolve(rootDir, './packages/common/src') // Dev: source directory
20
+ : resolve(rootDir, './packages/common/dist/index.mjs'),
21
+
22
+ // specific built-style imports must precede the package alias, otherwise
23
+ // the package prefixes get aliased out before this alias is applied
24
+
25
+ '@vue-skuilder/common-ui/style': resolve(rootDir, './packages/common-ui/dist/assets/index.css'),
26
+ '@vue-skuilder/courses/style': resolve(rootDir, './packages/courses/dist/assets/index.css'),
27
+ '@vue-skuilder/edit-ui/style': resolve(rootDir, './packages/edit-ui/dist/assets/index.css'),
28
+
29
+ '@vue-skuilder/common-ui': isDev
30
+ ? resolve(rootDir, './packages/common-ui/src') // Dev: source directory
31
+ : resolve(rootDir, './packages/common-ui/dist/common-ui.es.js'),
32
+ '@vue-skuilder/courses': isDev
33
+ ? resolve(rootDir, './packages/courses/src') // Dev: source directory
34
+ : resolve(rootDir, './packages/courses/dist/index.mjs'),
35
+ '@vue-skuilder/edit-ui': isDev
36
+ ? resolve(rootDir, './packages/edit-ui/src') // Dev: source directory
37
+ : resolve(rootDir, './packages/edit-ui/dist/edit-ui.es.js'),
38
+
39
+ '@vue-skuilder/express': isDev
40
+ ? resolve(rootDir, './packages/express/src') // Dev: source directory
41
+ : resolve(rootDir, './packages/express/dist/index.mjs'), // Assuming ESM build, adjust if different
42
+ '@vue-skuilder/platform-ui': isDev
43
+ ? resolve(rootDir, './packages/platform-ui/src') // App, resolve to src dir
44
+ : resolve(rootDir, './packages/platform-ui/dist'), // App, resolve to dist dir
45
+ '@vue-skuilder/standalone-ui': isDev
46
+ ? resolve(rootDir, './packages/standalone-ui/src') // App, resolve to src dir
47
+ : resolve(rootDir, './packages/standalone-ui/dist'), // App, resolve to dist dir
48
+ '@vue-skuilder/e2e-db': isDev
49
+ ? resolve(rootDir, './packages/e2e-db/src') // Dev: source directory
50
+ : resolve(rootDir, './packages/e2e-db/dist/index.js'), // Assuming CJS build for tests
51
+ '@vue-skuilder/cli': isDev
52
+ ? resolve(rootDir, './packages/cli/src') // Dev: source directory
53
+ : resolve(rootDir, './packages/cli/dist/cli.js'), // Assuming CJS build
54
+ '@vue-skuilder/client': isDev
55
+ ? resolve(rootDir, './packages/client/src') // Dev: source directory
56
+ : resolve(rootDir, './packages/client/dist/index.js'), // Assuming CJS build
57
+
58
+ // Intra-package aliases for internal imports (matching tsconfig.base.json)
59
+ // These always point to src directories, as they are used for internal package resolution
60
+ // or by other packages in dev mode when they override the @vue-skuilder/* alias
61
+ '@db': resolve(rootDir, './packages/db/src'),
62
+ '@common': resolve(rootDir, './packages/common/src'),
63
+ '@cui': resolve(rootDir, './packages/common-ui/src'),
64
+ '@courses': resolve(rootDir, './packages/courses/src'),
65
+ '@eui': resolve(rootDir, './packages/edit-ui/src'),
66
+ '@express': resolve(rootDir, './packages/express/src'),
67
+ '@pui': resolve(rootDir, './packages/platform-ui/src'), // App, resolve to src dir
68
+ '@sui': resolve(rootDir, './packages/standalone-ui/src'), // App, resolve to src dir
69
+ '@e2e-db': resolve(rootDir, './packages/e2e-db/src'),
70
+ '@cli': resolve(rootDir, './packages/cli/src'),
71
+ '@client': resolve(rootDir, './packages/client/src'),
72
+ };
73
+ }
74
+
75
+ /**
76
+ * Creates shared Vite resolve configuration
77
+ * @param {string} rootDir - Path to the monorepo root directory
78
+ * @param {Object} localAliases - Package-specific aliases to merge
79
+ * @returns {Object} Vite resolve configuration
80
+ */
81
+ export function createBaseResolve(rootDir = process.cwd(), localAliases = {}) {
82
+ return {
83
+ alias: {
84
+ ...createBaseAliases(rootDir),
85
+ ...localAliases,
86
+ },
87
+ extensions: ['.js', '.ts', '.json', '.vue'],
88
+ dedupe: [
89
+ 'vue',
90
+ 'vuetify',
91
+ 'vue-router',
92
+ 'pinia',
93
+ '@vue-skuilder/db',
94
+ '@vue-skuilder/common',
95
+ '@vue-skuilder/common-ui',
96
+ '@vue-skuilder/courses',
97
+ '@vue-skuilder/edit-ui',
98
+ ],
99
+ };
100
+ }
@@ -0,0 +1,26 @@
1
+ import { defineConfig } from 'vite';
2
+ import vue from '@vitejs/plugin-vue';
3
+ import { createBaseResolve } from './vite.config.base.js';
4
+ import { resolve } from 'path';
5
+
6
+ export default defineConfig({
7
+ plugins: [vue()],
8
+ resolve: createBaseResolve(resolve(__dirname, '..', '..')),
9
+ server: {
10
+ port: 7173, // Distinct from platform-ui (5173) and standalone-ui (6173)
11
+ host: '0.0.0.0'
12
+ },
13
+ build: {
14
+ target: 'es2020',
15
+ outDir: 'dist',
16
+ sourcemap: true,
17
+ rollupOptions: {
18
+ output: {
19
+ manualChunks: {
20
+ vue: ['vue', 'vue-router', 'pinia'],
21
+ vuetify: ['vuetify']
22
+ }
23
+ }
24
+ }
25
+ }
26
+ });
@@ -0,0 +1,29 @@
1
+ # .skuilder Directory
2
+
3
+ **⚠️ WARNING: GENERATED CONTENT - DO NOT EDIT MANUALLY ⚠️**
4
+
5
+ This directory contains files generated by the Skuilder CLI tools and is **NOT** intended for manual editing except under experimental circumstances.
6
+
7
+ ## Contents
8
+
9
+ - `studio-builds/` - Cached builds of studio-ui with local question types
10
+ - Each subdirectory represents a different build based on your `src/questions/` content
11
+ - Builds are automatically managed by `skuilder studio` command
12
+ - Safe to delete - will be regenerated as needed
13
+
14
+ ## Purpose
15
+
16
+ The Skuilder CLI uses this directory to cache studio-ui builds that include your local question types. This enables:
17
+
18
+ - Fast startup of `skuilder studio` when your questions haven't changed
19
+ - Isolation between different question type configurations
20
+ - Automatic rebuild when your local questions are modified
21
+
22
+ ## Maintenance
23
+
24
+ - **Safe to delete**: The entire `.skuilder` directory can be deleted safely
25
+ - **Automatic cleanup**: Old builds may be cleaned up automatically
26
+ - **Version control**: This directory should be ignored by git (check your .gitignore)
27
+
28
+ ---
29
+ Generated by @vue-skuilder/cli
package/dist/types.d.ts CHANGED
@@ -4,6 +4,11 @@ export interface CliOptions {
4
4
  interactive: boolean;
5
5
  couchdbUrl?: string;
6
6
  courseId?: string;
7
+ importCourseData?: boolean;
8
+ importServerUrl?: string;
9
+ importUsername?: string;
10
+ importPassword?: string;
11
+ importCourseIds?: string;
7
12
  }
8
13
  export interface ProjectConfig {
9
14
  projectName: 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;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"}
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;IAClB,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,CAAC;CAC1B;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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface ExpressManagerOptions {
2
+ port: number;
3
+ couchdbUrl: string;
4
+ couchdbUsername: string;
5
+ couchdbPassword: string;
6
+ projectPath?: string;
7
+ }
8
+ export interface ExpressManagerCallbacks {
9
+ onLog?: (message: string) => void;
10
+ onError?: (error: string) => void;
11
+ }
12
+ export declare class ExpressManager {
13
+ private process;
14
+ private readonly options;
15
+ private readonly callbacks;
16
+ constructor(options: ExpressManagerOptions, callbacks?: ExpressManagerCallbacks);
17
+ start(): Promise<void>;
18
+ stop(): Promise<void>;
19
+ getConnectionDetails(): {
20
+ url: string;
21
+ port: number;
22
+ };
23
+ private findAvailablePort;
24
+ private isPortAvailable;
25
+ private extractServerFromUrl;
26
+ private extractProtocolFromUrl;
27
+ }
28
+ //# sourceMappingURL=ExpressManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpressManager.d.ts","sourceRoot":"","sources":["../../src/utils/ExpressManager.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAExC,OAAO,EAAE,qBAAqB,EAAE,SAAS,GAAE,uBAA4B;IAK7E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwGtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B3B,oBAAoB;;;;YAON,iBAAiB;IAY/B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,sBAAsB;CAI/B"}
@@ -0,0 +1,166 @@
1
+ import { spawn } from 'child_process';
2
+ import { fileURLToPath } from 'url';
3
+ import { dirname, join } from 'path';
4
+ import fs from 'fs';
5
+ import { createRequire } from 'module';
6
+ const require = createRequire(import.meta.url);
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = dirname(__filename);
9
+ export class ExpressManager {
10
+ process = null;
11
+ options;
12
+ callbacks;
13
+ constructor(options, callbacks = {}) {
14
+ this.options = options;
15
+ this.callbacks = callbacks;
16
+ }
17
+ async start() {
18
+ if (this.process) {
19
+ throw new Error('Express server is already running');
20
+ }
21
+ const expressAssetsPath = join(__dirname, '..', 'express-assets');
22
+ if (!fs.existsSync(expressAssetsPath)) {
23
+ throw new Error('Express assets not found. Please rebuild the CLI package.');
24
+ }
25
+ const expressMainPath = join(expressAssetsPath, 'app.js');
26
+ if (!fs.existsSync(expressMainPath)) {
27
+ throw new Error('Express main file not found at: ' + expressMainPath);
28
+ }
29
+ // Find available port starting from requested port
30
+ const availablePort = await this.findAvailablePort(this.options.port);
31
+ // Get version from package.json
32
+ let version = '0.0.0';
33
+ try {
34
+ const packageJsonPath = join(__dirname, '..', '..', 'package.json');
35
+ const packageJson = require(packageJsonPath);
36
+ version = packageJson.version || '0.0.0';
37
+ }
38
+ catch (error) {
39
+ console.warn('Could not read package.json for version:', error);
40
+ // Fallback version if package.json not found
41
+ version = '0.0.0';
42
+ }
43
+ // Set environment variables for express
44
+ const env = {
45
+ ...process.env,
46
+ PORT: availablePort.toString(),
47
+ COUCHDB_SERVER: this.extractServerFromUrl(this.options.couchdbUrl),
48
+ COUCHDB_PROTOCOL: this.extractProtocolFromUrl(this.options.couchdbUrl),
49
+ COUCHDB_ADMIN: this.options.couchdbUsername,
50
+ COUCHDB_PASSWORD: this.options.couchdbPassword,
51
+ VERSION: version,
52
+ NODE_ENV: 'studio',
53
+ PROJECT_PATH: this.options.projectPath || process.cwd(),
54
+ };
55
+ return new Promise((resolve, reject) => {
56
+ this.process = spawn('node', [expressMainPath], {
57
+ env,
58
+ stdio: ['pipe', 'pipe', 'pipe'],
59
+ cwd: expressAssetsPath,
60
+ });
61
+ if (!this.process) {
62
+ reject(new Error('Failed to start Express process'));
63
+ return;
64
+ }
65
+ let started = false;
66
+ // Handle stdout
67
+ this.process.stdout?.on('data', (data) => {
68
+ const message = data.toString().trim();
69
+ if (message.includes('listening on port') && !started) {
70
+ started = true;
71
+ this.options.port = availablePort; // Update with actual port
72
+ resolve();
73
+ }
74
+ this.callbacks.onLog?.(message);
75
+ });
76
+ // Handle stderr
77
+ this.process.stderr?.on('data', (data) => {
78
+ const error = data.toString().trim();
79
+ this.callbacks.onError?.(error);
80
+ });
81
+ // Handle process exit
82
+ this.process.on('exit', (code) => {
83
+ this.process = null;
84
+ if (code !== 0 && code !== null) {
85
+ this.callbacks.onError?.(`Express process exited with code ${code}`);
86
+ }
87
+ });
88
+ // Handle process errors
89
+ this.process.on('error', (error) => {
90
+ this.process = null;
91
+ if (!started) {
92
+ reject(error);
93
+ }
94
+ else {
95
+ this.callbacks.onError?.(`Express process error: ${error.message}`);
96
+ }
97
+ });
98
+ // Timeout if server doesn't start within 10 seconds
99
+ setTimeout(() => {
100
+ if (!started) {
101
+ void this.stop();
102
+ reject(new Error('Express server failed to start within timeout'));
103
+ }
104
+ }, 10000);
105
+ });
106
+ }
107
+ async stop() {
108
+ if (!this.process) {
109
+ return;
110
+ }
111
+ return new Promise((resolve) => {
112
+ if (!this.process) {
113
+ resolve();
114
+ return;
115
+ }
116
+ this.process.on('exit', () => {
117
+ this.process = null;
118
+ resolve();
119
+ });
120
+ // Try graceful shutdown first
121
+ this.process.kill('SIGTERM');
122
+ // Force kill after 5 seconds if still running
123
+ setTimeout(() => {
124
+ if (this.process) {
125
+ this.process.kill('SIGKILL');
126
+ this.process = null;
127
+ resolve();
128
+ }
129
+ }, 5000);
130
+ });
131
+ }
132
+ getConnectionDetails() {
133
+ return {
134
+ url: `http://localhost:${this.options.port}`,
135
+ port: this.options.port,
136
+ };
137
+ }
138
+ async findAvailablePort(startPort) {
139
+ const net = await import('net');
140
+ for (let port = startPort; port < startPort + 100; port++) {
141
+ if (await this.isPortAvailable(port, net)) {
142
+ return port;
143
+ }
144
+ }
145
+ throw new Error(`No available port found starting from ${startPort}`);
146
+ }
147
+ isPortAvailable(port, net) {
148
+ return new Promise((resolve) => {
149
+ const server = net.createServer();
150
+ server.listen(port, '127.0.0.1', () => {
151
+ server.close(() => resolve(true));
152
+ });
153
+ server.on('error', () => resolve(false));
154
+ });
155
+ }
156
+ extractServerFromUrl(url) {
157
+ // Extract hostname:port from URL like "http://localhost:5984"
158
+ const match = url.match(/https?:\/\/([^/]+)/);
159
+ return match ? match[1] : 'localhost:5984';
160
+ }
161
+ extractProtocolFromUrl(url) {
162
+ // Extract protocol from URL like "http://localhost:5984"
163
+ return url.startsWith('https') ? 'https' : 'http';
164
+ }
165
+ }
166
+ //# sourceMappingURL=ExpressManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpressManager.js","sourceRoot":"","sources":["../../src/utils/ExpressManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { FileSystemAdapter, FileStats } from '@vue-skuilder/db';
2
+ /**
3
+ * Node.js implementation of FileSystemAdapter using native fs and path modules.
4
+ * This works cleanly in CLI environments without bundling issues.
5
+ */
6
+ export declare class NodeFileSystemAdapter implements FileSystemAdapter {
7
+ readFile(filePath: string): Promise<string>;
8
+ readBinary(filePath: string): Promise<Buffer>;
9
+ exists(filePath: string): Promise<boolean>;
10
+ stat(filePath: string): Promise<FileStats>;
11
+ writeFile(filePath: string, data: string | Buffer): Promise<void>;
12
+ writeJson(filePath: string, data: unknown, options?: {
13
+ spaces?: number;
14
+ }): Promise<void>;
15
+ ensureDir(dirPath: string): Promise<void>;
16
+ joinPath(...segments: string[]): string;
17
+ dirname(filePath: string): string;
18
+ isAbsolute(filePath: string): boolean;
19
+ }
20
+ //# sourceMappingURL=NodeFileSystemAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeFileSystemAdapter.d.ts","sourceRoot":"","sources":["../../src/utils/NodeFileSystemAdapter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAEjF;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa3C,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa7C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1C,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAkB1C,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAajE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxF,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/C,QAAQ,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM;IAIvC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIjC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGtC"}
@@ -0,0 +1,83 @@
1
+ // packages/cli/src/utils/NodeFileSystemAdapter.ts
2
+ import fs from 'fs';
3
+ import fse from 'fs-extra';
4
+ import path from 'path';
5
+ import { FileSystemError } from '@vue-skuilder/db';
6
+ /**
7
+ * Node.js implementation of FileSystemAdapter using native fs and path modules.
8
+ * This works cleanly in CLI environments without bundling issues.
9
+ */
10
+ export class NodeFileSystemAdapter {
11
+ async readFile(filePath) {
12
+ try {
13
+ return await fs.promises.readFile(filePath, 'utf8');
14
+ }
15
+ catch (error) {
16
+ throw new FileSystemError(`Failed to read file: ${error instanceof Error ? error.message : String(error)}`, 'readFile', filePath, error instanceof Error ? error : undefined);
17
+ }
18
+ }
19
+ async readBinary(filePath) {
20
+ try {
21
+ return await fs.promises.readFile(filePath);
22
+ }
23
+ catch (error) {
24
+ throw new FileSystemError(`Failed to read binary file: ${error instanceof Error ? error.message : String(error)}`, 'readBinary', filePath, error instanceof Error ? error : undefined);
25
+ }
26
+ }
27
+ async exists(filePath) {
28
+ try {
29
+ await fs.promises.access(filePath);
30
+ return true;
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ }
36
+ async stat(filePath) {
37
+ try {
38
+ const stats = await fs.promises.stat(filePath);
39
+ return {
40
+ isDirectory: () => stats.isDirectory(),
41
+ isFile: () => stats.isFile(),
42
+ size: stats.size,
43
+ };
44
+ }
45
+ catch (error) {
46
+ throw new FileSystemError(`Failed to stat file: ${error instanceof Error ? error.message : String(error)}`, 'stat', filePath, error instanceof Error ? error : undefined);
47
+ }
48
+ }
49
+ async writeFile(filePath, data) {
50
+ try {
51
+ await fse.writeFile(filePath, data);
52
+ }
53
+ catch (error) {
54
+ throw new FileSystemError(`Failed to write file: ${error instanceof Error ? error.message : String(error)}`, 'writeFile', filePath, error instanceof Error ? error : undefined);
55
+ }
56
+ }
57
+ async writeJson(filePath, data, options) {
58
+ try {
59
+ await fse.writeJson(filePath, data, options);
60
+ }
61
+ catch (error) {
62
+ throw new FileSystemError(`Failed to write JSON file: ${error instanceof Error ? error.message : String(error)}`, 'writeJson', filePath, error instanceof Error ? error : undefined);
63
+ }
64
+ }
65
+ async ensureDir(dirPath) {
66
+ try {
67
+ await fse.ensureDir(dirPath);
68
+ }
69
+ catch (error) {
70
+ throw new FileSystemError(`Failed to ensure directory: ${error instanceof Error ? error.message : String(error)}`, 'ensureDir', dirPath, error instanceof Error ? error : undefined);
71
+ }
72
+ }
73
+ joinPath(...segments) {
74
+ return path.join(...segments);
75
+ }
76
+ dirname(filePath) {
77
+ return path.dirname(filePath);
78
+ }
79
+ isAbsolute(filePath) {
80
+ return path.isAbsolute(filePath);
81
+ }
82
+ }
83
+ //# sourceMappingURL=NodeFileSystemAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeFileSystemAdapter.js","sourceRoot":"","sources":["../../src/utils/NodeFileSystemAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Error categories for studio-ui build failures
3
+ */
4
+ export declare enum StudioBuildErrorType {
5
+ QUESTIONS_HASH_ERROR = "questions-hash-error",
6
+ BUILD_FAILURE = "build-failure",
7
+ COPY_FAILURE = "copy-failure",
8
+ MISSING_SOURCE = "missing-source",
9
+ MISSING_DEPENDENCIES = "missing-dependencies",
10
+ VITE_BUILD_ERROR = "vite-build-error",
11
+ TYPESCRIPT_ERROR = "typescript-error",
12
+ CRITICAL_ERROR = "critical-error"
13
+ }
14
+ /**
15
+ * Structured error information for studio-ui build failures
16
+ */
17
+ export interface StudioBuildError {
18
+ type: StudioBuildErrorType;
19
+ message: string;
20
+ cause?: Error;
21
+ context?: Record<string, unknown>;
22
+ recoverable: boolean;
23
+ fallbackAvailable: boolean;
24
+ }
25
+ /**
26
+ * Create a structured studio build error
27
+ */
28
+ export declare function createStudioBuildError(type: StudioBuildErrorType, message: string, options?: {
29
+ cause?: Error;
30
+ context?: Record<string, unknown>;
31
+ recoverable?: boolean;
32
+ fallbackAvailable?: boolean;
33
+ }): StudioBuildError;
34
+ /**
35
+ * Report a studio build error with appropriate formatting and guidance
36
+ */
37
+ export declare function reportStudioBuildError(error: StudioBuildError): void;
38
+ /**
39
+ * Wrap a studio build operation with error handling
40
+ */
41
+ export declare function withStudioBuildErrorHandling<T>(operation: () => Promise<T>, errorType: StudioBuildErrorType, context?: Record<string, unknown>): Promise<T>;
42
+ /**
43
+ * Check if error is a recoverable studio build error
44
+ */
45
+ export declare function isRecoverableStudioBuildError(error: unknown): boolean;
46
+ /**
47
+ * Extract error details for logging
48
+ */
49
+ export declare function extractErrorDetails(error: unknown): {
50
+ message: string;
51
+ stack?: string;
52
+ code?: string;
53
+ };
54
+ //# sourceMappingURL=error-reporting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-reporting.d.ts","sourceRoot":"","sources":["../../src/utils/error-reporting.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,oBAAoB,yBAAyB;IAC7C,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;IACjC,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACxB,GACL,gBAAgB,CASlB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAgCpE;AAiDD;;GAEG;AACH,wBAAsB,4BAA4B,CAAC,CAAC,EAClD,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,SAAS,EAAE,oBAAoB,EAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,CAAC,CAAC,CAkBZ;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKrE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAYA"}