{"id":32232015,"url":"https://github.com/formidablelabs/chai-jq","last_synced_at":"2025-10-22T11:51:45.834Z","repository":{"id":11419877,"uuid":"13871116","full_name":"FormidableLabs/chai-jq","owner":"FormidableLabs","description":"An alternate jQuery assertion library for Chai.","archived":true,"fork":false,"pushed_at":"2018-01-09T18:36:57.000Z","size":444,"stargazers_count":21,"open_issues_count":4,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-22T11:51:44.028Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://stack.formidable.com/chai-jq/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FormidableLabs.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-25T20:15:10.000Z","updated_at":"2025-06-23T14:19:56.000Z","dependencies_parsed_at":"2022-07-13T02:00:32.828Z","dependency_job_id":null,"html_url":"https://github.com/FormidableLabs/chai-jq","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/FormidableLabs/chai-jq","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FormidableLabs%2Fchai-jq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FormidableLabs%2Fchai-jq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FormidableLabs%2Fchai-jq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FormidableLabs%2Fchai-jq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FormidableLabs","download_url":"https://codeload.github.com/FormidableLabs/chai-jq/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FormidableLabs%2Fchai-jq/sbom","scorecard":{"id":51725,"data":{"date":"2025-08-11","repo":{"name":"github.com/FormidableLabs/chai-jq","commit":"fba56ec7a9adab57883418d8ea603fa4217530df"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/16 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 17 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-14T23:52:03.294Z","repository_id":11419877,"created_at":"2025-08-14T23:52:03.294Z","updated_at":"2025-08-14T23:52:03.294Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280431497,"owners_count":26329786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-22T02:00:06.515Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-22T11:51:42.548Z","updated_at":"2025-10-22T11:51:45.822Z","avatar_url":"https://github.com/FormidableLabs.png","language":"JavaScript","readme":"Chai-jQ\n=======\n\n`chai-jq` is an alternate plugin for the [Chai](http://chaijs.com/) assertion\nlibrary to provide jQuery-specific assertions.\n\n## Usage\n\nYou can install `chai-jq` with the following package managers:\n\n* [NPM](https://npmjs.org/package/chai-jq): `npm install chai-jq`\n* [Bower](http://bower.io/): `bower install chai-jq`\n\nThe [integration notes](#integration) discuss how to properly patch Chai with\nthe plugin in different environments (browser, AMD, Node.js). The\n[API documentation](#plugin-api) is a good starting point to learn how to use\n`chai-jq` assertions in your tests.\nThe site's own test suites also provide a decent introduction to the API:\n\n* [Basic Tests](./test/test.html)\n* [AMD Tests](./test/test-amd.html)\n\n## Assertions\n\n### Integration\n\n`chai-jq` works in your browser, with AMD/RequireJS, and in Node.js with\nJsDom.\n\n**Standard Browser**: To use in a standard HTML page, include `chai-jq.js`\nafter Chai.\n\n```html\n\u003cscript src=\"chai.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"chai-jq.js\"\u003e\u003c/script\u003e\n```\n\n**AMD Browser**: To use in a RequireJS/AMD page, require in `chai-jq` and\ninject it into Chai before your test imports / runners begin:\n\n```js\nrequire([\"chai\", \"chai-jq\"], function (chai, plugin) {\n  // Inject plugin.\n  chai.use(plugin);\n\n  // Rest of your test code here...\n});\n```\n\n**Node.js / JsDom**: To use in Node.js/JsDom, require in `chai-jq` and\ninject it into Chai before your test imports / runners begin:\n\n```js\nvar chai    = require(\"chai\");\nvar plugin  = require(\"chai-jq\");\n\n// Inject plugin.\nchai.use(plugin);\n\n// Rest of test code here...\n```\n\n### Object Context Changes\n\nOne slight difference from how assertions in `chai-jq` work from Chai and other\nplugins is the switching of object context for certain assertions, currently:\n\n* `$attr`\n* `$prop`\n\nIn general usage, the object under test (e.g., the thing wrapped in an\n`expect()`) remains the current context, so you can do something like:\n\n```js\nvar $elem = $(\"\u003cdiv id=\\\"hi\\\" foo=\\\"bar time\\\" /\u003e\");\n\nexpect($elem)\n  // Assertion object is `$elem`\n  .to.have.$attr(\"id\", \"hi\").and\n  // Assertion object is still `$elem`\n  .to.contain.$attr(\"foo\", \"bar\");\n```\n\nIn the above example, the jQuery object `$elem` remains the object under\nassertion for both `$attr` calls. However, in the special case for one of the\nenumerated assertions above where:\n\n* There is no **expected** assertion value given; **and**,\n* There are no negations (e.g., `not`) used in a chain.\n\nThen, the object under assertion switches to the **value** of the effective\nmethod called. So, taking our example again, and calling `$attr()` without\nan expected value, we would have:\n\n```js\nvar $elem = $(\"\u003cdiv id=\\\"hi\\\" foo=\\\"bar time\\\" /\u003e\");\n\nexpect($elem)\n  // Assertion object is `$elem`\n  .to.have.$attr(\"foo\").and\n    // Assertion object now changed to `$attr()` value: `\"bar time\"`\n    .to.equal(\"bar time\").and\n    .to.match(/^b/).and\n    .to.not.have.length(2);\n```\n\nIn the above example here, the object under assertion becomes the string\n`\"bar time\"` immediately after the call to `$attr(\"foo\")` with no expected\nvalue.\n\n\n## Plugin API\n\n* [`$visible`](#-visible)\n* [`$hidden`](#-hidden)\n* [`$val(expected, [message])`](#-val-expected-message-)\n* [`$class(expected, [message])`](#-class-expected-message-)\n* [`$attr(name, [expected], [message])`](#-attr-name-expected-message-)\n* [`$data(name, [expected], [message])`](#-data-name-expected-message-)\n* [`$prop(name, [expected], [message])`](#-prop-name-expected-message-)\n* [`$html(expected, [message])`](#-html-expected-message-)\n* [`$text(expected, [message])`](#-text-expected-message-)\n* [`$css(expected, [message])`](#-css-expected-message-)\n\n### `$visible`\n\nAsserts that the element is visible.\n\n*Node.js/JsDom Note*: JsDom does not currently infer zero-sized or\nhidden parent elements as hidden / visible appropriately.\n\n```js\nexpect($(\"\u003cdiv\u003e\u0026nbsp;\u003c/div\u003e\"))\n  .to.be.$visible;\n```\n\nSee: [http://api.jquery.com/visible-selector/](http://api.jquery.com/visible-selector/)\n\n### `$hidden`\n\nAsserts that the element is hidden.\n\n*Node.js/JsDom Note*: JsDom does not currently infer zero-sized or\nhidden parent elements as hidden / visible appropriately.\n\n```js\nexpect($(\"\u003cdiv style=\\\"display: none\\\" /\u003e\"))\n  .to.be.$hidden;\n```\n\nSee: [http://api.jquery.com/hidden-selector/](http://api.jquery.com/hidden-selector/)\n\n### `$val(expected, [message])`\n* **expected** (`String|RegExp`) value\n* **message** (`String`) failure message (_optional_)\n\nAsserts that the element value matches a string or regular expression.\n\n```js\nexpect($(\"\u003cinput value='foo' /\u003e\"))\n  .to.have.$val(\"foo\").and\n  .to.have.$val(/^foo/);\n```\n\nSee: [http://api.jquery.com/val/](http://api.jquery.com/val/)\n\n### `$class(expected, [message])`\n* **expected** (`String`) class name\n* **message** (`String`) failure message (_optional_)\n\nAsserts that the element has a class match.\n\n```js\nexpect($(\"\u003cdiv class='foo bar' /\u003e\"))\n  .to.have.$class(\"foo\").and\n  .to.have.$class(\"bar\");\n```\n\nSee: [http://api.jquery.com/hasClass/](http://api.jquery.com/hasClass/)\n\n### `$attr(name, [expected], [message])`\n* **name** (`String`) attribute name\n* **expected** (`String`) attribute content (_optional_)\n* **message** (`String`) failure message (_optional_)\n* **_returns_** current object or attribute string value\n\nAsserts that the target has exactly the given named attribute, or\nasserts the target contains a subset of the attribute when using the\n`include` or `contain` modifiers.\n\n```js\nexpect($(\"\u003cdiv id=\\\"hi\\\" foo=\\\"bar time\\\" /\u003e\"))\n  .to.have.$attr(\"id\", \"hi\").and\n  .to.contain.$attr(\"foo\", \"bar\");\n```\n\nChanges context to attribute string *value* when no expected value is\nprovided:\n\n```js\nexpect($(\"\u003cdiv id=\\\"hi\\\" foo=\\\"bar time\\\" /\u003e\"))\n  .to.have.$attr(\"foo\").and\n    .to.equal(\"bar time\").and\n    .to.match(/^b/);\n```\n\nSee: [http://api.jquery.com/attr/](http://api.jquery.com/attr/)\n\n### `$data(name, [expected], [message])`\n* **name** (`String`) data-attribute name\n* **expected** (`String`) data-attribute content (_optional_)\n* **message** (`String`) failure message (_optional_)\n* **_returns_** current object or attribute string value\n\nAsserts that the target has exactly the given named\ndata-attribute, or asserts the target contains a subset\nof the data-attribute when using the\n`include` or `contain` modifiers.\n\n```js\nexpect($(\"\u003cdiv data-id=\\\"hi\\\" data-foo=\\\"bar time\\\" /\u003e\"))\n  .to.have.$data(\"id\", \"hi\").and\n  .to.contain.$data(\"foo\", \"bar\");\n```\n\nChanges context to data-attribute string *value* when no\nexpected value is provided:\n\n```js\nexpect($(\"\u003cdiv data-id=\\\"hi\\\" data-foo=\\\"bar time\\\" /\u003e\"))\n  .to.have.$data(\"foo\").and\n    .to.equal(\"bar time\").and\n    .to.match(/^b/);\n```\n\nSee: [http://api.jquery.com/data/](http://api.jquery.com/data/)\n\n### `$prop(name, [expected], [message])`\n* **name** (`String`) property name\n* **expected** (`Object`) property value (_optional_)\n* **message** (`String`) failure message (_optional_)\n* **_returns_** current object or property string value\n\nAsserts that the target has exactly the given named property.\n\n```js\nexpect($(\"\u003cinput type=\\\"checkbox\\\" checked=\\\"checked\\\" /\u003e\"))\n  .to.have.$prop(\"checked\", true).and\n  .to.have.$prop(\"type\", \"checkbox\");\n```\n\nChanges context to property string *value* when no expected value is\nprovided:\n\n```js\nexpect($(\"\u003cinput type=\\\"checkbox\\\" checked=\\\"checked\\\" /\u003e\"))\n  .to.have.$prop(\"type\").and\n    .to.equal(\"checkbox\").and\n    .to.match(/^c.*x$/);\n```\n\nSee: [http://api.jquery.com/prop/](http://api.jquery.com/prop/)\n\n### `$html(expected, [message])`\n* **expected** (`String`) HTML content\n* **message** (`String`) failure message (_optional_)\n\nAsserts that the target has exactly the given HTML, or\nasserts the target contains a subset of the HTML when using the\n`include` or `contain` modifiers.\n\n```js\nexpect($(\"\u003cdiv\u003e\u003cspan\u003efoo\u003c/span\u003e\u003c/div\u003e\"))\n  .to.have.$html(\"\u003cspan\u003efoo\u003c/span\u003e\").and\n  .to.contain.$html(\"foo\");\n```\n\nSee: [http://api.jquery.com/html/](http://api.jquery.com/html/)\n\n### `$text(expected, [message])`\n* **expected** (`String`) text content\n* **message** (`String`) failure message (_optional_)\n\nAsserts that the target has exactly the given text, or\nasserts the target contains a subset of the text when using the\n`include` or `contain` modifiers.\n\n```js\nexpect($(\"\u003cdiv\u003e\u003cspan\u003efoo\u003c/span\u003e bar\u003c/div\u003e\"))\n  .to.have.$text(\"foo bar\").and\n  .to.contain.$text(\"foo\");\n```\n\nSee: [http://api.jquery.com/text/](http://api.jquery.com/text/)\n\n### `$css(expected, [message])`\n* **expected** (`String`) CSS property content\n* **message** (`String`) failure message (_optional_)\n\nAsserts that the target has exactly the given CSS property, or\nasserts the target contains a subset of the CSS when using the\n`include` or `contain` modifiers.\n\n*Node.js/JsDom Note*: Computed CSS properties are not correctly\ninferred as of JsDom v0.8.8. Explicit ones should get matched exactly.\n\n*Browser Note*: Explicit CSS properties are sometimes not matched\n(in contrast to Node.js), so the plugin performs an extra check against\nexplicit `style` properties for a match. May still have other wonky\ncorner cases.\n\n*PhantomJS Note*: PhantomJS also is fairly wonky and unpredictable with\nrespect to CSS / styles, especially those that come from CSS classes\nand not explicity `style` attributes.\n\n```js\nexpect($(\"\u003cdiv style=\\\"width: 50px; border: 1px dotted black;\\\" /\u003e\"))\n  .to.have.$css(\"width\", \"50px\").and\n  .to.have.$css(\"border-top-style\", \"dotted\");\n```\n\nSee: [http://api.jquery.com/css/](http://api.jquery.com/css/)\n\n\n## Contributions\n\nPlease see the [Contributions Guide](./CONTRIBUTING.md) for how to help out\nwith the plugin.\n\nWe test all changes with [Travis CI][trav], report internal test coverage\nwith [Coveralls][cov] and check complexity / static analysis with\n[Code Climate][cc]. Here is the status for our\n[build][trav_site], [coverage][cov_site], and [complexity][cc_site]:\n\n[![Build Status][trav_img]][trav_site]\n[![Coverage Status][cov_img]][cov_site]\n[![Code Climate][cc_img]][cc_site]\n\nWe also do multi-browser testing of the frontend code using [Sauce Labs][sauce].\nHere's our [build matrix][sauce_site]:\n\n[![Sauce Test Status][sauce_img]][sauce_site]\n\n[trav]: https://travis-ci.org/\n[trav_img]: https://api.travis-ci.org/FormidableLabs/chai-jq.svg\n[trav_site]: https://travis-ci.org/FormidableLabs/chai-jq\n[cov]: https://coveralls.io\n[cov_img]: https://img.shields.io/coveralls/FormidableLabs/chai-jq.svg\n[cov_site]: https://coveralls.io/r/FormidableLabs/chai-jq\n[cc]: https://codeclimate.com\n[cc_img]: https://codeclimate.com/github/FormidableLabs/chai-jq/badges/gpa.svg\n[cc_site]: https://codeclimate.com/github/FormidableLabs/chai-jq\n[sauce]: https://saucelabs.com\n[sauce_img]: https://saucelabs.com/browser-matrix/chai-jq.svg\n[sauce_site]: https://saucelabs.com/u/chai-jq\n\n## Licenses\nAll code not otherwise specified is Copyright 2013 Ryan Roemer.\nReleased under the [MIT](./LICENSE.txt) License.\n\nThis repository contains various libraries from other folks, and are licensed\nas follows:\n\n* [jQuery][jquery] is Copyright jQuery Foundation and licensed under the\n  [MIT](https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license.\n\n* [Mocha][mocha] is Copyright TJ Holowaychuk and licensed under the\n  [MIT](https://github.com/visionmedia/mocha/blob/master/LICENSE) license.\n\n* [Chai][chai] is Copyright Jake Luer and licensed under the\n  [BSD](https://github.com/cjohansen/Sinon.JS/blob/master/LICENSE) license.\n\n* [Sinon.JS][sinon] is Copyright Christian Johansen and licensed under the\n  [BSD](https://github.com/cjohansen/Sinon.JS/blob/master/LICENSE) license.\n\n* [Mocha-PhantomJS][mocha-phantom] is Copyright Ken Collins and licensed under the\n  [MIT](https://github.com/metaskills/mocha-phantomjs/blob/master/MIT-LICENSE)\n  license.\n\n* [Pure][pure] is Copyright Yahoo! and licensed under the\n  [MIT](https://github.com/yui/pure/blob/master/LICENSE.md)\n  license.\n\n[jquery]: https://github.com/jquery/jquery\n[mocha]: https://github.com/visionmedia/mocha\n[mocha-phantom]: https://github.com/metaskills/mocha-phantomjs\n[phantom]: http://phantomjs.org/\n[phantom-install]: http://phantomjs.org/download.html\n[chai]: https://github.com/chaijs/chai\n[sinon]: https://github.com/cjohansen/Sinon.JS\n[pure]: https://github.com/yui/pure/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fformidablelabs%2Fchai-jq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fformidablelabs%2Fchai-jq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fformidablelabs%2Fchai-jq/lists"}