@mitre-attack/attack-data-model
Version:
A TypeScript API for the MITRE ATT&CK data model
70 lines (67 loc) • 2.41 kB
JavaScript
import {
attackBaseDomainObjectSchema
} from "./chunk-63MLXW5B.js";
import {
descriptionSchema,
objectMarkingRefsSchema,
xMitreContributorsSchema,
xMitreDomainsSchema,
xMitreModifiedByRefSchema,
xMitrePlatformsSchema
} from "./chunk-7SVTHS3K.js";
import {
createAttackExternalReferencesSchema
} from "./chunk-ZAIY3U5E.js";
import {
createStixIdValidator
} from "./chunk-BX5HSTNG.js";
import {
createStixTypeValidator
} from "./chunk-E6AAF2HD.js";
// src/schemas/sdo/asset.schema.ts
import { z } from "zod";
var supportedAssetSectors = [
"Electric",
"Water and Wastewater",
"Manufacturing",
"Rail",
"Maritime",
"General"
];
var xMitreSectorsSchema = z.array(z.enum(supportedAssetSectors), {
invalid_type_error: "related_asset_sectors must be an array."
}).describe("List of industry sector(s) an asset may be commonly observed in.");
var relatedAssetSchema = z.object({
name: z.string({
required_error: "Related asset name is required.",
invalid_type_error: "Related asset name must be a string."
}),
related_asset_sectors: xMitreSectorsSchema.optional(),
description: descriptionSchema.optional()
});
var relatedAssetsSchema = z.array(relatedAssetSchema).describe(
"Related assets describe sector specific device names or alias that may be commonly associated with the primary asset page name or functional description. Related asset objects include a description of how the related asset is associated with the page definition."
);
var extensibleAssetSchema = attackBaseDomainObjectSchema.extend({
id: createStixIdValidator("x-mitre-asset"),
type: createStixTypeValidator("x-mitre-asset"),
description: descriptionSchema.optional(),
// Optional in STIX but required in ATT&CK
external_references: createAttackExternalReferencesSchema("x-mitre-asset"),
// Optional in STIX but required in ATT&CK
object_marking_refs: objectMarkingRefsSchema,
x_mitre_platforms: xMitrePlatformsSchema.optional(),
x_mitre_domains: xMitreDomainsSchema,
x_mitre_contributors: xMitreContributorsSchema.optional(),
x_mitre_sectors: xMitreSectorsSchema.optional(),
x_mitre_related_assets: relatedAssetsSchema.optional(),
x_mitre_modified_by_ref: xMitreModifiedByRefSchema.optional()
}).strict();
var assetSchema = extensibleAssetSchema;
export {
xMitreSectorsSchema,
relatedAssetSchema,
relatedAssetsSchema,
extensibleAssetSchema,
assetSchema
};