{"_id":"@alphahoai/jqnode","_rev":"5-e4e66bbddb16db837a62799768c4bc62","name":"@alphahoai/jqnode","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@alphahoai/jqnode","version":"1.0.0","keywords":["jquery","dom","query","selector","html","parser","manipulation","traversal","web-scraping","cheerio","jsdom","browser","node"],"author":"","license":"ISC","_id":"@alphahoai/jqnode@1.0.0","maintainers":[{"name":"alphahoai","email":"alphahoai@gmail.com"}],"homepage":"https://github.com/ALPhaHoai/jqnode#readme","bugs":{"url":"https://github.com/ALPhaHoai/jqnode/issues"},"dist":{"shasum":"1cb07d025198f5d60334af3c382e9a6422ddecd6","tarball":"https://registry.npmjs.org/@alphahoai/jqnode/-/jqnode-1.0.0.tgz","fileCount":10,"integrity":"sha512-YaGo0v9Qz1e0Gam5wiY7uOIjwvbIv+EeXNqiEh/i60+bDmdyrS2DSFyxhycmpMzw6Y1zc9yvYZB6mnALArgbgg==","signatures":[{"sig":"MEUCICDXeUNn1xR7EltZQvMSbfbjHYU4agZNTd8JPzzg4nQxAiEA5Pay5W2D03sTlj6MywHV4qHflhHOobBjY6WkSb+XHj0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1285319},"main":"dist/jqnode.cjs.js","module":"dist/jqnode.cjs.js","browser":"dist/jqnode.umd.js","gitHead":"e2e3d6c13c53dd21b8758ef047927573bed7f1a8","scripts":{"test":"jest","build":"rollup -c","debug":"cross-env JQNODE_DEBUG=1 node","example":"node examples/basic-usage.js","build:node":"rollup -c --environment TARGET:node","test:debug":"cross-env JQNODE_DEBUG=1 jest","build:watch":"rollup -c -w","test:browser":"npm run build && echo 'Open browser-test/index.html in your browser to run browser tests'","build:browser":"rollup -c --environment TARGET:browser","example:debug":"cross-env JQNODE_DEBUG=1 node examples/basic-usage.js","refactor:scan":"node scripts/refactor-test-expressions.js","prepublishOnly":"npm run build","test:browser:full":"npm run build && npm run test:browser:generate && echo 'Open browser-test/all-tests/index.html in your browser'","test:browser:serve":"npm run test:browser:full && http-server -p 8080 -o browser-test/all-tests/index.html","test:browser:generate":"node scripts/convert-tests-to-browser.js"},"_npmUser":{"name":"alphahoai","email":"alphahoai@gmail.com"},"repository":{"url":"git+https://github.com/ALPhaHoai/jqnode.git","type":"git"},"_npmVersion":"11.3.0","description":"A lightweight jQuery-compatible library for DOM manipulation and traversal in both Node.js and browsers","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","acorn":"^8.15.0","jsdom":"^27.0.1","jquery":"^3.7.1","rollup":"^2.79.2","prettier":"^3.6.2","cross-env":"^7.0.3","babel-core":"^6.26.3","estraverse":"^5.3.0","playwright":"^1.56.1","http-server":"^14.1.1","babel-preset-env":"^1.7.0","rollup-plugin-terser":"^7.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-node-resolve":"^16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/jqnode_1.0.0_1763562025907_0.9672640978573548","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alphahoai/jqnode","version":"1.0.1","keywords":["jquery","dom","query","selector","html","parser","manipulation","traversal","web-scraping","cheerio","jsdom","browser","node"],"author":"","license":"ISC","_id":"@alphahoai/jqnode@1.0.1","maintainers":[{"name":"alphahoai","email":"alphahoai@gmail.com"}],"homepage":"https://github.com/ALPhaHoai/jqnode#readme","bugs":{"url":"https://github.com/ALPhaHoai/jqnode/issues"},"dist":{"shasum":"c8649f5ed69bb633dde034a79843c607bb60414f","tarball":"https://registry.npmjs.org/@alphahoai/jqnode/-/jqnode-1.0.1.tgz","fileCount":10,"integrity":"sha512-LCanGVF0FLBt7rRTwdZ7N1q5HbRsaQFltydiGcurUYKAOPeGac/mEMPFRPyQcZXgDoTRqAtLtmeG9NGlRe4NkQ==","signatures":[{"sig":"MEYCIQDcvhhvFju8yKZfFU8lmlz70YH2725yBLLeaXT1jMS1qwIhAKjn4SdWXnRmlpYQyiF6oSwrlQcWG/T+M7GH1iWXVaXg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1285321},"main":"dist/jqnode.cjs.js","module":"dist/jqnode.cjs.js","browser":"dist/jqnode.umd.js","gitHead":"a294aed8e441da0fe4938e64a8cb12ca37847cf2","scripts":{"test":"jest","build":"rollup -c","debug":"cross-env JQNODE_DEBUG=1 node","example":"node examples/basic-usage.js","build:node":"rollup -c --environment TARGET:node","test:debug":"cross-env JQNODE_DEBUG=1 jest","build:watch":"rollup -c -w","test:browser":"npm run build && echo 'Open browser-test/index.html in your browser to run browser tests'","build:browser":"rollup -c --environment TARGET:browser","example:debug":"cross-env JQNODE_DEBUG=1 node examples/basic-usage.js","refactor:scan":"node scripts/refactor-test-expressions.js","prepublishOnly":"npm run build","test:browser:full":"npm run build && npm run test:browser:generate && echo 'Open browser-test/all-tests/index.html in your browser'","test:browser:serve":"npm run test:browser:full && http-server -p 8080 -o browser-test/all-tests/index.html","test:browser:generate":"node scripts/convert-tests-to-browser.js"},"_npmUser":{"name":"alphahoai","email":"alphahoai@gmail.com"},"repository":{"url":"git+https://github.com/ALPhaHoai/jqnode.git","type":"git"},"_npmVersion":"11.3.0","description":"A lightweight jQuery-compatible library for DOM manipulation and traversal in both Node.js and browsers","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","acorn":"^8.15.0","jsdom":"^27.0.1","jquery":"^3.7.1","rollup":"^2.79.2","prettier":"^3.6.2","cross-env":"^7.0.3","babel-core":"^6.26.3","estraverse":"^5.3.0","playwright":"^1.56.1","http-server":"^14.1.1","babel-preset-env":"^1.7.0","rollup-plugin-terser":"^7.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-node-resolve":"^16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/jqnode_1.0.1_1763562198515_0.1546063434809697","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alphahoai/jqnode","version":"1.0.2","keywords":["jquery","dom","query","selector","html","parser","manipulation","traversal","web-scraping","cheerio","jsdom","browser","node"],"author":"","license":"ISC","_id":"@alphahoai/jqnode@1.0.2","maintainers":[{"name":"alphahoai","email":"alphahoai@gmail.com"}],"homepage":"https://github.com/ALPhaHoai/jqnode#readme","bugs":{"url":"https://github.com/ALPhaHoai/jqnode/issues"},"dist":{"shasum":"eda852ada83d3197178699f6143f4a08f59bfcbc","tarball":"https://registry.npmjs.org/@alphahoai/jqnode/-/jqnode-1.0.2.tgz","fileCount":10,"integrity":"sha512-FyXU5YtpxRryZybqg2BfJdrSseDCYiVUWljaw4IrgwTpFXmcRhzzDT83y5gdabz4XxE8n0e0CGwPuJvlkDs0ag==","signatures":[{"sig":"MEQCIFiR7074j1LglAd4zt2uoH57X9RFo7H+j2nnJiYMffgtAiAAsYdsY7/GmkARfIiJpxp9QmfDPpSY11qKXIewT4Krmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1321777},"main":"dist/jqnode.cjs.js","module":"dist/jqnode.cjs.js","browser":"dist/jqnode.umd.js","gitHead":"43e489c85919c274b74e7b769df82c7c5059f2fa","scripts":{"test":"jest","build":"rollup -c","debug":"cross-env JQNODE_DEBUG=1 node","example":"node examples/basic-usage.js","build:node":"rollup -c --environment TARGET:node","test:debug":"cross-env JQNODE_DEBUG=1 jest","build:watch":"rollup -c -w","test:browser":"npm run build && echo 'Open browser-test/index.html in your browser to run browser tests'","build:browser":"rollup -c --environment TARGET:browser","example:debug":"cross-env JQNODE_DEBUG=1 node examples/basic-usage.js","refactor:scan":"node scripts/refactor-test-expressions.js","prepublishOnly":"npm run build","test:browser:full":"npm run build && npm run test:browser:generate && echo 'Open browser-test/all-tests/index.html in your browser'","test:browser:serve":"npm run test:browser:full && http-server -p 8080 -o browser-test/all-tests/index.html","test:browser:generate":"node scripts/convert-tests-to-browser.js"},"_npmUser":{"name":"alphahoai","email":"alphahoai@gmail.com"},"repository":{"url":"git+https://github.com/ALPhaHoai/jqnode.git","type":"git"},"_npmVersion":"11.3.0","description":"A lightweight jQuery-compatible library for DOM manipulation and traversal in both Node.js and browsers","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","acorn":"^8.15.0","jsdom":"^27.0.1","jquery":"^3.7.1","rollup":"^2.79.2","prettier":"^3.6.2","cross-env":"^7.0.3","babel-core":"^6.26.3","estraverse":"^5.3.0","playwright":"^1.56.1","http-server":"^14.1.1","babel-preset-env":"^1.7.0","rollup-plugin-terser":"^7.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-node-resolve":"^16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/jqnode_1.0.2_1763566228687_0.06700659767149997","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@alphahoai/jqnode","version":"1.1.0","keywords":["jquery","dom","query","selector","html","parser","manipulation","traversal","web-scraping","cheerio","jsdom","browser","node"],"author":"","license":"ISC","_id":"@alphahoai/jqnode@1.1.0","maintainers":[{"name":"alphahoai","email":"alphahoai@gmail.com"}],"homepage":"https://github.com/ALPhaHoai/jqnode#readme","bugs":{"url":"https://github.com/ALPhaHoai/jqnode/issues"},"dist":{"shasum":"3b832ee5d9ea8c5600f16927bca4de356b1e7eeb","tarball":"https://registry.npmjs.org/@alphahoai/jqnode/-/jqnode-1.1.0.tgz","fileCount":10,"integrity":"sha512-E+XooKOx0aXjfqirC2BmgrtxWBC9CXBse0chN3STPZ20W0Ye1bQeIunBCV8RRbDozmjuKLnpPGHbEAyeK2XORA==","signatures":[{"sig":"MEUCIGAHLlzkuKccAA1rhI7rD8tXbh4sCGeXR0H2mHyC+37JAiEApwcl+yGlM6l4ag3h+3MKHM60+xGoWCRBof+j+Ewn9Io=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1499168},"main":"dist/jqnode.cjs.js","module":"dist/jqnode.cjs.js","browser":"dist/jqnode.umd.js","gitHead":"aa0284f2ba7c32023223e6ac812efc2b816e0f98","scripts":{"test":"jest","build":"rollup -c","debug":"cross-env JQNODE_DEBUG=1 node","example":"node examples/basic-usage.js","build:node":"rollup -c --environment TARGET:node","test:debug":"cross-env JQNODE_DEBUG=1 jest","build:watch":"rollup -c -w","test:browser":"npm run build && echo 'Open browser-test/index.html in your browser to run browser tests'","build:browser":"rollup -c --environment TARGET:browser","example:debug":"cross-env JQNODE_DEBUG=1 node examples/basic-usage.js","refactor:scan":"node scripts/refactor-test-expressions.js","prepublishOnly":"npm run build","test:browser:full":"npm run build && npm run test:browser:generate && echo 'Open browser-test/all-tests/index.html in your browser'","test:browser:serve":"npm run test:browser:full && http-server -p 8080 -o browser-test/all-tests/index.html","test:browser:generate":"node scripts/convert-tests-to-browser.js"},"_npmUser":{"name":"alphahoai","email":"alphahoai@gmail.com"},"repository":{"url":"git+https://github.com/ALPhaHoai/jqnode.git","type":"git"},"_npmVersion":"11.3.0","description":"A lightweight jQuery-compatible library for DOM manipulation and traversal in both Node.js and browsers","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","acorn":"^8.15.0","jsdom":"^27.0.1","jquery":"^3.7.1","rollup":"^2.79.2","prettier":"^3.6.2","cross-env":"^7.0.3","babel-core":"^6.26.3","estraverse":"^5.3.0","playwright":"^1.56.1","http-server":"^14.1.1","babel-preset-env":"^1.7.0","rollup-plugin-terser":"^7.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-node-resolve":"^16.0.3"},"_npmOperationalInternal":{"tmp":"tmp/jqnode_1.1.0_1763568859217_0.07273724300459161","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@alphahoai/jqnode","version":"1.2.0","description":"A lightweight jQuery-compatible library for DOM manipulation and traversal in both Node.js and browsers","main":"dist/jqnode.cjs.js","module":"dist/jqnode.cjs.js","browser":"dist/jqnode.umd.js","scripts":{"build":"rollup -c","build:watch":"rollup -c -w","build:node":"rollup -c --environment TARGET:node","build:browser":"rollup -c --environment TARGET:browser","test:browser":"npm run build && echo 'Open browser-test/index.html in your browser to run browser tests'","test:browser:generate":"node scripts/convert-tests-to-browser.js","test:browser:full":"npm run build && npm run test:browser:generate && echo 'Open browser-test/all-tests/index.html in your browser'","test:browser:serve":"npm run test:browser:full && http-server -p 8080 -o browser-test/all-tests/index.html","prepublishOnly":"npm run build","test":"jest","test:debug":"cross-env JQNODE_DEBUG=1 jest","debug":"cross-env JQNODE_DEBUG=1 node","example":"node examples/basic-usage.js","example:debug":"cross-env JQNODE_DEBUG=1 node examples/basic-usage.js","refactor:scan":"node scripts/refactor-test-expressions.js"},"keywords":["jquery","dom","query","selector","html","parser","manipulation","traversal","web-scraping","cheerio","jsdom","browser","node"],"author":"","license":"ISC","repository":{"type":"git","url":"git+https://github.com/ALPhaHoai/jqnode.git"},"homepage":"https://github.com/ALPhaHoai/jqnode#readme","bugs":{"url":"https://github.com/ALPhaHoai/jqnode/issues"},"devDependencies":{"@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-node-resolve":"^16.0.3","acorn":"^8.15.0","babel-core":"^6.26.3","babel-preset-env":"^1.7.0","cross-env":"^7.0.3","estraverse":"^5.3.0","http-server":"^14.1.1","jest":"^30.2.0","jest-environment-jsdom":"^29.7.0","jquery":"^3.7.1","jsdom":"^27.0.1","prettier":"^3.6.2","rollup":"^2.79.2","rollup-plugin-terser":"^7.0.2","playwright":"^1.56.1"},"_id":"@alphahoai/jqnode@1.2.0","gitHead":"59d0d31e6e331d6470f4dd6b4642bffa5329bde5","_nodeVersion":"23.11.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-Ljfey9y4OQTCG6iYsplVr8+Tf7/VhEHkKilQ8L610UKtC7Ij8qdOg8X8iEkyvdqwCoTIKd02/gNCmjQU9J3WQw==","shasum":"87ab7f6357ff24f5405d5425674277645b8a83d5","tarball":"https://registry.npmjs.org/@alphahoai/jqnode/-/jqnode-1.2.0.tgz","fileCount":10,"unpackedSize":1529148,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFWgf2uBZbIYhUXzbxGEVCFwlm8s3Qkz/CKm1Osks33YAiEA7j68lEb8b1HYV+kdgUpRK2hjjQfrWK+VM7qSVWgUUHw="}]},"_npmUser":{"name":"alphahoai","email":"alphahoai@gmail.com"},"directories":{},"maintainers":[{"name":"alphahoai","email":"alphahoai@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jqnode_1.2.0_1763575230147_0.8527314295961246"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-19T14:20:25.789Z","modified":"2025-11-19T18:00:34.092Z","1.0.0":"2025-11-19T14:20:26.100Z","1.0.1":"2025-11-19T14:23:18.750Z","1.0.2":"2025-11-19T15:30:28.916Z","1.1.0":"2025-11-19T16:14:19.465Z","1.2.0":"2025-11-19T18:00:30.395Z"},"bugs":{"url":"https://github.com/ALPhaHoai/jqnode/issues"},"license":"ISC","homepage":"https://github.com/ALPhaHoai/jqnode#readme","keywords":["jquery","dom","query","selector","html","parser","manipulation","traversal","web-scraping","cheerio","jsdom","browser","node"],"repository":{"type":"git","url":"git+https://github.com/ALPhaHoai/jqnode.git"},"description":"A lightweight jQuery-compatible library for DOM manipulation and traversal in both Node.js and browsers","maintainers":[{"name":"alphahoai","email":"alphahoai@gmail.com"}],"readme":"# jqnode\r\n\r\nA lightweight jQuery-like library for DOM manipulation and traversal in both Node.js and browsers.\r\n\r\n## Description\r\n\r\n**jqnode** is a JavaScript library that provides a jQuery-compatible API for parsing, querying, and manipulating HTML documents. It works seamlessly in both Node.js environments and web browsers, making it ideal for server-side HTML processing, web scraping, and client-side DOM manipulation.\r\n\r\n## Features\r\n\r\n- **jQuery-style API**: Familiar syntax for DOM manipulation and traversal\r\n- **CSS Selector Support**: Full CSS selector engine for element selection\r\n- **DOM Traversal**: Navigate through DOM trees with methods like `find`, `parent`, `children`, `siblings`\r\n- **Content Manipulation**: Get and set HTML/text content with `html()`, `text()`, `val()`\r\n- **Attribute Management**: Work with element attributes using `attr()`, `prop()`, `removeAttr()`\r\n- **Element Insertion**: Add content with `append()`, `prepend()`, `before()`, `after()`\r\n- **Filtering Methods**: Filter selections with `filter()`, `not()`, `has()`, `is()`, `eq()`\r\n- **Iteration**: Process collections with `each()`, `map()`\r\n- **Chaining**: Method chaining for fluent API usage\r\n- **Cross-platform**: Works identically in Node.js and browser environments\r\n- **Comprehensive Testing**: 821 automated tests ensuring compatibility\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install jqnode\r\n```\r\n\r\n## Building\r\n\r\nThe library supports both Node.js and browser environments. Build files are generated using Rollup.\r\n\r\n```bash\r\n# Build all targets (Node.js CommonJS + Browser UMD)\r\nnpm run build\r\n\r\n# Build and watch for changes\r\nnpm run build:watch\r\n\r\n# Build specific targets\r\nnpm run build:node      # Node.js only\r\nnpm run build:browser   # Browser only\r\n```\r\n\r\n## Usage\r\n\r\n### Node.js\r\n\r\n```javascript\r\nconst $ = require('jqnode');\r\n\r\nconst html = `\r\n<div class=\"container\">\r\n    <h1 class=\"title\">Hello World</h1>\r\n    <p>Some content</p>\r\n</div>\r\n`;\r\n\r\nconst root = $(html);\r\nconst title = root.find('.title');\r\nconsole.log(title.text()); // \"Hello World\"\r\n```\r\n\r\n### Browser\r\n\r\nInclude the UMD build in your HTML:\r\n\r\n```html\r\n<script src=\"dist/jqnode.umd.js\"></script>\r\n<script>\r\n    // The library is available as a global '$' variable\r\n    const html = `\r\n        <div class=\"container\">\r\n            <h1 class=\"title\">Hello Browser!</h1>\r\n            <p>Some content</p>\r\n        </div>\r\n    `;\r\n\r\n    const root = $(html);\r\n    const title = root.find('.title');\r\n    console.log(title.text()); // \"Hello Browser!\"\r\n</script>\r\n```\r\n\r\nOr with a module bundler:\r\n\r\n```javascript\r\nimport $ from 'jqnode';\r\n\r\n// Use the same API as in Node.js\r\nconst root = $('html content...');\r\n```\r\n\r\n## Browser Testing\r\n\r\njqnode includes comprehensive browser testing capabilities with 821+ automated tests comparing functionality against jQuery.\r\n\r\n### Quick Start\r\n\r\n```bash\r\n# Build, convert tests, serve, and open browser automatically\r\nnpm run test:browser:serve\r\n```\r\n\r\n### Test Options\r\n\r\n```bash\r\n# Basic browser test (build and show instructions)\r\nnpm run test:browser\r\n\r\n# Generate comprehensive browser test suite\r\nnpm run test:browser:generate\r\n\r\n# Build + generate tests + show instructions\r\nnpm run test:browser:full\r\n\r\n# Build + generate + serve locally + auto-open browser\r\nnpm run test:browser:serve\r\n```\r\n\r\n### Test Files\r\n\r\n- **`browser-test/index.html`** - Basic smoke tests (~10 tests)\r\n- **`browser-test/all-tests/index.html`** - Comprehensive test suite with jQuery comparison (821+ tests)\r\n- **`browser-test/example-converted-attr-test.html`** - Detailed conversion examples\r\n\r\nThe comprehensive test suite covers:\r\n- **Attributes Methods**: `attr()`, `hasClass()`, `prop()`, `removeAttr()`, `removeProp()`, `toggleClass()`, `val()`\r\n- **Content Methods**: `html()`, `text()`\r\n- **Traversal Methods**: `find()`, `parent()`, `children()`, `siblings()`, `closest()`, etc.\r\n- **Filtering Methods**: `filter()`, `not()`, `has()`, `is()`, `eq()`, `first()`, `last()`, `slice()`\r\n- **Insertion Methods**: `append()`, `prepend()`, `before()`, `after()`, `insertAfter()`, `insertBefore()`\r\n- **Selector Methods**: CSS selectors, advanced selectors, edge cases, performance\r\n- **Iteration Methods**: `each()`, `map()`\r\n- **Chaining Patterns**: Method chaining compatibility\r\n\r\n## Debug Logging\r\n\r\nDebug logs are disabled by default. To enable debug logging for operations:\r\n\r\n```bash\r\n# Option 1: Using JQNODE_DEBUG (Node.js only)\r\nJQNODE_DEBUG=1 node your-script.js\r\n\r\n# Option 2: Using DEBUG (supports multiple debug namespaces, Node.js only)\r\nDEBUG=jqnode node your-script.js\r\n\r\n# Option 3: Using npm scripts\r\nnpm run example:debug\r\n```\r\n\r\n## API Reference\r\n\r\njqnode provides a jQuery-compatible API. Key methods include:\r\n\r\n### Factory Function\r\n- `$('html string')` - Parse HTML string\r\n- `$('#id')` - Select by ID\r\n- `$('.class')` - Select by class\r\n- `$('tag')` - Select by tag name\r\n- `$(nodeArray)` - Create from node array\r\n\r\n### Traversal\r\n- `find(selector)` - Find descendants\r\n- `parent()` - Get parent element\r\n- `children()` - Get child elements\r\n- `siblings()` - Get sibling elements\r\n- `closest(selector)` - Find closest ancestor\r\n\r\n### Manipulation\r\n- `html()` / `html(content)` - Get/set HTML content\r\n- `text()` / `text(content)` - Get/set text content\r\n- `attr(name)` / `attr(name, value)` - Get/set attributes\r\n- `prop(name)` / `prop(name, value)` - Get/set properties\r\n- `val()` / `val(value)` - Get/set form values\r\n\r\n### Filtering\r\n- `filter(selector)` - Filter elements\r\n- `not(selector)` - Exclude elements\r\n- `has(selector)` - Filter by descendants\r\n- `is(selector)` - Test if matches selector\r\n- `eq(index)` - Get element at index\r\n- `first()` / `last()` - Get first/last element\r\n\r\n### Insertion\r\n- `append(content)` - Insert content at end\r\n- `prepend(content)` - Insert content at beginning\r\n- `before(content)` - Insert before element\r\n- `after(content)` - Insert after element\r\n\r\n### Iteration\r\n- `each(callback)` - Iterate over elements\r\n- `map(callback)` - Transform elements\r\n\r\nSee the test files in `test/` for comprehensive examples and edge cases.\r\n\r\n## Available Scripts\r\n\r\n- `npm run build` - Build all targets (Node.js + Browser)\r\n- `npm run build:watch` - Build and watch for changes during development\r\n- `npm run build:node` - Build Node.js CommonJS version only\r\n- `npm run build:browser` - Build browser UMD version only\r\n- `npm test` - Run Node.js Jest tests\r\n- `npm run test:debug` - Run tests with debug logging\r\n- `npm run test:browser` - Build and prepare basic browser tests\r\n- `npm run test:browser:generate` - Convert Jest tests to browser format\r\n- `npm run test:browser:full` - Build + generate comprehensive browser tests\r\n- `npm run test:browser:serve` - Build + generate + serve + open browser\r\n- `npm run example` - Run basic usage example\r\n- `npm run example:debug` - Run example with debug logging\r\n- `npm run debug` - Start Node.js with debug logging enabled\r\n- `npm run refactor:scan` - Scan for test expression refactoring opportunities\r\n\r\n## Contributing\r\n\r\nThe project includes comprehensive test suites and browser testing tools. Run the full test suite before contributing:\r\n\r\n```bash\r\nnpm test                    # Run Node.js tests\r\nnpm run test:browser:serve  # Run browser compatibility tests\r\n```\r\n\r\n## License\r\n\r\nISC\r\n","readmeFilename":"README.md"}