{
  "name": "External Modules Verification",
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        0,
        0
      ],
      "id": "77cc75a6-c7a6-48b1-83c1-7eb17243d3f2",
      "name": "When clicking \u2018Execute workflow\u2019"
    },
    {
      "parameters": {
        "jsCode": "const results = {};\n\n// cheerio\ntry {\n  const cheerio = require(\"cheerio\");\n  const $ = cheerio.load(\"<p>ok</p>\");\n  results.cheerio = $(\"p\").text() === \"ok\";\n} catch (e) {\n  results.cheerio = e.message;\n}\n\n// csv-parse (allowed entry)\ntry {\n  const { parse } = require(\"csv-parse\");\n  results.csv_parse = typeof parse === \"function\";\n} catch (e) {\n  results.csv_parse = e.message;\n}\n\n// form-data\ntry {\n  const FormData = require(\"form-data\");\n  const f = new FormData();\n  f.append(\"a\", \"1\");\n  results.form_data = true;\n} catch (e) {\n  results.form_data = e.message;\n}\n\n// node-fetch (require only)\ntry {\n  const fetchPkg = require(\"node-fetch\");\n  results.node_fetch =\n    typeof fetchPkg === \"function\" || typeof fetchPkg.default === \"function\";\n} catch (e) {\n  results.node_fetch = e.message;\n}\n\n// axios\ntry {\n  const axios = require(\"axios\");\n  results.axios = typeof axios === \"function\";\n} catch (e) {\n  results.axios = e.message;\n}\n\n// moment\ntry {\n  const moment = require(\"moment\");\n  results.moment = moment(\"2025-01-01\").year() === 2025;\n} catch (e) {\n  results.moment = e.message;\n}\n\n// uuid\ntry {\n  const { v4: uuidv4 } = require(\"uuid\");\n  const id = uuidv4();\n  results.uuid = typeof id === \"string\" && id.length > 0;\n} catch (e) {\n  results.uuid = e.message;\n}\n\nreturn [{ json: results }];\n"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        208,
        0
      ],
      "id": "28469a25-cace-4cf6-8ab7-121d67432b82",
      "name": "Node Modules Test"
    },
    {
      "parameters": {
        "language": "pythonNative",
        "pythonCode": "# Script for old version n8n, for new n8n do not import numpy\n# results = {}\n\n# # numpy\n# try:\n#     import numpy as np\n#     arr = np.array([1, 2, 3])\n#     results[\"numpy\"] = int(arr.sum()) == 6\n# except Exception as e:\n#     results[\"numpy\"] = str(e)\n\n# # pandas\n# try:\n#     import pandas as pd\n#     df = pd.DataFrame({\"a\": [1, 2], \"b\": [3, 4]})\n#     results[\"pandas\"] = int(df[\"a\"].sum()) == 3\n# except Exception as e:\n#     results[\"pandas\"] = str(e)\n\n# return results\n\n\n\nresults = {}\n\n# numpy (simulated)\ntry:\n    arr = [1, 2, 3]\n    results[\"numpy\"] = sum(arr) == 6\nexcept Exception as e:\n    results[\"numpy\"] = str(e)\n\n# pandas\ntry:\n    import pandas as pd\n    df = pd.DataFrame({\"a\": [1, 2], \"b\": [3, 4]})\n    results[\"pandas\"] = int(df[\"a\"].sum()) == 3\nexcept Exception as e:\n    results[\"pandas\"] = str(e)\n\nreturn results"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        416,
        0
      ],
      "id": "8f1fcfdc-836f-4324-9fb6-eb4234bd2bbb",
      "name": "Python Modules Test"
    }
  ],
  "connections": {
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Node Modules Test",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Node Modules Test": {
      "main": [
        [
          {
            "node": "Python Modules Test",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate",
    "availableInMCP": false
  },
  "versionId": "37ff808d-226b-4263-8e49-54d5e7b748eb",
  "id": "kx5JTfcNEM8D1Cj-q2QBR",
  "tags": []
}