check-my-toolkit 2.1.1 → 2.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 (40) hide show
  1. package/dist/infra/arn.d.ts.map +1 -1
  2. package/dist/infra/arn.js +1 -0
  3. package/dist/infra/arn.js.map +1 -1
  4. package/dist/infra/checkers/gcp/artifactregistry.d.ts +6 -0
  5. package/dist/infra/checkers/gcp/artifactregistry.d.ts.map +1 -0
  6. package/dist/infra/checkers/gcp/artifactregistry.js +38 -0
  7. package/dist/infra/checkers/gcp/artifactregistry.js.map +1 -0
  8. package/dist/infra/checkers/gcp/cloudrun.d.ts +6 -0
  9. package/dist/infra/checkers/gcp/cloudrun.d.ts.map +1 -0
  10. package/dist/infra/checkers/gcp/cloudrun.js +31 -0
  11. package/dist/infra/checkers/gcp/cloudrun.js.map +1 -0
  12. package/dist/infra/checkers/gcp/iam.d.ts +6 -0
  13. package/dist/infra/checkers/gcp/iam.d.ts.map +1 -0
  14. package/dist/infra/checkers/gcp/iam.js +39 -0
  15. package/dist/infra/checkers/gcp/iam.js.map +1 -0
  16. package/dist/infra/checkers/gcp/index.d.ts +18 -0
  17. package/dist/infra/checkers/gcp/index.d.ts.map +1 -0
  18. package/dist/infra/checkers/gcp/index.js +43 -0
  19. package/dist/infra/checkers/gcp/index.js.map +1 -0
  20. package/dist/infra/checkers/gcp/secretmanager.d.ts +6 -0
  21. package/dist/infra/checkers/gcp/secretmanager.d.ts.map +1 -0
  22. package/dist/infra/checkers/gcp/secretmanager.js +31 -0
  23. package/dist/infra/checkers/gcp/secretmanager.js.map +1 -0
  24. package/dist/infra/checkers/types.d.ts +14 -2
  25. package/dist/infra/checkers/types.d.ts.map +1 -1
  26. package/dist/infra/gcp.d.ts +19 -0
  27. package/dist/infra/gcp.d.ts.map +1 -0
  28. package/dist/infra/gcp.js +95 -0
  29. package/dist/infra/gcp.js.map +1 -0
  30. package/dist/infra/manifest.d.ts +6 -2
  31. package/dist/infra/manifest.d.ts.map +1 -1
  32. package/dist/infra/manifest.js +25 -14
  33. package/dist/infra/manifest.js.map +1 -1
  34. package/dist/infra/scan.d.ts +1 -1
  35. package/dist/infra/scan.d.ts.map +1 -1
  36. package/dist/infra/scan.js +60 -25
  37. package/dist/infra/scan.js.map +1 -1
  38. package/dist/infra/types.d.ts +14 -1
  39. package/dist/infra/types.d.ts.map +1 -1
  40. package/package.json +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"arn.d.ts","sourceRoot":"","sources":["../../src/infra/arn.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAuBtD"}
1
+ {"version":3,"file":"arn.d.ts","sourceRoot":"","sources":["../../src/infra/arn.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAwBtD"}
package/dist/infra/arn.js CHANGED
@@ -30,6 +30,7 @@ export function parseArn(arn) {
30
30
  // Parse resource type and ID based on service-specific patterns
31
31
  const { resourceType, resourceId } = parseResource(service, resource);
32
32
  return {
33
+ cloud: "aws",
33
34
  partition,
34
35
  service,
35
36
  region,
@@ -1 +1 @@
1
- {"version":3,"file":"arn.js","sourceRoot":"","sources":["../../src/infra/arn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arn.js","sourceRoot":"","sources":["../../src/infra/arn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * GCP Artifact Registry resource checker
3
+ */
4
+ import type { GcpResourceChecker } from "../types.js";
5
+ export declare const ArtifactRegistryChecker: GcpResourceChecker;
6
+ //# sourceMappingURL=artifactregistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifactregistry.d.ts","sourceRoot":"","sources":["../../../../src/infra/checkers/gcp/artifactregistry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAyBtD,eAAO,MAAM,uBAAuB,EAAE,kBAiBrC,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * GCP Artifact Registry resource checker
3
+ */
4
+ import { ArtifactRegistryClient } from "@google-cloud/artifact-registry";
5
+ let client = null;
6
+ function getClient() {
7
+ client ??= new ArtifactRegistryClient();
8
+ return client;
9
+ }
10
+ function result(raw, resourceId, exists, error) {
11
+ return {
12
+ arn: raw,
13
+ exists,
14
+ error,
15
+ service: "artifactregistry",
16
+ resourceType: "repositories",
17
+ resourceId,
18
+ };
19
+ }
20
+ export const ArtifactRegistryChecker = {
21
+ async check(resource) {
22
+ const { project, location, resourceId, raw } = resource;
23
+ const repoName = `projects/${project}/locations/${location}/repositories/${resourceId}`;
24
+ try {
25
+ const arClient = getClient();
26
+ await arClient.getRepository({ name: repoName });
27
+ return result(raw, resourceId, true);
28
+ }
29
+ catch (error) {
30
+ const err = error;
31
+ if (err.code === 5 || err.message?.includes("NOT_FOUND")) {
32
+ return result(raw, resourceId, false);
33
+ }
34
+ return result(raw, resourceId, false, err.message ?? "Unknown error");
35
+ }
36
+ },
37
+ };
38
+ //# sourceMappingURL=artifactregistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifactregistry.js","sourceRoot":"","sources":["../../../../src/infra/checkers/gcp/artifactregistry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAKzE,IAAI,MAAM,GAAkC,IAAI,CAAC;AAEjD,SAAS,SAAS;IAChB,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC;IACxC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CACb,GAAW,EACX,UAAkB,EAClB,MAAe,EACf,KAAc;IAEd,OAAO;QACL,GAAG,EAAE,GAAG;QACR,MAAM;QACN,KAAK;QACL,OAAO,EAAE,kBAAkB;QAC3B,YAAY,EAAE,cAAc;QAC5B,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAuB;IACzD,KAAK,CAAC,KAAK,CAAC,QAA2B;QACrC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;QACxD,MAAM,QAAQ,GAAG,YAAY,OAAO,cAAc,QAAQ,iBAAiB,UAAU,EAAE,CAAC;QAExF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;YAC7B,MAAM,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAA4C,CAAC;YACzD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACzD,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * GCP Cloud Run resource checker
3
+ */
4
+ import type { GcpResourceChecker } from "../types.js";
5
+ export declare const CloudRunChecker: GcpResourceChecker;
6
+ //# sourceMappingURL=cloudrun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudrun.d.ts","sourceRoot":"","sources":["../../../../src/infra/checkers/gcp/cloudrun.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAkBtD,eAAO,MAAM,eAAe,EAAE,kBAiB7B,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * GCP Cloud Run resource checker
3
+ */
4
+ import { ServicesClient } from "@google-cloud/run";
5
+ let client = null;
6
+ function getClient() {
7
+ client ??= new ServicesClient();
8
+ return client;
9
+ }
10
+ function result(raw, resourceId, exists, error) {
11
+ return { arn: raw, exists, error, service: "run", resourceType: "services", resourceId };
12
+ }
13
+ export const CloudRunChecker = {
14
+ async check(resource) {
15
+ const { project, location, resourceId, raw } = resource;
16
+ const serviceName = `projects/${project}/locations/${location}/services/${resourceId}`;
17
+ try {
18
+ const runClient = getClient();
19
+ await runClient.getService({ name: serviceName });
20
+ return result(raw, resourceId, true);
21
+ }
22
+ catch (error) {
23
+ const err = error;
24
+ if (err.code === 5 || err.message?.includes("NOT_FOUND")) {
25
+ return result(raw, resourceId, false);
26
+ }
27
+ return result(raw, resourceId, false, err.message ?? "Unknown error");
28
+ }
29
+ },
30
+ };
31
+ //# sourceMappingURL=cloudrun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudrun.js","sourceRoot":"","sources":["../../../../src/infra/checkers/gcp/cloudrun.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKnD,IAAI,MAAM,GAA0B,IAAI,CAAC;AAEzC,SAAS,SAAS;IAChB,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;IAChC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CACb,GAAW,EACX,UAAkB,EAClB,MAAe,EACf,KAAc;IAEd,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAC3F,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAuB;IACjD,KAAK,CAAC,KAAK,CAAC,QAA2B;QACrC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;QACxD,MAAM,WAAW,GAAG,YAAY,OAAO,cAAc,QAAQ,aAAa,UAAU,EAAE,CAAC;QAEvF,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;YAC9B,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAClD,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAA4C,CAAC;YACzD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACzD,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * GCP IAM Service Account resource checker
3
+ */
4
+ import type { GcpResourceChecker } from "../types.js";
5
+ export declare const ServiceAccountChecker: GcpResourceChecker;
6
+ //# sourceMappingURL=iam.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iam.d.ts","sourceRoot":"","sources":["../../../../src/infra/checkers/gcp/iam.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAyBtD,eAAO,MAAM,qBAAqB,EAAE,kBAkBnC,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * GCP IAM Service Account resource checker
3
+ */
4
+ import { GoogleAuth } from "google-auth-library";
5
+ let auth = null;
6
+ function getAuth() {
7
+ auth ??= new GoogleAuth({ scopes: ["https://www.googleapis.com/auth/cloud-platform"] });
8
+ return auth;
9
+ }
10
+ function result(raw, resourceId, exists, error) {
11
+ return {
12
+ arn: raw,
13
+ exists,
14
+ error,
15
+ service: "iam",
16
+ resourceType: "serviceAccounts",
17
+ resourceId,
18
+ };
19
+ }
20
+ export const ServiceAccountChecker = {
21
+ async check(resource) {
22
+ const { project, resourceId, raw } = resource;
23
+ const url = `https://iam.googleapis.com/v1/projects/${project}/serviceAccounts/${resourceId}`;
24
+ try {
25
+ const authClient = getAuth();
26
+ const client = await authClient.getClient();
27
+ await client.request({ url, method: "GET" });
28
+ return result(raw, resourceId, true);
29
+ }
30
+ catch (error) {
31
+ const err = error;
32
+ if (err.response?.status === 404 || err.code === 404 || err.message?.includes("NOT_FOUND")) {
33
+ return result(raw, resourceId, false);
34
+ }
35
+ return result(raw, resourceId, false, err.message ?? "Unknown error");
36
+ }
37
+ },
38
+ };
39
+ //# sourceMappingURL=iam.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iam.js","sourceRoot":"","sources":["../../../../src/infra/checkers/gcp/iam.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKjD,IAAI,IAAI,GAAsB,IAAI,CAAC;AAEnC,SAAS,OAAO;IACd,IAAI,KAAK,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,gDAAgD,CAAC,EAAE,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CACb,GAAW,EACX,UAAkB,EAClB,MAAe,EACf,KAAc;IAEd,OAAO;QACL,GAAG,EAAE,GAAG;QACR,MAAM;QACN,KAAK;QACL,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,iBAAiB;QAC/B,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAuB;IACvD,KAAK,CAAC,KAAK,CAAC,QAA2B;QACrC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;QAC9C,MAAM,GAAG,GAAG,0CAA0C,OAAO,oBAAoB,UAAU,EAAE,CAAC;QAE9F,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC;YAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7C,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAA4E,CAAC;YACzF,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3F,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * GCP checker registry with lazy loading
3
+ */
4
+ import type { GcpResourceChecker } from "../types.js";
5
+ /**
6
+ * Supported GCP services for resource checking
7
+ */
8
+ export declare const SUPPORTED_GCP_SERVICES: readonly ["run", "secretmanager", "artifactregistry", "iam"];
9
+ export type SupportedGcpService = (typeof SUPPORTED_GCP_SERVICES)[number];
10
+ /**
11
+ * Check if a GCP service is supported
12
+ */
13
+ export declare function isSupportedGcpService(service: string): service is SupportedGcpService;
14
+ /**
15
+ * Get a GCP checker for a service, loading it if necessary
16
+ */
17
+ export declare function getGcpChecker(service: string): Promise<GcpResourceChecker | undefined>;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/infra/checkers/gcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,sBAAsB,8DAA+D,CAAC;AAEnG,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,mBAAmB,CAErF;AAiBD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAe5F"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * GCP checker registry with lazy loading
3
+ */
4
+ /**
5
+ * Supported GCP services for resource checking
6
+ */
7
+ export const SUPPORTED_GCP_SERVICES = ["run", "secretmanager", "artifactregistry", "iam"];
8
+ /**
9
+ * Check if a GCP service is supported
10
+ */
11
+ export function isSupportedGcpService(service) {
12
+ return SUPPORTED_GCP_SERVICES.includes(service);
13
+ }
14
+ /**
15
+ * Factory functions for GCP checkers (lazy-loaded)
16
+ */
17
+ const checkerFactories = {
18
+ run: async () => (await import("./cloudrun.js")).CloudRunChecker,
19
+ secretmanager: async () => (await import("./secretmanager.js")).SecretManagerChecker,
20
+ artifactregistry: async () => (await import("./artifactregistry.js")).ArtifactRegistryChecker,
21
+ iam: async () => (await import("./iam.js")).ServiceAccountChecker,
22
+ };
23
+ /**
24
+ * Cache of loaded GCP checkers
25
+ */
26
+ const checkerCache = new Map();
27
+ /**
28
+ * Get a GCP checker for a service, loading it if necessary
29
+ */
30
+ export async function getGcpChecker(service) {
31
+ if (!isSupportedGcpService(service)) {
32
+ return undefined;
33
+ }
34
+ const cached = checkerCache.get(service);
35
+ if (cached) {
36
+ return cached;
37
+ }
38
+ const factory = checkerFactories[service];
39
+ const checker = await factory();
40
+ checkerCache.set(service, checker);
41
+ return checker;
42
+ }
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/infra/checkers/gcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,KAAK,CAAU,CAAC;AAInG;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,sBAAsB,CAAC,QAAQ,CAAC,OAA8B,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,gBAAgB,GAAmE;IACvF,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe;IAChE,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB;IACpF,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB;IAC7F,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB;CAClE,CAAC;AAEF;;GAEG;AACH,MAAM,YAAY,GAAG,IAAI,GAAG,EAA2C,CAAC;AAExE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe;IACjD,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEnC,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * GCP Secret Manager resource checker
3
+ */
4
+ import type { GcpResourceChecker } from "../types.js";
5
+ export declare const SecretManagerChecker: GcpResourceChecker;
6
+ //# sourceMappingURL=secretmanager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretmanager.d.ts","sourceRoot":"","sources":["../../../../src/infra/checkers/gcp/secretmanager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAkBtD,eAAO,MAAM,oBAAoB,EAAE,kBAiBlC,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * GCP Secret Manager resource checker
3
+ */
4
+ import { SecretManagerServiceClient } from "@google-cloud/secret-manager";
5
+ let client = null;
6
+ function getClient() {
7
+ client ??= new SecretManagerServiceClient();
8
+ return client;
9
+ }
10
+ function result(raw, resourceId, exists, error) {
11
+ return { arn: raw, exists, error, service: "secretmanager", resourceType: "secrets", resourceId };
12
+ }
13
+ export const SecretManagerChecker = {
14
+ async check(resource) {
15
+ const { project, resourceId, raw } = resource;
16
+ const secretName = `projects/${project}/secrets/${resourceId}`;
17
+ try {
18
+ const smClient = getClient();
19
+ await smClient.getSecret({ name: secretName });
20
+ return result(raw, resourceId, true);
21
+ }
22
+ catch (error) {
23
+ const err = error;
24
+ if (err.code === 5 || err.message?.includes("NOT_FOUND")) {
25
+ return result(raw, resourceId, false);
26
+ }
27
+ return result(raw, resourceId, false, err.message ?? "Unknown error");
28
+ }
29
+ },
30
+ };
31
+ //# sourceMappingURL=secretmanager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretmanager.js","sourceRoot":"","sources":["../../../../src/infra/checkers/gcp/secretmanager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAK1E,IAAI,MAAM,GAAsC,IAAI,CAAC;AAErD,SAAS,SAAS;IAChB,MAAM,KAAK,IAAI,0BAA0B,EAAE,CAAC;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CACb,GAAW,EACX,UAAkB,EAClB,MAAe,EACf,KAAc;IAEd,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACpG,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAuB;IACtD,KAAK,CAAC,KAAK,CAAC,QAA2B;QACrC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;QAC9C,MAAM,UAAU,GAAG,YAAY,OAAO,YAAY,UAAU,EAAE,CAAC;QAE/D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;YAC7B,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YAC/C,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAA4C,CAAC;YACzD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACzD,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Types for resource checkers
3
3
  */
4
- import type { ParsedArn, ResourceCheckResult } from "../types.js";
4
+ import type { ParsedArn, ParsedGcpResource, ResourceCheckResult } from "../types.js";
5
5
  /**
6
- * Interface for service-specific resource checkers
6
+ * Interface for AWS resource checkers
7
7
  */
8
8
  export interface ResourceChecker {
9
9
  /**
@@ -14,4 +14,16 @@ export interface ResourceChecker {
14
14
  */
15
15
  check(arn: ParsedArn): Promise<ResourceCheckResult>;
16
16
  }
17
+ /**
18
+ * Interface for GCP resource checkers
19
+ */
20
+ export interface GcpResourceChecker {
21
+ /**
22
+ * Check if a resource exists
23
+ *
24
+ * @param resource - Parsed GCP resource
25
+ * @returns Check result with exists status and optional error
26
+ */
27
+ check(resource: ParsedGcpResource): Promise<ResourceCheckResult>;
28
+ }
17
29
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/infra/checkers/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/infra/checkers/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAClE"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * GCP resource path parsing utilities
3
+ *
4
+ * GCP resource paths follow patterns like:
5
+ * - projects/{project}/locations/{location}/services/{service} (Cloud Run)
6
+ * - projects/{project}/serviceAccounts/{email} (IAM Service Accounts)
7
+ * - projects/{project}/secrets/{secret} (Secret Manager)
8
+ * - projects/{project}/locations/{location}/repositories/{repo} (Artifact Registry)
9
+ */
10
+ import type { ParsedGcpResource } from "./types.js";
11
+ /**
12
+ * Validate that a string is a valid GCP resource path
13
+ */
14
+ export declare function isValidGcpResource(path: string): boolean;
15
+ /**
16
+ * Parse a GCP resource path into its components
17
+ */
18
+ export declare function parseGcpResource(path: string): ParsedGcpResource | null;
19
+ //# sourceMappingURL=gcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcp.d.ts","sourceRoot":"","sources":["../../src/infra/gcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAavE"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * GCP resource path parsing utilities
3
+ *
4
+ * GCP resource paths follow patterns like:
5
+ * - projects/{project}/locations/{location}/services/{service} (Cloud Run)
6
+ * - projects/{project}/serviceAccounts/{email} (IAM Service Accounts)
7
+ * - projects/{project}/secrets/{secret} (Secret Manager)
8
+ * - projects/{project}/locations/{location}/repositories/{repo} (Artifact Registry)
9
+ */
10
+ /**
11
+ * Validate that a string is a valid GCP resource path
12
+ */
13
+ export function isValidGcpResource(path) {
14
+ return path.startsWith("projects/") && path.split("/").length >= 3;
15
+ }
16
+ /**
17
+ * Parse a GCP resource path into its components
18
+ */
19
+ export function parseGcpResource(path) {
20
+ if (!isValidGcpResource(path)) {
21
+ return null;
22
+ }
23
+ const parts = path.split("/");
24
+ if (parts[0] !== "projects" || parts.length < 3) {
25
+ return null;
26
+ }
27
+ const project = parts[1];
28
+ const result = parseResourcePath(parts.slice(2), path, project);
29
+ return result;
30
+ }
31
+ /**
32
+ * Parse the resource-specific part of the path
33
+ */
34
+ function parseResourcePath(parts, raw, project) {
35
+ // Service Accounts: projects/{project}/serviceAccounts/{email}
36
+ if (parts[0] === "serviceAccounts" && parts.length >= 2) {
37
+ return gcpResource({
38
+ project,
39
+ service: "iam",
40
+ location: "global",
41
+ resourceType: "serviceAccounts",
42
+ resourceId: parts.slice(1).join("/"),
43
+ raw,
44
+ });
45
+ }
46
+ // Secrets: projects/{project}/secrets/{secret}
47
+ if (parts[0] === "secrets" && parts.length >= 2) {
48
+ return gcpResource({
49
+ project,
50
+ service: "secretmanager",
51
+ location: "global",
52
+ resourceType: "secrets",
53
+ resourceId: parts[1],
54
+ raw,
55
+ });
56
+ }
57
+ // Location-based resources
58
+ if (parts[0] === "locations" && parts.length >= 4) {
59
+ const location = parts[1];
60
+ const resourceType = parts[2];
61
+ const resourceId = parts.slice(3).join("/");
62
+ const service = getServiceFromResourceType(resourceType);
63
+ return gcpResource({
64
+ project,
65
+ service,
66
+ location,
67
+ resourceType,
68
+ resourceId,
69
+ raw,
70
+ });
71
+ }
72
+ // Unknown format
73
+ return null;
74
+ }
75
+ /**
76
+ * Map resource types to GCP service names
77
+ */
78
+ function getServiceFromResourceType(resourceType) {
79
+ const serviceMap = {
80
+ services: "run",
81
+ repositories: "artifactregistry",
82
+ functions: "cloudfunctions",
83
+ buckets: "storage",
84
+ instances: "compute",
85
+ clusters: "container",
86
+ };
87
+ return serviceMap[resourceType] ?? resourceType;
88
+ }
89
+ /**
90
+ * Create a ParsedGcpResource object
91
+ */
92
+ function gcpResource(params) {
93
+ return { cloud: "gcp", ...params };
94
+ }
95
+ //# sourceMappingURL=gcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcp.js","sourceRoot":"","sources":["../../src/infra/gcp.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,12 @@
2
2
  * Manifest reader for infra scan
3
3
  *
4
4
  * Supports two formats:
5
- * 1. JSON: { "project": "...", "resources": ["arn:..."] }
6
- * 2. TXT: One ARN per line, # for comments
5
+ * 1. JSON: { "project": "...", "resources": ["arn:...", "projects/..."] }
6
+ * 2. TXT: One resource per line, # for comments
7
+ *
8
+ * Resources can be:
9
+ * - AWS ARNs: arn:aws:s3:::bucket-name
10
+ * - GCP paths: projects/{project}/locations/{location}/services/{service}
7
11
  */
8
12
  import type { Manifest } from "./types.js";
9
13
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/infra/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAsB3D"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/infra/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAS3C;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAsB3D"}
@@ -2,12 +2,23 @@
2
2
  * Manifest reader for infra scan
3
3
  *
4
4
  * Supports two formats:
5
- * 1. JSON: { "project": "...", "resources": ["arn:..."] }
6
- * 2. TXT: One ARN per line, # for comments
5
+ * 1. JSON: { "project": "...", "resources": ["arn:...", "projects/..."] }
6
+ * 2. TXT: One resource per line, # for comments
7
+ *
8
+ * Resources can be:
9
+ * - AWS ARNs: arn:aws:s3:::bucket-name
10
+ * - GCP paths: projects/{project}/locations/{location}/services/{service}
7
11
  */
8
12
  import * as fs from "node:fs";
9
13
  import * as path from "node:path";
10
14
  import { isValidArn } from "./arn.js";
15
+ import { isValidGcpResource } from "./gcp.js";
16
+ /**
17
+ * Check if a resource identifier is valid (AWS ARN or GCP path)
18
+ */
19
+ function isValidResource(resource) {
20
+ return isValidArn(resource) || isValidGcpResource(resource);
21
+ }
11
22
  /**
12
23
  * Error thrown when manifest parsing fails
13
24
  */
@@ -74,46 +85,46 @@ function validateJsonStructure(data, manifestPath) {
74
85
  }
75
86
  function extractAndValidateResources(items, manifestPath) {
76
87
  const resources = [];
77
- const invalidArns = [];
88
+ const invalidResources = [];
78
89
  for (const item of items) {
79
90
  if (typeof item !== "string") {
80
91
  throw new ManifestError(`Manifest ${manifestPath} contains non-string resource: ${JSON.stringify(item)}`);
81
92
  }
82
- if (!isValidArn(item)) {
83
- invalidArns.push(item);
93
+ if (!isValidResource(item)) {
94
+ invalidResources.push(item);
84
95
  }
85
96
  else {
86
97
  resources.push(item);
87
98
  }
88
99
  }
89
- if (invalidArns.length > 0) {
90
- throw new ManifestError(`Manifest ${manifestPath} contains invalid ARNs: ${invalidArns.join(", ")}`);
100
+ if (invalidResources.length > 0) {
101
+ throw new ManifestError(`Manifest ${manifestPath} contains invalid resources: ${invalidResources.join(", ")}`);
91
102
  }
92
103
  return resources;
93
104
  }
94
105
  /**
95
- * Parse a TXT format manifest (one ARN per line, # for comments)
106
+ * Parse a TXT format manifest (one resource per line, # for comments)
96
107
  */
97
108
  function parseTxtManifest(content, manifestPath) {
98
109
  const lines = content.split("\n");
99
110
  const resources = [];
100
- const invalidArns = [];
111
+ const invalidResources = [];
101
112
  for (let i = 0; i < lines.length; i++) {
102
113
  const line = lines[i].trim();
103
114
  // Skip empty lines and comments
104
115
  if (!line || line.startsWith("#")) {
105
116
  continue;
106
117
  }
107
- if (!isValidArn(line)) {
108
- invalidArns.push({ line: i + 1, value: line });
118
+ if (!isValidResource(line)) {
119
+ invalidResources.push({ line: i + 1, value: line });
109
120
  }
110
121
  else {
111
122
  resources.push(line);
112
123
  }
113
124
  }
114
- if (invalidArns.length > 0) {
115
- const details = invalidArns.map((a) => `line ${a.line}: "${a.value}"`).join(", ");
116
- throw new ManifestError(`Manifest ${manifestPath} contains invalid ARNs: ${details}`);
125
+ if (invalidResources.length > 0) {
126
+ const details = invalidResources.map((a) => `line ${a.line}: "${a.value}"`).join(", ");
127
+ throw new ManifestError(`Manifest ${manifestPath} contains invalid resources: ${details}`);
117
128
  }
118
129
  return { resources };
119
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/infra/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,aAAa,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;IAErD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,OAAO,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,OAAO,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACjD,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC;QACH,OAAO,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAe,EAAE,YAAoB;IAC9D,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACrD,qBAAqB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAE1C,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,SAAS,GAAG,2BAA2B,CAAC,GAAG,CAAC,SAAsB,EAAE,YAAY,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,YAAoB;IAC7D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,MAAM,IAAI,aAAa,CAAC,4BAA4B,YAAY,KAAK,OAAO,EAAE,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAa,EAAE,YAAoB;IAChE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,aAAa,CAAC,YAAY,YAAY,wBAAwB,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,aAAa,CAAC,YAAY,YAAY,gCAAgC,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAgB,EAAE,YAAoB;IACzE,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,aAAa,CACrB,YAAY,YAAY,kCAAkC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CACjF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,aAAa,CACrB,YAAY,YAAY,2BAA2B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAAe,EAAE,YAAoB;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAsC,EAAE,CAAC;IAE1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE7B,gCAAgC;QAChC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,MAAM,IAAI,aAAa,CAAC,YAAY,YAAY,2BAA2B,OAAO,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/infra/manifest.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Scan logic for infra scan
3
3
  *
4
- * Orchestrates checking all resources in a manifest
4
+ * Orchestrates checking all resources in a manifest (AWS and GCP)
5
5
  */
6
6
  import type { InfraScanResult, Manifest } from "./types.js";
7
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/infra/scan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAoB,QAAQ,EAAuB,MAAM,YAAY,CAAC;AAOnG;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,WAAW,GAAE,MAA4B,GACxC,OAAO,CAAC,eAAe,CAAC,CAe1B"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/infra/scan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,eAAe,EAAoB,QAAQ,EAAuB,MAAM,YAAY,CAAC;AAOnG;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,WAAW,GAAE,MAA4B,GACxC,OAAO,CAAC,eAAe,CAAC,CAe1B"}
@@ -1,10 +1,12 @@
1
1
  /**
2
2
  * Scan logic for infra scan
3
3
  *
4
- * Orchestrates checking all resources in a manifest
4
+ * Orchestrates checking all resources in a manifest (AWS and GCP)
5
5
  */
6
- import { parseArn } from "./arn.js";
6
+ import { isValidArn, parseArn } from "./arn.js";
7
7
  import { getChecker, isSupportedService, SUPPORTED_SERVICES } from "./checkers/index.js";
8
+ import { getGcpChecker, isSupportedGcpService, SUPPORTED_GCP_SERVICES, } from "./checkers/gcp/index.js";
9
+ import { isValidGcpResource, parseGcpResource } from "./gcp.js";
8
10
  /**
9
11
  * Default concurrency for parallel checks
10
12
  */
@@ -46,47 +48,80 @@ async function checkResourcesWithConcurrency(arns, concurrency) {
46
48
  return results;
47
49
  }
48
50
  /**
49
- * Check a single resource
51
+ * Check a single resource (AWS or GCP)
50
52
  */
51
- async function checkResource(arn) {
52
- // Parse the ARN
53
+ async function checkResource(resource) {
54
+ // Detect cloud provider and route to appropriate checker
55
+ if (isValidArn(resource)) {
56
+ return checkAwsResource(resource);
57
+ }
58
+ if (isValidGcpResource(resource)) {
59
+ return checkGcpResource(resource);
60
+ }
61
+ return {
62
+ arn: resource,
63
+ exists: false,
64
+ error: "Invalid resource format (not a valid AWS ARN or GCP resource path)",
65
+ service: "unknown",
66
+ resourceType: "unknown",
67
+ resourceId: resource,
68
+ };
69
+ }
70
+ /**
71
+ * Check an AWS resource
72
+ */
73
+ async function checkAwsResource(arn) {
53
74
  const parsed = parseArn(arn);
54
75
  if (!parsed) {
55
- return {
56
- arn,
57
- exists: false,
58
- error: "Invalid ARN format",
59
- service: "unknown",
60
- resourceType: "unknown",
61
- resourceId: arn,
62
- };
76
+ return errorResult({ arn, error: "Invalid ARN format" });
63
77
  }
64
- // Check if the service is supported
65
78
  if (!isSupportedService(parsed.service)) {
66
- return {
79
+ const msg = `Unsupported AWS service: ${parsed.service}. Supported: ${SUPPORTED_SERVICES.join(", ")}`;
80
+ return errorResult({
67
81
  arn,
68
- exists: false,
69
- error: `Unsupported service: ${parsed.service}. Supported: ${SUPPORTED_SERVICES.join(", ")}`,
82
+ error: msg,
70
83
  service: parsed.service,
71
84
  resourceType: parsed.resourceType,
72
85
  resourceId: parsed.resourceId,
73
- };
86
+ });
74
87
  }
75
- // Get the checker for this service
76
88
  const checker = await getChecker(parsed.service);
77
89
  if (!checker) {
78
- return {
79
- arn,
80
- exists: false,
81
- error: `No checker available for service: ${parsed.service}`,
90
+ return errorResult({ arn, error: `No checker for AWS service: ${parsed.service}`, service: parsed.service });
91
+ }
92
+ return checker.check(parsed);
93
+ }
94
+ /**
95
+ * Check a GCP resource
96
+ */
97
+ async function checkGcpResource(resource) {
98
+ const parsed = parseGcpResource(resource);
99
+ if (!parsed) {
100
+ return errorResult({ arn: resource, error: "Invalid GCP resource path format" });
101
+ }
102
+ if (!isSupportedGcpService(parsed.service)) {
103
+ const msg = `Unsupported GCP service: ${parsed.service}. Supported: ${SUPPORTED_GCP_SERVICES.join(", ")}`;
104
+ return errorResult({
105
+ arn: resource,
106
+ error: msg,
82
107
  service: parsed.service,
83
108
  resourceType: parsed.resourceType,
84
109
  resourceId: parsed.resourceId,
85
- };
110
+ });
111
+ }
112
+ const checker = await getGcpChecker(parsed.service);
113
+ if (!checker) {
114
+ return errorResult({ arn: resource, error: `No checker for GCP service: ${parsed.service}`, service: parsed.service });
86
115
  }
87
- // Check the resource
88
116
  return checker.check(parsed);
89
117
  }
118
+ /**
119
+ * Create an error result
120
+ */
121
+ function errorResult(params) {
122
+ const { arn, error, service = "unknown", resourceType = "unknown", resourceId = arn } = params;
123
+ return { arn, exists: false, error, service, resourceType, resourceId };
124
+ }
90
125
  /**
91
126
  * Calculate summary statistics from check results
92
127
  */
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/infra/scan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzF;;GAEG;AACH,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAkB,EAClB,YAAoB,EACpB,cAAsB,mBAAmB;IAEzC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAExC,kDAAkD;IAClD,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAE5E,oBAAoB;IACpB,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE1C,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,OAAO;QACP,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,6BAA6B,CAC1C,IAAc,EACd,WAAmB;IAEnB,MAAM,OAAO,GAA0B,EAAE,CAAC;IAE1C,qBAAqB;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,qDAAqD;IACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,GAAW;IACtC,gBAAgB;IAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,GAAG;YACH,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE,SAAS;YAClB,YAAY,EAAE,SAAS;YACvB,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,GAAG;YACH,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,wBAAwB,MAAM,CAAC,OAAO,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5F,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,GAAG;YACH,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,qCAAqC,MAAM,CAAC,OAAO,EAAE;YAC5D,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAA8B;IACtD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,EAAE,CAAC;QACX,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACzB,KAAK,EAAE,CAAC;QACV,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,KAAK;QACL,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/infra/scan.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,10 @@
2
2
  * Type definitions for the infra scan module
3
3
  */
4
4
  /**
5
- * Parsed ARN components
5
+ * Parsed ARN components (AWS)
6
6
  */
7
7
  export interface ParsedArn {
8
+ cloud: "aws";
8
9
  partition: string;
9
10
  service: string;
10
11
  region: string;
@@ -13,6 +14,18 @@ export interface ParsedArn {
13
14
  resourceId: string;
14
15
  raw: string;
15
16
  }
17
+ /**
18
+ * Parsed GCP resource path components
19
+ */
20
+ export interface ParsedGcpResource {
21
+ cloud: "gcp";
22
+ project: string;
23
+ service: string;
24
+ location: string;
25
+ resourceType: string;
26
+ resourceId: string;
27
+ raw: string;
28
+ }
16
29
  /**
17
30
  * Result of checking a single resource
18
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/infra/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/infra/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "check-my-toolkit",
3
- "version": "2.1.1",
3
+ "version": "2.2.0",
4
4
  "description": "Unified project health checks - code, process, and infra",
5
5
  "type": "module",
6
6
  "engines": {
@@ -59,12 +59,16 @@
59
59
  "@aws-sdk/client-secrets-manager": "^3.974.0",
60
60
  "@aws-sdk/client-sns": "^3.974.0",
61
61
  "@aws-sdk/client-sqs": "^3.974.0",
62
+ "@google-cloud/artifact-registry": "^4.6.0",
63
+ "@google-cloud/run": "^3.1.0",
64
+ "@google-cloud/secret-manager": "^6.1.1",
62
65
  "@iarna/toml": "^2.2.5",
63
66
  "@modelcontextprotocol/sdk": "^1.25.3",
64
67
  "chalk": "^5.6.2",
65
68
  "commander": "^13.0.0",
66
69
  "execa": "^9.6.1",
67
70
  "glob": "^13.0.0",
71
+ "google-auth-library": "^10.5.0",
68
72
  "gray-matter": "^4.0.3",
69
73
  "js-yaml": "^4.1.1",
70
74
  "minimatch": "^10.1.1",