UNPKG

@mitre-attack/attack-data-model

Version:

A TypeScript API for the MITRE ATT&CK data model

70 lines (67 loc) 2.41 kB
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 };