@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.
- package/README.md +122 -8
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -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 +3 -0
- package/dist/commands/studio.d.ts.map +1 -0
- package/dist/commands/studio.js +931 -0
- package/dist/commands/studio.js.map +1 -0
- package/dist/commands/unpack.d.ts +15 -0
- package/dist/commands/unpack.d.ts.map +1 -0
- package/dist/commands/unpack.js +228 -0
- package/dist/commands/unpack.js.map +1 -0
- 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 +20 -0
- package/dist/utils/NodeFileSystemAdapter.d.ts.map +1 -0
- package/dist/utils/NodeFileSystemAdapter.js +83 -0
- package/dist/utils/NodeFileSystemAdapter.js.map +1 -0
- 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 +2 -2
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +218 -27
- package/dist/utils/template.js.map +1 -1
- package/eslint.config.mjs +1 -1
- package/package.json +30 -8
- package/src/cli.ts +11 -1
- package/src/commands/init.ts +48 -3
- package/src/commands/pack.ts +1 -1
- package/src/commands/studio.ts +1226 -0
- package/src/commands/unpack.ts +259 -0
- package/src/types.ts +5 -0
- package/src/utils/ExpressManager.ts +210 -0
- package/src/utils/NodeFileSystemAdapter.ts +116 -0
- 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 +252 -29
- 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;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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;
|
|
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":"
|
|
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"}
|