UNPKG

@mitre-attack/attack-data-model

Version:

A TypeScript API for the MITRE ATT&CK data model

53 lines (51 loc) 1.95 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/data-sources/fetch-attack-versions.ts var fetch_attack_versions_exports = {}; __export(fetch_attack_versions_exports, { fetchAttackVersions: () => fetchAttackVersions }); module.exports = __toCommonJS(fetch_attack_versions_exports); function normalizeVersion(version) { return version.replace(/^v/, ""); } async function fetchAttackVersions() { const url = "https://api.github.com/repos/mitre-attack/attack-stix-data/releases"; const response = await fetch(url, { headers: { Accept: "application/vnd.github+json", "X-GitHub-Api-Version": "2022-11-28" } }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const releases = await response.json(); const versions = releases.map((release) => normalizeVersion(release.tag_name)).sort((a, b) => { const [aMajor, aMinor] = a.split(".").map(Number); const [bMajor, bMinor] = b.split(".").map(Number); if (bMajor !== aMajor) return bMajor - aMajor; return bMinor - aMinor; }); return versions; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { fetchAttackVersions });