create-warlock 4.0.161 → 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.
Files changed (110) hide show
  1. package/cjs/commands/create-new-app/get-app-path.d.ts +2 -0
  2. package/cjs/commands/create-new-app/get-app-path.d.ts.map +1 -0
  3. package/cjs/commands/create-new-app/get-app-path.js +8 -0
  4. package/cjs/commands/create-new-app/get-app-path.js.map +1 -0
  5. package/cjs/commands/create-new-app/index.d.ts +2 -0
  6. package/cjs/commands/create-new-app/index.d.ts.map +1 -0
  7. package/cjs/commands/create-new-app/index.js +96 -0
  8. package/cjs/commands/create-new-app/index.js.map +1 -0
  9. package/cjs/commands/create-new-app/types.d.ts +16 -0
  10. package/cjs/commands/create-new-app/types.d.ts.map +1 -0
  11. package/cjs/commands/create-warlock-app/index.d.ts +3 -0
  12. package/cjs/commands/create-warlock-app/index.d.ts.map +1 -0
  13. package/cjs/commands/create-warlock-app/index.js +55 -0
  14. package/cjs/commands/create-warlock-app/index.js.map +1 -0
  15. package/cjs/features/database-drivers.d.ts +31 -0
  16. package/cjs/features/database-drivers.d.ts.map +1 -0
  17. package/cjs/features/database-drivers.js +53 -0
  18. package/cjs/features/database-drivers.js.map +1 -0
  19. package/cjs/features/features-map.d.ts +35 -0
  20. package/cjs/features/features-map.d.ts.map +1 -0
  21. package/cjs/features/features-map.js +120 -0
  22. package/cjs/features/features-map.js.map +1 -0
  23. package/cjs/helpers/app.d.ts +71 -0
  24. package/cjs/helpers/app.d.ts.map +1 -0
  25. package/cjs/helpers/app.js +196 -0
  26. package/cjs/helpers/app.js.map +1 -0
  27. package/cjs/helpers/exec.d.ts +10 -0
  28. package/cjs/helpers/exec.d.ts.map +1 -0
  29. package/cjs/helpers/exec.js +69 -0
  30. package/cjs/helpers/exec.js.map +1 -0
  31. package/cjs/helpers/package-manager.d.ts +18 -0
  32. package/cjs/helpers/package-manager.d.ts.map +1 -0
  33. package/cjs/helpers/package-manager.js +104 -0
  34. package/cjs/helpers/package-manager.js.map +1 -0
  35. package/cjs/helpers/paths.d.ts +4 -0
  36. package/cjs/helpers/paths.d.ts.map +1 -0
  37. package/cjs/helpers/paths.js +8 -0
  38. package/cjs/helpers/paths.js.map +1 -0
  39. package/cjs/helpers/project-builder-helpers.d.ts +6 -0
  40. package/cjs/helpers/project-builder-helpers.d.ts.map +1 -0
  41. package/cjs/helpers/project-builder-helpers.js +11 -0
  42. package/cjs/helpers/project-builder-helpers.js.map +1 -0
  43. package/cjs/index.d.ts +2 -0
  44. package/cjs/index.d.ts.map +1 -0
  45. package/cjs/index.js +3 -0
  46. package/cjs/index.js.map +1 -0
  47. package/cjs/ui/banner.d.ts +29 -0
  48. package/cjs/ui/banner.d.ts.map +1 -0
  49. package/cjs/ui/banner.js +142 -0
  50. package/cjs/ui/banner.js.map +1 -0
  51. package/cjs/ui/spinners.d.ts +18 -0
  52. package/cjs/ui/spinners.d.ts.map +1 -0
  53. package/cjs/ui/spinners.js +17 -0
  54. package/cjs/ui/spinners.js.map +1 -0
  55. package/esm/commands/create-new-app/get-app-path.d.ts +2 -0
  56. package/esm/commands/create-new-app/get-app-path.d.ts.map +1 -0
  57. package/esm/commands/create-new-app/get-app-path.js +8 -0
  58. package/esm/commands/create-new-app/get-app-path.js.map +1 -0
  59. package/esm/commands/create-new-app/index.d.ts +2 -0
  60. package/esm/commands/create-new-app/index.d.ts.map +1 -0
  61. package/esm/commands/create-new-app/index.js +96 -0
  62. package/esm/commands/create-new-app/index.js.map +1 -0
  63. package/esm/commands/create-new-app/types.d.ts +16 -0
  64. package/esm/commands/create-new-app/types.d.ts.map +1 -0
  65. package/esm/commands/create-warlock-app/index.d.ts +3 -0
  66. package/esm/commands/create-warlock-app/index.d.ts.map +1 -0
  67. package/esm/commands/create-warlock-app/index.js +55 -0
  68. package/esm/commands/create-warlock-app/index.js.map +1 -0
  69. package/esm/features/database-drivers.d.ts +31 -0
  70. package/esm/features/database-drivers.d.ts.map +1 -0
  71. package/esm/features/database-drivers.js +53 -0
  72. package/esm/features/database-drivers.js.map +1 -0
  73. package/esm/features/features-map.d.ts +35 -0
  74. package/esm/features/features-map.d.ts.map +1 -0
  75. package/esm/features/features-map.js +120 -0
  76. package/esm/features/features-map.js.map +1 -0
  77. package/esm/helpers/app.d.ts +71 -0
  78. package/esm/helpers/app.d.ts.map +1 -0
  79. package/esm/helpers/app.js +196 -0
  80. package/esm/helpers/app.js.map +1 -0
  81. package/esm/helpers/exec.d.ts +10 -0
  82. package/esm/helpers/exec.d.ts.map +1 -0
  83. package/esm/helpers/exec.js +69 -0
  84. package/esm/helpers/exec.js.map +1 -0
  85. package/esm/helpers/package-manager.d.ts +18 -0
  86. package/esm/helpers/package-manager.d.ts.map +1 -0
  87. package/esm/helpers/package-manager.js +104 -0
  88. package/esm/helpers/package-manager.js.map +1 -0
  89. package/esm/helpers/paths.d.ts +4 -0
  90. package/esm/helpers/paths.d.ts.map +1 -0
  91. package/esm/helpers/paths.js +8 -0
  92. package/esm/helpers/paths.js.map +1 -0
  93. package/esm/helpers/project-builder-helpers.d.ts +6 -0
  94. package/esm/helpers/project-builder-helpers.d.ts.map +1 -0
  95. package/esm/helpers/project-builder-helpers.js +11 -0
  96. package/esm/helpers/project-builder-helpers.js.map +1 -0
  97. package/esm/index.d.ts +2 -0
  98. package/esm/index.d.ts.map +1 -0
  99. package/esm/index.js +3 -0
  100. package/esm/index.js.map +1 -0
  101. package/esm/ui/banner.d.ts +29 -0
  102. package/esm/ui/banner.d.ts.map +1 -0
  103. package/esm/ui/banner.js +142 -0
  104. package/esm/ui/banner.js.map +1 -0
  105. package/esm/ui/spinners.d.ts +18 -0
  106. package/esm/ui/spinners.d.ts.map +1 -0
  107. package/esm/ui/spinners.js +17 -0
  108. package/esm/ui/spinners.js.map +1 -0
  109. package/package.json +1 -1
  110. package/templates/warlock/package.json +7 -7
@@ -0,0 +1,2 @@
1
+ export default function getAppPath(appName: string): string;
2
+ //# sourceMappingURL=get-app-path.d.ts.map
@@ -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,2 @@
1
+ export default function createNewApp(): Promise<void>;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ import { App } from "../../helpers/app";
2
+ export declare function createWarlockApp(application: App): Promise<void>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}