{
  "SPDXID": "SPDXRef-DOCUMENT",
  "name": "nodejs-grunt-cli-0.1.2.0-1.oe2403.aarch64.rpm",
  "spdxVersion": "SPDX-2.2",
  "creationInfo": {
    "created": "2026-05-15T06:57:53.750891916Z",
    "creators": [
      "openeuler_creator"
    ]
  },
  "dataLicense": "CC0-1.0",
  "documentNamespace": "https://sbom.openEuler.org/nodejs-grunt-cli-0.1.2.0-1.oe2403.aarch64.rpm",
  "packages": [
    {
      "SPDXID": "SPDXRef-rpm-nodejs-20.11.1",
      "name": "nodejs",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "110ed2a71d9d19020d0ca5d8792c61d125579bf7f6153faef65471daa5221bed"
        }
      ],
      "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.11.1-3.oe2403?arch=x86_64&epoch=1&upstream=nodejs-20.11.1-3.oe2403.src.rpm",
          "referenceType": "purl"
        }
      ],
      "filesAnalyzed": false,
      "homepage": "http://nodejs.org/",
      "sourceInfo": "acquired package info from repodata DB: repodata/87ee4e92c1e5173adb9dd158ec9c2e7bd500bbe68c80fdd1cfc6721bbb15534f-primary.sqlite.bz2",
      "summary": "JavaScript runtime",
      "supplier": "Organization: http://openeuler.org",
      "versionInfo": "1:20.11.1-3.oe2403"
    },
    {
      "SPDXID": "SPDXRef-rpm-nodejs-grunt-1.0.1",
      "name": "nodejs-grunt",
      "checksums": [
        {
          "algorithm": "SHA256",
          "checksumValue": "dc222da0318ab2fedf8f1d5c6481b893d2fb0171a06564e876842a5de047b001"
        }
      ],
      "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.oe2403?arch=noarch&epoch=0&upstream=nodejs-grunt-1.0.1-6.oe2403.src.rpm",
          "referenceType": "purl"
        }
      ],
      "filesAnalyzed": false,
      "homepage": "https://github.com/gruntjs/grunt",
      "sourceInfo": "acquired package info from repodata DB: repodata/87ee4e92c1e5173adb9dd158ec9c2e7bd500bbe68c80fdd1cfc6721bbb15534f-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.oe2403"
    }
  ],
  "relationships": [
    {
      "spdxElementId": "SPDXRef-rpm-nodejs-grunt-cli-1.2.0",
      "relationshipType": "DEPENDS_ON",
      "relatedSpdxElement": "SPDXRef-rpm-nodejs-20.11.1"
    },
    {
      "spdxElementId": "SPDXRef-rpm-nodejs-grunt-cli-1.2.0",
      "relationshipType": "DEPENDS_ON",
      "relatedSpdxElement": "SPDXRef-rpm-nodejs-grunt-1.0.1"
    }
  ]
}
