@reyemtech/nimbus 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/cjs/cli/azure-prompts.d.ts +40 -0
  2. package/dist/cjs/cli/azure-prompts.d.ts.map +1 -0
  3. package/dist/cjs/cli/azure-prompts.js +68 -0
  4. package/dist/cjs/cli/azure-prompts.js.map +1 -0
  5. package/dist/cjs/cli/prompt.d.ts +34 -0
  6. package/dist/cjs/cli/prompt.d.ts.map +1 -0
  7. package/dist/cjs/cli/prompt.js +61 -0
  8. package/dist/cjs/cli/prompt.js.map +1 -0
  9. package/dist/cjs/cli/templates-azure.d.ts +34 -0
  10. package/dist/cjs/cli/templates-azure.d.ts.map +1 -0
  11. package/dist/cjs/cli/templates-azure.js +444 -0
  12. package/dist/cjs/cli/templates-azure.js.map +1 -0
  13. package/dist/cjs/cli/templates.d.ts +13 -22
  14. package/dist/cjs/cli/templates.d.ts.map +1 -1
  15. package/dist/cjs/cli/templates.js +20 -433
  16. package/dist/cjs/cli/templates.js.map +1 -1
  17. package/dist/cjs/cli.js +28 -8
  18. package/dist/cjs/cli.js.map +1 -1
  19. package/dist/cjs/factories/cluster.d.ts +3 -3
  20. package/dist/cjs/factories/cluster.d.ts.map +1 -1
  21. package/dist/cjs/factories/cluster.js +10 -43
  22. package/dist/cjs/factories/cluster.js.map +1 -1
  23. package/dist/cjs/factories/dns.d.ts +2 -2
  24. package/dist/cjs/factories/dns.d.ts.map +1 -1
  25. package/dist/cjs/factories/dns.js +8 -41
  26. package/dist/cjs/factories/dns.js.map +1 -1
  27. package/dist/cjs/factories/network.d.ts +3 -3
  28. package/dist/cjs/factories/network.d.ts.map +1 -1
  29. package/dist/cjs/factories/network.js +10 -43
  30. package/dist/cjs/factories/network.js.map +1 -1
  31. package/dist/cjs/factories/secrets.d.ts +3 -3
  32. package/dist/cjs/factories/secrets.d.ts.map +1 -1
  33. package/dist/cjs/factories/secrets.js +9 -42
  34. package/dist/cjs/factories/secrets.js.map +1 -1
  35. package/dist/cjs/factories/state.d.ts +2 -2
  36. package/dist/cjs/factories/state.d.ts.map +1 -1
  37. package/dist/cjs/factories/state.js +8 -41
  38. package/dist/cjs/factories/state.js.map +1 -1
  39. package/dist/cjs/platform/stack.d.ts +4 -0
  40. package/dist/cjs/platform/stack.d.ts.map +1 -1
  41. package/dist/cjs/platform/stack.js +4 -0
  42. package/dist/cjs/platform/stack.js.map +1 -1
  43. package/dist/esm/cli/azure-prompts.d.ts +40 -0
  44. package/dist/esm/cli/azure-prompts.d.ts.map +1 -0
  45. package/dist/esm/cli/azure-prompts.js +68 -0
  46. package/dist/esm/cli/azure-prompts.js.map +1 -0
  47. package/dist/esm/cli/prompt.d.ts +34 -0
  48. package/dist/esm/cli/prompt.d.ts.map +1 -0
  49. package/dist/esm/cli/prompt.js +61 -0
  50. package/dist/esm/cli/prompt.js.map +1 -0
  51. package/dist/esm/cli/templates-azure.d.ts +34 -0
  52. package/dist/esm/cli/templates-azure.d.ts.map +1 -0
  53. package/dist/esm/cli/templates-azure.js +444 -0
  54. package/dist/esm/cli/templates-azure.js.map +1 -0
  55. package/dist/esm/cli/templates.d.ts +13 -22
  56. package/dist/esm/cli/templates.d.ts.map +1 -1
  57. package/dist/esm/cli/templates.js +20 -433
  58. package/dist/esm/cli/templates.js.map +1 -1
  59. package/dist/esm/cli.js +28 -8
  60. package/dist/esm/cli.js.map +1 -1
  61. package/dist/esm/factories/cluster.d.ts +3 -3
  62. package/dist/esm/factories/cluster.d.ts.map +1 -1
  63. package/dist/esm/factories/cluster.js +10 -10
  64. package/dist/esm/factories/cluster.js.map +1 -1
  65. package/dist/esm/factories/dns.d.ts +2 -2
  66. package/dist/esm/factories/dns.d.ts.map +1 -1
  67. package/dist/esm/factories/dns.js +8 -8
  68. package/dist/esm/factories/dns.js.map +1 -1
  69. package/dist/esm/factories/network.d.ts +3 -3
  70. package/dist/esm/factories/network.d.ts.map +1 -1
  71. package/dist/esm/factories/network.js +10 -10
  72. package/dist/esm/factories/network.js.map +1 -1
  73. package/dist/esm/factories/secrets.d.ts +3 -3
  74. package/dist/esm/factories/secrets.d.ts.map +1 -1
  75. package/dist/esm/factories/secrets.js +9 -9
  76. package/dist/esm/factories/secrets.js.map +1 -1
  77. package/dist/esm/factories/state.d.ts +2 -2
  78. package/dist/esm/factories/state.d.ts.map +1 -1
  79. package/dist/esm/factories/state.js +8 -8
  80. package/dist/esm/factories/state.js.map +1 -1
  81. package/dist/esm/platform/stack.d.ts +4 -0
  82. package/dist/esm/platform/stack.d.ts.map +1 -1
  83. package/dist/esm/platform/stack.js +4 -0
  84. package/dist/esm/platform/stack.js.map +1 -1
  85. package/package.json +1 -12
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Azure-specific CLI prompt orchestration for `nimbus new`.
3
+ *
4
+ * Prompts users for Azure region, resource group name, and tenant ID
5
+ * when scaffolding Azure templates.
6
+ *
7
+ * @module cli/azure-prompts
8
+ */
9
+ import type { TemplateName } from "./templates.js";
10
+ /** Azure configuration values collected from interactive prompts. */
11
+ export interface IAzureTemplateOptions {
12
+ readonly region: string;
13
+ readonly resourceGroupName: string;
14
+ readonly tenantId: string;
15
+ }
16
+ /**
17
+ * Check whether a template requires Azure prompts.
18
+ *
19
+ * @param template - Template name to check
20
+ * @returns True if the template needs Azure configuration
21
+ */
22
+ export declare function requiresAzurePrompts(template: TemplateName): boolean;
23
+ /**
24
+ * Check whether a template requires a tenant ID for Azure Key Vault.
25
+ *
26
+ * @param template - Template name to check
27
+ * @returns True if the template uses createSecrets with Azure Key Vault
28
+ */
29
+ export declare function requiresTenantId(template: TemplateName): boolean;
30
+ /**
31
+ * Prompt the user for Azure configuration values.
32
+ *
33
+ * Asks for region, resource group name, and (if needed) tenant ID.
34
+ *
35
+ * @param projectName - Project name used for default resource group
36
+ * @param template - Template name to determine which prompts to show
37
+ * @returns Azure template options collected from the user
38
+ */
39
+ export declare function promptForAzureOptions(projectName: string, template: TemplateName): Promise<IAzureTemplateOptions>;
40
+ //# sourceMappingURL=azure-prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-prompts.d.ts","sourceRoot":"","sources":["../../../src/cli/azure-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,qEAAqE;AACrE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAQD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,qBAAqB,CAAC,CAyBhC"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ /**
3
+ * Azure-specific CLI prompt orchestration for `nimbus new`.
4
+ *
5
+ * Prompts users for Azure region, resource group name, and tenant ID
6
+ * when scaffolding Azure templates.
7
+ *
8
+ * @module cli/azure-prompts
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.requiresAzurePrompts = requiresAzurePrompts;
12
+ exports.requiresTenantId = requiresTenantId;
13
+ exports.promptForAzureOptions = promptForAzureOptions;
14
+ const prompt_js_1 = require("./prompt.js");
15
+ /** Templates that require Azure configuration prompts. */
16
+ const AZURE_TEMPLATES = ["minimal-azure", "azure", "multi-cloud"];
17
+ /** Templates that use `createSecrets` with Azure Key Vault and require a tenant ID. */
18
+ const TENANT_ID_TEMPLATES = ["minimal-azure", "azure"];
19
+ /**
20
+ * Check whether a template requires Azure prompts.
21
+ *
22
+ * @param template - Template name to check
23
+ * @returns True if the template needs Azure configuration
24
+ */
25
+ function requiresAzurePrompts(template) {
26
+ return AZURE_TEMPLATES.includes(template);
27
+ }
28
+ /**
29
+ * Check whether a template requires a tenant ID for Azure Key Vault.
30
+ *
31
+ * @param template - Template name to check
32
+ * @returns True if the template uses createSecrets with Azure Key Vault
33
+ */
34
+ function requiresTenantId(template) {
35
+ return TENANT_ID_TEMPLATES.includes(template);
36
+ }
37
+ /**
38
+ * Prompt the user for Azure configuration values.
39
+ *
40
+ * Asks for region, resource group name, and (if needed) tenant ID.
41
+ *
42
+ * @param projectName - Project name used for default resource group
43
+ * @param template - Template name to determine which prompts to show
44
+ * @returns Azure template options collected from the user
45
+ */
46
+ async function promptForAzureOptions(projectName, template) {
47
+ const rl = (0, prompt_js_1.createPromptInterface)();
48
+ try {
49
+ console.log("\nAzure configuration:\n");
50
+ const region = await (0, prompt_js_1.askQuestion)(rl, "Azure region", {
51
+ defaultValue: "canadacentral",
52
+ });
53
+ const resourceGroupName = await (0, prompt_js_1.askQuestion)(rl, "Resource group name", {
54
+ defaultValue: `rg-${projectName}-${region}`,
55
+ });
56
+ let tenantId = "";
57
+ if (requiresTenantId(template)) {
58
+ tenantId = await (0, prompt_js_1.askQuestion)(rl, "Azure tenant ID", {
59
+ required: true,
60
+ });
61
+ }
62
+ return { region, resourceGroupName, tenantId };
63
+ }
64
+ finally {
65
+ rl.close();
66
+ }
67
+ }
68
+ //# sourceMappingURL=azure-prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-prompts.js","sourceRoot":"","sources":["../../../src/cli/azure-prompts.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAwBH,oDAEC;AAQD,4CAEC;AAWD,sDA4BC;AAzED,2CAAiE;AAUjE,0DAA0D;AAC1D,MAAM,eAAe,GAAgC,CAAC,eAAe,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AAE/F,uFAAuF;AACvF,MAAM,mBAAmB,GAAgC,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAEpF;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,QAAsB;IACzD,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,QAAsB;IACrD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,QAAsB;IAEtB,MAAM,EAAE,GAAG,IAAA,iCAAqB,GAAE,CAAC;IAEnC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAW,EAAC,EAAE,EAAE,cAAc,EAAE;YACnD,YAAY,EAAE,eAAe;SAC9B,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,MAAM,IAAA,uBAAW,EAAC,EAAE,EAAE,qBAAqB,EAAE;YACrE,YAAY,EAAE,MAAM,WAAW,IAAI,MAAM,EAAE;SAC5C,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,QAAQ,GAAG,MAAM,IAAA,uBAAW,EAAC,EAAE,EAAE,iBAAiB,EAAE;gBAClD,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IACjD,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Generic readline prompt utility for CLI interactive input.
3
+ *
4
+ * Uses Node's built-in `readline` module to prompt users for input.
5
+ *
6
+ * @module cli/prompt
7
+ */
8
+ import type { Interface as ReadlineInterface } from "readline";
9
+ /** Options for a single prompt question. */
10
+ export interface IPromptOptions {
11
+ /** Default value shown in brackets, used if user presses Enter. */
12
+ readonly defaultValue?: string;
13
+ /** If true, re-prompts when the answer is empty and no default is set. */
14
+ readonly required?: boolean;
15
+ }
16
+ /**
17
+ * Create a readline interface for interactive prompts.
18
+ *
19
+ * @returns A readline interface connected to stdin/stdout
20
+ */
21
+ export declare function createPromptInterface(): ReadlineInterface;
22
+ /**
23
+ * Ask the user a question via readline and return their answer.
24
+ *
25
+ * Shows the default value in brackets (e.g., `"Region [canadacentral]: "`).
26
+ * Re-prompts if `required` is true and the answer is empty with no default.
27
+ *
28
+ * @param rl - Readline interface
29
+ * @param question - The question text to display
30
+ * @param options - Prompt options (defaultValue, required)
31
+ * @returns The user's answer or the default value
32
+ */
33
+ export declare function askQuestion(rl: ReadlineInterface, question: string, options?: IPromptOptions): Promise<string>;
34
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/cli/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE/D,4CAA4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,iBAAiB,CAKzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,iBAAiB,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /**
3
+ * Generic readline prompt utility for CLI interactive input.
4
+ *
5
+ * Uses Node's built-in `readline` module to prompt users for input.
6
+ *
7
+ * @module cli/prompt
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createPromptInterface = createPromptInterface;
11
+ exports.askQuestion = askQuestion;
12
+ const readline_1 = require("readline");
13
+ /**
14
+ * Create a readline interface for interactive prompts.
15
+ *
16
+ * @returns A readline interface connected to stdin/stdout
17
+ */
18
+ function createPromptInterface() {
19
+ return (0, readline_1.createInterface)({
20
+ input: process.stdin,
21
+ output: process.stdout,
22
+ });
23
+ }
24
+ /**
25
+ * Ask the user a question via readline and return their answer.
26
+ *
27
+ * Shows the default value in brackets (e.g., `"Region [canadacentral]: "`).
28
+ * Re-prompts if `required` is true and the answer is empty with no default.
29
+ *
30
+ * @param rl - Readline interface
31
+ * @param question - The question text to display
32
+ * @param options - Prompt options (defaultValue, required)
33
+ * @returns The user's answer or the default value
34
+ */
35
+ function askQuestion(rl, question, options = {}) {
36
+ const { defaultValue, required } = options;
37
+ const suffix = defaultValue ? ` [${defaultValue}]` : "";
38
+ const prompt = `${question}${suffix}: `;
39
+ return new Promise((resolve) => {
40
+ const ask = () => {
41
+ rl.question(prompt, (answer) => {
42
+ const trimmed = answer.trim();
43
+ if (trimmed) {
44
+ resolve(trimmed);
45
+ }
46
+ else if (defaultValue) {
47
+ resolve(defaultValue);
48
+ }
49
+ else if (required) {
50
+ console.log(" This field is required. Please enter a value.");
51
+ ask();
52
+ }
53
+ else {
54
+ resolve("");
55
+ }
56
+ });
57
+ };
58
+ ask();
59
+ });
60
+ }
61
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/cli/prompt.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAkBH,sDAKC;AAaD,kCA2BC;AA7DD,uCAA2C;AAW3C;;;;GAIG;AACH,SAAgB,qBAAqB;IACnC,OAAO,IAAA,0BAAe,EAAC;QACrB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,WAAW,CACzB,EAAqB,EACrB,QAAgB,EAChB,UAA0B,EAAE;IAE5B,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,MAAM,IAAI,CAAC;IAExC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,GAAS,EAAE;YACrB,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAc,EAAE,EAAE;gBACrC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,OAAO,CAAC,CAAC;gBACnB,CAAC;qBAAM,IAAI,YAAY,EAAE,CAAC;oBACxB,OAAO,CAAC,YAAY,CAAC,CAAC;gBACxB,CAAC;qBAAM,IAAI,QAAQ,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;oBAC/D,GAAG,EAAE,CAAC;gBACR,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,EAAE,CAAC,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,GAAG,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Azure project templates for `nimbus new`.
3
+ *
4
+ * Contains the minimal-azure, azure, and multi-cloud template generators,
5
+ * split from templates.ts to keep files under the 500-line limit.
6
+ *
7
+ * @module cli/templates-azure
8
+ */
9
+ import type { ITemplateFiles, ITemplateOptions } from "./templates.js";
10
+ /**
11
+ * Minimal Azure template — state backend + Key Vault, no cluster.
12
+ *
13
+ * @param name - Project name substituted into resource names
14
+ * @param options - Optional template options with Azure configuration
15
+ * @returns Template files
16
+ */
17
+ export declare function minimalAzureTemplate(name: string, options?: ITemplateOptions): ITemplateFiles;
18
+ /**
19
+ * Full Azure stack — VNet + AKS + Azure DNS + Key Vault + Platform.
20
+ *
21
+ * @param name - Project name substituted into resource names
22
+ * @param options - Optional template options with Azure configuration
23
+ * @returns Template files
24
+ */
25
+ export declare function azureTemplate(name: string, options?: ITemplateOptions): ITemplateFiles;
26
+ /**
27
+ * Multi-cloud template — AWS + Azure active-active with GLB.
28
+ *
29
+ * @param name - Project name substituted into resource names
30
+ * @param options - Optional template options with Azure configuration
31
+ * @returns Template files
32
+ */
33
+ export declare function multiCloudTemplate(name: string, options?: ITemplateOptions): ITemplateFiles;
34
+ //# sourceMappingURL=templates-azure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates-azure.d.ts","sourceRoot":"","sources":["../../../src/cli/templates-azure.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKvE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CA+E7F;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CAmKtF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CA0K3F"}