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.
Files changed (89) hide show
  1. package/cjs/commands/create-new-app/index.d.ts +1 -1
  2. package/cjs/commands/create-new-app/index.d.ts.map +1 -1
  3. package/cjs/commands/create-new-app/index.js +86 -41
  4. package/cjs/commands/create-new-app/index.js.map +1 -1
  5. package/cjs/commands/create-new-app/types.d.ts +8 -1
  6. package/cjs/commands/create-new-app/types.d.ts.map +1 -1
  7. package/cjs/commands/create-warlock-app/index.d.ts +1 -1
  8. package/cjs/commands/create-warlock-app/index.d.ts.map +1 -1
  9. package/cjs/commands/create-warlock-app/index.js +48 -44
  10. package/cjs/commands/create-warlock-app/index.js.map +1 -1
  11. package/cjs/features/database-drivers.d.ts +31 -0
  12. package/cjs/features/database-drivers.d.ts.map +1 -0
  13. package/cjs/features/database-drivers.js +53 -0
  14. package/cjs/features/database-drivers.js.map +1 -0
  15. package/cjs/features/features-map.d.ts +38 -0
  16. package/cjs/features/features-map.d.ts.map +1 -0
  17. package/cjs/features/features-map.js +120 -0
  18. package/cjs/features/features-map.js.map +1 -0
  19. package/cjs/helpers/app.d.ts +24 -6
  20. package/cjs/helpers/app.d.ts.map +1 -1
  21. package/cjs/helpers/app.js +77 -6
  22. package/cjs/helpers/app.js.map +1 -1
  23. package/cjs/helpers/package-manager.d.ts +13 -1
  24. package/cjs/helpers/package-manager.d.ts.map +1 -1
  25. package/cjs/helpers/package-manager.js +91 -9
  26. package/cjs/helpers/package-manager.js.map +1 -1
  27. package/cjs/helpers/project-builder-helpers.js +2 -9
  28. package/cjs/helpers/project-builder-helpers.js.map +1 -1
  29. package/cjs/index.d.ts.map +1 -1
  30. package/cjs/index.js +2 -4
  31. package/cjs/index.js.map +1 -1
  32. package/cjs/ui/banner.d.ts +29 -0
  33. package/cjs/ui/banner.d.ts.map +1 -0
  34. package/cjs/ui/banner.js +142 -0
  35. package/cjs/ui/banner.js.map +1 -0
  36. package/cjs/ui/spinners.d.ts +18 -0
  37. package/cjs/ui/spinners.d.ts.map +1 -0
  38. package/cjs/ui/spinners.js +17 -0
  39. package/cjs/ui/spinners.js.map +1 -0
  40. package/esm/commands/create-new-app/index.d.ts +1 -1
  41. package/esm/commands/create-new-app/index.d.ts.map +1 -1
  42. package/esm/commands/create-new-app/index.js +86 -41
  43. package/esm/commands/create-new-app/index.js.map +1 -1
  44. package/esm/commands/create-new-app/types.d.ts +8 -1
  45. package/esm/commands/create-new-app/types.d.ts.map +1 -1
  46. package/esm/commands/create-warlock-app/index.d.ts +1 -1
  47. package/esm/commands/create-warlock-app/index.d.ts.map +1 -1
  48. package/esm/commands/create-warlock-app/index.js +48 -44
  49. package/esm/commands/create-warlock-app/index.js.map +1 -1
  50. package/esm/features/database-drivers.d.ts +31 -0
  51. package/esm/features/database-drivers.d.ts.map +1 -0
  52. package/esm/features/database-drivers.js +53 -0
  53. package/esm/features/database-drivers.js.map +1 -0
  54. package/esm/features/features-map.d.ts +38 -0
  55. package/esm/features/features-map.d.ts.map +1 -0
  56. package/esm/features/features-map.js +120 -0
  57. package/esm/features/features-map.js.map +1 -0
  58. package/esm/helpers/app.d.ts +24 -6
  59. package/esm/helpers/app.d.ts.map +1 -1
  60. package/esm/helpers/app.js +76 -5
  61. package/esm/helpers/app.js.map +1 -1
  62. package/esm/helpers/package-manager.d.ts +13 -1
  63. package/esm/helpers/package-manager.d.ts.map +1 -1
  64. package/esm/helpers/package-manager.js +91 -9
  65. package/esm/helpers/package-manager.js.map +1 -1
  66. package/esm/helpers/project-builder-helpers.js +2 -9
  67. package/esm/helpers/project-builder-helpers.js.map +1 -1
  68. package/esm/index.d.ts.map +1 -1
  69. package/esm/index.js +2 -4
  70. package/esm/index.js.map +1 -1
  71. package/esm/ui/banner.d.ts +29 -0
  72. package/esm/ui/banner.d.ts.map +1 -0
  73. package/esm/ui/banner.js +142 -0
  74. package/esm/ui/banner.js.map +1 -0
  75. package/esm/ui/spinners.d.ts +18 -0
  76. package/esm/ui/spinners.d.ts.map +1 -0
  77. package/esm/ui/spinners.js +17 -0
  78. package/esm/ui/spinners.js.map +1 -0
  79. package/package.json +2 -1
  80. package/templates/warlock/package.json +7 -7
  81. package/templates/warlock/src/config/app.ts +1 -1
  82. package/templates/warlock/src/config/auth.ts +1 -1
  83. package/templates/warlock/src/config/cache.ts +1 -2
  84. package/templates/warlock/src/config/database.ts +1 -1
  85. package/templates/warlock/src/config/http.ts +1 -1
  86. package/templates/warlock/src/config/mail.ts +1 -1
  87. package/templates/warlock/src/config/storage.ts +1 -2
  88. package/templates/warlock/src/config/google.ts +0 -22
  89. package/templates/warlock/src/config/notifications.ts +0 -11
@@ -1,2 +1,2 @@
1
- export default function createNewApp(createWarlockVersion: string): Promise<void>;
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":"AAmBA,wBAA8B,YAAY,CAAC,oBAAoB,EAAE,MAAM,iBAqDtE"}
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');const appDetails = {
2
- appName: "",
3
- appType: "",
4
- appPath: "",
5
- pkgManager: "",
6
- options: {},
7
- };
8
- async function createNewApp(createWarlockVersion) {
9
- prompts.intro(`✨ Let's create a new ${copper.colors.yellowBright("Warlock Js App")} ${copper.colors.greenBright(`v` + createWarlockVersion)}`);
10
- const appName = await prompts.text({
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: "Select package manager to use 📦 ",
26
- initialValue: packageManager.getPackageManager(),
27
- options: [
28
- {
29
- label: "Npm",
30
- value: "npm",
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
- appDetails.appName = appName;
44
- appDetails.appPath = getAppPath(appName);
45
- appDetails.pkgManager = packageManager$1;
46
- if (!appDetails.appPath)
47
- return;
48
- appDetails.appType = "warlock";
49
- index.createWarlockApp(new app.App(appDetails));
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":["intro","colors","text","isCancel","cancel","packageManager","select","getPackageManager","setPackageManager","createWarlockApp","App"],"mappings":"2QAWA,MAAM,UAAU,GAAsB;AACpC,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,OAAO,EAAE,EAAE;CACZ,CAAC;AAEa,eAAe,YAAY,CAAC,oBAA4B,EAAA;AACrE,IAAAA,aAAK,CACH,CAAwB,qBAAA,EAAAC,aAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAA,GAAA,EAAMA,aAAM,CAAC,WAAW,CAAC,CAAG,CAAA,CAAA,GAAG,oBAAoB,CAAC,CAAA,CAAE,CACpH,CAAC;AAEF,IAAA,MAAM,OAAO,GAAG,MAAMC,YAAI,CAAC;AACzB,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,WAAW,EAAE,aAAa;AAC3B,KAAA,CAAC,CAAC;IAEH,IAAIC,gBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;QACxCC,cAAM,CAAC,kDAAkD,CAAC,CAAC;AAC3D,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,KAAA;;AAGD,IAAA,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE7D,IAAI,KAAK,GAAG,EAAE,EAAE;QACdA,cAAM,CAAC,yCAAyC,CAAC,CAAC;AAClD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,KAAA;AAED,IAAA,MAAMC,gBAAc,GAAG,MAAMC,cAAM,CAAC;AAClC,QAAA,OAAO,EAAE,mCAAmC;QAC5C,YAAY,EAAEC,gCAAiB,EAAE;AACjC,QAAA,OAAO,EAAE;AACP,YAAA;AACE,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,KAAK,EAAE,KAAK;AACb,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA;AACF,SAAA;AACF,KAAA,CAAC,CAAC;IAEHC,gCAAiB,CAACH,gBAAc,CAAC,CAAC;AAElC,IAAA,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;AAC7B,IAAA,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AACzC,IAAA,UAAU,CAAC,UAAU,GAAGA,gBAAc,CAAC;IAEvC,IAAI,CAAC,UAAU,CAAC,OAAO;QAAE,OAAO;AAEhC,IAAA,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;AAE/B,IAAAI,sBAAgB,CAAC,IAAIC,OAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACxC"}
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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"}
@@ -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?: any;
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,GAAG,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC"}
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,3 +1,3 @@
1
- import { App } from "src/helpers/app";
1
+ import { App } from "../../helpers/app";
2
2
  export declare function createWarlockApp(application: App): Promise<void>;
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/create-warlock-app/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAGtC,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,GAAG,iBAgEtD"}
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'),path=require('path'),rimraf=require('rimraf'),packageManager=require('../../helpers/package-manager.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var path__default=/*#__PURE__*/_interopDefault(path);async function createWarlockApp(application) {
2
- // Initialize the basic app structure
3
- application.init().use("warlock").updatePackageJson().updateDotEnv();
4
- // Start the installation process in background immediately
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
- // Collect all answers first
7
- const installDeps = (await prompts.confirm({
8
- message: "Do you want to install dependencies?",
9
- })) === true;
10
- // If user doesn't want to install dependencies, abort the background process
11
- if (!installDeps) {
12
- installProcess.abort();
13
- // Remove node_modules Asynchronously
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
- const useGit = (await prompts.confirm({
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 loading = prompts.spinner();
32
- loading.start("📂 Initializing Git repository...");
30
+ const gitSpinner = prompts.spinner();
31
+ gitSpinner.start(spinners.spinnerMessages.initializingGit);
33
32
  await application.git();
34
- loading.stop("📂 Git repository initialized ✅");
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
- // Wait for dependencies installation if it was requested
37
- if (installDeps) {
38
- const loading = prompts.spinner();
39
- loading.start("📦 Installing dependencies...");
40
- await installProcess.install;
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
- application.terminate();
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":["confirm","path","rimraf","spinner","runPackageManagerCommand"],"mappings":"kRAMO,eAAe,gBAAgB,CAAC,WAAgB,EAAA;;AAErD,IAAA,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC;;AAGrE,IAAA,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;;AAG7C,IAAA,MAAM,WAAW,GACf,CAAC,MAAMA,eAAO,CAAC;AACb,QAAA,OAAO,EAAE,sCAAsC;KAChD,CAAC,MAAM,IAAI,CAAC;;IAGf,IAAI,CAAC,WAAW,EAAE;QAChB,cAAc,CAAC,KAAK,EAAE,CAAC;;AAGvB,QAAA,MAAM,eAAe,GAAGC,qBAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAEpEC,aAAM,CAAC,eAAe,CAAC,CAAC;AACzB,KAAA;AAED,IAAA,MAAM,MAAM,GACV,CAAC,MAAMF,eAAO,CAAC;AACb,QAAA,OAAO,EAAE,2CAA2C;KACrD,CAAC,MAAM,IAAI,CAAC;;IAGf,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,IAAA,IAAI,WAAW,EAAE;QACf,MAAM;YACJ,CAAC,MAAMA,eAAO,CAAC;AACb,gBAAA,OAAO,EAAE,yCAAyC;aACnD,CAAC,MAAM,IAAI,CAAC;AAChB,KAAA;;;AAKD,IAAA,IAAI,MAAM,EAAE;AACV,QAAA,MAAM,OAAO,GAAGG,eAAO,EAAE,CAAC;AAC1B,QAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACnD,QAAA,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC;AACxB,QAAA,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;AACjD,KAAA;;AAGD,IAAA,IAAI,WAAW,EAAE;AACf,QAAA,MAAM,OAAO,GAAGA,eAAO,EAAE,CAAC;AAC1B,QAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC/C,MAAM,cAAc,CAAC,OAAO,CAAC;AAC7B,QAAA,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;;AAGxD,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,UAAU,GAAGA,eAAO,EAAE,CAAC;AAC7B,YAAA,UAAU,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAChD,MAAM,WAAW,CAAC,IAAI,CAACC,uCAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,YAAA,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AAC/C,SAAA;AACF,KAAA;IAED,WAAW,CAAC,SAAS,EAAE,CAAC;AAC1B"}
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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"}