create-warlock 4.0.162 → 4.0.163
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/cjs/commands/create-new-app/get-app-path.d.ts +2 -0
- package/cjs/commands/create-new-app/get-app-path.d.ts.map +1 -0
- package/cjs/commands/create-new-app/get-app-path.js +8 -0
- package/cjs/commands/create-new-app/get-app-path.js.map +1 -0
- package/cjs/commands/create-new-app/index.d.ts +2 -0
- package/cjs/commands/create-new-app/index.d.ts.map +1 -0
- package/cjs/commands/create-new-app/index.js +96 -0
- package/cjs/commands/create-new-app/index.js.map +1 -0
- package/cjs/commands/create-new-app/types.d.ts +16 -0
- package/cjs/commands/create-new-app/types.d.ts.map +1 -0
- package/cjs/commands/create-warlock-app/index.d.ts +3 -0
- package/cjs/commands/create-warlock-app/index.d.ts.map +1 -0
- package/cjs/commands/create-warlock-app/index.js +55 -0
- package/cjs/commands/create-warlock-app/index.js.map +1 -0
- package/cjs/features/database-drivers.d.ts +31 -0
- package/cjs/features/database-drivers.d.ts.map +1 -0
- package/cjs/features/database-drivers.js +53 -0
- package/cjs/features/database-drivers.js.map +1 -0
- package/cjs/features/features-map.d.ts +35 -0
- package/cjs/features/features-map.d.ts.map +1 -0
- package/cjs/features/features-map.js +120 -0
- package/cjs/features/features-map.js.map +1 -0
- package/cjs/helpers/app.d.ts +71 -0
- package/cjs/helpers/app.d.ts.map +1 -0
- package/cjs/helpers/app.js +196 -0
- package/cjs/helpers/app.js.map +1 -0
- package/cjs/helpers/exec.d.ts +10 -0
- package/cjs/helpers/exec.d.ts.map +1 -0
- package/cjs/helpers/exec.js +69 -0
- package/cjs/helpers/exec.js.map +1 -0
- package/cjs/helpers/package-manager.d.ts +18 -0
- package/cjs/helpers/package-manager.d.ts.map +1 -0
- package/cjs/helpers/package-manager.js +104 -0
- package/cjs/helpers/package-manager.js.map +1 -0
- package/cjs/helpers/paths.d.ts +4 -0
- package/cjs/helpers/paths.d.ts.map +1 -0
- package/cjs/helpers/paths.js +8 -0
- package/cjs/helpers/paths.js.map +1 -0
- package/cjs/helpers/project-builder-helpers.d.ts +6 -0
- package/cjs/helpers/project-builder-helpers.d.ts.map +1 -0
- package/cjs/helpers/project-builder-helpers.js +11 -0
- package/cjs/helpers/project-builder-helpers.js.map +1 -0
- package/cjs/index.d.ts +2 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +3 -0
- package/cjs/index.js.map +1 -0
- package/cjs/ui/banner.d.ts +29 -0
- package/cjs/ui/banner.d.ts.map +1 -0
- package/cjs/ui/banner.js +142 -0
- package/cjs/ui/banner.js.map +1 -0
- package/cjs/ui/spinners.d.ts +18 -0
- package/cjs/ui/spinners.d.ts.map +1 -0
- package/cjs/ui/spinners.js +17 -0
- package/cjs/ui/spinners.js.map +1 -0
- package/esm/features/database-drivers.d.ts +31 -0
- package/esm/features/database-drivers.d.ts.map +1 -0
- package/esm/features/database-drivers.js +53 -0
- package/esm/features/database-drivers.js.map +1 -0
- package/esm/features/features-map.d.ts +35 -0
- package/esm/features/features-map.d.ts.map +1 -0
- package/esm/features/features-map.js +120 -0
- package/esm/features/features-map.js.map +1 -0
- package/esm/helpers/app.d.ts +71 -0
- package/esm/helpers/app.d.ts.map +1 -0
- package/esm/helpers/app.js +196 -0
- package/esm/helpers/app.js.map +1 -0
- package/esm/helpers/exec.d.ts +10 -0
- package/esm/helpers/exec.d.ts.map +1 -0
- package/esm/helpers/exec.js +69 -0
- package/esm/helpers/exec.js.map +1 -0
- package/esm/helpers/package-manager.d.ts +18 -0
- package/esm/helpers/package-manager.d.ts.map +1 -0
- package/esm/helpers/package-manager.js +104 -0
- package/esm/helpers/package-manager.js.map +1 -0
- package/esm/helpers/paths.d.ts +4 -0
- package/esm/helpers/paths.d.ts.map +1 -0
- package/esm/helpers/paths.js +8 -0
- package/esm/helpers/paths.js.map +1 -0
- package/esm/helpers/project-builder-helpers.d.ts +6 -0
- package/esm/helpers/project-builder-helpers.d.ts.map +1 -0
- package/esm/helpers/project-builder-helpers.js +11 -0
- package/esm/helpers/project-builder-helpers.js.map +1 -0
- package/esm/index.d.ts +2 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +3 -0
- package/esm/index.js.map +1 -0
- package/esm/ui/banner.d.ts +29 -0
- package/esm/ui/banner.d.ts.map +1 -0
- package/esm/ui/banner.js +142 -0
- package/esm/ui/banner.js.map +1 -0
- package/esm/ui/spinners.d.ts +18 -0
- package/esm/ui/spinners.d.ts.map +1 -0
- package/esm/ui/spinners.js +17 -0
- package/esm/ui/spinners.js.map +1 -0
- package/package.json +1 -1
- package/templates/warlock/package.json +7 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-app-path.d.ts","sourceRoot":"","sources":["../../../src/commands/create-new-app/get-app-path.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,OAAO,EAAE,MAAM,UAgBjD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use strict';var copper=require('@mongez/copper'),fs=require('@mongez/fs'),path=require('path');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var path__namespace=/*#__PURE__*/_interopNamespace(path);function getAppPath(appName) {
|
|
2
|
+
const appPath = path__namespace.resolve(process.cwd(), appName);
|
|
3
|
+
if (fs.isDirectory(appPath)) {
|
|
4
|
+
console.log(copper.colors.redBright(`${process.cwd()} has an existing directory \`${copper.colors.cyan(appName)}\`, please choose another app name or another directory to run the command from.`));
|
|
5
|
+
process.exit(1);
|
|
6
|
+
}
|
|
7
|
+
return appPath;
|
|
8
|
+
}module.exports=getAppPath;//# sourceMappingURL=get-app-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-app-path.js","sources":["../../../src/commands/create-new-app/get-app-path.ts"],"sourcesContent":[null],"names":["path","isDirectory","colors"],"mappings":"4cAIwB,SAAA,UAAU,CAAC,OAAe,EAAA;AAChD,IAAA,MAAM,OAAO,GAAWA,eAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAE7D,IAAA,IAAIC,cAAW,CAAC,OAAO,CAAC,EAAE;QACxB,OAAO,CAAC,GAAG,CACTC,aAAM,CAAC,SAAS,CACd,CAAG,EAAA,OAAO,CAAC,GAAG,EAAE,CAAgC,6BAAA,EAAAA,aAAM,CAAC,IAAI,CACzD,OAAO,CACR,CAAA,gFAAA,CAAkF,CACpF,CACF,CAAC;AAEF,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,KAAA;AAED,IAAA,OAAO,OAAO,CAAC;AACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/create-new-app/index.ts"],"names":[],"mappings":"AA6BA,wBAA8B,YAAY,kBAsHzC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
'use strict';var prompts=require('@clack/prompts'),copper=require('@mongez/copper'),fs=require('@mongez/fs'),databaseDrivers=require('../../features/database-drivers.js'),featuresMap=require('../../features/features-map.js'),app=require('../../helpers/app.js'),packageManager=require('../../helpers/package-manager.js'),paths=require('../../helpers/paths.js'),banner=require('../../ui/banner.js'),index=require('../create-warlock-app/index.js'),getAppPath=require('./get-app-path.js');async function createNewApp() {
|
|
2
|
+
// Start detecting package managers in the background to avoid delay later
|
|
3
|
+
const pmDetectionPromise = packageManager.detectPackageManagers();
|
|
4
|
+
// Get version from package.json
|
|
5
|
+
const packageJson = fs.getJsonFile(paths.packageRoot("package.json"));
|
|
6
|
+
const createWarlockVersion = packageJson.version;
|
|
7
|
+
// Show the intro banner
|
|
8
|
+
banner.showIntroBanner(createWarlockVersion);
|
|
9
|
+
console.log(copper.colors.cyan("✨ Let's create something magical! ✨\n"));
|
|
10
|
+
// Validate Node.js version (minimum v20)
|
|
11
|
+
const [major] = process.versions.node.split(".").map(Number);
|
|
12
|
+
if (major < 20) {
|
|
13
|
+
prompts.cancel("Node.js version must be at least 20.0.0");
|
|
14
|
+
process.exit(0);
|
|
15
|
+
}
|
|
16
|
+
// Step 1: Project name
|
|
17
|
+
const appName = await prompts.text({
|
|
18
|
+
message: "What shall we call your project?",
|
|
19
|
+
placeholder: "my-warlock-app",
|
|
20
|
+
});
|
|
21
|
+
if (prompts.isCancel(appName) || !appName.trim()) {
|
|
22
|
+
prompts.cancel("A project name is required to continue");
|
|
23
|
+
process.exit(0);
|
|
24
|
+
}
|
|
25
|
+
const appPath = getAppPath(appName);
|
|
26
|
+
if (!appPath)
|
|
27
|
+
return;
|
|
28
|
+
// Step 2: Package Manager selection
|
|
29
|
+
await pmDetectionPromise; // Ensure detection is complete
|
|
30
|
+
const packageManager$1 = await prompts.select({
|
|
31
|
+
message: "Which package manager do you want to use?",
|
|
32
|
+
options: packageManager.getSystemPackageManagers().map(pm => ({
|
|
33
|
+
value: pm,
|
|
34
|
+
label: pm,
|
|
35
|
+
})),
|
|
36
|
+
initialValue: packageManager.getPreferredPackageManager(),
|
|
37
|
+
});
|
|
38
|
+
if (prompts.isCancel(packageManager$1)) {
|
|
39
|
+
prompts.cancel("Package manager selection cancelled");
|
|
40
|
+
process.exit(0);
|
|
41
|
+
}
|
|
42
|
+
packageManager.setPackageManager(packageManager$1);
|
|
43
|
+
// Step 3: Database driver selection
|
|
44
|
+
const databaseDriver = await prompts.select({
|
|
45
|
+
message: "Choose your database driver 🗄️",
|
|
46
|
+
options: databaseDrivers.getDatabaseDriverOptions(),
|
|
47
|
+
});
|
|
48
|
+
if (prompts.isCancel(databaseDriver)) {
|
|
49
|
+
prompts.cancel("Database selection cancelled");
|
|
50
|
+
process.exit(0);
|
|
51
|
+
}
|
|
52
|
+
const selectedDriver = databaseDrivers.getDatabaseDriver(databaseDriver);
|
|
53
|
+
// Step 4: Features selection
|
|
54
|
+
const selectedFeatures = await prompts.multiselect({
|
|
55
|
+
message: "Select optional features to include ✨",
|
|
56
|
+
options: featuresMap.getFeatureOptions(),
|
|
57
|
+
initialValues: ["react"],
|
|
58
|
+
required: false,
|
|
59
|
+
});
|
|
60
|
+
if (prompts.isCancel(selectedFeatures)) {
|
|
61
|
+
prompts.cancel("Feature selection cancelled");
|
|
62
|
+
process.exit(0);
|
|
63
|
+
}
|
|
64
|
+
// Step 5: Git initialization
|
|
65
|
+
const useGit = (await prompts.confirm({
|
|
66
|
+
message: "Initialize a Git repository? 📂",
|
|
67
|
+
})) === true;
|
|
68
|
+
if (prompts.isCancel(useGit)) {
|
|
69
|
+
prompts.cancel("Setup cancelled");
|
|
70
|
+
process.exit(0);
|
|
71
|
+
}
|
|
72
|
+
// Step 6: JWT secret generation
|
|
73
|
+
const useJWT = (await prompts.confirm({
|
|
74
|
+
message: "Generate JWT secret keys? 🔐",
|
|
75
|
+
})) === true;
|
|
76
|
+
if (prompts.isCancel(useJWT)) {
|
|
77
|
+
prompts.cancel("Setup cancelled");
|
|
78
|
+
process.exit(0);
|
|
79
|
+
}
|
|
80
|
+
// Build app details
|
|
81
|
+
const appDetails = {
|
|
82
|
+
appName: appName,
|
|
83
|
+
appType: "warlock",
|
|
84
|
+
appPath: appPath,
|
|
85
|
+
pkgManager: packageManager.getPackageManager(),
|
|
86
|
+
options: {
|
|
87
|
+
databaseDriver: databaseDriver,
|
|
88
|
+
databasePort: selectedDriver?.defaultPort || 27017,
|
|
89
|
+
features: selectedFeatures,
|
|
90
|
+
useGit,
|
|
91
|
+
useJWT,
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
// Create the app
|
|
95
|
+
await index.createWarlockApp(new app.App(appDetails));
|
|
96
|
+
}module.exports=createNewApp;//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/commands/create-new-app/index.ts"],"sourcesContent":[null],"names":["detectPackageManagers","getJsonFile","packageRoot","showIntroBanner","colors","cancel","text","isCancel","packageManager","select","getSystemPackageManagers","getPreferredPackageManager","setPackageManager","getDatabaseDriverOptions","getDatabaseDriver","multiselect","getFeatureOptions","confirm","getPackageManager","createWarlockApp","App"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type AppOptions = {
|
|
2
|
+
databaseDriver: string;
|
|
3
|
+
databasePort: number;
|
|
4
|
+
features: string[];
|
|
5
|
+
useGit: boolean;
|
|
6
|
+
useJWT: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type App = {
|
|
9
|
+
appName?: string;
|
|
10
|
+
appType?: string;
|
|
11
|
+
appPath?: string;
|
|
12
|
+
options?: AppOptions;
|
|
13
|
+
pkgManager?: string;
|
|
14
|
+
};
|
|
15
|
+
export type Application = Required<App>;
|
|
16
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/create-new-app/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/create-warlock-app/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAQxC,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,GAAG,iBAuEtD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';var prompts=require('@clack/prompts'),packageManager=require('../../helpers/package-manager.js'),banner=require('../../ui/banner.js'),spinners=require('../../ui/spinners.js');async function createWarlockApp(application) {
|
|
2
|
+
const options = application.options;
|
|
3
|
+
const { useGit, useJWT, features, databaseDriver } = options;
|
|
4
|
+
// Step 1: Initialize and copy template
|
|
5
|
+
const templateSpinner = prompts.spinner();
|
|
6
|
+
templateSpinner.start(spinners.spinnerMessages.copyingTemplate);
|
|
7
|
+
application
|
|
8
|
+
.init()
|
|
9
|
+
.use("warlock")
|
|
10
|
+
.updatePackageJson()
|
|
11
|
+
.updateDotEnv()
|
|
12
|
+
.addDatabaseDriver(databaseDriver)
|
|
13
|
+
.addFeatures(features);
|
|
14
|
+
templateSpinner.stop(spinners.spinnerMessages.templateCopied);
|
|
15
|
+
// Step 2: Install dependencies
|
|
16
|
+
const installSpinner = prompts.spinner();
|
|
17
|
+
installSpinner.start(spinners.spinnerMessages.installingDeps);
|
|
18
|
+
const installProcess = application.install();
|
|
19
|
+
await installProcess.install;
|
|
20
|
+
installSpinner.stop(spinners.spinnerMessages.depsInstalled);
|
|
21
|
+
// Step 3: Configure features (copy config stubs)
|
|
22
|
+
if (features.length > 0) {
|
|
23
|
+
const configSpinner = prompts.spinner();
|
|
24
|
+
configSpinner.start(spinners.spinnerMessages.configuringFeatures);
|
|
25
|
+
application.copyConfigStubs();
|
|
26
|
+
configSpinner.stop(spinners.spinnerMessages.featuresConfigured);
|
|
27
|
+
}
|
|
28
|
+
// Step 4: Initialize Git repository if requested
|
|
29
|
+
if (useGit) {
|
|
30
|
+
const gitSpinner = prompts.spinner();
|
|
31
|
+
gitSpinner.start(spinners.spinnerMessages.initializingGit);
|
|
32
|
+
await application.git();
|
|
33
|
+
gitSpinner.stop(spinners.spinnerMessages.gitInitialized);
|
|
34
|
+
}
|
|
35
|
+
// Step 5: Generate JWT or warm cache
|
|
36
|
+
if (useJWT) {
|
|
37
|
+
const jwtSpinner = prompts.spinner();
|
|
38
|
+
jwtSpinner.start(spinners.spinnerMessages.generatingJwt);
|
|
39
|
+
await application.exec(packageManager.runPackageManagerCommand("jwt"));
|
|
40
|
+
jwtSpinner.stop(spinners.spinnerMessages.jwtGenerated);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
const warmSpinner = prompts.spinner();
|
|
44
|
+
warmSpinner.start(spinners.spinnerMessages.warmingCache);
|
|
45
|
+
await application.exec("npx warlock --warm-cache");
|
|
46
|
+
warmSpinner.stop(spinners.spinnerMessages.cacheWarmed);
|
|
47
|
+
}
|
|
48
|
+
// Step 6: Show success screen
|
|
49
|
+
banner.showSuccessScreen({
|
|
50
|
+
projectName: application.name,
|
|
51
|
+
database: databaseDriver === "mongodb" ? "MongoDB" : "PostgreSQL",
|
|
52
|
+
features: features,
|
|
53
|
+
packageManager: packageManager.getPackageManager(),
|
|
54
|
+
});
|
|
55
|
+
}exports.createWarlockApp=createWarlockApp;//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/commands/create-warlock-app/index.ts"],"sourcesContent":[null],"names":["spinner","spinnerMessages","runPackageManagerCommand","showSuccessScreen","getPackageManager"],"mappings":"4LASO,eAAe,gBAAgB,CAAC,WAAgB,EAAA;AACrD,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;;AAG7D,IAAA,MAAM,eAAe,GAAGA,eAAO,EAAE,CAAC;AAClC,IAAA,eAAe,CAAC,KAAK,CAACC,wBAAe,CAAC,eAAe,CAAC,CAAC;IAEvD,WAAW;AACR,SAAA,IAAI,EAAE;SACN,GAAG,CAAC,SAAS,CAAC;AACd,SAAA,iBAAiB,EAAE;AACnB,SAAA,YAAY,EAAE;SACd,iBAAiB,CAAC,cAAc,CAAC;SACjC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEzB,IAAA,eAAe,CAAC,IAAI,CAACA,wBAAe,CAAC,cAAc,CAAC,CAAC;;AAGrD,IAAA,MAAM,cAAc,GAAGD,eAAO,EAAE,CAAC;AACjC,IAAA,cAAc,CAAC,KAAK,CAACC,wBAAe,CAAC,cAAc,CAAC,CAAC;AAErD,IAAA,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,cAAc,CAAC,OAAO,CAAC;AAE7B,IAAA,cAAc,CAAC,IAAI,CAACA,wBAAe,CAAC,aAAa,CAAC,CAAC;;AAGnD,IAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,QAAA,MAAM,aAAa,GAAGD,eAAO,EAAE,CAAC;AAChC,QAAA,aAAa,CAAC,KAAK,CAACC,wBAAe,CAAC,mBAAmB,CAAC,CAAC;QAEzD,WAAW,CAAC,eAAe,EAAE,CAAC;AAE9B,QAAA,aAAa,CAAC,IAAI,CAACA,wBAAe,CAAC,kBAAkB,CAAC,CAAC;AACxD,KAAA;;AAGD,IAAA,IAAI,MAAM,EAAE;AACV,QAAA,MAAM,UAAU,GAAGD,eAAO,EAAE,CAAC;AAC7B,QAAA,UAAU,CAAC,KAAK,CAACC,wBAAe,CAAC,eAAe,CAAC,CAAC;AAElD,QAAA,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC;AAExB,QAAA,UAAU,CAAC,IAAI,CAACA,wBAAe,CAAC,cAAc,CAAC,CAAC;AACjD,KAAA;;AAGD,IAAA,IAAI,MAAM,EAAE;AACV,QAAA,MAAM,UAAU,GAAGD,eAAO,EAAE,CAAC;AAC7B,QAAA,UAAU,CAAC,KAAK,CAACC,wBAAe,CAAC,aAAa,CAAC,CAAC;QAEhD,MAAM,WAAW,CAAC,IAAI,CAACC,uCAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;AAExD,QAAA,UAAU,CAAC,IAAI,CAACD,wBAAe,CAAC,YAAY,CAAC,CAAC;AAC/C,KAAA;AAAM,SAAA;AACL,QAAA,MAAM,WAAW,GAAGD,eAAO,EAAE,CAAC;AAC9B,QAAA,WAAW,CAAC,KAAK,CAACC,wBAAe,CAAC,YAAY,CAAC,CAAC;AAEhD,QAAA,MAAM,WAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAEnD,QAAA,WAAW,CAAC,IAAI,CAACA,wBAAe,CAAC,WAAW,CAAC,CAAC;AAC/C,KAAA;;AAGD,IAAAE,wBAAiB,CAAC;QAChB,WAAW,EAAE,WAAW,CAAC,IAAI;QAC7B,QAAQ,EAAE,cAAc,KAAK,SAAS,GAAG,SAAS,GAAG,YAAY;AACjE,QAAA,QAAQ,EAAE,QAAQ;QAClB,cAAc,EAAEC,gCAAiB,EAAE;AACpC,KAAA,CAAC,CAAC;AACL"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database driver options and configuration
|
|
3
|
+
*/
|
|
4
|
+
export type DatabaseDriver = {
|
|
5
|
+
value: string;
|
|
6
|
+
label: string;
|
|
7
|
+
package: string;
|
|
8
|
+
packageVersion: string;
|
|
9
|
+
defaultPort: number;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
hint?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const databaseDrivers: DatabaseDriver[];
|
|
14
|
+
/**
|
|
15
|
+
* Get database driver options for the select prompt
|
|
16
|
+
*/
|
|
17
|
+
export declare function getDatabaseDriverOptions(): {
|
|
18
|
+
value: string;
|
|
19
|
+
label: string;
|
|
20
|
+
hint: string;
|
|
21
|
+
disabled: boolean;
|
|
22
|
+
}[];
|
|
23
|
+
/**
|
|
24
|
+
* Get database driver config by value
|
|
25
|
+
*/
|
|
26
|
+
export declare function getDatabaseDriver(value: string): DatabaseDriver | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Get database driver dependency
|
|
29
|
+
*/
|
|
30
|
+
export declare function getDatabaseDependency(driverValue: string): Record<string, string>;
|
|
31
|
+
//# sourceMappingURL=database-drivers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-drivers.d.ts","sourceRoot":"","sources":["../../src/features/database-drivers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAAc,EAwB3C,CAAC;AAEF;;GAEG;AACH,wBAAgB,wBAAwB;;;;;IAOvC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE3E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';const databaseDrivers = [
|
|
2
|
+
{
|
|
3
|
+
value: "mongodb",
|
|
4
|
+
label: "MongoDB",
|
|
5
|
+
package: "mongodb",
|
|
6
|
+
packageVersion: "^7.0.0",
|
|
7
|
+
defaultPort: 27017,
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
value: "postgres",
|
|
11
|
+
label: "PostgreSQL",
|
|
12
|
+
package: "pg",
|
|
13
|
+
packageVersion: "^8.11.0",
|
|
14
|
+
defaultPort: 5432,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
value: "mysql",
|
|
18
|
+
label: "MySQL (Coming Soon)",
|
|
19
|
+
package: "mysql2",
|
|
20
|
+
packageVersion: "^3.5.0",
|
|
21
|
+
defaultPort: 3306,
|
|
22
|
+
disabled: true,
|
|
23
|
+
hint: "MySQL support coming in a future release",
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
/**
|
|
27
|
+
* Get database driver options for the select prompt
|
|
28
|
+
*/
|
|
29
|
+
function getDatabaseDriverOptions() {
|
|
30
|
+
return databaseDrivers.map(driver => ({
|
|
31
|
+
value: driver.value,
|
|
32
|
+
label: driver.label,
|
|
33
|
+
hint: driver.hint,
|
|
34
|
+
disabled: driver.disabled,
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get database driver config by value
|
|
39
|
+
*/
|
|
40
|
+
function getDatabaseDriver(value) {
|
|
41
|
+
return databaseDrivers.find(driver => driver.value === value);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get database driver dependency
|
|
45
|
+
*/
|
|
46
|
+
function getDatabaseDependency(driverValue) {
|
|
47
|
+
const driver = getDatabaseDriver(driverValue);
|
|
48
|
+
if (!driver)
|
|
49
|
+
return {};
|
|
50
|
+
return {
|
|
51
|
+
[driver.package]: driver.packageVersion,
|
|
52
|
+
};
|
|
53
|
+
}exports.databaseDrivers=databaseDrivers;exports.getDatabaseDependency=getDatabaseDependency;exports.getDatabaseDriver=getDatabaseDriver;exports.getDatabaseDriverOptions=getDatabaseDriverOptions;//# sourceMappingURL=database-drivers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-drivers.js","sources":["../../src/features/database-drivers.ts"],"sourcesContent":[null],"names":[],"mappings":"aAaa,MAAA,eAAe,GAAqB;AAC/C,IAAA;AACE,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,cAAc,EAAE,QAAQ;AACxB,QAAA,WAAW,EAAE,KAAK;AACnB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,cAAc,EAAE,SAAS;AACzB,QAAA,WAAW,EAAE,IAAI;AAClB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,qBAAqB;AAC5B,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,cAAc,EAAE,QAAQ;AACxB,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,0CAA0C;AACjD,KAAA;EACD;AAEF;;AAEG;SACa,wBAAwB,GAAA;IACtC,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,KAAK;QACpC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC1B,KAAA,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;AAEG;AACG,SAAU,iBAAiB,CAAC,KAAa,EAAA;AAC7C,IAAA,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;AAEG;AACG,SAAU,qBAAqB,CACnC,WAAmB,EAAA;AAEnB,IAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAC9C,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,EAAE,CAAC;IAEvB,OAAO;AACL,QAAA,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,cAAc;KACxC,CAAC;AACJ"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hardcoded features map with dependencies, devDependencies, and config stubs
|
|
3
|
+
*/
|
|
4
|
+
export type FeatureConfig = {
|
|
5
|
+
label: string;
|
|
6
|
+
description: string;
|
|
7
|
+
dependencies: Record<string, string>;
|
|
8
|
+
devDependencies?: Record<string, string>;
|
|
9
|
+
configStub?: {
|
|
10
|
+
name: string;
|
|
11
|
+
content: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare const communicatorConfigStub = "import { CommunicatorsConfigurations } from \"@warlock.js/herald\";\n\nconst communicatorsConfigurations: CommunicatorsConfigurations = {\n host: process.env.RABBITMQ_HOST || \"localhost\",\n port: Number(process.env.RABBITMQ_PORT) || 5672,\n username: process.env.RABBITMQ_USER || \"guest\",\n password: process.env.RABBITMQ_PASSWORD || \"guest\",\n};\n\nexport default communicatorsConfigurations;\n";
|
|
15
|
+
export declare const featuresMap: Record<string, FeatureConfig>;
|
|
16
|
+
/**
|
|
17
|
+
* Get feature options for the multiselect prompt
|
|
18
|
+
*/
|
|
19
|
+
export declare function getFeatureOptions(): {
|
|
20
|
+
value: string;
|
|
21
|
+
label: string;
|
|
22
|
+
hint: string;
|
|
23
|
+
}[];
|
|
24
|
+
/**
|
|
25
|
+
* Get all dependencies for selected features
|
|
26
|
+
*/
|
|
27
|
+
export declare function getFeatureDependencies(selectedFeatures: string[]): {
|
|
28
|
+
dependencies: Record<string, string>;
|
|
29
|
+
devDependencies: Record<string, string>;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Get config stubs for selected features
|
|
33
|
+
*/
|
|
34
|
+
export declare function getFeatureConfigStubs(selectedFeatures: string[]): Array<FeatureConfig>;
|
|
35
|
+
//# sourceMappingURL=features-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features-map.d.ts","sourceRoot":"","sources":["../../src/features/features-map.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,sBAAsB,0ZAUlC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAqErD,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB;;;;IAMhC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG;IAClE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC,CAeA;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,MAAM,EAAE,GACzB,KAAK,CAAC,aAAa,CAAC,CAWtB"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
'use strict';const communicatorConfigStub = `import { CommunicatorsConfigurations } from "@warlock.js/herald";
|
|
2
|
+
|
|
3
|
+
const communicatorsConfigurations: CommunicatorsConfigurations = {
|
|
4
|
+
host: process.env.RABBITMQ_HOST || "localhost",
|
|
5
|
+
port: Number(process.env.RABBITMQ_PORT) || 5672,
|
|
6
|
+
username: process.env.RABBITMQ_USER || "guest",
|
|
7
|
+
password: process.env.RABBITMQ_PASSWORD || "guest",
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default communicatorsConfigurations;
|
|
11
|
+
`;
|
|
12
|
+
const featuresMap = {
|
|
13
|
+
react: {
|
|
14
|
+
label: "React (rendering & mails)",
|
|
15
|
+
description: "React and ReactDOM for rendering React components (non-interactive), useful for email templates and HTML generation",
|
|
16
|
+
dependencies: {
|
|
17
|
+
react: "^19.0.0",
|
|
18
|
+
"react-dom": "^19.0.0",
|
|
19
|
+
},
|
|
20
|
+
devDependencies: {
|
|
21
|
+
"@types/react": "^19.0.0",
|
|
22
|
+
"@types/react-dom": "^19.0.0",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
image: {
|
|
26
|
+
label: "Image processing (Sharp)",
|
|
27
|
+
description: "Sharp for image manipulation and optimization",
|
|
28
|
+
dependencies: {
|
|
29
|
+
sharp: "^0.34.0",
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
mail: {
|
|
33
|
+
label: "Mail (Nodemailer)",
|
|
34
|
+
description: "Nodemailer for sending emails",
|
|
35
|
+
dependencies: {
|
|
36
|
+
nodemailer: "^6.9.0",
|
|
37
|
+
},
|
|
38
|
+
devDependencies: {
|
|
39
|
+
"@types/nodemailer": "^6.4.0",
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
redis: {
|
|
43
|
+
label: "Redis cache",
|
|
44
|
+
description: "Redis client for caching",
|
|
45
|
+
dependencies: {
|
|
46
|
+
redis: "^4.6.0",
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
scheduler: {
|
|
50
|
+
label: "Scheduler",
|
|
51
|
+
description: "Warlock scheduler for background tasks and cron jobs",
|
|
52
|
+
dependencies: {
|
|
53
|
+
"@warlock.js/scheduler": "~4.0.0",
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
s3: {
|
|
57
|
+
label: "S3 storage",
|
|
58
|
+
description: "AWS S3 for cloud file storage",
|
|
59
|
+
dependencies: {
|
|
60
|
+
"@aws-sdk/client-s3": "^3.0.0",
|
|
61
|
+
"@aws-sdk/lib-storage": "^3.0.0",
|
|
62
|
+
"@aws-sdk/s3-request-presigner": "^3.0.0",
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
herald: {
|
|
66
|
+
label: "Herald (RabbitMQ)",
|
|
67
|
+
description: "Message broker for event-driven architecture",
|
|
68
|
+
dependencies: {
|
|
69
|
+
"@warlock.js/herald": "~4.0.0",
|
|
70
|
+
amqplib: "^0.10.0",
|
|
71
|
+
},
|
|
72
|
+
devDependencies: {
|
|
73
|
+
"@types/amqplib": "^0.10.0",
|
|
74
|
+
},
|
|
75
|
+
configStub: {
|
|
76
|
+
name: "communicator",
|
|
77
|
+
content: communicatorConfigStub,
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Get feature options for the multiselect prompt
|
|
83
|
+
*/
|
|
84
|
+
function getFeatureOptions() {
|
|
85
|
+
return Object.entries(featuresMap).map(([key, config]) => ({
|
|
86
|
+
value: key,
|
|
87
|
+
label: config.label,
|
|
88
|
+
hint: config.description,
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get all dependencies for selected features
|
|
93
|
+
*/
|
|
94
|
+
function getFeatureDependencies(selectedFeatures) {
|
|
95
|
+
const dependencies = {};
|
|
96
|
+
const devDependencies = {};
|
|
97
|
+
for (const feature of selectedFeatures) {
|
|
98
|
+
const config = featuresMap[feature];
|
|
99
|
+
if (config) {
|
|
100
|
+
Object.assign(dependencies, config.dependencies);
|
|
101
|
+
if (config.devDependencies) {
|
|
102
|
+
Object.assign(devDependencies, config.devDependencies);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return { dependencies, devDependencies };
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get config stubs for selected features
|
|
110
|
+
*/
|
|
111
|
+
function getFeatureConfigStubs(selectedFeatures) {
|
|
112
|
+
const stubs = [];
|
|
113
|
+
for (const feature of selectedFeatures) {
|
|
114
|
+
const config = featuresMap[feature];
|
|
115
|
+
if (config?.configStub) {
|
|
116
|
+
stubs.push(config.configStub);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return stubs;
|
|
120
|
+
}exports.communicatorConfigStub=communicatorConfigStub;exports.featuresMap=featuresMap;exports.getFeatureConfigStubs=getFeatureConfigStubs;exports.getFeatureDependencies=getFeatureDependencies;exports.getFeatureOptions=getFeatureOptions;//# sourceMappingURL=features-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features-map.js","sources":["../../src/features/features-map.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { AppOptions, Application } from "../commands/create-new-app/types";
|
|
2
|
+
import { Template } from "./paths";
|
|
3
|
+
export declare class App {
|
|
4
|
+
protected app: Application;
|
|
5
|
+
/**
|
|
6
|
+
* Resolved files
|
|
7
|
+
*/
|
|
8
|
+
protected files: Record<string, FileManager>;
|
|
9
|
+
/**
|
|
10
|
+
* Resolved JSON files
|
|
11
|
+
*/
|
|
12
|
+
protected jsonFiles: Record<string, JsonFileManager>;
|
|
13
|
+
isInstalled: boolean;
|
|
14
|
+
constructor(app: Application);
|
|
15
|
+
get options(): AppOptions;
|
|
16
|
+
use(templateName: Template): this;
|
|
17
|
+
init(): this;
|
|
18
|
+
terminate(): void;
|
|
19
|
+
install(): {
|
|
20
|
+
abort: () => Promise<void>;
|
|
21
|
+
install: Promise<boolean>;
|
|
22
|
+
};
|
|
23
|
+
exec(command: string): Promise<boolean>;
|
|
24
|
+
git(): Promise<boolean>;
|
|
25
|
+
updatePackageJson(): this;
|
|
26
|
+
/**
|
|
27
|
+
* Add database driver dependency to package.json
|
|
28
|
+
*/
|
|
29
|
+
addDatabaseDriver(driverValue: string): this;
|
|
30
|
+
/**
|
|
31
|
+
* Add selected features' dependencies to package.json
|
|
32
|
+
*/
|
|
33
|
+
addFeatures(features: string[]): this;
|
|
34
|
+
/**
|
|
35
|
+
* Copy config stubs for features that require them
|
|
36
|
+
*/
|
|
37
|
+
copyConfigStubs(): this;
|
|
38
|
+
/**
|
|
39
|
+
* Get package json file
|
|
40
|
+
*/
|
|
41
|
+
get package(): JsonFileManager;
|
|
42
|
+
updateDotEnv(): this;
|
|
43
|
+
/**
|
|
44
|
+
* Get env file to update
|
|
45
|
+
*/
|
|
46
|
+
get env(): FileManager;
|
|
47
|
+
get name(): string;
|
|
48
|
+
get path(): string;
|
|
49
|
+
file(relativePath: string): FileManager;
|
|
50
|
+
json(relativePath: string): JsonFileManager;
|
|
51
|
+
}
|
|
52
|
+
export declare function app(app: Application): App;
|
|
53
|
+
export declare class FileManager {
|
|
54
|
+
protected filePath: string;
|
|
55
|
+
content: string;
|
|
56
|
+
constructor(filePath: string);
|
|
57
|
+
protected parseContent(): void;
|
|
58
|
+
replace(search: string, replace: string): this;
|
|
59
|
+
replaceAll(search: string, replace: string): this;
|
|
60
|
+
save(): void;
|
|
61
|
+
}
|
|
62
|
+
export declare class JsonFileManager extends FileManager {
|
|
63
|
+
protected parseContent(): void;
|
|
64
|
+
save(): void;
|
|
65
|
+
has(key: string): boolean;
|
|
66
|
+
replace(key: string, value: any): this;
|
|
67
|
+
replaceAll(key: string, value: any): this;
|
|
68
|
+
}
|
|
69
|
+
export declare function file(path: string): FileManager;
|
|
70
|
+
export declare function jsonFile(path: string): JsonFileManager;
|
|
71
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/helpers/app.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAW3E,OAAO,EAAE,QAAQ,EAAY,MAAM,SAAS,CAAC;AAE7C,qBAAa,GAAG;IAaK,SAAS,CAAC,GAAG,EAAE,WAAW;IAZ7C;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAM;IAElD;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAM;IAEnD,WAAW,UAAS;gBAEE,GAAG,EAAE,WAAW;IAE7C,IAAW,OAAO,IAAI,UAAU,CAE/B;IAEM,GAAG,CAAC,YAAY,EAAE,QAAQ;IAY1B,IAAI;IAIJ,SAAS;IAIT,OAAO;;;;IAID,IAAI,CAAC,OAAO,EAAE,MAAM;IAKpB,GAAG;IAOT,iBAAiB;IASxB;;OAEG;IACI,iBAAiB,CAAC,WAAW,EAAE,MAAM;IAuC5C;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE;IAqBrC;;OAEG;IACI,eAAe;IAqBtB;;OAEG;IACH,IAAW,OAAO,oBAEjB;IAEM,YAAY;IAMnB;;OAEG;IACH,IAAW,GAAG,gBAEb;IAED,IAAW,IAAI,WAEd;IAED,IAAW,IAAI,WAEd;IAEM,IAAI,CAAC,YAAY,EAAE,MAAM;IAUzB,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe;CASnD;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,WAAW,OAEnC;AAED,qBAAa,WAAW;IAEH,SAAS,CAAC,QAAQ,EAAE,MAAM;IADtC,OAAO,EAAG,MAAM,CAAC;gBACK,QAAQ,EAAE,MAAM;IAI7C,SAAS,CAAC,YAAY;IAIf,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMvC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAM1C,IAAI;CAGZ;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,SAAS,CAAC,YAAY;IAIf,IAAI;IAIJ,GAAG,CAAC,GAAG,EAAE,MAAM;IAIf,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAM/B,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;CAO1C;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,eAEhC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,mBAEpC"}
|