{
  "SPDXID": "SPDXRef-DOCUMENT",
  "name": "nodejs-grunt-cli-0.1.2.0-1.oe2403sp3.aarch64.rpm",
  "spdxVersion": "SPDX-2.2",
  "creationInfo": {
    "created": "2026-05-14T09:44:25.182336603Z",
    "creators": [
      "openeuler_creator"
    ]
  },
  "dataLicense": "CC0-1.0",
  "documentNamespace": "https://sbom.openEuler.org/nodejs-grunt-cli-0.1.2.0-1.oe2403sp3.aarch64.rpm",
  "packages": [
    {
      "SPDXID": "SPDXRef-rpm-nodejs-20.18.2",
      "name": "nodejs",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "883a752505df37bbe821733848888b2fae4b8bb0710f0e069017fd8eb25e1926"
        }
      ],
      "description": "Node.js is a platform built on Chrome's JavaScript runtime\nfor easily building fast, scalable network applications.\nNode.js uses an event-driven, non-blocking I/O model that\nmakes it lightweight and efficient, perfect for data-intensive\nreal-time applications that run across distributed devices.",
      "downloadLocation": "NOASSERTION",
      "externalRefs": [
        {
          "referenceCategory": "PACKAGE_MANAGER",
          "referenceLocator": "pkg:rpm/nodejs@20.18.2-4.oe2403sp3?arch=aarch64&epoch=1&upstream=nodejs-20.18.2-4.oe2403sp3.src.rpm",
          "referenceType": "purl"
        }
      ],
      "filesAnalyzed": false,
      "homepage": "http://nodejs.org/",
      "sourceInfo": "acquired package info from repodata DB: repodata/1237fc88d0e4da3b551ae22f7823fbad70d531e5e3e6588f120954709a623b3c-primary.sqlite.bz2",
      "summary": "JavaScript runtime",
      "supplier": "Organization: http://openeuler.org",
      "versionInfo": "1:20.18.2-4.oe2403sp3"
    },
    {
      "SPDXID": "SPDXRef-rpm-nodejs-grunt-1.0.1",
      "name": "nodejs-grunt",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "bcef09636851c48d392bcb2c7725b9ca394111ecd5741f82e33d7f42e001a714"
        }
      ],
      "description": "Grunt is the JavaScript task runner. Why use a task runner? In one word:\nautomation. The less work you have to do when performing repetitive tasks\nlike minification, compilation, unit testing, linting, etc, the easier\nyour job becomes. After you've configured it, a task runner can do most\nof that mundane work for you with basically zero effort.",
      "downloadLocation": "NOASSERTION",
      "externalRefs": [
        {
          "referenceCategory": "PACKAGE_MANAGER",
          "referenceLocator": "pkg:rpm/nodejs-grunt@1.0.1-6.oe2403sp3?arch=noarch&epoch=0&upstream=nodejs-grunt-1.0.1-6.oe2403sp3.src.rpm",
          "referenceType": "purl"
        }
      ],
      "filesAnalyzed": false,
      "homepage": "https://github.com/gruntjs/grunt",
      "sourceInfo": "acquired package info from repodata DB: repodata/1237fc88d0e4da3b551ae22f7823fbad70d531e5e3e6588f120954709a623b3c-primary.sqlite.bz2",
      "summary": "Grunt is a JavaScript library used for automation and running tasks",
      "supplier": "Organization: http://openeuler.org",
      "versionInfo": "0:1.0.1-6.oe2403sp3"
    }
  ],
  "relationships": [
    {
      "spdxElementId": "SPDXRef-rpm-nodejs-grunt-cli-1.2.0",
      "relationshipType": "DEPENDS_ON",
      "relatedSpdxElement": "SPDXRef-rpm-nodejs-20.18.2"
    },
    {
      "spdxElementId": "SPDXRef-rpm-nodejs-grunt-cli-1.2.0",
      "relationshipType": "DEPENDS_ON",
      "relatedSpdxElement": "SPDXRef-rpm-nodejs-grunt-1.0.1"
    }
  ]
}
