{
  "name": "parseley",
  "versions": {
    "0.5.0": {
      "name": "parseley",
      "version": "0.5.0",
      "keywords": [
        "CSS",
        "selectors",
        "parser",
        "AST",
        "serializer",
        "specificity"
      ],
      "author": {
        "name": "KillyMXI"
      },
      "license": "MIT",
      "_id": "parseley@0.5.0",
      "maintainers": [
        {
          "name": "killy.mxi",
          "email": "killy.mxi@gmail.com"
        }
      ],
      "homepage": "https://github.com/mxxii/parseley",
      "bugs": {
        "url": "https://github.com/mxxii/parseley/issues"
      },
      "ava": {
        "files": [
          "test/**/*"
        ],
        "verbose": true
      },
      "dist": {
        "shasum": "6b25a654a0b51b36148c2969a7da55f94b7f8d46",
        "tarball": "http://mirrors.tencentyun.com/npm/parseley/-/parseley-0.5.0.tgz",
        "fileCount": 7,
        "integrity": "sha512-sd/jo04pMazGz0C+IFH6h1Y9L36iyQj0lTcjcidGNJlF4pNSiCdCgEbPcTGnYtZ8xIquXeUNJvOdLmZvbBGK2A==",
        "signatures": [
          {
            "sig": "MEQCID+OCg3Hgl0sHJ8I/4YhTIsFB/wjLmZ2VGfxc22CYjFMAiAISPWkg5Z331wyiNtuvkJwKPlKxY1zswLpRRvXH8ut+g==",
            "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"
          }
        ],
        "unpackedSize": 20217,
        "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgayRjCRA9TVsSAnZWagAAneoP/2ZkbS3zpaLMp9sQ5UPD\ndHEzaFOCV72HEKTtGSa12Fs5P6YaGHo56yDuodNrMsr6L5jQovJ4tIkmr5w0\n6/ELCf0PN2O812pFCylotzQC/jVjVc5/MoAvebRRKOt4b+EmZQCRQqGVxyMF\ngD5eALUv+rX9R4R6e6B8vAnObkVJxJhYudfrmejN1GC/ymkuKITsVuyUsD43\nQYX14sZd8reOxg7StZcBdzL4EVybGi4dTP6kr3vEyewujwkHfg1QlNliyMOe\nhcaKWBwLL6NKFX+surnU75K+TtDT8DMEddfa0Lz4BJjrDuttF+m+jQeL/JAc\nPT356OAFMVq1CWWJPI0IcHXOQu9XxxehISP8yC0zq5i7Q4h3Rz9QQezsVLKU\noCd3hl7FrY7sEGRWxgeMrsMPTr4MoNob6+WRnLmJHXoevXG3PHmQzv/Jc7v6\n68vWV8kIxWQz+lvdM3HU3+LEgGR3oXBWZlaB6eJ//Nm4T0x9tsl/ZRvpYr0m\nBFIMQw93rTy+Pz7ln9+hNP1WdrSxnd1cXtTWFvEqMvM5Fk93mD4WE92n1L2/\nkecOBzLpmqfm9mijNbt4d4w9sOHvEZ4SjtvAWK2f12mcYyXWFKVcFUNlTiiu\nHu3hdnl3JUjDwQMQFB7FLwyo1cOAxOlz2I3vY+r+zkkNuIuWQAFIbgP0SSZl\nLiIW\r\n=N9bU\r\n-----END PGP SIGNATURE-----\r\n"
      },
      "main": "index.js",
      "funding": "https://ko-fi.com/killymxi",
      "gitHead": "2a795a2986705f5116f47d907af5d783eda52e4c",
      "scripts": {
        "lint": "npm run lint:eslint && npm run lint:md",
        "test": "ava",
        "lint:md": "markdownlint --ignore-path .gitignore .",
        "nearley": "nearleyc ./lib/grammar.ne -o ./lib/grammar.js",
        "pretest": "npm run nearley",
        "checkAll": "npm run lint && npm test",
        "lint:eslint": "eslint .",
        "prepublishOnly": "npm run checkAll"
      },
      "_npmUser": {
        "name": "killy.mxi",
        "email": "killy.mxi@gmail.com"
      },
      "repository": {
        "url": "git+https://github.com/mxxii/parseley.git",
        "type": "git"
      },
      "_npmVersion": "6.14.10",
      "description": "CSS selectors parser, based on nearley",
      "directories": {},
      "_nodeVersion": "10.23.2",
      "dependencies": {
        "moo": "^0.5.1",
        "nearley": "^2.20.1"
      },
      "_hasShrinkwrap": false,
      "devDependencies": {
        "ava": "^3.15.0",
        "eslint": "^7.23.0",
        "markdownlint-cli": "^0.27.1",
        "eslint-plugin-jsdoc": "^32.3.0",
        "eslint-plugin-jsonc": "^1.2.1"
      },
      "_npmOperationalInternal": {
        "tmp": "tmp/parseley_0.5.0_1617634403300_0.7981243640082138",
        "host": "s3://npm-registry-packages"
      },
      "contributors": []
    },
    "0.6.0": {
      "name": "parseley",
      "version": "0.6.0",
      "keywords": [
        "CSS",
        "selectors",
        "parser",
        "AST",
        "serializer",
        "specificity"
      ],
      "author": {
        "name": "KillyMXI"
      },
      "license": "MIT",
      "_id": "parseley@0.6.0",
      "maintainers": [
        {
          "name": "killy.mxi",
          "email": "killy.mxi@gmail.com"
        }
      ],
      "homepage": "https://github.com/mxxii/parseley",
      "bugs": {
        "url": "https://github.com/mxxii/parseley/issues"
      },
      "ava": {
        "files": [
          "test/**/*"
        ],
        "verbose": true
      },
      "dist": {
        "shasum": "743037ac1899e1a17cc3854e854787a7b45ee595",
        "tarball": "http://mirrors.tencentyun.com/npm/parseley/-/parseley-0.6.0.tgz",
        "fileCount": 7,
        "integrity": "sha512-vJMBChFNVtaqlBQnmeo8HsZurKrqUOcTW3YXO1Q0xE6itE1jNm0aBF7Q/OzhAl6ZaMGghlzCJwnbS/X4aLYB1A==",
        "signatures": [
          {
            "sig": "MEYCIQC1mxu8pCYZL3MZdH+xD1pDOLsrRPOtLALLQH9clV5T4QIhALXe+bSLIhRol2FMMHINhV2cbvf4rZo4itB0AQfWyMO2",
            "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"
          }
        ],
        "unpackedSize": 23388,
        "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbHOkCRA9TVsSAnZWagAAaXcQAJLAUTUOV8+th3KNxqI+\nXUGQuMfu+TsTvrNCSKkGCxe6BjEhioASwBvikEqljGct4G7NFpLn4Zl1YqLn\nzh/7QY0zB9uGVC3Ap/UcQtwXxx6qD7NGXKTCbpBcVjFn6NxGhiknv+Ci276w\nQjijSPQGICjP2fwHEKSmsqVLFoDtdDC3revNkp4CAoaOmD9J2V2jOgl3BNvp\nJTv6bNq450E1D03olKgMyC8pa9GZ2RqIN0DruYqoIlfkAM3NQM7nuniA2tVf\noTs6ym7HCRKJKo18Ats5OTRph7/Eengr1iuv7K18ZewIC3l9K29000goKWh9\nNS48JogaVShVyYHwqZIe5OlCb68SPZS8pxh9VeRhxMVPD84ABHRYC/6/rZOb\n0MpYj6ExDovf/+nl/JotdH3p/GRA/jjIRHbX3NRSvPy1VfAYGVQH1mg9owx+\nBYEdgTP6076PLrTGE1i3XtP5OuRBBUviZxOYIQsZC/sbpXEuWFpg2OSX+szZ\n0Yo6IzFXau6llzbsPwsT9Mg626B2tWX0qFJ6CuD2q5jIbndmqDDbt0kEkIpi\nnSOmj8KQZmuB9NVi6n616xuqoq60hoaluBwoAMTiJHPPEyd8LgP7ZEVpKXpe\nZbXmsZZaGU4OaLB1pchFgsjIFRY9UVPXib7nL0Pnpw6rmPoEwOsXl6lDCzkG\nDCQT\r\n=p/kE\r\n-----END PGP SIGNATURE-----\r\n"
      },
      "main": "index.js",
      "funding": "https://ko-fi.com/killymxi",
      "gitHead": "0e9a85d6a53176a6dbf7c0f6669ddc2c8752a9fc",
      "scripts": {
        "lint": "npm run lint:eslint && npm run lint:md",
        "test": "ava",
        "lint:md": "markdownlint --ignore-path .gitignore .",
        "nearley": "nearleyc ./lib/grammar.ne -o ./lib/grammar.js",
        "pretest": "npm run nearley",
        "checkAll": "npm run lint && npm test",
        "lint:eslint": "eslint .",
        "prepublishOnly": "npm run checkAll"
      },
      "_npmUser": {
        "name": "killy.mxi",
        "email": "killy.mxi@gmail.com"
      },
      "repository": {
        "url": "git+https://github.com/mxxii/parseley.git",
        "type": "git"
      },
      "_npmVersion": "6.14.10",
      "description": "CSS selectors parser, based on nearley",
      "directories": {},
      "_nodeVersion": "10.23.2",
      "dependencies": {
        "moo": "^0.5.1",
        "nearley": "^2.20.1"
      },
      "_hasShrinkwrap": false,
      "devDependencies": {
        "ava": "^3.15.0",
        "eslint": "^7.23.0",
        "markdownlint-cli": "^0.27.1",
        "eslint-plugin-jsdoc": "^32.3.0",
        "eslint-plugin-jsonc": "^1.2.1"
      },
      "_npmOperationalInternal": {
        "tmp": "tmp/parseley_0.6.0_1617720227456_0.6218221835531501",
        "host": "s3://npm-registry-packages"
      },
      "contributors": []
    },
    "0.7.0": {
      "name": "parseley",
      "version": "0.7.0",
      "keywords": [
        "CSS",
        "selectors",
        "parser",
        "AST",
        "serializer",
        "specificity"
      ],
      "author": {
        "name": "KillyMXI"
      },
      "license": "MIT",
      "_id": "parseley@0.7.0",
      "maintainers": [
        {
          "name": "killy.mxi",
          "email": "killy.mxi@gmail.com"
        }
      ],
      "homepage": "https://github.com/mxxii/parseley",
      "bugs": {
        "url": "https://github.com/mxxii/parseley/issues"
      },
      "ava": {
        "files": [
          "test/**/*"
        ],
        "require": [
          "ts-node/register"
        ],
        "verbose": true,
        "extensions": [
          "ts"
        ],
        "environmentVariables": {
          "TS_NODE_FILES": "true"
        }
      },
      "dist": {
        "shasum": "9949e3a0ed05c5072adb04f013c2810cf49171a8",
        "tarball": "http://mirrors.tencentyun.com/npm/parseley/-/parseley-0.7.0.tgz",
        "fileCount": 8,
        "integrity": "sha512-xyOytsdDu077M3/46Am+2cGXEKM9U9QclBDv7fimY7e+BBlxh2JcBp2mgNsmkyA9uvgyTjVzDi7cP1v4hcFxbw==",
        "signatures": [
          {
            "sig": "MEUCIA5xRHI08Bxhq4LHfWnIzSd2kCT4glbkY3gTIQ3Hv8S1AiEA4fs40Cp7iUH75t6nuYzJooJhvWfdVGVc0Ht35FE1NpA=",
            "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"
          }
        ],
        "unpackedSize": 46104,
        "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfDIDCRA9TVsSAnZWagAAMMwQAIZkbSJkBGLHZmhX7ETD\n5sHU9cN6XhaJ3vocaf2ULz2nkgfy6ls2x5mIzDJO4OIGTqzgwdcsJJPO434a\n3ehUWwo4zYyAZ3Z1XvdJCvfc8vUCgyJaYWpLvqZlVVzbTRoXIb7NZXgWM/uI\ngPBFeem6MrZWx+Z6RnaiBBcY8S3egMSpe+oNXk/mOSCfQVLxPjahfRmm/bl1\nB0u2y1yKN189bZOnBJ60p52NzhUfgbzPVjWrG1NhpDs4nNNQ5s+xPMSwiVQv\nBx91gfdW+MBiVQcUtEoCfSTG+9xjuLs71ZW2iuxk6Qa2s66rFxiKnjovqbtB\n6dB8daycTK4iihG7A59yzZ7e5BHBIJHuwftqp56oBn6JnJEUdLgLRk71bSuL\n+4BpVJFp/2CCH/ftYmOc3SgT7cZHSFWiPZew3SQwIlL1f7XlvWAbJq50RP/L\n/93pDkBSC0GuWJ7+hvlH+QOoQy3qoApdELrmYv08LOKtmhr0xCTfe1zadQd5\nCqK+d5QpuaXzeBjM7IDaJnIyremah25vELSlmcGdxMVL5phiqIh0+pC3jyOK\nUzdn1FqpUi6or8o7sxoteYAUz66KYYj4ACcEVY76zW8Cqka+Pj0F//oecL+v\naJdezJFHZyCXTWLN3pOphZvELUWjYYhe17tQZREWvTRGY0kLjDyBBhwxc9M+\nJkiJ\r\n=pcqO\r\n-----END PGP SIGNATURE-----\r\n"
      },
      "main": "./lib/parseley.cjs",
      "type": "module",
      "types": "./lib/parseley.d.ts",
      "module": "./lib/parseley.mjs",
      "exports": {
        "import": "./lib/parseley.mjs",
        "require": "./lib/parseley.cjs"
      },
      "funding": "https://ko-fi.com/killymxi",
      "gitHead": "bf5ae7cb9037a01ff12c902f547c5290f9d103ea",
      "scripts": {
        "lint": "npm run lint:eslint && npm run lint:md",
        "test": "ava",
        "build": "npm run nearley && npm run clean && npm run build:rollup && npm run build:types && npm run build:docs",
        "clean": "rimraf lib",
        "example": "node ./example/example.cjs",
        "lint:md": "markdownlint --ignore-path .gitignore .",
        "nearley": "nearleyc ./src/grammar.ne -o ./src/grammar.ts",
        "pretest": "npm run nearley",
        "checkAll": "npm run lint && npm test",
        "build:docs": "typedoc",
        "build:types": "tsc -d --emitDeclarationOnly --declarationDir ./lib && rimraf ./lib/grammar.d.ts",
        "lint:eslint": "eslint .",
        "build:rollup": "rollup -c",
        "prepublishOnly": "npm run build && npm run checkAll"
      },
      "_npmUser": {
        "name": "killy.mxi",
        "email": "killy.mxi@gmail.com"
      },
      "repository": {
        "url": "git+https://github.com/mxxii/parseley.git",
        "type": "git"
      },
      "_npmVersion": "6.14.10",
      "description": "CSS selectors parser, based on nearley",
      "directories": {},
      "_nodeVersion": "10.23.2",
      "dependencies": {
        "moo": "^0.5.1",
        "nearley": "^2.20.1"
      },
      "_hasShrinkwrap": false,
      "devDependencies": {
        "ava": "^3.15.0",
        "tslib": "^2.2.0",
        "eslint": "^7.24.0",
        "rimraf": "^3.0.2",
        "rollup": "^2.45.2",
        "ts-node": "^9.1.1",
        "typedoc": "^0.20.35",
        "@types/moo": "^0.5.4",
        "typescript": "^4.2.4",
        "@types/nearley": "^2.11.1",
        "@tsconfig/node10": "^1.0.7",
        "markdownlint-cli": "^0.27.1",
        "eslint-plugin-jsonc": "^1.2.1",
        "eslint-plugin-tsdoc": "^0.2.12",
        "typedoc-plugin-markdown": "^3.7.0",
        "@rollup/plugin-typescript": "^8.2.1",
        "@typescript-eslint/parser": "^4.22.0",
        "@typescript-eslint/eslint-plugin": "^4.22.0"
      },
      "_npmOperationalInternal": {
        "tmp": "tmp/parseley_0.7.0_1618752002861_0.39777707786439964",
        "host": "s3://npm-registry-packages"
      },
      "contributors": []
    },
    "0.8.0": {
      "name": "parseley",
      "version": "0.8.0",
      "keywords": [
        "CSS",
        "selectors",
        "parser",
        "AST",
        "serializer",
        "specificity"
      ],
      "author": {
        "name": "KillyMXI"
      },
      "license": "MIT",
      "_id": "parseley@0.8.0",
      "maintainers": [
        {
          "name": "killy.mxi",
          "email": "killy.mxi@gmail.com"
        }
      ],
      "homepage": "https://github.com/mxxii/parseley",
      "bugs": {
        "url": "https://github.com/mxxii/parseley/issues"
      },
      "ava": {
        "files": [
          "test/**/*"
        ],
        "require": [
          "ts-node/register"
        ],
        "verbose": true,
        "extensions": [
          "ts"
        ],
        "environmentVariables": {
          "TS_NODE_FILES": "true"
        }
      },
      "dist": {
        "shasum": "acb2550278e360527b0d9a868f0e30e5beaf93d2",
        "tarball": "http://mirrors.tencentyun.com/npm/parseley/-/parseley-0.8.0.tgz",
        "fileCount": 8,
        "integrity": "sha512-uIMOtH5LLE3HX1mTfCqFyp4jtUi+eaQDDq8IVRaf7B9Eu5L+Y/kltCzzE1sas1UO/Kr5h5UjGz7jGwwMu0sW+Q==",
        "signatures": [
          {
            "sig": "MEUCIQCnmXpbi00Xp00ffE1PvdOs85TteXuPdF7mehjTt9mcXQIgSzliSRPmhjTgqhjc/MudZ2ow60VGTdD2D6JMEhcjaQY=",
            "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"
          }
        ],
        "unpackedSize": 46357
      },
      "main": "./lib/parseley.cjs",
      "type": "module",
      "types": "./lib/parseley.d.ts",
      "module": "./lib/parseley.mjs",
      "exports": {
        "import": "./lib/parseley.mjs",
        "require": "./lib/parseley.cjs"
      },
      "funding": "https://ko-fi.com/killymxi",
      "gitHead": "ffa882766b1aadecf2ac9a23424348c90e25b150",
      "scripts": {
        "lint": "npm run lint:eslint && npm run lint:md",
        "test": "ava --timeout=20s",
        "build": "npm run nearley && npm run clean && npm run build:rollup && npm run build:types && npm run build:docs",
        "clean": "rimraf lib",
        "example": "node ./example/example.cjs",
        "lint:md": "markdownlint-cli2",
        "nearley": "nearleyc ./src/grammar.ne -o ./src/grammar.ts",
        "pretest": "npm run nearley",
        "checkAll": "npm run lint && npm test",
        "build:docs": "typedoc",
        "build:types": "tsc --declaration --emitDeclarationOnly && rimraf ./lib/grammar.d.ts",
        "lint:eslint": "eslint .",
        "build:rollup": "rollup -c",
        "prepublishOnly": "npm run build && npm run checkAll"
      },
      "_npmUser": {
        "name": "killy.mxi",
        "email": "killy.mxi@gmail.com"
      },
      "repository": {
        "url": "git+https://github.com/mxxii/parseley.git",
        "type": "git"
      },
      "_npmVersion": "6.14.15",
      "description": "CSS selectors parser, based on nearley",
      "directories": {},
      "_nodeVersion": "12.22.6",
      "dependencies": {
        "moo": "^0.5.1",
        "nearley": "^2.20.1"
      },
      "_hasShrinkwrap": false,
      "devDependencies": {
        "ava": "^3.15.0",
        "tslib": "^2.3.1",
        "eslint": "^7.32.0",
        "rimraf": "^3.0.2",
        "rollup": "^2.59.0",
        "ts-node": "^9.1.1",
        "typedoc": "^0.22.8",
        "@types/moo": "^0.5.5",
        "typescript": "^4.4.4",
        "@types/node": "^12.20.37",
        "@types/nearley": "^2.11.2",
        "@tsconfig/node12": "^1.0.9",
        "markdownlint-cli2": "^0.1.3",
        "eslint-plugin-jsonc": "^2.0.0",
        "eslint-plugin-tsdoc": "^0.2.14",
        "typedoc-plugin-markdown": "^3.11.3",
        "@rollup/plugin-typescript": "^8.3.0",
        "@typescript-eslint/parser": "^5.3.1",
        "@typescript-eslint/eslint-plugin": "^5.3.1"
      },
      "_npmOperationalInternal": {
        "tmp": "tmp/parseley_0.8.0_1636581763863_0.2595927599089862",
        "host": "s3://npm-registry-packages"
      },
      "contributors": []
    },
    "0.9.0": {
      "name": "parseley",
      "version": "0.9.0",
      "keywords": [
        "CSS",
        "selectors",
        "parser",
        "AST",
        "serializer",
        "specificity"
      ],
      "author": {
        "name": "KillyMXI"
      },
      "license": "MIT",
      "_id": "parseley@0.9.0",
      "maintainers": [
        {
          "name": "killy.mxi",
          "email": "killy.mxi@gmail.com"
        }
      ],
      "homepage": "https://github.com/mxxii/parseley",
      "bugs": {
        "url": "https://github.com/mxxii/parseley/issues"
      },
      "ava": {
        "files": [
          "test/**/*"
        ],
        "verbose": true,
        "extensions": {
          "ts": "module"
        },
        "nodeArguments": [
          "--loader=ts-node/esm",
          "--experimental-specifier-resolution=node"
        ],
        "nonSemVerExperiments": {
          "configurableModuleFormat": true
        }
      },
      "dist": {
        "shasum": "8c658b8c37f6c852cd43e1c28983d195b1cea8a7",
        "tarball": "http://mirrors.tencentyun.com/npm/parseley/-/parseley-0.9.0.tgz",
        "fileCount": 9,
        "integrity": "sha512-Ak7bnHnFPbNaTv8A6cNDcU4fDSOo5g1On7pboGaXTpct3CFST5pGHdgRZuNSkzCDseYRGdBNfs5eDSNcClyPjw==",
        "signatures": [
          {
            "sig": "MEYCIQCxqO8Id3gPWjXKKyw9KUPE0yZ6HKHGGGTppRgG7cKJkQIhAO8eMYDMkkqYkhUlVs0vC2KCeCCrps5HHFZYQfXNK//h",
            "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"
          }
        ],
        "unpackedSize": 26743,
        "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrNGHCRA9TVsSAnZWagAAVVoP/2RbDfikZbgDUsO2zhq2\n7XchAtA76RjLY0Q9R/d/cG+DkTUgQaH0R9Aj1yiJxY2ViozEF3MA0dGWOWYc\nA7lCLb1Vj+1FJ7YeDMaMNNlgPRV2vjJpr/MRUW3iWjCjFOjf884ZEYreZcw1\ncPR4iThqiq9JHfBU+KW8fe2A13Gml04JuJc+nwYhVcuiJs1jWkz4/To7MYvE\nfQ8EC6S7Nu38ZjfanwKi4pUiRv1+6GtS+xPzyUtD4+gwaGfgzOWvOkjCAAjf\nfKvVzNNQ5+3dx5OaXF/CbfKBM4hnkVvbJJmQFKUUPQTuLcSC8Pha/xsQzPRx\nB4FQdUnLdmrI0DLdvKBRi1JEAFJXT4nRbo9KjeIQJfeBQZH7pcKRsC/R/kUR\npBNZvN/wFAMaKdqR8/T8Om+bqZ2RCi3+cIeiNbyP5UnOG9ZEuC0UPsGr70dS\nte3XG806sy2jWRaJ7K+OPHXWAlvvGfbptLdUgQ0nrBarrYHTOmTCQm2IV8wC\nWB2boirKrlPk7KC84tFL7XpmNZOY9gXGhmH9F5O0CSUQBK5EA3uNtS/A0CBU\n/0JqtsFw57BQmWpZZpw3h+Yfzn4rBaQSLKE3Ro5AdscTDT+sJLm4Xd80nr5J\n2MJj5asbKpLGg9kc1M6T0suVAsJvqBh8Wr3Qv/I8EHtbyAYzPumOGSpNJr9A\n+blL\r\n=vBUZ\r\n-----END PGP SIGNATURE-----\r\n"
      },
      "main": "./lib/parseley.cjs",
      "type": "module",
      "types": "./lib/parseley.d.ts",
      "module": "./lib/parseley.mjs",
      "denoify": {
        "out": "./deno",
        "ports": {
          "leac": "https://deno.land/x/leac/leac.ts",
          "peberminta": "https://deno.land/x/peberminta/core.ts"
        }
      },
      "exports": {
        "import": "./lib/parseley.mjs",
        "require": "./lib/parseley.cjs"
      },
      "funding": "https://ko-fi.com/killymxi",
      "gitHead": "c74d63cfe98558b37b7cc9d6a3d54e3a02d2d071",
      "scripts": {
        "lint": "npm run lint:eslint && npm run lint:md",
        "test": "ava --timeout=20s",
        "build": "npm run clean && npm run build:rollup && npm run build:types && npm run build:docs && npm run build:deno",
        "clean": "rimraf lib",
        "example": "node ./example/example.cjs",
        "lint:md": "markdownlint-cli2",
        "checkAll": "npm run lint && npm test",
        "build:deno": "denoify",
        "build:docs": "typedoc",
        "build:types": "tsc --declaration --emitDeclarationOnly",
        "lint:eslint": "eslint .",
        "build:rollup": "rollup -c",
        "prepublishOnly": "npm run build && npm run checkAll"
      },
      "_npmUser": {
        "name": "killy.mxi",
        "email": "killy.mxi@gmail.com"
      },
      "repository": {
        "url": "git+https://github.com/mxxii/parseley.git",
        "type": "git"
      },
      "_npmVersion": "6.14.15",
      "description": "CSS selectors parser",
      "directories": {},
      "sideEffects": false,
      "_nodeVersion": "12.22.6",
      "dependencies": {
        "leac": "^0.5.0",
        "peberminta": "^0.5.2"
      },
      "_hasShrinkwrap": false,
      "devDependencies": {
        "ava": "^3.15.0",
        "tslib": "^2.3.1",
        "eslint": "^8.4.0",
        "rimraf": "^3.0.2",
        "rollup": "^2.60.2",
        "denoify": "^0.10.5",
        "ts-node": "^10.4.0",
        "typedoc": "^0.22.10",
        "typescript": "^4.5.2",
        "@types/node": "^12.20.37",
        "@tsconfig/node12": "^1.0.9",
        "markdownlint-cli2": "^0.3.2",
        "eslint-plugin-jsonc": "^2.0.0",
        "eslint-plugin-tsdoc": "^0.2.14",
        "rollup-plugin-terser": "^7.0.2",
        "typedoc-plugin-markdown": "^3.11.7",
        "@rollup/plugin-typescript": "^8.3.0",
        "@typescript-eslint/parser": "^5.5.0",
        "@typescript-eslint/eslint-plugin": "^5.5.0"
      },
      "_npmOperationalInternal": {
        "tmp": "tmp/parseley_0.9.0_1638715783086_0.2393660736938379",
        "host": "s3://npm-registry-packages"
      },
      "contributors": []
    },
    "0.9.1": {
      "name": "parseley",
      "version": "0.9.1",
      "keywords": [
        "CSS",
        "selectors",
        "parser",
        "AST",
        "serializer",
        "specificity"
      ],
      "author": {
        "name": "KillyMXI"
      },
      "license": "MIT",
      "_id": "parseley@0.9.1",
      "maintainers": [
        {
          "name": "killy.mxi",
          "email": "killy.mxi@gmail.com"
        }
      ],
      "homepage": "https://github.com/mxxii/parseley",
      "bugs": {
        "url": "https://github.com/mxxii/parseley/issues"
      },
      "ava": {
        "files": [
          "test/**/*"
        ],
        "verbose": true,
        "extensions": {
          "ts": "module"
        },
        "nodeArguments": [
          "--loader=ts-node/esm",
          "--experimental-specifier-resolution=node"
        ],
        "nonSemVerExperiments": {
          "configurableModuleFormat": true
        }
      },
      "dist": {
        "shasum": "e13d1259dcaac3504ad2846aa904bc6c83c90c73",
        "tarball": "http://mirrors.tencentyun.com/npm/parseley/-/parseley-0.9.1.tgz",
        "fileCount": 9,
        "integrity": "sha512-nA3YKrbL2t4vhenGoOVANeOh2F2nnbupQQnWH+K5ZekItYrhuKvuuTV7DSSjNTqvrbVO2cudAqJCaeiPX3/VZA==",
        "signatures": [
          {
            "sig": "MEYCIQCekeAnnMwG0HNERwIR1ezab0HgHDV16PXgRHRAhfmnpAIhAKC1KsDCLIFVJ7NO9U+zoKxduwqYp4GHe/CDK25h+zPV",
            "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"
          }
        ],
        "unpackedSize": 36515,
        "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrj9sCRA9TVsSAnZWagAAs+EP/jzg5hnffY0BUrmhWYoy\nqq7uGQEx9A29KiUci1FhdXScyF8gTPuSMqgWpD2aHKauBptkBMDGoNqdroBt\nVIvsPl3LFNYmj5EVoZoNLk3P4fl+7ULlk5YChKJd1IvgoBxzMndcM7GWn9vj\n9PEigyFx8CdRs4ILjnJsWbIOclAZOaFSiIt2jzKj8Mfrd0vUqZU2LbU+7ZH/\nFGH0HFeGB4lblWd4q7C/MSnzf/xSNIwbmKk+1qzL5GMrLYRFHIOwU5CrS6Yk\nxPiqQ7Z0pAJ2rke95HmqFqgkbiLn30lqh1TVaV55dyN3h9IvuYmc67b44YPb\nulJEBRSbsSoIBTFV8xv3+dfpOwJv6xVS/h93nI9QLIfOCdCthF2VK0gR+GCi\nyZ8QUmz5CD42zQV+060uDRHFr3BIHi3LU5yLoDKVgyHG/EM7wmxJn1S2kxdi\nSXIScmK1cyg1L4mtHOtPRcLlH55J3H+JPxDUlNC+LFZV4IacjPyh/Sldo4G1\nspYKo439y1GgmV5rEJcoc43eQpH35+EH9XpIE2FhQKHzIt4z59AHLtosKgHY\nzdJyoAQhopJ5o86c/H52r4dfk18dDCSXzGI1OADTnCYZLypMZn4lflOotzKY\n8izlYXi7FGA9GYhDydJLJHY0bolG0FToawapAelPLfGN3jkRAaZpoU82MjV9\nIyFY\r\n=DzdY\r\n-----END PGP SIGNATURE-----\r\n"
      },
      "main": "./lib/parseley.cjs",
      "type": "module",
      "types": "./lib/parseley.d.ts",
      "module": "./lib/parseley.mjs",
      "denoify": {
        "out": "./deno",
        "ports": {
          "leac": "https://deno.land/x/leac/leac.ts",
          "peberminta": "https://deno.land/x/peberminta/core.ts"
        }
      },
      "exports": {
        "import": "./lib/parseley.mjs",
        "require": "./lib/parseley.cjs"
      },
      "funding": "https://ko-fi.com/killymxi",
      "gitHead": "ec4bcf5bec851274045874aaa8e53b520694bf65",
      "scripts": {
        "lint": "npm run lint:eslint && npm run lint:md",
        "test": "ava --timeout=20s",
        "build": "npm run clean && npm run build:rollup && npm run build:types && npm run build:docs && npm run build:deno",
        "clean": "rimraf lib",
        "example": "node ./example/example.cjs",
        "lint:md": "markdownlint-cli2",
        "checkAll": "npm run lint && npm test",
        "build:deno": "denoify",
        "build:docs": "typedoc",
        "build:types": "tsc --declaration --emitDeclarationOnly",
        "lint:eslint": "eslint .",
        "build:rollup": "rollup -c",
        "prepublishOnly": "npm run build && npm run checkAll"
      },
      "_npmUser": {
        "name": "killy.mxi",
        "email": "killy.mxi@gmail.com"
      },
      "repository": {
        "url": "git+https://github.com/mxxii/parseley.git",
        "type": "git"
      },
      "_npmVersion": "6.14.15",
      "description": "CSS selectors parser",
      "directories": {},
      "sideEffects": false,
      "_nodeVersion": "12.22.6",
      "dependencies": {
        "leac": "^0.5.0",
        "peberminta": "^0.5.4"
      },
      "_hasShrinkwrap": false,
      "devDependencies": {
        "ava": "^3.15.0",
        "tslib": "^2.3.1",
        "eslint": "^8.4.0",
        "rimraf": "^3.0.2",
        "rollup": "^2.60.2",
        "denoify": "^0.10.5",
        "ts-node": "^10.4.0",
        "typedoc": "^0.22.10",
        "typescript": "^4.5.2",
        "@types/node": "^12.20.37",
        "@tsconfig/node12": "^1.0.9",
        "markdownlint-cli2": "^0.3.2",
        "eslint-plugin-jsonc": "^2.0.0",
        "eslint-plugin-tsdoc": "^0.2.14",
        "rollup-plugin-cleanup": "^3.2.1",
        "typedoc-plugin-markdown": "^3.11.7",
        "@rollup/plugin-typescript": "^8.3.0",
        "@typescript-eslint/parser": "^5.5.0",
        "@typescript-eslint/eslint-plugin": "^5.5.0"
      },
      "_npmOperationalInternal": {
        "tmp": "tmp/parseley_0.9.1_1638809452232_0.030683681208978797",
        "host": "s3://npm-registry-packages"
      },
      "contributors": []
    },
    "0.10.0": {
      "name": "parseley",
      "version": "0.10.0",
      "keywords": [
        "CSS",
        "selectors",
        "parser",
        "AST",
        "serializer",
        "specificity"
      ],
      "author": {
        "name": "KillyMXI"
      },
      "license": "MIT",
      "_id": "parseley@0.10.0",
      "maintainers": [
        {
          "name": "killy.mxi",
          "email": "killy.mxi@gmail.com"
        }
      ],
      "homepage": "https://github.com/mxxii/parseley",
      "bugs": {
        "url": "https://github.com/mxxii/parseley/issues"
      },
      "ava": {
        "files": [
          "test/**/*"
        ],
        "verbose": true,
        "extensions": {
          "ts": "module"
        },
        "nodeArguments": [
          "--loader=ts-node/esm",
          "--experimental-specifier-resolution=node"
        ]
      },
      "dist": {
        "shasum": "639d95ed2c188b7de0a6d7aff59372fa8cff836a",
        "tarball": "http://mirrors.tencentyun.com/npm/parseley/-/parseley-0.10.0.tgz",
        "fileCount": 9,
        "integrity": "sha512-8r4sZD2bNjTxACVk9Sqkzc0pXO9G0KznjPnd+UbHs+ZkvFr5irw4P5HwMVoixanPFP5ZlZKsuf1QP+e47SYZAQ==",
        "signatures": [
          {
            "sig": "MEYCIQCMl9oEcU/Ld2CUCC6fFA3bJQQhWzgwcTJLT2RIfTuxvAIhAKVw1gPRT3HRJ+V87nXJlCD7lGYlyN5DGiljuUBbbuq6",
            "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"
          }
        ],
        "unpackedSize": 36527,
        "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9X9OCRA9TVsSAnZWagAA/nYP/jwxKvxh2cCRaPFeNROg\nFwfIkWjdE+UkguC4XFTeVahcVBVTNYa1H5KIWFLWlGSXJbYKKapufeFlTcdQ\nSY/My71hUGG19ouXx6EFHLFfJ7N5yHjSC4xgoyWjp5+4SR/3L7ENecRPjSgZ\nkzFdvPGpSOcp3yyloeM+RTwpts6bNrHSlRERzhb0ZFKTWJfyYG15ko30UGDf\nL63vEBEdx8HLztPNgFtGPmeKOmaB7xGDM3pM0YrlNVTvFffyT+Z8kriSIoFC\n4PpZJcnhD3bRbVeXpKAl04OPxwD153wxH4n4Wl3pysNO+4FjOZpdLv5a3gbs\n/cM5oxpaJy+RMePl61mqgYYuRbEMjenuG7wQA35dIoldGVpe5Gtk77GT91Yl\nofBAcmvQOK6GSfszydhSl1o9i23PycQt9lmovk+r2DYzDLlVEbrCuEAo+Dz8\nXyWnY+beYF3ZxqEA32FzIpNCsU4mnOgppU4EN68jv/umwxwwpIYL1cZkyxXl\nE09vjdhr2Cxbrrs9rhk3QXHzo9Cs7am78YAFc1bx3mhVbC+tu/r4X0KcJD24\nSczo/mPBYGkYZandVzHse2q3RYjBzEAtHmBPQ6WnJtHuq9e+d+hoQhWQ1IPW\nb+CEovbL1uKSgHIb3gCxmdVlaZORQIr9VkMp+MJTIsdPB6fpDuAg8phOOn+F\nvgmu\r\n=IPAX\r\n-----END PGP SIGNATURE-----\r\n"
      },
      "main": "./lib/parseley.cjs",
      "type": "module",
      "types": "./lib/parseley.d.ts",
      "module": "./lib/parseley.mjs",
      "denoify": {
        "out": "./deno",
        "ports": {
          "leac": "https://deno.land/x/leac/leac.ts",
          "peberminta": "https://deno.land/x/peberminta/core.ts"
        }
      },
      "exports": {
        "import": "./lib/parseley.mjs",
        "require": "./lib/parseley.cjs"
      },
      "funding": "https://ko-fi.com/killymxi",
      "gitHead": "5b4dcb905504361aadd61c6620b5c255fc314f98",
      "scripts": {
        "lint": "npm run lint:eslint && npm run lint:md",
        "test": "ava --timeout=20s",
        "build": "npm run clean && npm run build:rollup && npm run build:types && npm run build:docs && npm run build:deno",
        "clean": "rimraf lib",
        "example": "node ./example/example.cjs",
        "lint:md": "markdownlint-cli2",
        "checkAll": "npm run lint && npm test",
        "build:deno": "denoify",
        "build:docs": "typedoc",
        "build:types": "tsc --declaration --emitDeclarationOnly",
        "lint:eslint": "eslint .",
        "build:rollup": "rollup -c",
        "prepublishOnly": "npm run build && npm run checkAll"
      },
      "_npmUser": {
        "name": "killy.mxi",
        "email": "killy.mxi@gmail.com"
      },
      "repository": {
        "url": "git+https://github.com/mxxii/parseley.git",
        "type": "git"
      },
      "_npmVersion": "6.14.15",
      "description": "CSS selectors parser",
      "directories": {},
      "sideEffects": false,
      "_nodeVersion": "12.22.6",
      "dependencies": {
        "leac": "^0.5.1",
        "peberminta": "^0.6.0"
      },
      "_hasShrinkwrap": false,
      "devDependencies": {
        "ava": "^4.0.1",
        "tslib": "^2.3.1",
        "eslint": "^8.8.0",
        "rimraf": "^3.0.2",
        "rollup": "^2.66.1",
        "denoify": "^0.11.0",
        "ts-node": "^10.4.0",
        "typedoc": "^0.22.11",
        "typescript": "^4.5.5",
        "@types/node": "^12.20.42",
        "@tsconfig/node12": "^1.0.9",
        "markdownlint-cli2": "^0.4.0",
        "eslint-plugin-jsonc": "^2.1.0",
        "eslint-plugin-tsdoc": "^0.2.14",
        "rollup-plugin-cleanup": "^3.2.1",
        "typedoc-plugin-markdown": "^3.11.12",
        "@rollup/plugin-typescript": "^8.3.0",
        "@typescript-eslint/parser": "^5.10.1",
        "@typescript-eslint/eslint-plugin": "^5.10.1"
      },
      "_npmOperationalInternal": {
        "tmp": "tmp/parseley_0.10.0_1643478862078_0.027401601580463897",
        "host": "s3://npm-registry-packages"
      },
      "contributors": []
    },
    "0.11.0": {
      "name": "parseley",
      "version": "0.11.0",
      "keywords": [
        "CSS",
        "selectors",
        "parser",
        "AST",
        "serializer",
        "specificity"
      ],
      "author": {
        "name": "KillyMXI"
      },
      "license": "MIT",
      "_id": "parseley@0.11.0",
      "maintainers": [
        {
          "name": "killy.mxi",
          "email": "killy.mxi@gmail.com"
        }
      ],
      "homepage": "https://github.com/mxxii/parseley",
      "bugs": {
        "url": "https://github.com/mxxii/parseley/issues"
      },
      "ava": {
        "files": [
          "test/**/*"
        ],
        "verbose": true,
        "extensions": {
          "ts": "module"
        },
        "nodeArguments": [
          "--loader=ts-node/esm",
          "--experimental-specifier-resolution=node"
        ]
      },
      "dist": {
        "shasum": "1ff817c829a02fcc214c9cc0d96b126d772ee814",
        "tarball": "http://mirrors.tencentyun.com/npm/parseley/-/parseley-0.11.0.tgz",
        "fileCount": 9,
        "integrity": "sha512-VfcwXlBWgTF+unPcr7yu3HSSA6QUdDaDnrHcytVfj5Z8azAyKBDrYnSIfeSxlrEayndNcLmrXzg+Vxbo6DWRXQ==",
        "signatures": [
          {
            "sig": "MEUCIQCmntJ8qUWXia6dqSzXVWHbRgY1lug2Su0rdW+MYH6gtQIgC0spB1YKAX+MBdVKToKF3dvWzE181bNPQPxDeXrAuOo=",
            "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"
          }
        ],
        "unpackedSize": 36704,
        "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/44jACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqkAA/7B+EJculN1nBLhwMPNyf6PzOI7EXB9XJlASGOucCH6zo0uIMD\r\n2jN80eX1WirE8aC+dS7rXzxqUP2zKoUI6XDTW8B4w28H3PjLQZlwDy7zPcV+\r\nxsDKRfZ1iVmbzRYLKwWvQj48gkEhnNmOYPPdsxk3SKCkyETx5Dkfc9cuzcVD\r\nhTCxa5e0Nxr+RrDXZYm1JLo4JAp7konKEb7Y4DwVqGzqNtl222a4YYRcNpdh\r\n776Yigu1D7PtaRFhIgtX1v2VKCDqsl9xmUKgXKxiGCOVk8basJoYGwCMxVsT\r\nHetmxv/1BxJEs9MeBAaXML7TfRJvnCmsgIHjsAcI3/2oraDU98AL33vpgw4r\r\n+gBFXNdiLC1tfjDDgqSTaVOYzcXAWYttJA5a7+szOIvaYFQO6c31Buc0DnW7\r\nQBoHFTAwlXhBFcb3XqwPE4ZEGDXgLfJsTYFBVrMa4F0AtvirZAWBrw2iSA7z\r\nUY9/LA7dMl5tkxIBOL9KQvtVnMK+yl+cs0A0e3QCy6MzACT/AkfgoygGSgzo\r\nDYnOFWPuYRE0mW0AQjr5DceA47KVFCdEdcuIgL4BUiUBDa3rYHAFMnMD9tD3\r\nLoEkwIj1ECfWwDoefKUTECwviugq5IPBaVlnfHzIV7RCUaaCR0e7UDfc2nM9\r\nXK0D1sU98Ysjlsugvk+3WOy431HMg3iVox0=\r\n=1BoX\r\n-----END PGP SIGNATURE-----\r\n"
      },
      "main": "./lib/parseley.cjs",
      "type": "module",
      "types": "./lib/parseley.d.ts",
      "module": "./lib/parseley.mjs",
      "denoify": {
        "out": "./deno",
        "ports": {
          "leac": "https://deno.land/x/leac/leac.ts",
          "peberminta": "https://deno.land/x/peberminta/core.ts"
        }
      },
      "exports": {
        "import": "./lib/parseley.mjs",
        "require": "./lib/parseley.cjs"
      },
      "funding": "https://ko-fi.com/killymxi",
      "gitHead": "febd0af5b32b3dc05622bdbc3f335f1aa78f8c4c",
      "scripts": {
        "lint": "npm run lint:eslint && npm run lint:md",
        "test": "ava --timeout=20s",
        "build": "npm run clean && npm run build:rollup && npm run build:types && npm run build:docs && npm run build:deno",
        "clean": "rimraf lib",
        "example": "node ./example/example.cjs",
        "lint:md": "markdownlint-cli2",
        "checkAll": "npm run lint && npm test",
        "build:deno": "denoify",
        "build:docs": "typedoc",
        "build:types": "tsc --declaration --emitDeclarationOnly",
        "lint:eslint": "eslint .",
        "build:rollup": "rollup -c",
        "prepublishOnly": "npm run build && npm run checkAll"
      },
      "_npmUser": {
        "name": "killy.mxi",
        "email": "killy.mxi@gmail.com"
      },
      "repository": {
        "url": "git+https://github.com/mxxii/parseley.git",
        "type": "git"
      },
      "_npmVersion": "6.14.17",
      "description": "CSS selectors parser",
      "directories": {},
      "sideEffects": false,
      "_nodeVersion": "14.20.0",
      "dependencies": {
        "leac": "^0.6.0",
        "peberminta": "^0.8.0"
      },
      "_hasShrinkwrap": false,
      "devDependencies": {
        "ava": "^4.3.1",
        "tslib": "^2.4.0",
        "eslint": "^8.22.0",
        "rimraf": "^3.0.2",
        "rollup": "^2.78.0",
        "denoify": "^1.0.1",
        "ts-node": "^10.9.1",
        "typedoc": "~0.23.10",
        "typescript": "~4.7.4",
        "@types/node": "^14.18.23",
        "@tsconfig/node14": "^1.0.3",
        "markdownlint-cli2": "^0.5.1",
        "eslint-plugin-jsonc": "^2.4.0",
        "eslint-plugin-tsdoc": "^0.2.16",
        "rollup-plugin-cleanup": "^3.2.1",
        "typedoc-plugin-markdown": "~3.13.4",
        "@rollup/plugin-typescript": "^8.3.4",
        "@typescript-eslint/parser": "^5.33.1",
        "@typescript-eslint/eslint-plugin": "^5.33.1"
      },
      "_npmOperationalInternal": {
        "tmp": "tmp/parseley_0.11.0_1660915235712_0.8499702680174042",
        "host": "s3://npm-registry-packages"
      },
      "contributors": []
    },
    "0.12.0": {
      "name": "parseley",
      "version": "0.12.0",
      "keywords": [
        "CSS",
        "selectors",
        "parser",
        "AST",
        "serializer",
        "specificity"
      ],
      "author": {
        "name": "KillyMXI"
      },
      "license": "MIT",
      "_id": "parseley@0.12.0",
      "maintainers": [
        {
          "name": "killy.mxi",
          "email": "killy.mxi@gmail.com"
        }
      ],
      "homepage": "https://github.com/mxxii/parseley",
      "bugs": {
        "url": "https://github.com/mxxii/parseley/issues"
      },
      "ava": {
        "files": [
          "test/**/*"
        ],
        "verbose": true,
        "extensions": {
          "ts": "module"
        },
        "nodeArguments": [
          "--loader=ts-node/esm",
          "--experimental-specifier-resolution=node"
        ]
      },
      "dist": {
        "shasum": "e0dc6b0f99201d136ce756d5f3cec9461ad09830",
        "tarball": "http://mirrors.tencentyun.com/npm/parseley/-/parseley-0.12.0.tgz",
        "fileCount": 9,
        "integrity": "sha512-uLqDm6IQVb6m50a3dIxF66hI8VWr7wFDYUULtHa1ITRh9mwYIXzFpPTkPM66Cm5V0t+bMyeSHgUCGzoXTV96LQ==",
        "signatures": [
          {
            "sig": "MEUCIEfF9ic9cf553Wuz4EFlmWqN1WTWeM50+2KHrHIClaS/AiEA8ICONg9hAVf8wzF0s9dS7qRWSyZOAOUBb2PkyisoZuw=",
            "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"
          }
        ],
        "unpackedSize": 41253,
        "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj957FACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmod6Q//SPiWO70mabzYQioVGwZZN+mSjT6Vr//G7rFsVMZw7mIcfpqF\r\nrqSDrziP0g3tV7tFPm8BCfa+3MZwkf1K/BOVa581e4brSbtn05FZ4mUOeg0u\r\nbo4b4Zh+wK/80J4EHpViVZVkJpB10bxtUmQ4XiN7RwUVK67x65ai6AmHjhEN\r\nIP8zsqTTTG7fGcaI2faP6ZMvOeXWnlnXo5+kpsLnxdVBE2bNk5u1IBBe0wO4\r\nlU9tcZugJL7Dob/pXv2vHWPcT+RBZAFveVYCH2xZuCGdWz4DURT+FmLsI0z1\r\ncApcAGlB2okltkEIP3crW5pjOr8NB12SRNa73WT4yp+73ECeYhWSdo4FkwSk\r\nW4H+5EjGE49ClsNowWkUYg6H6WuH/U4fXeeg3mIBx32RP/cdPUm0RdupglcZ\r\n/O1muE2m1WDAm6HosMaMTMY917ci+31IrP0CDXyewUh7HUREFJhc3bFuDlId\r\nWgTR7q7IAu6Kb+LUAzCanVOrVO7aQykXyeyj6tx0M5++z1Jv2jDOY14FaZRT\r\naswv+yWva1NpUGT0OhaR/rk+oVADeeQWZaG4hFWQync3J0FBiTZhsljA6UMD\r\nlE9c1zlyHmGvQ7LZmgdeBLiHBLDPPGDGt/lpOt9e5YdSKIJTnCvoJHOUa226\r\n812UFk/gemODawEykSDgiXz3Slb34l58g1Q=\r\n=ZhCC\r\n-----END PGP SIGNATURE-----\r\n"
      },
      "main": "./lib/parseley.cjs",
      "type": "module",
      "types": "./lib/parseley.d.ts",
      "module": "./lib/parseley.mjs",
      "denoify": {
        "out": "./deno"
      },
      "exports": {
        "import": "./lib/parseley.mjs",
        "require": "./lib/parseley.cjs"
      },
      "funding": "https://ko-fi.com/killymxi",
      "gitHead": "1e70c4f9c4a704db3c969bce089e0e8f606f7875",
      "scripts": {
        "lint": "npm run lint:eslint && npm run lint:md",
        "test": "ava --timeout=20s",
        "build": "npm run clean && npm run build:rollup && npm run build:types && npm run build:docs && npm run build:deno",
        "clean": "rimraf lib",
        "example": "node ./example/example.cjs",
        "lint:md": "markdownlint-cli2",
        "checkAll": "npm run lint && npm test",
        "build:deno": "denoify",
        "build:docs": "typedoc",
        "build:types": "tsc --declaration --emitDeclarationOnly",
        "lint:eslint": "eslint .",
        "build:rollup": "rollup -c",
        "prepublishOnly": "npm run build && npm run checkAll"
      },
      "_npmUser": {
        "name": "killy.mxi",
        "email": "killy.mxi@gmail.com"
      },
      "repository": {
        "url": "git+https://github.com/mxxii/parseley.git",
        "type": "git"
      },
      "_npmVersion": "6.14.17",
      "description": "CSS selectors parser",
      "directories": {},
      "sideEffects": false,
      "_nodeVersion": "14.20.0",
      "dependencies": {
        "leac": "^0.6.0",
        "peberminta": "^0.9.0"
      },
      "_hasShrinkwrap": false,
      "devDependencies": {
        "ava": "^5.2.0",
        "tslib": "^2.5.0",
        "eslint": "^8.34.0",
        "rimraf": "^4.1.2",
        "rollup": "^2.79.1",
        "denoify": "^1.4.10",
        "ts-node": "^10.9.1",
        "typedoc": "~0.23.25",
        "typescript": "~4.9.5",
        "@types/node": "^14.18.36",
        "@tsconfig/node14": "^1.0.3",
        "markdownlint-cli2": "^0.6.0",
        "eslint-plugin-jsonc": "^2.6.0",
        "eslint-plugin-tsdoc": "^0.2.17",
        "rollup-plugin-cleanup": "^3.2.1",
        "typedoc-plugin-markdown": "~3.14.0",
        "@rollup/plugin-typescript": "^11.0.0",
        "@typescript-eslint/parser": "^5.53.0",
        "@typescript-eslint/eslint-plugin": "^5.53.0"
      },
      "_npmOperationalInternal": {
        "tmp": "tmp/parseley_0.12.0_1677172420867_0.34747053437560527",
        "host": "s3://npm-registry-packages"
      },
      "contributors": []
    },
    "0.12.1": {
      "name": "parseley",
      "version": "0.12.1",
      "keywords": [
        "CSS",
        "selectors",
        "parser",
        "AST",
        "serializer",
        "specificity"
      ],
      "author": {
        "name": "KillyMXI"
      },
      "license": "MIT",
      "_id": "parseley@0.12.1",
      "maintainers": [
        {
          "name": "killy.mxi",
          "email": "killy.mxi@gmail.com"
        }
      ],
      "homepage": "https://github.com/mxxii/parseley",
      "bugs": {
        "url": "https://github.com/mxxii/parseley/issues"
      },
      "ava": {
        "files": [
          "test/**/*"
        ],
        "verbose": true,
        "extensions": {
          "ts": "module"
        },
        "nodeArguments": [
          "--loader=ts-node/esm",
          "--experimental-specifier-resolution=node"
        ]
      },
      "dist": {
        "shasum": "4afd561d50215ebe259e3e7a853e62f600683aef",
        "tarball": "http://mirrors.tencentyun.com/npm/parseley/-/parseley-0.12.1.tgz",
        "fileCount": 9,
        "integrity": "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==",
        "signatures": [
          {
            "sig": "MEUCIFTSSlEsgLQutHeHmY6j/svrVWo9I7endWIR0pkzOgnvAiEA17GCMBjdIN5V81sOBwrmqIsBFlqjthiRKIDIymJWT50=",
            "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"
          }
        ],
        "unpackedSize": 41853,
        "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkQ7x+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2cQ/9Glj3nc63tFEh6Z/QGQCUg5hpIL8/ZVLMPXELIo8P3PVHguaa\r\nYVHQ4A7FbZs2hK4jWvXxKPdEItY8DD47kMHoa0yTjfWXqZBbs7uQuR1PUrY7\r\nifdc1MUIEMKwPiFXjBC9GqUofHSrNR255Vb/hWHeJ85Y76aZjOziNlt0QXuQ\r\nv+8wCcuipO2lIOrm1D7h+wCqHAmM1AEZTLEj6brfKeBMQyja43RcqyRpLdhf\r\nPPFghg63q08ecR8HvKuzQlROvH+3JZ9s5HVgB4Vo0FZNKw01e6dGXcRCroXZ\r\nr+7lNnRT8FYHn1+HzBTRe/6vX4PIwGHzt9xpHF4b7oMMFRUBvbjzeZBMU3P8\r\nim+01MCLKul3y9vD9/xsYoA4F8LFkkgnvhtTW6TTKcODrDdaWM3iFhdNg0W5\r\n/R2nlJks0I912pK0rVcwTH7ghF0E/6PZv8siOtjpFxofanZtKoYhKyPLHh1k\r\nvv5ZQ/y7WS4SvvEl/TBoyDZQLcxefqC22NdePqweXaCCWc6szEtCmsWYKEF+\r\nSpCnQXxfsLHgsI3XU1nSaujrquWB3z8uLMbb8bCyvxyczsvO4d8MTCiqIw0u\r\nL0GFVnWENTZszm1qWdzp69RQQ6gwo3kGV42pPnQEKUhNakU1eLiMEhF1aFYr\r\nghcvlOG7iDAoq4MHhxw51kZRIA7Y3N2ZHuQ=\r\n=hHNC\r\n-----END PGP SIGNATURE-----\r\n"
      },
      "main": "./lib/parseley.cjs",
      "type": "module",
      "types": "./lib/parseley.d.ts",
      "module": "./lib/parseley.mjs",
      "denoify": {
        "out": "./deno"
      },
      "exports": {
        "import": "./lib/parseley.mjs",
        "require": "./lib/parseley.cjs"
      },
      "funding": "https://ko-fi.com/killymxi",
      "gitHead": "a4b46697101eed0c4d0e3a81f5a5f45f64ee249b",
      "scripts": {
        "lint": "npm run lint:eslint && npm run lint:md",
        "test": "ava --timeout=20s",
        "build": "npm run clean && npm run build:rollup && npm run build:types && npm run build:docs && npm run build:deno",
        "clean": "rimraf lib",
        "example": "node ./example/example.mjs",
        "lint:md": "markdownlint-cli2",
        "checkAll": "npm run lint && npm test",
        "build:deno": "denoify",
        "build:docs": "typedoc --plugin typedoc-plugin-markdown",
        "build:types": "tsc --declaration --emitDeclarationOnly",
        "lint:eslint": "eslint .",
        "build:rollup": "rollup -c",
        "prepublishOnly": "npm run build && npm run checkAll"
      },
      "_npmUser": {
        "name": "killy.mxi",
        "email": "killy.mxi@gmail.com"
      },
      "repository": {
        "url": "git+https://github.com/mxxii/parseley.git",
        "type": "git"
      },
      "_npmVersion": "6.14.17",
      "description": "CSS selectors parser",
      "directories": {},
      "sideEffects": false,
      "_nodeVersion": "14.20.0",
      "dependencies": {
        "leac": "^0.6.0",
        "peberminta": "^0.9.0"
      },
      "_hasShrinkwrap": false,
      "devDependencies": {
        "ava": "^5.2.0",
        "tslib": "^2.5.0",
        "eslint": "^8.39.0",
        "rimraf": "^5.0.0",
        "rollup": "^2.79.1",
        "denoify": "^1.5.3",
        "ts-node": "^10.9.1",
        "typedoc": "~0.23.28",
        "typescript": "~4.9.5",
        "@types/node": "^14.18.42",
        "@tsconfig/node14": "^1.0.3",
        "markdownlint-cli2": "^0.7.0",
        "eslint-plugin-jsonc": "^2.7.0",
        "eslint-plugin-tsdoc": "^0.2.17",
        "rollup-plugin-cleanup": "^3.2.1",
        "typedoc-plugin-markdown": "~3.14.0",
        "@rollup/plugin-typescript": "^11.1.0",
        "@typescript-eslint/parser": "^5.59.0",
        "@typescript-eslint/eslint-plugin": "^5.59.0"
      },
      "_npmOperationalInternal": {
        "tmp": "tmp/parseley_0.12.1_1682160766335_0.7841395559970434",
        "host": "s3://npm-registry-packages"
      },
      "contributors": []
    },
    "0.13.0": {
      "name": "parseley",
      "version": "0.13.0",
      "keywords": [
        "CSS",
        "selectors",
        "parser",
        "AST",
        "serializer",
        "specificity"
      ],
      "author": {
        "name": "KillyMXI"
      },
      "license": "MIT",
      "_id": "parseley@0.13.0",
      "maintainers": [
        {
          "name": "killy.mxi",
          "email": "killy.mxi@gmail.com"
        }
      ],
      "homepage": "https://github.com/mxxii/parseley",
      "bugs": {
        "url": "https://github.com/mxxii/parseley/issues"
      },
      "ava": {
        "files": [
          "test/**/*"
        ],
        "verbose": true,
        "extensions": {
          "ts": "module"
        },
        "nodeArguments": [
          "--import=ts-blank-space/register"
        ]
      },
      "dist": {
        "shasum": "9ed85f43b85c238b1754e70e75348e29c1b355ff",
        "tarball": "http://mirrors.tencentyun.com/npm/parseley/-/parseley-0.13.0.tgz",
        "fileCount": 9,
        "integrity": "sha512-pDphr3CWoPxB7WC2cIQUsuwYDBSZvbdaDO46dUxXzLk5yn5s8bTs6Zf68BgaSIPmTuZQ2BNEFTdCW2AfeeD3vw==",
        "signatures": [
          {
            "sig": "MEYCIQDOJHnKRUHEF6Cvmt9FMEU8TbIwaCwnMPuHqcbb+iqa8gIhAKElH+qKIfHVTLlzS4RAap3/F77jwzJDp+v4evpQn/On",
            "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
          }
        ],
        "unpackedSize": 63344
      },
      "main": "./lib/parseley.cjs",
      "type": "module",
      "types": "./lib/parseley.d.ts",
      "module": "./lib/parseley.mjs",
      "denoify": {
        "out": "./deno"
      },
      "exports": {
        ".": {
          "import": {
            "types": "./lib/parseley.d.mts",
            "default": "./lib/parseley.mjs"
          },
          "require": {
            "types": "./lib/parseley.d.cts",
            "default": "./lib/parseley.cjs"
          }
        },
        "./package.json": "./package.json"
      },
      "funding": "https://github.com/sponsors/KillyMXI",
      "gitHead": "0cbe2d1cf362673946ccd9e6837bb84eed27f673",
      "scripts": {
        "lint": "npm run lint:eslint && npm run lint:md",
        "test": "ava",
        "build": "npm run clean && npm run build:rollup && npm run build:types && npm run build:docs && npm run build:deno",
        "clean": "rimraf lib",
        "example": "node ./example/example.mjs",
        "lint:md": "markdownlint-cli2",
        "checkAll": "npm run lint && npm test",
        "build:deno": "denoify",
        "build:docs": "typedoc",
        "build:types": "tsc --declaration --emitDeclarationOnly",
        "lint:eslint": "eslint .",
        "build:rollup": "rollup -c",
        "prepublishOnly": "npm run build && npm run checkAll"
      },
      "_npmUser": {
        "name": "killy.mxi",
        "email": "killy.mxi@gmail.com"
      },
      "repository": {
        "url": "git+https://github.com/mxxii/parseley.git",
        "type": "git"
      },
      "_npmVersion": "10.8.2",
      "description": "CSS selectors parser",
      "directories": {},
      "sideEffects": false,
      "_nodeVersion": "20.18.0",
      "dependencies": {
        "leac": "^0.7.0",
        "peberminta": "^0.10.0"
      },
      "_hasShrinkwrap": false,
      "devDependencies": {
        "ava": "^6.4.1",
        "tslib": "^2.8.1",
        "eslint": "^9.39.2",
        "rimraf": "^6.1.2",
        "rollup": "~4.54.0",
        "denoify": "^1.6.17",
        "typedoc": "~0.28.15",
        "typescript": "~5.8.3",
        "@types/node": "^20.19.27",
        "ts-blank-space": "^0.6.2",
        "@tsconfig/node20": "^20.1.8",
        "markdownlint-cli2": "^0.20.0",
        "rollup-plugin-dts": "^6.3.0",
        "typescript-eslint": "^8.50.0",
        "eslint-plugin-jsonc": "^2.21.0",
        "eslint-plugin-tsdoc": "^0.5.0",
        "rollup-plugin-delete": "^3.0.2",
        "rollup-plugin-cleanup": "^3.2.1",
        "typedoc-plugin-markdown": "~4.9.0",
        "@stylistic/eslint-plugin": "^5.6.1",
        "@rollup/plugin-typescript": "^12.3.0",
        "@typescript-eslint/eslint-plugin": "^8.50.0"
      },
      "_npmOperationalInternal": {
        "tmp": "tmp/parseley_0.13.0_1766342981766_0.6571229878221634",
        "host": "s3://npm-registry-packages-npm-production"
      },
      "contributors": []
    },
    "0.13.1": {
      "name": "parseley",
      "version": "0.13.1",
      "description": "CSS selectors parser",
      "keywords": [
        "CSS",
        "selectors",
        "parser",
        "AST",
        "serializer",
        "specificity"
      ],
      "repository": {
        "type": "git",
        "url": "git+https://github.com/mxxii/parseley.git"
      },
      "bugs": {
        "url": "https://github.com/mxxii/parseley/issues"
      },
      "homepage": "https://github.com/mxxii/parseley",
      "author": {
        "name": "KillyMXI"
      },
      "funding": "https://github.com/sponsors/KillyMXI",
      "license": "MIT",
      "exports": {
        ".": {
          "import": {
            "types": "./lib/parseley.d.mts",
            "default": "./lib/parseley.mjs"
          },
          "require": {
            "types": "./lib/parseley.d.cts",
            "default": "./lib/parseley.cjs"
          }
        },
        "./package.json": "./package.json"
      },
      "type": "module",
      "main": "./lib/parseley.cjs",
      "module": "./lib/parseley.mjs",
      "types": "./lib/parseley.d.cts",
      "sideEffects": false,
      "scripts": {
        "build:deno": "denoify",
        "build:docs": "typedoc",
        "build:rollup": "rollup -c",
        "build:types": "tsc --declaration --emitDeclarationOnly",
        "build": "npm run clean && npm run build:rollup && npm run build:types && npm run build:docs && npm run build:deno",
        "checkAll": "npm run lint && npm test",
        "clean": "rimraf lib",
        "example": "node ./example/example.mjs",
        "lint:eslint": "eslint .",
        "lint:md": "markdownlint-cli2",
        "lint": "npm run lint:eslint && npm run lint:md",
        "prepublishOnly": "npm run build && npm run checkAll",
        "test": "ava"
      },
      "dependencies": {
        "leac": "^0.7.0",
        "peberminta": "^0.10.0"
      },
      "devDependencies": {
        "@rollup/plugin-typescript": "^12.3.0",
        "@stylistic/eslint-plugin": "^5.6.1",
        "@tsconfig/node20": "^20.1.8",
        "@types/node": "^20.19.27",
        "@typescript-eslint/eslint-plugin": "^8.50.0",
        "ava": "^6.4.1",
        "denoify": "^1.6.17",
        "eslint": "^9.39.2",
        "eslint-plugin-jsonc": "^2.21.0",
        "eslint-plugin-tsdoc": "^0.5.0",
        "markdownlint-cli2": "^0.20.0",
        "rimraf": "^6.1.2",
        "rollup": "~4.54.0",
        "rollup-plugin-cleanup": "^3.2.1",
        "rollup-plugin-delete": "^3.0.2",
        "rollup-plugin-dts": "^6.3.0",
        "ts-blank-space": "^0.6.2",
        "tslib": "^2.8.1",
        "typedoc": "~0.28.15",
        "typedoc-plugin-markdown": "~4.9.0",
        "typescript": "~5.8.3",
        "typescript-eslint": "^8.50.0"
      },
      "ava": {
        "extensions": {
          "ts": "module"
        },
        "files": [
          "test/**/*"
        ],
        "nodeArguments": [
          "--import=ts-blank-space/register"
        ],
        "verbose": true
      },
      "denoify": {
        "out": "./deno"
      },
      "_id": "parseley@0.13.1",
      "gitHead": "79421c67c66c608999dcb9f7cb2ac3873e97af33",
      "_nodeVersion": "20.18.0",
      "_npmVersion": "10.8.2",
      "dist": {
        "integrity": "sha512-uNBJZzmb60l6p6VWLTmevizNAGnE0xoSf1n0B4q3ntegDNzcS68NRCcBDZTcyXHxt2XhBChsCuqj4M+nChvE/A==",
        "shasum": "1dfc3dd43afee3414367a548e8072f2ef77b2a52",
        "tarball": "http://mirrors.tencentyun.com/npm/parseley/-/parseley-0.13.1.tgz",
        "fileCount": 9,
        "unpackedSize": 63345,
        "signatures": [
          {
            "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U",
            "sig": "MEQCIDPWizpTh7ugWuE8LpZycBkiXnGH0zFYcn2x+v1sCGV2AiAFj5/bXeYbizK1rpohXxXXSVUvXjBC9vbW5t1ObNShLw=="
          }
        ]
      },
      "_npmUser": {
        "name": "killy.mxi",
        "email": "killy.mxi@gmail.com"
      },
      "directories": {},
      "maintainers": [
        {
          "name": "killy.mxi",
          "email": "killy.mxi@gmail.com"
        }
      ],
      "_npmOperationalInternal": {
        "host": "s3://npm-registry-packages-npm-production",
        "tmp": "tmp/parseley_0.13.1_1766403982284_0.6756494550231418"
      },
      "_hasShrinkwrap": false,
      "contributors": []
    }
  },
  "time": {
    "created": "2021-04-05T14:53:23.300Z",
    "modified": "2025-12-22T11:46:22.610Z",
    "0.5.0": "2021-04-05T14:53:23.454Z",
    "0.6.0": "2021-04-06T14:43:47.792Z",
    "0.7.0": "2021-04-18T13:20:03.029Z",
    "0.8.0": "2021-11-10T22:02:44.051Z",
    "0.9.0": "2021-12-05T14:49:43.352Z",
    "0.9.1": "2021-12-06T16:50:52.421Z",
    "0.10.0": "2022-01-29T17:54:22.218Z",
    "0.11.0": "2022-08-19T13:20:35.932Z",
    "0.12.0": "2023-02-23T17:13:41.010Z",
    "0.12.1": "2023-04-22T10:52:46.564Z",
    "0.13.0": "2025-12-21T18:49:41.951Z",
    "0.13.1": "2025-12-22T11:46:22.423Z"
  },
  "users": {},
  "dist-tags": {
    "latest": "0.13.1"
  },
  "_rev": "221-d6703d05efdc44a3",
  "_id": "parseley",
  "readme": "# parseley\n\n![lint status badge](https://github.com/mxxii/parseley/workflows/lint/badge.svg)\n![test status badge](https://github.com/mxxii/parseley/workflows/test/badge.svg)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/mxxii/parseley/blob/main/LICENSE)\n[![npm](https://img.shields.io/npm/v/parseley?logo=npm)](https://www.npmjs.com/package/parseley)\n[![npm](https://img.shields.io/npm/dw/parseley?color=informational&logo=npm)](https://www.npmjs.com/package/parseley)\n[![deno](https://img.shields.io/badge/deno.land%2Fx%2F-parseley-informational?logo=deno)](https://deno.land/x/parseley)\n\n**Par**ser for CSS **sele**ctors.\n\n----\n\n\n## Features\n\n- Convert CSS selector strings into objects that are easy to work with;\n\n- Serialize back if needed;\n\n- Get specificity for free.\n\n\n## Changelog\n\nAvailable here: [CHANGELOG.md](https://github.com/mxxii/parseley/blob/main/CHANGELOG.md).\n\n\n## Install\n\n### Node\n\n```shell\n> npm i parseley\n```\n\n```typescript\nimport * as parseley from 'parseley';\n```\n\n### Deno\n\n```typescript\nimport * as parseley from 'https://deno.land/x/parseley@.../parseley.ts';\n```\n\n\n## Usage example\n\n```js\nimport { parse1, serialize, normalize } from 'parseley';\nimport { inspect } from 'node:util';\n\nconst str = 'div#id1 > .class2.class1[attr1]';\n\nconst ast = parse1(str);\nconsole.log(inspect(ast, { breakLength: 45, depth: null }));\n\nconst serialized = serialize(ast);\nconsole.log(`Serialized: '${serialized}'`);\n\nnormalize(ast);\nconst normalized = serialize(ast);\nconsole.log(`Normalized: '${normalized}'`);\n```\n\n<details><summary>Example output</summary>\n\n```text\n{\n  type: 'compound',\n  list: [\n    {\n      type: 'class',\n      name: 'class2',\n      specificity: [ 0, 1, 0 ]\n    },\n    {\n      type: 'class',\n      name: 'class1',\n      specificity: [ 0, 1, 0 ]\n    },\n    {\n      type: 'attrPresence',\n      name: 'attr1',\n      namespace: null,\n      specificity: [ 0, 1, 0 ]\n    },\n    {\n      type: 'combinator',\n      combinator: '>',\n      left: {\n        type: 'compound',\n        list: [\n          {\n            type: 'tag',\n            name: 'div',\n            namespace: null,\n            specificity: [ 0, 0, 1 ]\n          },\n          {\n            type: 'id',\n            name: 'id1',\n            specificity: [ 1, 0, 0 ]\n          }\n        ],\n        specificity: [ 1, 0, 1 ]\n      },\n      specificity: [ 1, 0, 1 ]\n    }\n  ],\n  specificity: [ 1, 3, 1 ]\n}\nSerialized: 'div#id1>.class2.class1[attr1]'\nNormalized: 'div#id1>.class1.class2[attr1]'\n```\n\n</details>\n\n\n## Documentation\n\n- [API](https://github.com/mxxii/parseley/blob/main/docs/index.md)\n- [Snapshots](https://github.com/mxxii/parseley/blob/main/test/snapshots/snapshots.ts.md)\n\n\n## Input reference\n\n<https://www.w3.org/TR/selectors-4/#grammar>\n\n<https://www.w3.org/TR/css-syntax-3/#token-diagrams>\n\nTerminology used in this project is more or less consistent to the spec, with some exceptions made for clarity. The term \"type\" is way too overloaded in particular, the term \"tag\" is used where appropriate instead.\n\n\n## Output AST\n\nConsistency: overall AST shape is always the same. This makes client code simpler, at least for a certain processing tasks.\n\nFor example, always use compound selectors, even when there is only one simple selector inside.\n\nComma-separated selectors might not be needed for every use case. So there are two functions - one can parse commas and always returns the top-level list regardless of the comma presence in a particular selector, and the other can't parse commas and returns a compound selector AST directly.\n\nComplex selectors are represented in the way that makes the left side to be an another condition on the right side element. This was made with the right-to-left processing direction in mind. One consequence of this is that there is no such thing as a \"complex selector\" node in the AST hierarchy, but there are \"combinator\" nodes attached to \"compound selector\" nodes.\n\nPseudo-classes and functional pseudo-classes are represented as separate types. All supported functional pseudo-classes have their own types with strongly typed content.\n\nAll AST nodes have their specificity computed (except the top-level list of comma-separated selectors where it doesn't really make sense).\n\n\n## Selector type hierarchy\n\n- [Selector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/Selector.md)\n  - [ListSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/ListSelector.md) - comma-separated\n    - _contains CompoundSelector list_\n  - [CompoundSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/CompoundSelector.md) - all simple selectors that apply to the same element\n    - _contains SimpleSelector (incl. Combinator) list_\n  - [SimpleSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/SimpleSelector.md)\n    - [UniversalSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/UniversalSelector.md) - `*`\n    - [TagSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/TagSelector.md) - `div`, etc.\n    - [ClassSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/ClassSelector.md) - `.className`\n    - [IdSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/IdSelector.md) - `#idValue`\n    - [AttributePresenceSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/AttributePresenceSelector.md) - `[attrName]`\n    - [AttributeValueSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/AttributeValueSelector.md) - `[attrName=\"value\"]`, etc.\n    - [FunctionalPseudoClassSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/FunctionalPseudoClassSelector.md)\n      - [IsSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/IsSelector.md) - `:is(...)`\n        - _contains CompoundSelector list_\n      - [WhereSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/WhereSelector.md) - `:where(...)`\n        - _contains CompoundSelector list_\n      - [NotSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/NotSelector.md) - `:not(...)`\n        - _contains CompoundSelector list_\n    - [PseudoClassSelector](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/PseudoClassSelector.md) - `:hover`, etc. - except functional ones\n    - [Combinator](https://github.com/mxxii/parseley/blob/main/docs/parseley/namespaces/Ast/type-aliases/Combinator.md) - ` `, `>`, `+`, `~`, `||`\n      - _contains left CompoundSelector_\n\n\n## Motivation and inspiration\n\n| Package    | Hits      | Misses\n| ---------- | --------- | ---------\n| [parsel](https://github.com/leaverou/parsel) | Sensible AST; specificity calculation; cool name | Not friendly to node.js; based on regex\n| [css-what](https://github.com/fb55/css-what) and [css-select](https://github.com/fb55/css-select) | The idea to process complex selectors in right-to-left order | `css-select` is a solution for a different problem compared to what I needed; `css-what` produces only a list of tokens\n| [scalpel](https://github.com/gajus/scalpel)  | Introduced me to [nearley](https://nearley.js.org/) parsing toolkit (albeit I'm not using it here anymore) | AST it produces is very far from what I can use\n| [css-selector-parser](https://github.com/mdevils/css-selector-parser) | Configurable and lightweight | Again, AST is far from my needs",
  "_attachments": {}
}
