@scoutflo/topology-contracts 0.1.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/README.md +15 -0
- package/dist/src/correlation/candidate.d.ts +310 -0
- package/dist/src/correlation/candidate.js +31 -0
- package/dist/src/correlation/candidate.js.map +1 -0
- package/dist/src/correlation/index.d.ts +2 -0
- package/dist/src/correlation/index.js +19 -0
- package/dist/src/correlation/index.js.map +1 -0
- package/dist/src/correlation/rule.d.ts +80 -0
- package/dist/src/correlation/rule.js +29 -0
- package/dist/src/correlation/rule.js.map +1 -0
- package/dist/src/families/aws.d.ts +13 -0
- package/dist/src/families/aws.js +24 -0
- package/dist/src/families/aws.js.map +1 -0
- package/dist/src/families/index.d.ts +6 -0
- package/dist/src/families/index.js +30 -0
- package/dist/src/families/index.js.map +1 -0
- package/dist/src/families/integrations.d.ts +7 -0
- package/dist/src/families/integrations.js +12 -0
- package/dist/src/families/integrations.js.map +1 -0
- package/dist/src/families/kubernetes.d.ts +14 -0
- package/dist/src/families/kubernetes.js +26 -0
- package/dist/src/families/kubernetes.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.js +48 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/providers/aliases.d.ts +12 -0
- package/dist/src/providers/aliases.js +26 -0
- package/dist/src/providers/aliases.js.map +1 -0
- package/dist/src/providers/index.d.ts +2 -0
- package/dist/src/providers/index.js +19 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/src/providers/providers.d.ts +30 -0
- package/dist/src/providers/providers.js +58 -0
- package/dist/src/providers/providers.js.map +1 -0
- package/dist/src/schemas/index.d.ts +5 -0
- package/dist/src/schemas/index.js +38 -0
- package/dist/src/schemas/index.js.map +1 -0
- package/dist/src/source-sync/candidate.d.ts +967 -0
- package/dist/src/source-sync/candidate.js +84 -0
- package/dist/src/source-sync/candidate.js.map +1 -0
- package/dist/src/source-sync/capability.d.ts +64 -0
- package/dist/src/source-sync/capability.js +20 -0
- package/dist/src/source-sync/capability.js.map +1 -0
- package/dist/src/source-sync/common.d.ts +16 -0
- package/dist/src/source-sync/common.js +14 -0
- package/dist/src/source-sync/common.js.map +1 -0
- package/dist/src/source-sync/completeness.d.ts +28 -0
- package/dist/src/source-sync/completeness.js +21 -0
- package/dist/src/source-sync/completeness.js.map +1 -0
- package/dist/src/source-sync/index.d.ts +6 -0
- package/dist/src/source-sync/index.js +23 -0
- package/dist/src/source-sync/index.js.map +1 -0
- package/dist/src/source-sync/intent.d.ts +621 -0
- package/dist/src/source-sync/intent.js +31 -0
- package/dist/src/source-sync/intent.js.map +1 -0
- package/dist/src/source-sync/scope.d.ts +21 -0
- package/dist/src/source-sync/scope.js +14 -0
- package/dist/src/source-sync/scope.js.map +1 -0
- package/dist/src/source-sync/warning.d.ts +25 -0
- package/dist/src/source-sync/warning.js +19 -0
- package/dist/src/source-sync/warning.js.map +1 -0
- package/dist/src/topology/index.d.ts +2 -0
- package/dist/src/topology/index.js +19 -0
- package/dist/src/topology/index.js.map +1 -0
- package/dist/src/topology/relationTypes.d.ts +15 -0
- package/dist/src/topology/relationTypes.js +28 -0
- package/dist/src/topology/relationTypes.js.map +1 -0
- package/dist/src/topology/resourceTypes.d.ts +22 -0
- package/dist/src/topology/resourceTypes.js +42 -0
- package/dist/src/topology/resourceTypes.js.map +1 -0
- package/dist/test/contracts.test.d.ts +1 -0
- package/dist/test/contracts.test.js +175 -0
- package/dist/test/contracts.test.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.topologySyncIntentSchema = exports.topologySyncIntentOptionsSchema = exports.topologySourceIntentSchema = exports.topologySourceIntentOptionsSchema = exports.topologySourceIntentIncludeSchema = exports.SOURCE_SYNC_INTENT_VERSION = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const providers_1 = require("../providers");
|
|
6
|
+
const common_1 = require("./common");
|
|
7
|
+
exports.SOURCE_SYNC_INTENT_VERSION = 'topology.scoutflo.dev/v1';
|
|
8
|
+
exports.topologySourceIntentIncludeSchema = zod_1.z.object({
|
|
9
|
+
localities: zod_1.z.array(common_1.sourceSyncLocalitySchema).optional(),
|
|
10
|
+
families: zod_1.z.array(common_1.sourceSyncFamilySchema).optional(),
|
|
11
|
+
}).passthrough();
|
|
12
|
+
exports.topologySourceIntentOptionsSchema = common_1.recordSchema;
|
|
13
|
+
exports.topologySourceIntentSchema = zod_1.z.object({
|
|
14
|
+
provider: providers_1.topologyProviderInputSchema,
|
|
15
|
+
source_ref: common_1.recordSchema.optional(),
|
|
16
|
+
roots: zod_1.z.record(zod_1.z.array(common_1.nonEmptyStringSchema)).optional(),
|
|
17
|
+
include: exports.topologySourceIntentIncludeSchema.optional(),
|
|
18
|
+
exclude: common_1.recordSchema.optional(),
|
|
19
|
+
options: exports.topologySourceIntentOptionsSchema.optional(),
|
|
20
|
+
}).passthrough();
|
|
21
|
+
exports.topologySyncIntentOptionsSchema = zod_1.z.object({
|
|
22
|
+
include_correlation: zod_1.z.boolean().optional(),
|
|
23
|
+
dry_run_only: zod_1.z.boolean().optional(),
|
|
24
|
+
max_concurrency: zod_1.z.number().int().min(1).optional(),
|
|
25
|
+
}).passthrough();
|
|
26
|
+
exports.topologySyncIntentSchema = zod_1.z.object({
|
|
27
|
+
version: zod_1.z.literal(exports.SOURCE_SYNC_INTENT_VERSION),
|
|
28
|
+
sources: zod_1.z.array(exports.topologySourceIntentSchema).optional(),
|
|
29
|
+
options: exports.topologySyncIntentOptionsSchema.optional(),
|
|
30
|
+
}).passthrough();
|
|
31
|
+
//# sourceMappingURL=intent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../src/source-sync/intent.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,4CAA2D;AAC3D,qCAKkB;AAEL,QAAA,0BAA0B,GAAG,0BAA0B,CAAC;AAExD,QAAA,iCAAiC,GAAG,OAAC,CAAC,MAAM,CAAC;IACxD,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC,iCAAwB,CAAC,CAAC,QAAQ,EAAE;IACxD,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,+BAAsB,CAAC,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC,WAAW,EAAE,CAAC;AAEJ,QAAA,iCAAiC,GAAG,qBAAY,CAAC;AAEjD,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,QAAQ,EAAE,uCAA2B;IACrC,UAAU,EAAE,qBAAY,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,KAAK,CAAC,6BAAoB,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzD,OAAO,EAAE,yCAAiC,CAAC,QAAQ,EAAE;IACrD,OAAO,EAAE,qBAAY,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,yCAAiC,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC,WAAW,EAAE,CAAC;AAEJ,QAAA,+BAA+B,GAAG,OAAC,CAAC,MAAM,CAAC;IACtD,mBAAmB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC3C,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC,WAAW,EAAE,CAAC;AAEJ,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,OAAC,CAAC,OAAO,CAAC,kCAA0B,CAAC;IAC9C,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,kCAA0B,CAAC,CAAC,QAAQ,EAAE;IACvD,OAAO,EAAE,uCAA+B,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const topologySyncScopeSchema: z.ZodObject<{
|
|
3
|
+
provider: z.ZodEffects<z.ZodUnion<[z.ZodEnum<["aws", "k8s", "gcp", "azure", "sentry", "prometheus", "grafana", "loki", "tempo", "mimir", "victoriametrics", "victorialogs", "victoriatraces", "github", "gitlab", "bitbucket", "argocd", "datadog", "groundcover", "elk", "jira", "confluence", "jsm", "custom"]>, z.ZodLiteral<"kubernetes">]>, "aws" | "k8s" | "gcp" | "azure" | "sentry" | "prometheus" | "grafana" | "loki" | "tempo" | "mimir" | "victoriametrics" | "victorialogs" | "victoriatraces" | "github" | "gitlab" | "bitbucket" | "argocd" | "datadog" | "groundcover" | "elk" | "jira" | "confluence" | "jsm" | "custom", "aws" | "k8s" | "gcp" | "azure" | "sentry" | "prometheus" | "grafana" | "loki" | "tempo" | "mimir" | "victoriametrics" | "victorialogs" | "victoriatraces" | "github" | "gitlab" | "bitbucket" | "argocd" | "datadog" | "groundcover" | "elk" | "jira" | "confluence" | "jsm" | "custom" | "kubernetes">;
|
|
4
|
+
provider_account_id: z.ZodOptional<z.ZodString>;
|
|
5
|
+
region: z.ZodOptional<z.ZodString>;
|
|
6
|
+
resource_families: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
7
|
+
scope_key: z.ZodString;
|
|
8
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
9
|
+
provider: z.ZodEffects<z.ZodUnion<[z.ZodEnum<["aws", "k8s", "gcp", "azure", "sentry", "prometheus", "grafana", "loki", "tempo", "mimir", "victoriametrics", "victorialogs", "victoriatraces", "github", "gitlab", "bitbucket", "argocd", "datadog", "groundcover", "elk", "jira", "confluence", "jsm", "custom"]>, z.ZodLiteral<"kubernetes">]>, "aws" | "k8s" | "gcp" | "azure" | "sentry" | "prometheus" | "grafana" | "loki" | "tempo" | "mimir" | "victoriametrics" | "victorialogs" | "victoriatraces" | "github" | "gitlab" | "bitbucket" | "argocd" | "datadog" | "groundcover" | "elk" | "jira" | "confluence" | "jsm" | "custom", "aws" | "k8s" | "gcp" | "azure" | "sentry" | "prometheus" | "grafana" | "loki" | "tempo" | "mimir" | "victoriametrics" | "victorialogs" | "victoriatraces" | "github" | "gitlab" | "bitbucket" | "argocd" | "datadog" | "groundcover" | "elk" | "jira" | "confluence" | "jsm" | "custom" | "kubernetes">;
|
|
10
|
+
provider_account_id: z.ZodOptional<z.ZodString>;
|
|
11
|
+
region: z.ZodOptional<z.ZodString>;
|
|
12
|
+
resource_families: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
13
|
+
scope_key: z.ZodString;
|
|
14
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
15
|
+
provider: z.ZodEffects<z.ZodUnion<[z.ZodEnum<["aws", "k8s", "gcp", "azure", "sentry", "prometheus", "grafana", "loki", "tempo", "mimir", "victoriametrics", "victorialogs", "victoriatraces", "github", "gitlab", "bitbucket", "argocd", "datadog", "groundcover", "elk", "jira", "confluence", "jsm", "custom"]>, z.ZodLiteral<"kubernetes">]>, "aws" | "k8s" | "gcp" | "azure" | "sentry" | "prometheus" | "grafana" | "loki" | "tempo" | "mimir" | "victoriametrics" | "victorialogs" | "victoriatraces" | "github" | "gitlab" | "bitbucket" | "argocd" | "datadog" | "groundcover" | "elk" | "jira" | "confluence" | "jsm" | "custom", "aws" | "k8s" | "gcp" | "azure" | "sentry" | "prometheus" | "grafana" | "loki" | "tempo" | "mimir" | "victoriametrics" | "victorialogs" | "victoriatraces" | "github" | "gitlab" | "bitbucket" | "argocd" | "datadog" | "groundcover" | "elk" | "jira" | "confluence" | "jsm" | "custom" | "kubernetes">;
|
|
16
|
+
provider_account_id: z.ZodOptional<z.ZodString>;
|
|
17
|
+
region: z.ZodOptional<z.ZodString>;
|
|
18
|
+
resource_families: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
19
|
+
scope_key: z.ZodString;
|
|
20
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
21
|
+
export type TopologySyncScope = z.infer<typeof topologySyncScopeSchema>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.topologySyncScopeSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const providers_1 = require("../providers");
|
|
6
|
+
const common_1 = require("./common");
|
|
7
|
+
exports.topologySyncScopeSchema = zod_1.z.object({
|
|
8
|
+
provider: providers_1.topologyProviderInputSchema,
|
|
9
|
+
provider_account_id: common_1.nonEmptyStringSchema.optional(),
|
|
10
|
+
region: common_1.nonEmptyStringSchema.optional(),
|
|
11
|
+
resource_families: zod_1.z.array(common_1.sourceSyncFamilySchema).optional(),
|
|
12
|
+
scope_key: common_1.nonEmptyStringSchema,
|
|
13
|
+
}).passthrough();
|
|
14
|
+
//# sourceMappingURL=scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/source-sync/scope.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,4CAA2D;AAC3D,qCAGkB;AAEL,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,QAAQ,EAAE,uCAA2B;IACrC,mBAAmB,EAAE,6BAAoB,CAAC,QAAQ,EAAE;IACpD,MAAM,EAAE,6BAAoB,CAAC,QAAQ,EAAE;IACvC,iBAAiB,EAAE,OAAC,CAAC,KAAK,CAAC,+BAAsB,CAAC,CAAC,QAAQ,EAAE;IAC7D,SAAS,EAAE,6BAAoB;CAChC,CAAC,CAAC,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const topologySyncWarningSeveritySchema: z.ZodEnum<["info", "warning", "error"]>;
|
|
3
|
+
export declare const topologySyncWarningSchema: z.ZodObject<{
|
|
4
|
+
code: z.ZodString;
|
|
5
|
+
message: z.ZodString;
|
|
6
|
+
severity: z.ZodOptional<z.ZodEnum<["info", "warning", "error"]>>;
|
|
7
|
+
scope_key: z.ZodOptional<z.ZodString>;
|
|
8
|
+
affected_scope_keys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
9
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
10
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
11
|
+
code: z.ZodString;
|
|
12
|
+
message: z.ZodString;
|
|
13
|
+
severity: z.ZodOptional<z.ZodEnum<["info", "warning", "error"]>>;
|
|
14
|
+
scope_key: z.ZodOptional<z.ZodString>;
|
|
15
|
+
affected_scope_keys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
16
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
17
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
18
|
+
code: z.ZodString;
|
|
19
|
+
message: z.ZodString;
|
|
20
|
+
severity: z.ZodOptional<z.ZodEnum<["info", "warning", "error"]>>;
|
|
21
|
+
scope_key: z.ZodOptional<z.ZodString>;
|
|
22
|
+
affected_scope_keys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
23
|
+
details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
24
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
25
|
+
export type TopologySyncWarning = z.infer<typeof topologySyncWarningSchema>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.topologySyncWarningSchema = exports.topologySyncWarningSeveritySchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
exports.topologySyncWarningSeveritySchema = zod_1.z.enum([
|
|
7
|
+
'info',
|
|
8
|
+
'warning',
|
|
9
|
+
'error',
|
|
10
|
+
]);
|
|
11
|
+
exports.topologySyncWarningSchema = zod_1.z.object({
|
|
12
|
+
code: common_1.nonEmptyStringSchema,
|
|
13
|
+
message: common_1.nonEmptyStringSchema,
|
|
14
|
+
severity: exports.topologySyncWarningSeveritySchema.optional(),
|
|
15
|
+
scope_key: common_1.nonEmptyStringSchema.optional(),
|
|
16
|
+
affected_scope_keys: zod_1.z.array(common_1.nonEmptyStringSchema).optional(),
|
|
17
|
+
details: common_1.recordSchema.optional(),
|
|
18
|
+
}).passthrough();
|
|
19
|
+
//# sourceMappingURL=warning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warning.js","sourceRoot":"","sources":["../../../src/source-sync/warning.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,qCAGkB;AAEL,QAAA,iCAAiC,GAAG,OAAC,CAAC,IAAI,CAAC;IACtD,MAAM;IACN,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AAEU,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,6BAAoB;IAC1B,OAAO,EAAE,6BAAoB;IAC7B,QAAQ,EAAE,yCAAiC,CAAC,QAAQ,EAAE;IACtD,SAAS,EAAE,6BAAoB,CAAC,QAAQ,EAAE;IAC1C,mBAAmB,EAAE,OAAC,CAAC,KAAK,CAAC,6BAAoB,CAAC,CAAC,QAAQ,EAAE;IAC7D,OAAO,EAAE,qBAAY,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./resourceTypes"), exports);
|
|
18
|
+
__exportStar(require("./relationTypes"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/topology/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,kDAAgC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const TOPOLOGY_RELATION_TYPE: {
|
|
3
|
+
readonly PART_OF: "PART_OF";
|
|
4
|
+
readonly ROUTES_TO: "ROUTES_TO";
|
|
5
|
+
readonly DEPLOYED_AS: "DEPLOYED_AS";
|
|
6
|
+
readonly DEPENDS_ON: "DEPENDS_ON";
|
|
7
|
+
readonly CALLS: "CALLS";
|
|
8
|
+
readonly MONITORED_BY: "MONITORED_BY";
|
|
9
|
+
readonly SENDS_LOGS_TO: "SENDS_LOGS_TO";
|
|
10
|
+
readonly SENDS_METRICS_TO: "SENDS_METRICS_TO";
|
|
11
|
+
readonly SENDS_TRACES_TO: "SENDS_TRACES_TO";
|
|
12
|
+
};
|
|
13
|
+
export declare const TOPOLOGY_RELATION_TYPE_VALUES: readonly ["PART_OF", "ROUTES_TO", "DEPLOYED_AS", "DEPENDS_ON", "CALLS", "MONITORED_BY", "SENDS_LOGS_TO", "SENDS_METRICS_TO", "SENDS_TRACES_TO"];
|
|
14
|
+
export declare const topologyRelationTypeSchema: z.ZodEnum<["PART_OF", "ROUTES_TO", "DEPLOYED_AS", "DEPENDS_ON", "CALLS", "MONITORED_BY", "SENDS_LOGS_TO", "SENDS_METRICS_TO", "SENDS_TRACES_TO"]>;
|
|
15
|
+
export type TopologyRelationType = z.infer<typeof topologyRelationTypeSchema>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.topologyRelationTypeSchema = exports.TOPOLOGY_RELATION_TYPE_VALUES = exports.TOPOLOGY_RELATION_TYPE = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.TOPOLOGY_RELATION_TYPE = {
|
|
6
|
+
PART_OF: 'PART_OF',
|
|
7
|
+
ROUTES_TO: 'ROUTES_TO',
|
|
8
|
+
DEPLOYED_AS: 'DEPLOYED_AS',
|
|
9
|
+
DEPENDS_ON: 'DEPENDS_ON',
|
|
10
|
+
CALLS: 'CALLS',
|
|
11
|
+
MONITORED_BY: 'MONITORED_BY',
|
|
12
|
+
SENDS_LOGS_TO: 'SENDS_LOGS_TO',
|
|
13
|
+
SENDS_METRICS_TO: 'SENDS_METRICS_TO',
|
|
14
|
+
SENDS_TRACES_TO: 'SENDS_TRACES_TO',
|
|
15
|
+
};
|
|
16
|
+
exports.TOPOLOGY_RELATION_TYPE_VALUES = [
|
|
17
|
+
exports.TOPOLOGY_RELATION_TYPE.PART_OF,
|
|
18
|
+
exports.TOPOLOGY_RELATION_TYPE.ROUTES_TO,
|
|
19
|
+
exports.TOPOLOGY_RELATION_TYPE.DEPLOYED_AS,
|
|
20
|
+
exports.TOPOLOGY_RELATION_TYPE.DEPENDS_ON,
|
|
21
|
+
exports.TOPOLOGY_RELATION_TYPE.CALLS,
|
|
22
|
+
exports.TOPOLOGY_RELATION_TYPE.MONITORED_BY,
|
|
23
|
+
exports.TOPOLOGY_RELATION_TYPE.SENDS_LOGS_TO,
|
|
24
|
+
exports.TOPOLOGY_RELATION_TYPE.SENDS_METRICS_TO,
|
|
25
|
+
exports.TOPOLOGY_RELATION_TYPE.SENDS_TRACES_TO,
|
|
26
|
+
];
|
|
27
|
+
exports.topologyRelationTypeSchema = zod_1.z.enum(exports.TOPOLOGY_RELATION_TYPE_VALUES);
|
|
28
|
+
//# sourceMappingURL=relationTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationTypes.js","sourceRoot":"","sources":["../../../src/topology/relationTypes.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,sBAAsB,GAAG;IACpC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;CAC1B,CAAC;AAEE,QAAA,6BAA6B,GAAG;IAC3C,8BAAsB,CAAC,OAAO;IAC9B,8BAAsB,CAAC,SAAS;IAChC,8BAAsB,CAAC,WAAW;IAClC,8BAAsB,CAAC,UAAU;IACjC,8BAAsB,CAAC,KAAK;IAC5B,8BAAsB,CAAC,YAAY;IACnC,8BAAsB,CAAC,aAAa;IACpC,8BAAsB,CAAC,gBAAgB;IACvC,8BAAsB,CAAC,eAAe;CAC9B,CAAC;AAEE,QAAA,0BAA0B,GAAG,OAAC,CAAC,IAAI,CAAC,qCAA6B,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const TOPOLOGY_RESOURCE_TYPE: {
|
|
3
|
+
readonly AWS_ACCOUNT: "aws_account";
|
|
4
|
+
readonly VPC: "vpc";
|
|
5
|
+
readonly SUBNET: "subnet";
|
|
6
|
+
readonly EC2_INSTANCE: "ec2_instance";
|
|
7
|
+
readonly RDS_INSTANCE: "rds_instance";
|
|
8
|
+
readonly S3_BUCKET: "s3_bucket";
|
|
9
|
+
readonly EKS_CLUSTER: "eks_cluster";
|
|
10
|
+
readonly KUBERNETES_CLUSTER: "kubernetes_cluster";
|
|
11
|
+
readonly KUBERNETES_NAMESPACE: "kubernetes_namespace";
|
|
12
|
+
readonly KUBERNETES_DEPLOYMENT: "kubernetes_deployment";
|
|
13
|
+
readonly KUBERNETES_STATEFUL_SET: "kubernetes_stateful_set";
|
|
14
|
+
readonly KUBERNETES_DAEMON_SET: "kubernetes_daemon_set";
|
|
15
|
+
readonly KUBERNETES_JOB: "kubernetes_job";
|
|
16
|
+
readonly KUBERNETES_CRON_JOB: "kubernetes_cron_job";
|
|
17
|
+
readonly KUBERNETES_SERVICE: "kubernetes_service";
|
|
18
|
+
readonly INTEGRATION_RESOURCE: "integration_resource";
|
|
19
|
+
};
|
|
20
|
+
export declare const TOPOLOGY_RESOURCE_TYPE_VALUES: readonly ["aws_account", "vpc", "subnet", "ec2_instance", "rds_instance", "s3_bucket", "eks_cluster", "kubernetes_cluster", "kubernetes_namespace", "kubernetes_deployment", "kubernetes_stateful_set", "kubernetes_daemon_set", "kubernetes_job", "kubernetes_cron_job", "kubernetes_service", "integration_resource"];
|
|
21
|
+
export declare const topologyResourceTypeSchema: z.ZodEnum<["aws_account", "vpc", "subnet", "ec2_instance", "rds_instance", "s3_bucket", "eks_cluster", "kubernetes_cluster", "kubernetes_namespace", "kubernetes_deployment", "kubernetes_stateful_set", "kubernetes_daemon_set", "kubernetes_job", "kubernetes_cron_job", "kubernetes_service", "integration_resource"]>;
|
|
22
|
+
export type TopologyResourceType = z.infer<typeof topologyResourceTypeSchema>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.topologyResourceTypeSchema = exports.TOPOLOGY_RESOURCE_TYPE_VALUES = exports.TOPOLOGY_RESOURCE_TYPE = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.TOPOLOGY_RESOURCE_TYPE = {
|
|
6
|
+
AWS_ACCOUNT: 'aws_account',
|
|
7
|
+
VPC: 'vpc',
|
|
8
|
+
SUBNET: 'subnet',
|
|
9
|
+
EC2_INSTANCE: 'ec2_instance',
|
|
10
|
+
RDS_INSTANCE: 'rds_instance',
|
|
11
|
+
S3_BUCKET: 's3_bucket',
|
|
12
|
+
EKS_CLUSTER: 'eks_cluster',
|
|
13
|
+
KUBERNETES_CLUSTER: 'kubernetes_cluster',
|
|
14
|
+
KUBERNETES_NAMESPACE: 'kubernetes_namespace',
|
|
15
|
+
KUBERNETES_DEPLOYMENT: 'kubernetes_deployment',
|
|
16
|
+
KUBERNETES_STATEFUL_SET: 'kubernetes_stateful_set',
|
|
17
|
+
KUBERNETES_DAEMON_SET: 'kubernetes_daemon_set',
|
|
18
|
+
KUBERNETES_JOB: 'kubernetes_job',
|
|
19
|
+
KUBERNETES_CRON_JOB: 'kubernetes_cron_job',
|
|
20
|
+
KUBERNETES_SERVICE: 'kubernetes_service',
|
|
21
|
+
INTEGRATION_RESOURCE: 'integration_resource',
|
|
22
|
+
};
|
|
23
|
+
exports.TOPOLOGY_RESOURCE_TYPE_VALUES = [
|
|
24
|
+
exports.TOPOLOGY_RESOURCE_TYPE.AWS_ACCOUNT,
|
|
25
|
+
exports.TOPOLOGY_RESOURCE_TYPE.VPC,
|
|
26
|
+
exports.TOPOLOGY_RESOURCE_TYPE.SUBNET,
|
|
27
|
+
exports.TOPOLOGY_RESOURCE_TYPE.EC2_INSTANCE,
|
|
28
|
+
exports.TOPOLOGY_RESOURCE_TYPE.RDS_INSTANCE,
|
|
29
|
+
exports.TOPOLOGY_RESOURCE_TYPE.S3_BUCKET,
|
|
30
|
+
exports.TOPOLOGY_RESOURCE_TYPE.EKS_CLUSTER,
|
|
31
|
+
exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_CLUSTER,
|
|
32
|
+
exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_NAMESPACE,
|
|
33
|
+
exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_DEPLOYMENT,
|
|
34
|
+
exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_STATEFUL_SET,
|
|
35
|
+
exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_DAEMON_SET,
|
|
36
|
+
exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_JOB,
|
|
37
|
+
exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_CRON_JOB,
|
|
38
|
+
exports.TOPOLOGY_RESOURCE_TYPE.KUBERNETES_SERVICE,
|
|
39
|
+
exports.TOPOLOGY_RESOURCE_TYPE.INTEGRATION_RESOURCE,
|
|
40
|
+
];
|
|
41
|
+
exports.topologyResourceTypeSchema = zod_1.z.enum(exports.TOPOLOGY_RESOURCE_TYPE_VALUES);
|
|
42
|
+
//# sourceMappingURL=resourceTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceTypes.js","sourceRoot":"","sources":["../../../src/topology/resourceTypes.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,sBAAsB,GAAG;IACpC,WAAW,EAAE,aAAa;IAC1B,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;CACpC,CAAC;AAEE,QAAA,6BAA6B,GAAG;IAC3C,8BAAsB,CAAC,WAAW;IAClC,8BAAsB,CAAC,GAAG;IAC1B,8BAAsB,CAAC,MAAM;IAC7B,8BAAsB,CAAC,YAAY;IACnC,8BAAsB,CAAC,YAAY;IACnC,8BAAsB,CAAC,SAAS;IAChC,8BAAsB,CAAC,WAAW;IAClC,8BAAsB,CAAC,kBAAkB;IACzC,8BAAsB,CAAC,oBAAoB;IAC3C,8BAAsB,CAAC,qBAAqB;IAC5C,8BAAsB,CAAC,uBAAuB;IAC9C,8BAAsB,CAAC,qBAAqB;IAC5C,8BAAsB,CAAC,cAAc;IACrC,8BAAsB,CAAC,mBAAmB;IAC1C,8BAAsB,CAAC,kBAAkB;IACzC,8BAAsB,CAAC,oBAAoB;CACnC,CAAC;AAEE,QAAA,0BAA0B,GAAG,OAAC,CAAC,IAAI,CAAC,qCAA6B,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
7
|
+
const node_test_1 = __importDefault(require("node:test"));
|
|
8
|
+
const src_1 = require("../src");
|
|
9
|
+
(0, node_test_1.default)('exports package marker, provider constants, and provider normalization', () => {
|
|
10
|
+
strict_1.default.equal(src_1.TOPOLOGY_CONTRACTS_PACKAGE, '@scoutflo/topology-contracts');
|
|
11
|
+
strict_1.default.equal(src_1.TOPOLOGY_PROVIDER.K8S, 'k8s');
|
|
12
|
+
strict_1.default.equal(src_1.topologyProviderSchema.parse('k8s'), 'k8s');
|
|
13
|
+
strict_1.default.equal((0, src_1.normalizeTopologyProvider)('kubernetes'), 'k8s');
|
|
14
|
+
strict_1.default.equal((0, src_1.normalizeTopologyProvider)('k8s'), 'k8s');
|
|
15
|
+
});
|
|
16
|
+
(0, node_test_1.default)('exports first-pass topology family constants', () => {
|
|
17
|
+
strict_1.default.deepEqual(Object.values(src_1.AWS_TOPOLOGY_FAMILY), [
|
|
18
|
+
'account',
|
|
19
|
+
'vpc',
|
|
20
|
+
'subnet',
|
|
21
|
+
'ec2_instance',
|
|
22
|
+
'rds_instance',
|
|
23
|
+
's3_bucket',
|
|
24
|
+
'eks_cluster',
|
|
25
|
+
]);
|
|
26
|
+
strict_1.default.deepEqual(Object.values(src_1.KUBERNETES_TOPOLOGY_FAMILY), [
|
|
27
|
+
'cluster',
|
|
28
|
+
'namespace',
|
|
29
|
+
'deployment',
|
|
30
|
+
'statefulset',
|
|
31
|
+
'daemonset',
|
|
32
|
+
'job',
|
|
33
|
+
'cronjob',
|
|
34
|
+
'service',
|
|
35
|
+
]);
|
|
36
|
+
strict_1.default.equal(src_1.INTEGRATION_TOPOLOGY_FAMILY.INTEGRATION_RESOURCE, 'integration_resource');
|
|
37
|
+
});
|
|
38
|
+
(0, node_test_1.default)('parses Gateway snake_case source-sync capabilities with extension keys', () => {
|
|
39
|
+
const parsed = src_1.sourceSyncCapabilitySchema.parse({
|
|
40
|
+
provider: 'k8s',
|
|
41
|
+
status: 'experimental',
|
|
42
|
+
source_sync_version: '2026-06-16',
|
|
43
|
+
supports_dry_run: true,
|
|
44
|
+
supports_apply: false,
|
|
45
|
+
supports_selected_apply: true,
|
|
46
|
+
supports_correlation: true,
|
|
47
|
+
families: ['cluster', 'namespace', 'deployment'],
|
|
48
|
+
locality_options: [{ kind: 'namespace', id: 'checkout', label: 'checkout' }],
|
|
49
|
+
non_goals: ['pod_inventory'],
|
|
50
|
+
gateway_registry_key: 'kubernetes-source-sync',
|
|
51
|
+
});
|
|
52
|
+
strict_1.default.equal(parsed.provider, 'k8s');
|
|
53
|
+
strict_1.default.equal(parsed.gateway_registry_key, 'kubernetes-source-sync');
|
|
54
|
+
});
|
|
55
|
+
(0, node_test_1.default)('parses topology source-sync intent version and options', () => {
|
|
56
|
+
const parsed = src_1.topologySyncIntentSchema.parse({
|
|
57
|
+
version: src_1.SOURCE_SYNC_INTENT_VERSION,
|
|
58
|
+
sources: [
|
|
59
|
+
{
|
|
60
|
+
provider: 'aws',
|
|
61
|
+
source_ref: { provider_account_id: '123456789012', region: 'ap-south-1' },
|
|
62
|
+
roots: { aws_account: ['account-123'] },
|
|
63
|
+
include: {
|
|
64
|
+
localities: [{ kind: 'region', id: 'ap-south-1' }],
|
|
65
|
+
families: ['account', 'vpc', 'subnet'],
|
|
66
|
+
},
|
|
67
|
+
exclude: { families: ['s3_bucket'] },
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
options: {
|
|
71
|
+
include_correlation: true,
|
|
72
|
+
dry_run_only: true,
|
|
73
|
+
max_concurrency: 2,
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
strict_1.default.equal(parsed.version, 'topology.scoutflo.dev/v1');
|
|
77
|
+
strict_1.default.equal(parsed.options?.max_concurrency, 2);
|
|
78
|
+
});
|
|
79
|
+
(0, node_test_1.default)('parses source-sync scope, completeness, and warning boundary DTOs', () => {
|
|
80
|
+
strict_1.default.equal(src_1.topologySyncScopeSchema.parse({
|
|
81
|
+
provider: 'aws',
|
|
82
|
+
provider_account_id: '123456789012',
|
|
83
|
+
region: 'ap-south-1',
|
|
84
|
+
resource_families: ['vpc', 'subnet'],
|
|
85
|
+
scope_key: 'aws:123456789012:ap-south-1:ec2',
|
|
86
|
+
}).scope_key, 'aws:123456789012:ap-south-1:ec2');
|
|
87
|
+
strict_1.default.equal(src_1.topologySyncCompletenessSchema.parse({
|
|
88
|
+
overall: 'partial',
|
|
89
|
+
completed_scope_keys: ['aws:123456789012:ap-south-1:ec2:vpc'],
|
|
90
|
+
partial_scope_keys: ['aws:123456789012:ap-south-1:ec2:subnet'],
|
|
91
|
+
failed_scope_keys: [],
|
|
92
|
+
pagination_complete: false,
|
|
93
|
+
permission_complete: true,
|
|
94
|
+
}).overall, 'partial');
|
|
95
|
+
strict_1.default.equal(src_1.topologySyncWarningSchema.parse({
|
|
96
|
+
code: 'pagination_incomplete',
|
|
97
|
+
message: 'Subnet pagination did not complete',
|
|
98
|
+
affected_scope_keys: ['aws:123456789012:ap-south-1:ec2:subnet'],
|
|
99
|
+
details: { provider: 'aws' },
|
|
100
|
+
}).code, 'pagination_incomplete');
|
|
101
|
+
});
|
|
102
|
+
(0, node_test_1.default)('parses source-sync node and relationship candidate boundary DTOs', () => {
|
|
103
|
+
const node = src_1.topologySourceNodeCandidateSchema.parse({
|
|
104
|
+
entity_type: 'resource',
|
|
105
|
+
resource_type: 'vpc',
|
|
106
|
+
source_node_key: 'aws:123456789012:ap-south-1:vpc:vpc-123',
|
|
107
|
+
canonical_key: 'resource:aws:123456789012:ap-south-1:vpc:vpc-123',
|
|
108
|
+
proposed_name: 'aws-123456789012-ap-south-1-vpc-vpc-123',
|
|
109
|
+
display_name: 'vpc-123',
|
|
110
|
+
source_refs: [{
|
|
111
|
+
provider: 'aws',
|
|
112
|
+
source_node_key: 'aws:123456789012:ap-south-1:vpc:vpc-123',
|
|
113
|
+
scope_key: 'aws:123456789012:ap-south-1:ec2:vpc',
|
|
114
|
+
source_type: 'AWS::EC2::VPC',
|
|
115
|
+
external_id: 'vpc-123',
|
|
116
|
+
status: 'active',
|
|
117
|
+
observed_at: '2026-06-16T00:00:00.000Z',
|
|
118
|
+
}],
|
|
119
|
+
attributes: { provider: 'aws' },
|
|
120
|
+
source_attributes: { aws: { vpc_id: 'vpc-123' } },
|
|
121
|
+
observed_at: '2026-06-16T00:00:00.000Z',
|
|
122
|
+
});
|
|
123
|
+
const relationship = src_1.topologySourceRelationshipCandidateSchema.parse({
|
|
124
|
+
from_source_node_key: node.source_node_key,
|
|
125
|
+
to_source_node_key: 'aws:123456789012:global:account:123456789012',
|
|
126
|
+
relation: 'PART_OF',
|
|
127
|
+
relation_class: 'structural',
|
|
128
|
+
source_edge_key: 'aws:123456789012:ap-south-1:vpc-123:PART_OF:account-123456789012',
|
|
129
|
+
scope_key: 'aws:123456789012:ap-south-1:ec2:vpc',
|
|
130
|
+
canonical_key: 'relationship:aws:vpc-123:part-of:account-123456789012',
|
|
131
|
+
semantic_key: 'aws:123456789012:ap-south-1:structural',
|
|
132
|
+
assertion_type: 'observed',
|
|
133
|
+
confidence: 10,
|
|
134
|
+
confidence_source: 'source_api',
|
|
135
|
+
evidence: [{ type: 'source_ref', ref: node.source_node_key }],
|
|
136
|
+
can_retire_absent: true,
|
|
137
|
+
observed_at: '2026-06-16T00:00:00.000Z',
|
|
138
|
+
});
|
|
139
|
+
strict_1.default.equal(relationship.relation, 'PART_OF');
|
|
140
|
+
});
|
|
141
|
+
(0, node_test_1.default)('parses topology correlation rule metadata and candidate DTOs', () => {
|
|
142
|
+
const rule = src_1.topologyCorrelationRuleMetadataSchema.parse({
|
|
143
|
+
rule_key: 'k8s_service_selector_to_workload',
|
|
144
|
+
rule_version: '1.0.0',
|
|
145
|
+
profile_key: 'default',
|
|
146
|
+
relationship_lane: 'intra_source_correlated',
|
|
147
|
+
relationship_kind: 'deployment_binding',
|
|
148
|
+
relation: 'ROUTES_TO',
|
|
149
|
+
apply_policy: 'selected_apply',
|
|
150
|
+
default_min_confidence: 8,
|
|
151
|
+
required_endpoints: [
|
|
152
|
+
{ entity_type: 'resource', resource_type: 'kubernetes_service' },
|
|
153
|
+
{ entity_type: 'resource', resource_type: 'kubernetes_deployment' },
|
|
154
|
+
],
|
|
155
|
+
evidence_policy: { selector_match: 'required' },
|
|
156
|
+
confidence_policy: { exact_selector_match: 9 },
|
|
157
|
+
ambiguity_policy: { multiple_matches: 'blocked' },
|
|
158
|
+
});
|
|
159
|
+
const candidate = src_1.topologyCorrelationCandidateSchema.parse({
|
|
160
|
+
candidate_key: 'candidate:k8s:svc-checkout:routes-to:deploy-api',
|
|
161
|
+
rule_key: rule.rule_key,
|
|
162
|
+
rule_version: rule.rule_version,
|
|
163
|
+
from: { type: 'resource', id: 'res-k8s-service' },
|
|
164
|
+
to: { type: 'resource', id: 'res-k8s-deployment' },
|
|
165
|
+
relation: rule.relation,
|
|
166
|
+
canonical_key: 'relationship:k8s:service:checkout:routes-to:deployment:api',
|
|
167
|
+
semantic_key: 'k8s:cluster-prod:namespace:checkout:routes-to',
|
|
168
|
+
confidence: { score: 9, source: 'source_api' },
|
|
169
|
+
evidence: [{ type: 'source_ref', ref: 'k8s:cluster-prod:namespace:checkout:service:checkout' }],
|
|
170
|
+
decision: 'ready',
|
|
171
|
+
diagnostics: [{ code: 'selector_match', message: 'Service selector matched one workload' }],
|
|
172
|
+
});
|
|
173
|
+
strict_1.default.equal(candidate.decision, 'ready');
|
|
174
|
+
});
|
|
175
|
+
//# sourceMappingURL=contracts.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.test.js","sourceRoot":"","sources":["../../test/contracts.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@scoutflo/topology-contracts",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Pure shared topology vocabulary and Zod schemas for Scoutflo topology workflows.",
|
|
5
|
+
"main": "dist/src/index.js",
|
|
6
|
+
"types": "dist/src/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc -p tsconfig.json",
|
|
12
|
+
"test": "npm run build && node --test dist/test/*.test.js"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"scoutflo",
|
|
16
|
+
"topology",
|
|
17
|
+
"contracts",
|
|
18
|
+
"zod"
|
|
19
|
+
],
|
|
20
|
+
"author": "Scoutflo",
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@scoutflo/correlation-core": "0.1.0",
|
|
24
|
+
"zod": "^3.23.8"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/node": "^20.14.10",
|
|
28
|
+
"typescript": "^5.5.3"
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"registry": "https://registry.npmjs.org",
|
|
32
|
+
"access": "public"
|
|
33
|
+
}
|
|
34
|
+
}
|