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.
- package/dist/infra/arn.d.ts.map +1 -1
- package/dist/infra/arn.js +1 -0
- package/dist/infra/arn.js.map +1 -1
- package/dist/infra/checkers/gcp/artifactregistry.d.ts +6 -0
- package/dist/infra/checkers/gcp/artifactregistry.d.ts.map +1 -0
- package/dist/infra/checkers/gcp/artifactregistry.js +38 -0
- package/dist/infra/checkers/gcp/artifactregistry.js.map +1 -0
- package/dist/infra/checkers/gcp/cloudrun.d.ts +6 -0
- package/dist/infra/checkers/gcp/cloudrun.d.ts.map +1 -0
- package/dist/infra/checkers/gcp/cloudrun.js +31 -0
- package/dist/infra/checkers/gcp/cloudrun.js.map +1 -0
- package/dist/infra/checkers/gcp/iam.d.ts +6 -0
- package/dist/infra/checkers/gcp/iam.d.ts.map +1 -0
- package/dist/infra/checkers/gcp/iam.js +39 -0
- package/dist/infra/checkers/gcp/iam.js.map +1 -0
- package/dist/infra/checkers/gcp/index.d.ts +18 -0
- package/dist/infra/checkers/gcp/index.d.ts.map +1 -0
- package/dist/infra/checkers/gcp/index.js +43 -0
- package/dist/infra/checkers/gcp/index.js.map +1 -0
- package/dist/infra/checkers/gcp/secretmanager.d.ts +6 -0
- package/dist/infra/checkers/gcp/secretmanager.d.ts.map +1 -0
- package/dist/infra/checkers/gcp/secretmanager.js +31 -0
- package/dist/infra/checkers/gcp/secretmanager.js.map +1 -0
- package/dist/infra/checkers/types.d.ts +14 -2
- package/dist/infra/checkers/types.d.ts.map +1 -1
- package/dist/infra/gcp.d.ts +19 -0
- package/dist/infra/gcp.d.ts.map +1 -0
- package/dist/infra/gcp.js +95 -0
- package/dist/infra/gcp.js.map +1 -0
- package/dist/infra/manifest.d.ts +6 -2
- package/dist/infra/manifest.d.ts.map +1 -1
- package/dist/infra/manifest.js +25 -14
- package/dist/infra/manifest.js.map +1 -1
- package/dist/infra/scan.d.ts +1 -1
- package/dist/infra/scan.d.ts.map +1 -1
- package/dist/infra/scan.js +60 -25
- package/dist/infra/scan.js.map +1 -1
- package/dist/infra/types.d.ts +14 -1
- package/dist/infra/types.d.ts.map +1 -1
- package/package.json +5 -1
package/dist/infra/arn.d.ts.map
CHANGED
|
@@ -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,
|
|
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
package/dist/infra/arn.js.map
CHANGED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
|
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;
|
|
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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"}
|
package/dist/infra/manifest.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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"}
|
package/dist/infra/manifest.js
CHANGED
|
@@ -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
|
|
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
|
|
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 (!
|
|
83
|
-
|
|
93
|
+
if (!isValidResource(item)) {
|
|
94
|
+
invalidResources.push(item);
|
|
84
95
|
}
|
|
85
96
|
else {
|
|
86
97
|
resources.push(item);
|
|
87
98
|
}
|
|
88
99
|
}
|
|
89
|
-
if (
|
|
90
|
-
throw new ManifestError(`Manifest ${manifestPath} contains invalid
|
|
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
|
|
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
|
|
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 (!
|
|
108
|
-
|
|
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 (
|
|
115
|
-
const details =
|
|
116
|
-
throw new ManifestError(`Manifest ${manifestPath} contains invalid
|
|
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
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/infra/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/infra/scan.d.ts
CHANGED
package/dist/infra/scan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/infra/scan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
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"}
|
package/dist/infra/scan.js
CHANGED
|
@@ -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(
|
|
52
|
-
//
|
|
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
|
-
|
|
79
|
+
const msg = `Unsupported AWS service: ${parsed.service}. Supported: ${SUPPORTED_SERVICES.join(", ")}`;
|
|
80
|
+
return errorResult({
|
|
67
81
|
arn,
|
|
68
|
-
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
*/
|
package/dist/infra/scan.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/infra/scan.ts"],"names":[],"mappings":"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"}
|
package/dist/infra/types.d.ts
CHANGED
|
@@ -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.
|
|
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",
|