@quiltdata/benchling-webhook 0.7.7 → 0.7.8-20251115T063729Z

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 (81) hide show
  1. package/README.md +24 -11
  2. package/dist/bin/cli.js +77 -3
  3. package/dist/bin/cli.js.map +1 -1
  4. package/dist/bin/commands/config-show.d.ts +14 -0
  5. package/dist/bin/commands/config-show.d.ts.map +1 -0
  6. package/dist/bin/commands/config-show.js +24 -0
  7. package/dist/bin/commands/config-show.js.map +1 -0
  8. package/dist/bin/commands/deploy.d.ts +14 -0
  9. package/dist/bin/commands/deploy.d.ts.map +1 -1
  10. package/dist/bin/commands/deploy.js +1 -0
  11. package/dist/bin/commands/deploy.js.map +1 -1
  12. package/dist/bin/commands/infer-quilt-config.d.ts +3 -0
  13. package/dist/bin/commands/infer-quilt-config.d.ts.map +1 -1
  14. package/dist/bin/commands/infer-quilt-config.js +74 -8
  15. package/dist/bin/commands/infer-quilt-config.js.map +1 -1
  16. package/dist/bin/commands/install.d.ts.map +1 -1
  17. package/dist/bin/commands/install.js +40 -7
  18. package/dist/bin/commands/install.js.map +1 -1
  19. package/dist/bin/commands/manifest.d.ts +20 -3
  20. package/dist/bin/commands/manifest.d.ts.map +1 -1
  21. package/dist/bin/commands/manifest.js +23 -7
  22. package/dist/bin/commands/manifest.js.map +1 -1
  23. package/dist/bin/commands/setup-wizard.d.ts +67 -13
  24. package/dist/bin/commands/setup-wizard.d.ts.map +1 -1
  25. package/dist/bin/commands/setup-wizard.js +239 -742
  26. package/dist/bin/commands/setup-wizard.js.map +1 -1
  27. package/dist/bin/commands/sync-secrets.d.ts +7 -7
  28. package/dist/bin/commands/sync-secrets.d.ts.map +1 -1
  29. package/dist/bin/commands/sync-secrets.js +55 -15
  30. package/dist/bin/commands/sync-secrets.js.map +1 -1
  31. package/dist/bin/commands/validate.d.ts +18 -3
  32. package/dist/bin/commands/validate.d.ts.map +1 -1
  33. package/dist/bin/commands/validate.js +103 -69
  34. package/dist/bin/commands/validate.js.map +1 -1
  35. package/dist/lib/types/config.d.ts +13 -0
  36. package/dist/lib/types/config.d.ts.map +1 -1
  37. package/dist/lib/types/config.js +1 -0
  38. package/dist/lib/types/config.js.map +1 -1
  39. package/dist/lib/utils/config.d.ts +14 -17
  40. package/dist/lib/utils/config.d.ts.map +1 -1
  41. package/dist/lib/utils/config.js +6 -88
  42. package/dist/lib/utils/config.js.map +1 -1
  43. package/dist/lib/wizard/phase1-catalog-discovery.d.ts +41 -0
  44. package/dist/lib/wizard/phase1-catalog-discovery.d.ts.map +1 -0
  45. package/dist/lib/wizard/phase1-catalog-discovery.js +206 -0
  46. package/dist/lib/wizard/phase1-catalog-discovery.js.map +1 -0
  47. package/dist/lib/wizard/phase2-stack-query.d.ts +35 -0
  48. package/dist/lib/wizard/phase2-stack-query.d.ts.map +1 -0
  49. package/dist/lib/wizard/phase2-stack-query.js +99 -0
  50. package/dist/lib/wizard/phase2-stack-query.js.map +1 -0
  51. package/dist/lib/wizard/phase3-parameter-collection.d.ts +24 -0
  52. package/dist/lib/wizard/phase3-parameter-collection.d.ts.map +1 -0
  53. package/dist/lib/wizard/phase3-parameter-collection.js +399 -0
  54. package/dist/lib/wizard/phase3-parameter-collection.js.map +1 -0
  55. package/dist/lib/wizard/phase4-validation.d.ts +22 -0
  56. package/dist/lib/wizard/phase4-validation.d.ts.map +1 -0
  57. package/dist/lib/wizard/phase4-validation.js +294 -0
  58. package/dist/lib/wizard/phase4-validation.js.map +1 -0
  59. package/dist/lib/wizard/phase5-mode-decision.d.ts +22 -0
  60. package/dist/lib/wizard/phase5-mode-decision.d.ts.map +1 -0
  61. package/dist/lib/wizard/phase5-mode-decision.js +65 -0
  62. package/dist/lib/wizard/phase5-mode-decision.js.map +1 -0
  63. package/dist/lib/wizard/phase6-integrated-mode.d.ts +24 -0
  64. package/dist/lib/wizard/phase6-integrated-mode.d.ts.map +1 -0
  65. package/dist/lib/wizard/phase6-integrated-mode.js +131 -0
  66. package/dist/lib/wizard/phase6-integrated-mode.js.map +1 -0
  67. package/dist/lib/wizard/phase7-standalone-mode.d.ts +25 -0
  68. package/dist/lib/wizard/phase7-standalone-mode.d.ts.map +1 -0
  69. package/dist/lib/wizard/phase7-standalone-mode.js +210 -0
  70. package/dist/lib/wizard/phase7-standalone-mode.js.map +1 -0
  71. package/dist/lib/wizard/types.d.ts +175 -0
  72. package/dist/lib/wizard/types.d.ts.map +1 -0
  73. package/dist/lib/wizard/types.js +11 -0
  74. package/dist/lib/wizard/types.js.map +1 -0
  75. package/dist/package.json +3 -4
  76. package/package.json +3 -4
  77. package/dist/bin/commands/get-env.d.ts +0 -16
  78. package/dist/bin/commands/get-env.d.ts.map +0 -1
  79. package/dist/bin/commands/get-env.js +0 -210
  80. package/dist/bin/commands/get-env.js.map +0 -1
  81. package/env.template +0 -79
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ /**
3
+ * Phase 7: Standalone Mode
4
+ *
5
+ * Handles standalone webhook mode where a new dedicated BenchlingSecret is created
6
+ * and optionally deployed as a separate stack.
7
+ *
8
+ * @module wizard/phase7-standalone-mode
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || (function () {
27
+ var ownKeys = function(o) {
28
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29
+ var ar = [];
30
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
+ return ar;
32
+ };
33
+ return ownKeys(o);
34
+ };
35
+ return function (mod) {
36
+ if (mod && mod.__esModule) return mod;
37
+ var result = {};
38
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
+ __setModuleDefault(result, mod);
40
+ return result;
41
+ };
42
+ })();
43
+ var __importDefault = (this && this.__importDefault) || function (mod) {
44
+ return (mod && mod.__esModule) ? mod : { "default": mod };
45
+ };
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.runStandaloneMode = runStandaloneMode;
48
+ const inquirer_1 = __importDefault(require("inquirer"));
49
+ const chalk_1 = __importDefault(require("chalk"));
50
+ const sync_secrets_1 = require("../../bin/commands/sync-secrets");
51
+ const next_steps_generator_1 = require("../next-steps-generator");
52
+ /**
53
+ * Builds ProfileConfig from collected parameters
54
+ */
55
+ function buildProfileConfig(input) {
56
+ const { stackQuery, parameters, catalogDns } = input;
57
+ const now = new Date().toISOString();
58
+ const config = {
59
+ quilt: {
60
+ stackArn: stackQuery.stackArn,
61
+ catalog: catalogDns,
62
+ database: stackQuery.database,
63
+ queueUrl: stackQuery.queueUrl,
64
+ region: stackQuery.region,
65
+ },
66
+ benchling: {
67
+ tenant: parameters.benchling.tenant,
68
+ clientId: parameters.benchling.clientId,
69
+ clientSecret: parameters.benchling.clientSecret,
70
+ appDefinitionId: parameters.benchling.appDefinitionId,
71
+ // No secretArn yet - will be set after creating secret
72
+ },
73
+ packages: {
74
+ bucket: parameters.packages.bucket,
75
+ prefix: parameters.packages.prefix,
76
+ metadataKey: parameters.packages.metadataKey,
77
+ },
78
+ deployment: {
79
+ region: parameters.deployment.region,
80
+ account: parameters.deployment.account,
81
+ },
82
+ integratedStack: false, // CRITICAL: Mark as standalone mode
83
+ logging: {
84
+ level: parameters.logging.level,
85
+ },
86
+ security: {
87
+ enableVerification: parameters.security.enableVerification,
88
+ webhookAllowList: parameters.security.webhookAllowList,
89
+ },
90
+ _metadata: {
91
+ version: "0.7.0",
92
+ createdAt: now,
93
+ updatedAt: now,
94
+ source: "wizard",
95
+ },
96
+ };
97
+ if (parameters.benchling.testEntryId) {
98
+ config.benchling.testEntryId = parameters.benchling.testEntryId;
99
+ }
100
+ return config;
101
+ }
102
+ /**
103
+ * Phase 7: Standalone Mode
104
+ *
105
+ * Responsibilities:
106
+ * - Build complete configuration
107
+ * - Save config with integratedStack: false
108
+ * - Create new secret with pattern
109
+ * - Ask about deployment
110
+ * - Deploy if user confirms
111
+ * - Show next steps
112
+ *
113
+ * @param input - Standalone mode input
114
+ * @returns Standalone mode result
115
+ */
116
+ async function runStandaloneMode(input) {
117
+ const { profile, configStorage, yes = false, setupOnly = false, awsProfile } = input;
118
+ console.log(chalk_1.default.bold("\nStandalone Webhook Mode\n"));
119
+ // Step 1: Build configuration
120
+ const config = buildProfileConfig(input);
121
+ // Step 2: Save configuration
122
+ console.log(`Saving configuration to profile: ${profile}...\n`);
123
+ try {
124
+ configStorage.writeProfile(profile, config);
125
+ console.log(chalk_1.default.green(`✓ Configuration saved to: ~/.config/benchling-webhook/${profile}/config.json\n`));
126
+ }
127
+ catch (error) {
128
+ throw new Error(`Failed to save configuration: ${error.message}`);
129
+ }
130
+ // Step 3: Create dedicated BenchlingSecret
131
+ console.log("Creating dedicated BenchlingSecret...\n");
132
+ let secretArn = "";
133
+ try {
134
+ const results = await (0, sync_secrets_1.syncSecretsToAWS)({
135
+ profile,
136
+ awsProfile,
137
+ region: config.deployment.region,
138
+ force: true,
139
+ configStorage,
140
+ });
141
+ if (results.length > 0) {
142
+ secretArn = results[0].secretArn;
143
+ console.log(chalk_1.default.green("✓ Secret created for standalone deployment\n"));
144
+ }
145
+ }
146
+ catch (error) {
147
+ console.warn(chalk_1.default.yellow(`⚠️ Failed to sync secrets: ${error.message}`));
148
+ console.warn(chalk_1.default.yellow(" You can sync secrets manually later with:"));
149
+ console.warn(chalk_1.default.cyan(` npm run setup:sync-secrets -- --profile ${profile}\n`));
150
+ }
151
+ // Step 4: Ask about deployment (unless --setup-only)
152
+ let deployed = false;
153
+ if (!setupOnly) {
154
+ let shouldDeploy = false;
155
+ if (yes) {
156
+ shouldDeploy = false; // In --yes mode, don't auto-deploy
157
+ }
158
+ else {
159
+ const { deploy } = await inquirer_1.default.prompt([
160
+ {
161
+ type: "confirm",
162
+ name: "deploy",
163
+ message: "Deploy to AWS now?",
164
+ default: true,
165
+ },
166
+ ]);
167
+ shouldDeploy = deploy;
168
+ }
169
+ if (shouldDeploy) {
170
+ console.log(chalk_1.default.blue("\nDeploying webhook stack...\n"));
171
+ try {
172
+ const { deployCommand } = await Promise.resolve().then(() => __importStar(require("../../bin/commands/deploy")));
173
+ await deployCommand({
174
+ profile,
175
+ stage: profile === "prod" ? "prod" : "dev",
176
+ yes: true,
177
+ });
178
+ console.log(chalk_1.default.green("\n✓ Deployment completed successfully\n"));
179
+ deployed = true;
180
+ }
181
+ catch (error) {
182
+ console.error(chalk_1.default.red(`\n❌ Deployment failed: ${error.message}\n`));
183
+ console.log(chalk_1.default.yellow("You can deploy manually later with:"));
184
+ console.log(chalk_1.default.cyan(` npm run deploy:${profile === "prod" ? "prod" : "dev"} -- --profile ${profile}\n`));
185
+ }
186
+ }
187
+ }
188
+ // Step 5: Show completion message
189
+ console.log("╔═══════════════════════════════════════════════════════════╗");
190
+ console.log("║ Setup Complete! ║");
191
+ console.log("╚═══════════════════════════════════════════════════════════╝\n");
192
+ if (!deployed && !setupOnly) {
193
+ const nextSteps = (0, next_steps_generator_1.generateNextSteps)({
194
+ profile,
195
+ stage: profile === "prod" ? "prod" : "dev",
196
+ });
197
+ console.log(nextSteps + "\n");
198
+ }
199
+ else if (setupOnly) {
200
+ console.log(chalk_1.default.bold("Configuration saved. Use deploy command to deploy:\n"));
201
+ console.log(chalk_1.default.cyan(` npm run deploy:${profile === "prod" ? "prod" : "dev"} -- --profile ${profile}\n`));
202
+ }
203
+ return {
204
+ success: true,
205
+ configPath: `~/.config/benchling-webhook/${profile}/config.json`,
206
+ secretArn,
207
+ deployed,
208
+ };
209
+ }
210
+ //# sourceMappingURL=phase7-standalone-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase7-standalone-mode.js","sourceRoot":"","sources":["../../../lib/wizard/phase7-standalone-mode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Shared TypeScript interfaces for setup wizard phases
3
+ *
4
+ * This module defines all the input/output types for the 7 wizard phases,
5
+ * ensuring type-safe data flow between phases.
6
+ *
7
+ * @module wizard/types
8
+ */
9
+ import { ProfileConfig } from "../types/config";
10
+ import { XDGBase } from "../xdg-base";
11
+ /**
12
+ * Phase 1: Catalog Discovery Result
13
+ */
14
+ export interface CatalogDiscoveryResult {
15
+ /** Confirmed catalog DNS (without protocol) */
16
+ catalogDns: string;
17
+ /** Whether the catalog was manually entered by user */
18
+ wasManuallyEntered: boolean;
19
+ /** The catalog that was initially detected (if any) */
20
+ detectedCatalog?: string;
21
+ }
22
+ /**
23
+ * Phase 2: Stack Query Result
24
+ */
25
+ export interface StackQueryResult {
26
+ /** CloudFormation stack ARN */
27
+ stackArn: string;
28
+ /** Catalog URL */
29
+ catalog: string;
30
+ /** Athena database name */
31
+ database: string;
32
+ /** SQS queue URL */
33
+ queueUrl: string;
34
+ /** AWS region */
35
+ region: string;
36
+ /** AWS account ID */
37
+ account: string;
38
+ /** BenchlingSecret ARN from stack outputs (if exists) */
39
+ benchlingSecretArn?: string;
40
+ /** Whether stack query succeeded */
41
+ stackQuerySucceeded: boolean;
42
+ }
43
+ /**
44
+ * Phase 3: Parameter Collection Input
45
+ */
46
+ export interface ParameterCollectionInput {
47
+ stackQuery: StackQueryResult;
48
+ existingConfig?: ProfileConfig | null;
49
+ yes?: boolean;
50
+ benchlingTenant?: string;
51
+ benchlingClientId?: string;
52
+ benchlingClientSecret?: string;
53
+ benchlingAppDefinitionId?: string;
54
+ benchlingTestEntryId?: string;
55
+ userBucket?: string;
56
+ pkgPrefix?: string;
57
+ pkgKey?: string;
58
+ logLevel?: string;
59
+ webhookAllowList?: string;
60
+ }
61
+ /**
62
+ * Phase 3: Parameter Collection Result
63
+ */
64
+ export interface ParameterCollectionResult {
65
+ benchling: {
66
+ tenant: string;
67
+ clientId: string;
68
+ clientSecret: string;
69
+ appDefinitionId: string;
70
+ testEntryId?: string;
71
+ };
72
+ packages: {
73
+ bucket: string;
74
+ prefix: string;
75
+ metadataKey: string;
76
+ };
77
+ deployment: {
78
+ region: string;
79
+ account: string;
80
+ };
81
+ logging: {
82
+ level: "DEBUG" | "INFO" | "WARNING" | "ERROR";
83
+ };
84
+ security: {
85
+ enableVerification: boolean;
86
+ webhookAllowList: string;
87
+ };
88
+ }
89
+ /**
90
+ * Phase 4: Validation Input
91
+ */
92
+ export interface ValidationInput {
93
+ stackQuery: StackQueryResult;
94
+ parameters: ParameterCollectionResult;
95
+ awsProfile?: string;
96
+ }
97
+ /**
98
+ * Phase 4: Validation Result
99
+ */
100
+ export interface ValidationResult {
101
+ /** Whether validation passed */
102
+ success: boolean;
103
+ /** Fatal validation errors */
104
+ errors: string[];
105
+ /** Non-fatal warnings */
106
+ warnings: string[];
107
+ /** Whether to exit for manifest creation flow */
108
+ shouldExitForManifest: boolean;
109
+ }
110
+ /**
111
+ * Phase 5: Mode Decision Input
112
+ */
113
+ export interface ModeDecisionInput {
114
+ stackQuery: StackQueryResult;
115
+ yes?: boolean;
116
+ }
117
+ /**
118
+ * Phase 5: Mode Decision Result
119
+ */
120
+ export interface ModeDecisionResult {
121
+ /** Chosen deployment mode */
122
+ mode: "integrated" | "standalone";
123
+ /** BenchlingSecret ARN (for integrated mode) */
124
+ benchlingSecretArn?: string;
125
+ }
126
+ /**
127
+ * Phase 6: Integrated Mode Input
128
+ */
129
+ export interface IntegratedModeInput {
130
+ profile: string;
131
+ catalogDns: string;
132
+ stackQuery: StackQueryResult;
133
+ parameters: ParameterCollectionResult;
134
+ benchlingSecretArn: string;
135
+ configStorage: XDGBase;
136
+ awsProfile?: string;
137
+ }
138
+ /**
139
+ * Phase 6: Integrated Mode Result
140
+ */
141
+ export interface IntegratedModeResult {
142
+ /** Whether integrated mode setup succeeded */
143
+ success: boolean;
144
+ /** Path to saved configuration file */
145
+ configPath: string;
146
+ /** BenchlingSecret ARN that was updated */
147
+ secretArn: string;
148
+ }
149
+ /**
150
+ * Phase 7: Standalone Mode Input
151
+ */
152
+ export interface StandaloneModeInput {
153
+ profile: string;
154
+ catalogDns: string;
155
+ stackQuery: StackQueryResult;
156
+ parameters: ParameterCollectionResult;
157
+ configStorage: XDGBase;
158
+ yes?: boolean;
159
+ setupOnly?: boolean;
160
+ awsProfile?: string;
161
+ }
162
+ /**
163
+ * Phase 7: Standalone Mode Result
164
+ */
165
+ export interface StandaloneModeResult {
166
+ /** Whether standalone mode setup succeeded */
167
+ success: boolean;
168
+ /** Path to saved configuration file */
169
+ configPath: string;
170
+ /** Secret ARN that was created */
171
+ secretArn: string;
172
+ /** Whether deployment was executed */
173
+ deployed: boolean;
174
+ }
175
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/wizard/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * Shared TypeScript interfaces for setup wizard phases
4
+ *
5
+ * This module defines all the input/output types for the 7 wizard phases,
6
+ * ensuring type-safe data flow between phases.
7
+ *
8
+ * @module wizard/types
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/wizard/types.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quiltdata/benchling-webhook",
3
- "version": "0.7.7",
3
+ "version": "0.7.8-20251115T063729Z",
4
4
  "description": "AWS CDK deployment for Benchling webhook processing using Fargate - Deploy directly with npx",
5
5
  "main": "dist/lib/index.js",
6
6
  "types": "dist/lib/index.d.ts",
@@ -8,8 +8,7 @@
8
8
  "dist/",
9
9
  "cdk.json",
10
10
  "README.md",
11
- "LICENSE",
12
- "env.template"
11
+ "LICENSE"
13
12
  ],
14
13
  "bin": {
15
14
  "benchling-webhook": "./dist/bin/cli.js"
@@ -38,7 +37,7 @@
38
37
  "test": "npm run build:typecheck && npm run test:ts && npm run test:python",
39
38
  "test:ci": "npm run build:typecheck && npm run test:ts",
40
39
  "test:dev": "make -C docker test-deployed-dev PROFILE=dev",
41
- "test:local": "make -C docker build && make -C docker test-local",
40
+ "test:local": "make -C docker build && make -C docker test-local PROFILE=dev",
42
41
  "test:prod": "make -C docker test-deployed-prod",
43
42
  "test:python": "make -C docker test-unit",
44
43
  "test:ts": "cross-env NODE_ENV=test jest --maxWorkers=50%",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quiltdata/benchling-webhook",
3
- "version": "0.7.7",
3
+ "version": "0.7.8-20251115T063729Z",
4
4
  "description": "AWS CDK deployment for Benchling webhook processing using Fargate - Deploy directly with npx",
5
5
  "main": "dist/lib/index.js",
6
6
  "types": "dist/lib/index.d.ts",
@@ -8,8 +8,7 @@
8
8
  "dist/",
9
9
  "cdk.json",
10
10
  "README.md",
11
- "LICENSE",
12
- "env.template"
11
+ "LICENSE"
13
12
  ],
14
13
  "bin": {
15
14
  "benchling-webhook": "./dist/bin/cli.js"
@@ -38,7 +37,7 @@
38
37
  "test": "npm run build:typecheck && npm run test:ts && npm run test:python",
39
38
  "test:ci": "npm run build:typecheck && npm run test:ts",
40
39
  "test:dev": "make -C docker test-deployed-dev PROFILE=dev",
41
- "test:local": "make -C docker build && make -C docker test-local",
40
+ "test:local": "make -C docker build && make -C docker test-local PROFILE=dev",
42
41
  "test:prod": "make -C docker test-deployed-prod",
43
42
  "test:python": "make -C docker test-unit",
44
43
  "test:ts": "cross-env NODE_ENV=test jest --maxWorkers=50%",
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Get environment configuration from a Quilt catalog's config.json
4
- *
5
- * This script fetches config.json from a Quilt catalog URL and attempts to:
6
- * 1. Parse the configuration
7
- * 2. Query AWS CloudFormation to find the stack using resource identifiers
8
- * 3. Extract stack outputs and parameters
9
- * 4. Generate environment variables for .env
10
- *
11
- * Usage:
12
- * node bin/get-env.ts https://quilt-catalog.yourcompany.com
13
- * node bin/get-env.ts https://quilt-catalog.yourcompany.com --write
14
- */
15
- export * from "../../lib/utils/stack-inference";
16
- //# sourceMappingURL=get-env.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-env.d.ts","sourceRoot":"","sources":["../../../bin/commands/get-env.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AA+KH,cAAc,iCAAiC,CAAC"}