create-warlock 4.0.113 → 4.0.115
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/index.d.ts +1 -1
- package/cjs/commands/create-new-app/index.d.ts.map +1 -1
- package/cjs/commands/create-new-app/index.js +86 -41
- package/cjs/commands/create-new-app/index.js.map +1 -1
- package/cjs/commands/create-new-app/types.d.ts +8 -1
- package/cjs/commands/create-new-app/types.d.ts.map +1 -1
- package/cjs/commands/create-warlock-app/index.d.ts +1 -1
- package/cjs/commands/create-warlock-app/index.d.ts.map +1 -1
- package/cjs/commands/create-warlock-app/index.js +48 -44
- package/cjs/commands/create-warlock-app/index.js.map +1 -1
- 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 +38 -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 +24 -6
- package/cjs/helpers/app.d.ts.map +1 -1
- package/cjs/helpers/app.js +77 -6
- package/cjs/helpers/app.js.map +1 -1
- package/cjs/helpers/package-manager.d.ts +13 -1
- package/cjs/helpers/package-manager.d.ts.map +1 -1
- package/cjs/helpers/package-manager.js +91 -9
- package/cjs/helpers/package-manager.js.map +1 -1
- package/cjs/helpers/project-builder-helpers.js +2 -9
- package/cjs/helpers/project-builder-helpers.js.map +1 -1
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +2 -4
- package/cjs/index.js.map +1 -1
- 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/commands/create-new-app/index.d.ts +1 -1
- package/esm/commands/create-new-app/index.d.ts.map +1 -1
- package/esm/commands/create-new-app/index.js +86 -41
- package/esm/commands/create-new-app/index.js.map +1 -1
- package/esm/commands/create-new-app/types.d.ts +8 -1
- package/esm/commands/create-new-app/types.d.ts.map +1 -1
- package/esm/commands/create-warlock-app/index.d.ts +1 -1
- package/esm/commands/create-warlock-app/index.d.ts.map +1 -1
- package/esm/commands/create-warlock-app/index.js +48 -44
- package/esm/commands/create-warlock-app/index.js.map +1 -1
- 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 +38 -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 +24 -6
- package/esm/helpers/app.d.ts.map +1 -1
- package/esm/helpers/app.js +76 -5
- package/esm/helpers/app.js.map +1 -1
- package/esm/helpers/package-manager.d.ts +13 -1
- package/esm/helpers/package-manager.d.ts.map +1 -1
- package/esm/helpers/package-manager.js +91 -9
- package/esm/helpers/package-manager.js.map +1 -1
- package/esm/helpers/project-builder-helpers.js +2 -9
- package/esm/helpers/project-builder-helpers.js.map +1 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -4
- package/esm/index.js.map +1 -1
- 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 +2 -1
- package/templates/warlock/package.json +7 -7
- package/templates/warlock/src/config/app.ts +1 -1
- package/templates/warlock/src/config/auth.ts +1 -1
- package/templates/warlock/src/config/cache.ts +1 -2
- package/templates/warlock/src/config/database.ts +1 -1
- package/templates/warlock/src/config/http.ts +1 -1
- package/templates/warlock/src/config/mail.ts +1 -1
- package/templates/warlock/src/config/storage.ts +1 -2
- package/templates/warlock/src/config/google.ts +0 -22
- package/templates/warlock/src/config/notifications.ts +0 -11
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export default function createNewApp(
|
|
1
|
+
export default function createNewApp(): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/create-new-app/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/create-new-app/index.ts"],"names":[],"mappings":"AA6BA,wBAA8B,YAAY,kBAqHzC"}
|
|
@@ -1,50 +1,95 @@
|
|
|
1
|
-
'use strict';var prompts=require('@clack/prompts'),copper=require('@mongez/copper'),app=require('../../helpers/app.js'),packageManager=require('../../helpers/package-manager.js'),index=require('../create-warlock-app/index.js'),getAppPath=require('./get-app-path.js');
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
message: "Enter the app name",
|
|
12
|
-
placeholder: "warlock-app",
|
|
13
|
-
});
|
|
14
|
-
if (prompts.isCancel(appName) || !appName.trim()) {
|
|
15
|
-
prompts.cancel("Application name is required to create a new app");
|
|
16
|
-
process.exit(0);
|
|
17
|
-
}
|
|
18
|
-
// Validate the nodejs version to be not less than 20
|
|
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)
|
|
19
11
|
const [major] = process.versions.node.split(".").map(Number);
|
|
20
12
|
if (major < 20) {
|
|
21
13
|
prompts.cancel("Node.js version must be at least 20.0.0");
|
|
22
14
|
process.exit(0);
|
|
23
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
|
|
24
30
|
const packageManager$1 = await prompts.select({
|
|
25
|
-
message: "
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
label: "Yarn",
|
|
34
|
-
value: "yarn",
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
label: "Pnpm",
|
|
38
|
-
value: "pnpm",
|
|
39
|
-
},
|
|
40
|
-
],
|
|
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(),
|
|
41
37
|
});
|
|
38
|
+
if (prompts.isCancel(packageManager$1)) {
|
|
39
|
+
prompts.cancel("Package manager selection cancelled");
|
|
40
|
+
process.exit(0);
|
|
41
|
+
}
|
|
42
42
|
packageManager.setPackageManager(packageManager$1);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
+
required: false,
|
|
58
|
+
});
|
|
59
|
+
if (prompts.isCancel(selectedFeatures)) {
|
|
60
|
+
prompts.cancel("Feature selection cancelled");
|
|
61
|
+
process.exit(0);
|
|
62
|
+
}
|
|
63
|
+
// Step 5: Git initialization
|
|
64
|
+
const useGit = (await prompts.confirm({
|
|
65
|
+
message: "Initialize a Git repository? 📂",
|
|
66
|
+
})) === true;
|
|
67
|
+
if (prompts.isCancel(useGit)) {
|
|
68
|
+
prompts.cancel("Setup cancelled");
|
|
69
|
+
process.exit(0);
|
|
70
|
+
}
|
|
71
|
+
// Step 6: JWT secret generation
|
|
72
|
+
const useJWT = (await prompts.confirm({
|
|
73
|
+
message: "Generate JWT secret keys? 🔐",
|
|
74
|
+
})) === true;
|
|
75
|
+
if (prompts.isCancel(useJWT)) {
|
|
76
|
+
prompts.cancel("Setup cancelled");
|
|
77
|
+
process.exit(0);
|
|
78
|
+
}
|
|
79
|
+
// Build app details
|
|
80
|
+
const appDetails = {
|
|
81
|
+
appName: appName,
|
|
82
|
+
appType: "warlock",
|
|
83
|
+
appPath: appPath,
|
|
84
|
+
pkgManager: packageManager.getPackageManager(),
|
|
85
|
+
options: {
|
|
86
|
+
databaseDriver: databaseDriver,
|
|
87
|
+
databasePort: selectedDriver?.defaultPort || 27017,
|
|
88
|
+
features: selectedFeatures,
|
|
89
|
+
useGit,
|
|
90
|
+
useJWT,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
// Create the app
|
|
94
|
+
await index.createWarlockApp(new app.App(appDetails));
|
|
50
95
|
}module.exports=createNewApp;//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/commands/create-new-app/index.ts"],"sourcesContent":[null],"names":["
|
|
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":"qeA6Be,eAAe,YAAY,GAAA;;AAExC,IAAA,MAAM,kBAAkB,GAAGA,oCAAqB,EAAE,CAAC;;IAGnD,MAAM,WAAW,GAAQC,cAAW,CAACC,iBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;AAClE,IAAA,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,CAAC;;IAGjDC,sBAAe,CAAC,oBAAoB,CAAC,CAAC;IAEtC,OAAO,CAAC,GAAG,CAACC,aAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;;AAGlE,IAAA,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,KAAK,GAAG,EAAE,EAAE;QACdC,cAAM,CAAC,yCAAyC,CAAC,CAAC;AAClD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,KAAA;;AAGD,IAAA,MAAM,OAAO,GAAG,MAAMC,YAAI,CAAC;AACzB,QAAA,OAAO,EAAE,kCAAkC;AAC3C,QAAA,WAAW,EAAE,gBAAgB;AAC9B,KAAA,CAAC,CAAC;IAEH,IAAIC,gBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;QACxCF,cAAM,CAAC,wCAAwC,CAAC,CAAC;AACjD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,KAAA;AAED,IAAA,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AACpC,IAAA,IAAI,CAAC,OAAO;QAAE,OAAO;;IAGrB,MAAM,kBAAkB,CAAC;AAEzB,IAAA,MAAMG,gBAAc,GAAG,MAAMC,cAAM,CAAC;AAClC,QAAA,OAAO,EAAE,2CAA2C;QACpD,OAAO,EAAEC,uCAAwB,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK;AAC7C,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,EAAE;AACV,SAAA,CAAC,CAAC;QACH,YAAY,EAAEC,yCAA0B,EAAE;AAC3C,KAAA,CAAC,CAAC;AAEH,IAAA,IAAIJ,gBAAQ,CAACC,gBAAc,CAAC,EAAE;QAC5BH,cAAM,CAAC,qCAAqC,CAAC,CAAC;AAC9C,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,KAAA;IAEDO,gCAAiB,CAACJ,gBAAwB,CAAC,CAAC;;AAG5C,IAAA,MAAM,cAAc,GAAG,MAAMC,cAAM,CAAC;AAClC,QAAA,OAAO,EAAE,iCAAiC;QAC1C,OAAO,EAAEI,wCAAwB,EAAE;AACpC,KAAA,CAAC,CAAC;AAEH,IAAA,IAAIN,gBAAQ,CAAC,cAAc,CAAC,EAAE;QAC5BF,cAAM,CAAC,8BAA8B,CAAC,CAAC;AACvC,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,KAAA;AAED,IAAA,MAAM,cAAc,GAAGS,iCAAiB,CAAC,cAAwB,CAAC,CAAC;;AAGnE,IAAA,MAAM,gBAAgB,GAAG,MAAMC,mBAAW,CAAC;AACzC,QAAA,OAAO,EAAE,uCAAuC;QAChD,OAAO,EAAEC,6BAAiB,EAAE;AAC5B,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA,CAAC,CAAC;AAEH,IAAA,IAAIT,gBAAQ,CAAC,gBAAgB,CAAC,EAAE;QAC9BF,cAAM,CAAC,6BAA6B,CAAC,CAAC;AACtC,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,KAAA;;AAGD,IAAA,MAAM,MAAM,GACV,CAAC,MAAMY,eAAO,CAAC;AACb,QAAA,OAAO,EAAE,iCAAiC;KAC3C,CAAC,MAAM,IAAI,CAAC;AAEf,IAAA,IAAIV,gBAAQ,CAAC,MAAM,CAAC,EAAE;QACpBF,cAAM,CAAC,iBAAiB,CAAC,CAAC;AAC1B,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,KAAA;;AAGD,IAAA,MAAM,MAAM,GACV,CAAC,MAAMY,eAAO,CAAC;AACb,QAAA,OAAO,EAAE,8BAA8B;KACxC,CAAC,MAAM,IAAI,CAAC;AAEf,IAAA,IAAIV,gBAAQ,CAAC,MAAM,CAAC,EAAE;QACpBF,cAAM,CAAC,iBAAiB,CAAC,CAAC;AAC1B,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,KAAA;;AAGD,IAAA,MAAM,UAAU,GAAsB;AACpC,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,OAAO;QAChB,UAAU,EAAEa,gCAAiB,EAAE;AAC/B,QAAA,OAAO,EAAE;AACP,YAAA,cAAc,EAAE,cAAwB;AACxC,YAAA,YAAY,EAAE,cAAc,EAAE,WAAW,IAAI,KAAK;AAClD,YAAA,QAAQ,EAAE,gBAA4B;YACtC,MAAM;YACN,MAAM;AACP,SAAA;KACF,CAAC;;IAGF,MAAMC,sBAAgB,CAAC,IAAIC,OAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9C"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
export type AppOptions = {
|
|
2
|
+
databaseDriver: string;
|
|
3
|
+
databasePort: number;
|
|
4
|
+
features: string[];
|
|
5
|
+
useGit: boolean;
|
|
6
|
+
useJWT: boolean;
|
|
7
|
+
};
|
|
1
8
|
export type App = {
|
|
2
9
|
appName?: string;
|
|
3
10
|
appType?: string;
|
|
4
11
|
appPath?: string;
|
|
5
|
-
options?:
|
|
12
|
+
options?: AppOptions;
|
|
6
13
|
pkgManager?: string;
|
|
7
14
|
};
|
|
8
15
|
export type Application = Required<App>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/create-new-app/types.ts"],"names":[],"mappings":"AAAA,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,
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/create-warlock-app/index.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -1,51 +1,55 @@
|
|
|
1
|
-
'use strict';var prompts=require('@clack/prompts'),
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
//
|
|
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);
|
|
5
18
|
const installProcess = application.install();
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const nodeModulesPath = path__default.default.join(application.path, "node_modules");
|
|
15
|
-
rimraf.rimraf(nodeModulesPath);
|
|
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);
|
|
16
27
|
}
|
|
17
|
-
|
|
18
|
-
message: "Do you want to initialize Git repository?",
|
|
19
|
-
})) === true;
|
|
20
|
-
// Only ask about JWT if dependencies will be installed
|
|
21
|
-
let useJWT = false;
|
|
22
|
-
if (installDeps) {
|
|
23
|
-
useJWT =
|
|
24
|
-
(await prompts.confirm({
|
|
25
|
-
message: "Do you want to generate JWT Secret key?",
|
|
26
|
-
})) === true;
|
|
27
|
-
}
|
|
28
|
-
// Now execute all confirmed tasks
|
|
29
|
-
// Handle Git initialization first if requested
|
|
28
|
+
// Step 4: Initialize Git repository if requested
|
|
30
29
|
if (useGit) {
|
|
31
|
-
const
|
|
32
|
-
|
|
30
|
+
const gitSpinner = prompts.spinner();
|
|
31
|
+
gitSpinner.start(spinners.spinnerMessages.initializingGit);
|
|
33
32
|
await application.git();
|
|
34
|
-
|
|
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);
|
|
35
41
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
loading.stop("📦 Dependencies installed successfully!");
|
|
42
|
-
// Generate JWT if requested
|
|
43
|
-
if (useJWT) {
|
|
44
|
-
const jwtLoading = prompts.spinner();
|
|
45
|
-
jwtLoading.start("🔑 Generating JWT Secret...");
|
|
46
|
-
await application.exec(packageManager.runPackageManagerCommand("jwt"));
|
|
47
|
-
jwtLoading.stop("🔑 JWT Secret generated 🔒");
|
|
48
|
-
}
|
|
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);
|
|
49
47
|
}
|
|
50
|
-
|
|
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
|
+
});
|
|
51
55
|
}exports.createWarlockApp=createWarlockApp;//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/commands/create-warlock-app/index.ts"],"sourcesContent":[null],"names":["
|
|
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,38 @@
|
|
|
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<{
|
|
35
|
+
name: string;
|
|
36
|
+
content: string;
|
|
37
|
+
}>;
|
|
38
|
+
//# 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;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAW1C"}
|
|
@@ -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 (SSR for mails)",
|
|
15
|
+
description: "React and ReactDOM for server-side rendering, useful for email templates",
|
|
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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"}
|