@quiltdata/benchling-webhook 0.5.4 → 0.6.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 (103) hide show
  1. package/README.md +273 -10
  2. package/dist/bin/benchling-webhook.d.ts +1 -1
  3. package/dist/bin/benchling-webhook.d.ts.map +1 -1
  4. package/dist/bin/benchling-webhook.js +8 -22
  5. package/dist/bin/benchling-webhook.js.map +1 -1
  6. package/dist/bin/cdk-dev.js +59 -3
  7. package/dist/bin/cli.js +16 -6
  8. package/dist/bin/cli.js.map +1 -1
  9. package/dist/bin/commands/deploy.d.ts +6 -2
  10. package/dist/bin/commands/deploy.d.ts.map +1 -1
  11. package/dist/bin/commands/deploy.js +149 -90
  12. package/dist/bin/commands/deploy.js.map +1 -1
  13. package/dist/bin/config-profiles.d.ts +59 -0
  14. package/dist/bin/config-profiles.d.ts.map +1 -0
  15. package/dist/bin/config-profiles.js +272 -0
  16. package/dist/bin/config-profiles.js.map +1 -0
  17. package/dist/bin/create-secret.d.ts +25 -0
  18. package/dist/bin/create-secret.d.ts.map +1 -0
  19. package/dist/bin/create-secret.js +239 -0
  20. package/dist/bin/create-secret.js.map +1 -0
  21. package/dist/lib/benchling-auth-validator.d.ts +65 -0
  22. package/dist/lib/benchling-auth-validator.d.ts.map +1 -0
  23. package/dist/lib/benchling-auth-validator.js +213 -0
  24. package/dist/lib/benchling-auth-validator.js.map +1 -0
  25. package/dist/lib/benchling-webhook-stack.d.ts +13 -10
  26. package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
  27. package/dist/lib/benchling-webhook-stack.js +25 -69
  28. package/dist/lib/benchling-webhook-stack.js.map +1 -1
  29. package/dist/lib/config-logger.d.ts +191 -0
  30. package/dist/lib/config-logger.d.ts.map +1 -0
  31. package/dist/lib/config-logger.js +372 -0
  32. package/dist/lib/config-logger.js.map +1 -0
  33. package/dist/lib/configuration-saver.d.ts +75 -0
  34. package/dist/lib/configuration-saver.d.ts.map +1 -0
  35. package/dist/lib/configuration-saver.js +145 -0
  36. package/dist/lib/configuration-saver.js.map +1 -0
  37. package/dist/lib/configuration-validator.d.ts +63 -0
  38. package/dist/lib/configuration-validator.d.ts.map +1 -0
  39. package/dist/lib/configuration-validator.js +136 -0
  40. package/dist/lib/configuration-validator.js.map +1 -0
  41. package/dist/lib/configuration-wizard.d.ts +52 -0
  42. package/dist/lib/configuration-wizard.d.ts.map +1 -0
  43. package/dist/lib/configuration-wizard.js +193 -0
  44. package/dist/lib/configuration-wizard.js.map +1 -0
  45. package/dist/lib/fargate-service.d.ts +18 -9
  46. package/dist/lib/fargate-service.d.ts.map +1 -1
  47. package/dist/lib/fargate-service.js +177 -61
  48. package/dist/lib/fargate-service.js.map +1 -1
  49. package/dist/lib/quilt-config-resolver.d.ts +53 -0
  50. package/dist/lib/quilt-config-resolver.d.ts.map +1 -0
  51. package/dist/lib/quilt-config-resolver.js +100 -0
  52. package/dist/lib/quilt-config-resolver.js.map +1 -0
  53. package/dist/lib/s3-bucket-validator.d.ts +76 -0
  54. package/dist/lib/s3-bucket-validator.d.ts.map +1 -0
  55. package/dist/lib/s3-bucket-validator.js +237 -0
  56. package/dist/lib/s3-bucket-validator.js.map +1 -0
  57. package/dist/lib/types/config.d.ts +398 -0
  58. package/dist/lib/types/config.d.ts.map +1 -0
  59. package/dist/lib/types/config.js +11 -0
  60. package/dist/lib/types/config.js.map +1 -0
  61. package/dist/lib/utils/config-loader.d.ts +48 -0
  62. package/dist/lib/utils/config-loader.d.ts.map +1 -0
  63. package/dist/lib/utils/config-loader.js +109 -0
  64. package/dist/lib/utils/config-loader.js.map +1 -0
  65. package/dist/lib/utils/config-resolver.d.ts +138 -0
  66. package/dist/lib/utils/config-resolver.d.ts.map +1 -0
  67. package/dist/lib/utils/config-resolver.js +272 -0
  68. package/dist/lib/utils/config-resolver.js.map +1 -0
  69. package/dist/lib/utils/config.d.ts +50 -0
  70. package/dist/lib/utils/config.d.ts.map +1 -1
  71. package/dist/lib/utils/config.js +86 -0
  72. package/dist/lib/utils/config.js.map +1 -1
  73. package/dist/lib/utils/secrets.d.ts +174 -0
  74. package/dist/lib/utils/secrets.d.ts.map +1 -0
  75. package/dist/lib/utils/secrets.js +351 -0
  76. package/dist/lib/utils/secrets.js.map +1 -0
  77. package/dist/lib/xdg-cli-wrapper.d.ts +113 -0
  78. package/dist/lib/xdg-cli-wrapper.d.ts.map +1 -0
  79. package/dist/lib/xdg-cli-wrapper.js +288 -0
  80. package/dist/lib/xdg-cli-wrapper.js.map +1 -0
  81. package/dist/lib/xdg-config.d.ts +187 -0
  82. package/dist/lib/xdg-config.d.ts.map +1 -0
  83. package/dist/lib/xdg-config.js +562 -0
  84. package/dist/lib/xdg-config.js.map +1 -0
  85. package/dist/package.json +33 -25
  86. package/dist/scripts/config-health-check.d.ts +78 -0
  87. package/dist/scripts/config-health-check.d.ts.map +1 -0
  88. package/dist/scripts/config-health-check.js +559 -0
  89. package/dist/scripts/config-health-check.js.map +1 -0
  90. package/dist/scripts/infer-quilt-config.d.ts +50 -0
  91. package/dist/scripts/infer-quilt-config.d.ts.map +1 -0
  92. package/dist/scripts/infer-quilt-config.js +353 -0
  93. package/dist/scripts/infer-quilt-config.js.map +1 -0
  94. package/dist/scripts/install-wizard.d.ts +34 -0
  95. package/dist/scripts/install-wizard.d.ts.map +1 -0
  96. package/dist/scripts/install-wizard.js +719 -0
  97. package/dist/scripts/install-wizard.js.map +1 -0
  98. package/dist/scripts/sync-secrets.d.ts +63 -0
  99. package/dist/scripts/sync-secrets.d.ts.map +1 -0
  100. package/dist/scripts/sync-secrets.js +424 -0
  101. package/dist/scripts/sync-secrets.js.map +1 -0
  102. package/env.template +60 -47
  103. package/package.json +33 -25
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quiltdata/benchling-webhook",
3
- "version": "0.5.4",
3
+ "version": "0.6.0",
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",
@@ -14,32 +14,29 @@
14
14
  "benchling-webhook": "./dist/bin/cli.js"
15
15
  },
16
16
  "scripts": {
17
- "clean": "rm -rf cdk.out */{*.js,*.d.ts}",
18
- "test": "npm run typecheck && npm run test:ts && npm run test:python",
19
- "test-ci": "npm run typecheck && npm run test:ts",
20
- "typecheck": "tsc --noEmit",
21
- "test:ts": "NODE_ENV=test TMPDIR=./.tmp node --max-old-space-size=4096 ./node_modules/.bin/jest",
22
- "test:python": "make -C docker test-unit",
23
- "cdk": "npm run test && npm run cli -- --yes",
24
- "cdk:dev": "node bin/cdk-dev.js",
25
- "lint": "eslint . --ext .ts --fix",
26
17
  "build": "tsc",
18
+ "build:clean": "rm -rf cdk.out dist */{*.js,*.d.ts}",
19
+ "build:synth": "npx cdk synth",
20
+ "build:typecheck": "tsc --noEmit",
21
+ "cli": "node dist/bin/cli.js",
22
+ "lint": "eslint . --ext .ts --fix && make -C docker lint",
27
23
  "prebuild": "rm -rf dist",
24
+ "prepublishOnly": "npm run build",
28
25
  "postbuild": "chmod +x dist/bin/cli.js && cp bin/*.js dist/bin/ 2>/dev/null || true",
29
- "cli": "ts-node bin/cli.ts",
30
- "synth": "npx cdk synth",
31
- "logs": "node bin/check-logs.js",
32
- "event": "node bin/send-event.js",
33
- "check": "npm run cdk && npm run event && sleep 45 && npm run logs",
34
- "docker:test": "make -C docker test",
35
- "docker-push": "make -C docker push-local",
36
- "docker-check": "make -C docker docker-validate",
37
- "release": "npm run test && node bin/release.js",
38
- "release:dev": "npm run test && node bin/release.js dev",
39
- "notes": "bin/release-notes.sh \"$(jq -r .version package.json)\" \"712023778557.dkr.ecr.us-east-1.amazonaws.com/quiltdata/benchling:$(jq -r .version package.json)\" \"false\" \"$(jq -r .name package.json)\"",
40
- "version": "node bin/version.js patch",
41
- "version:patch": "npm run version -- patch",
42
- "prepublishOnly": "npm run build"
26
+ "release": "npm run test && node bin/release.js && make -C docker push-ci",
27
+ "release:dev": "npm run test && node bin/cdk-dev.js",
28
+ "release:tag": "node bin/version.js && git push --tags",
29
+ "setup": "ts-node scripts/install-wizard.ts",
30
+ "setup:health": "ts-node scripts/config-health-check.ts",
31
+ "setup:infer": "ts-node scripts/infer-quilt-config.ts",
32
+ "setup:sync-secrets": "ts-node scripts/sync-secrets.ts",
33
+ "test": "npm run build:typecheck && npm run test:ts && npm run test:python",
34
+ "test:ci": "npm run build:typecheck && npm run test:ts",
35
+ "test:local": "make -C docker build && make -C docker test-local",
36
+ "test:python": "make -C docker test-unit",
37
+ "test:remote": "npm run release:dev && make -C docker test-deployed-dev",
38
+ "test:ts": "cross-env NODE_ENV=test jest --maxWorkers=50%",
39
+ "version": "node bin/version.js"
43
40
  },
44
41
  "keywords": [
45
42
  "benchling",
@@ -67,8 +64,10 @@
67
64
  "@typescript-eslint/eslint-plugin": "^8.26.1",
68
65
  "@typescript-eslint/parser": "^8.26.1",
69
66
  "aws-cdk": "2.1031.1",
67
+ "aws-sdk-client-mock": "^4.1.0",
68
+ "cross-env": "^10.1.0",
70
69
  "dotenv": "^17.2.3",
71
- "esbuild": "0.25.11",
70
+ "esbuild": "0.25.12",
72
71
  "eslint": "^9.22.0",
73
72
  "globals": "^16.0.0",
74
73
  "jest": "^30.0.0",
@@ -79,7 +78,13 @@
79
78
  "dependencies": {
80
79
  "@aws-sdk/client-cloudformation": "^3.920.0",
81
80
  "@aws-sdk/client-s3": "^3.758.0",
81
+ "@aws-sdk/client-secrets-manager": "^3.922.0",
82
+ "@aws-sdk/client-sts": "^3.922.0",
83
+ "@aws-sdk/credential-providers": "^3.922.0",
84
+ "@types/inquirer": "^9.0.9",
85
+ "@types/lodash.merge": "^4.6.9",
82
86
  "adm-zip": "^0.5.10",
87
+ "ajv": "^8.17.1",
83
88
  "aws-cdk-lib": "2.221.1",
84
89
  "aws-sdk": "^2.1574.0",
85
90
  "boxen": "^8.0.0",
@@ -88,6 +93,9 @@
88
93
  "constructs": "^10.0.0",
89
94
  "dotenv-expand": "^12.0.3",
90
95
  "enquirer": "^2.4.1",
96
+ "execa": "^5.1.1",
97
+ "inquirer": "^12.10.0",
98
+ "lodash.merge": "^4.6.2",
91
99
  "ora": "^9.0.0"
92
100
  },
93
101
  "engines": {
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Configuration Health Checks
4
+ *
5
+ * Validates:
6
+ * - XDG configuration integrity
7
+ * - Secrets accessibility
8
+ * - Benchling credential freshness
9
+ * - AWS resource connectivity
10
+ *
11
+ * @module scripts/config-health-check
12
+ */
13
+ import { ProfileName } from "../lib/types/config";
14
+ /**
15
+ * Health check result
16
+ */
17
+ interface HealthCheckResult {
18
+ check: string;
19
+ status: "pass" | "fail" | "warn";
20
+ message: string;
21
+ details?: Record<string, unknown>;
22
+ }
23
+ /**
24
+ * Overall health status
25
+ */
26
+ interface HealthStatus {
27
+ overall: "healthy" | "degraded" | "unhealthy";
28
+ checks: HealthCheckResult[];
29
+ timestamp: string;
30
+ profile: ProfileName;
31
+ }
32
+ /**
33
+ * Configuration health checker
34
+ */
35
+ export declare class ConfigHealthChecker {
36
+ private logger;
37
+ private xdgConfig;
38
+ private profile;
39
+ constructor(profile?: ProfileName);
40
+ /**
41
+ * Checks XDG configuration file integrity
42
+ *
43
+ * @returns Health check result
44
+ */
45
+ checkXDGIntegrity(): Promise<HealthCheckResult>;
46
+ /**
47
+ * Checks AWS Secrets Manager accessibility
48
+ *
49
+ * @returns Health check result
50
+ */
51
+ checkSecretsAccess(): Promise<HealthCheckResult>;
52
+ /**
53
+ * Checks Benchling credential freshness
54
+ *
55
+ * @returns Health check result
56
+ */
57
+ checkBenchlingCredentials(): Promise<HealthCheckResult>;
58
+ /**
59
+ * Checks Quilt catalog connectivity
60
+ *
61
+ * @returns Health check result
62
+ */
63
+ checkQuiltCatalog(): Promise<HealthCheckResult>;
64
+ /**
65
+ * Checks deployment configuration
66
+ *
67
+ * @returns Health check result
68
+ */
69
+ checkDeploymentConfig(): Promise<HealthCheckResult>;
70
+ /**
71
+ * Runs all health checks
72
+ *
73
+ * @returns Complete health status
74
+ */
75
+ runAllChecks(): Promise<HealthStatus>;
76
+ }
77
+ export type { HealthStatus, HealthCheckResult };
78
+ //# sourceMappingURL=config-health-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-health-check.d.ts","sourceRoot":"","sources":["../../scripts/config-health-check.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AAGH,OAAO,EAA+C,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAM/F;;GAEG;AACH,UAAU,iBAAiB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,UAAU,YAAY;IAClB,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAC9C,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,OAAO,CAAc;gBAEjB,OAAO,GAAE,WAAuB;IAM5C;;;;OAIG;IACU,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA4F5D;;;;OAIG;IACU,kBAAkB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA0D7D;;;;OAIG;IACU,yBAAyB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAmEpE;;;;OAIG;IACU,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAsE5D;;;;OAIG;IACU,qBAAqB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuEhE;;;;OAIG;IACU,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC;CA4CrD;AA+FD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC"}