{"_id":"@bcherny/json-schema-ref-parser","_rev":"3461229","name":"@bcherny/json-schema-ref-parser","description":"Parse, Resolve, and Dereference JSON Schema $ref pointers","dist-tags":{"latest":"10.0.5-fork"},"maintainers":[{"name":"bcherny","email":"boris@performancejs.com"}],"time":{"modified":"2024-08-27T19:35:40.000Z","created":"2022-08-06T08:34:51.245Z","10.0.5-fork":"2023-02-23T03:26:02.162Z","9.0.9":"2022-08-06T08:34:51.245Z"},"users":{},"author":{"name":"James Messinger","url":"https://jamesmessinger.com"},"repository":{"type":"git","url":"git+https://github.com/APIDevTools/json-schema-ref-parser.git"},"versions":{"10.0.5-fork":{"name":"@bcherny/json-schema-ref-parser","version":"10.0.5-fork","description":"Parse, Resolve, and Dereference JSON Schema $ref pointers","keywords":["json","schema","jsonschema","json-schema","json-pointer","$ref","dereference","resolve"],"author":{"name":"James Messinger","url":"https://jamesmessinger.com"},"contributors":[{"name":"Boris Cherny","email":"boris@performancejs.com"},{"name":"Phil Sturgeon","email":"phil@apisyouwonthate.com"},{"name":"Jakub Rożek","email":"jakub@stoplight.io"}],"homepage":"https://apitools.dev/json-schema-ref-parser/","repository":{"type":"git","url":"git+https://github.com/APIDevTools/json-schema-ref-parser.git"},"license":"MIT","funding":"https://github.com/sponsors/philsturgeon","main":"lib/index.js","typings":"lib/index.d.ts","exports":{"types":"./lib/index.d.ts","require":"./cjs/index.js","default":"./lib/index.js"},"browser":{"fs":false},"engines":{"node":">= 16"},"type":"module","scripts":{"build":"swc ./lib/*.js -d ./cjs && swc ./lib/**/*.js -d ./cjs && copyfiles ./lib/**/*.cjs -u 1 ./cjs && node ./scripts/writeCJSPackageJSON.cjs","clean":"shx rm -rf coverage cjs","lint":"eslint lib test/fixtures test/specs","test":"npm run test:node && npm run test:typescript && npm run test:browser && npm run lint","test:node":"mocha","test:browser":"cross-env NODE_OPTIONS=--openssl-legacy-provider karma start karma.conf.cjs --single-run","test:typescript":"tsc --noEmit --strict --lib esnext,dom test/specs/typescript-definition.spec.ts","coverage":"npm run coverage:node && npm run coverage:browser","coverage:node":"c8 node_modules/mocha/bin/mocha","coverage:browser":"npm run test:browser -- --coverage","upgrade":"npm-check -u && npm audit fix"},"devDependencies":{"@babel/polyfill":"^7.12.1","@chiragrupani/karma-chromium-edge-launcher":"^2.2.2","@jsdevtools/eslint-config":"^1.0.7","@jsdevtools/host-environment":"^2.1.2","@jsdevtools/karma-config":"^3.1.7","@swc/cli":"^0.1.59","@swc/core":"^1.3.25","@types/node":"^14.14.21","c8":"^7.12.0","chai":"^4.2.0","chai-subset":"^1.6.0","chokidar":"^3.5.3","copyfiles":"^2.4.1","cross-env":"^7.0.3","eslint":"^7.18.0","isomorphic-fetch":"^3.0.0","karma":"^5.0.2","karma-cli":"^2.0.0","mocha":"^8.2.1","node-abort-controller":"^3.0.1","npm-check":"^5.9.0","shx":"^0.3.2","typescript":"^4.0.5"},"dependencies":{"@jsdevtools/ono":"^7.1.3","@types/json-schema":"^7.0.6","call-me-maybe":"^1.0.1","js-yaml":"^4.1.0"},"release":{"branches":["main"],"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github"]},"gitHead":"3241ca426d7364455ca8d85f231d51211d7ab7fe","bugs":{"url":"https://github.com/APIDevTools/json-schema-ref-parser/issues"},"_id":"@bcherny/json-schema-ref-parser@10.0.5-fork","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"shasum":"9b5e1e7e07964ea61840174098e634edbe8197bc","size":53477,"noattachment":false,"key":"/@bcherny/json-schema-ref-parser/-/@bcherny/json-schema-ref-parser-10.0.5-fork.tgz","tarball":"http://registry.cnpm.dingdandao.com/@bcherny/json-schema-ref-parser/download/@bcherny/json-schema-ref-parser-10.0.5-fork.tgz"},"_npmUser":{"name":"bcherny","email":"boris@performancejs.com"},"directories":{},"maintainers":[{"name":"bcherny","email":"boris@performancejs.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/json-schema-ref-parser_10.0.5-fork_1677122761985_0.6026780893443937"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-02-23T03:26:02.162Z","publish_time":1677122762162,"_cnpm_publish_time":1677122762162},"9.0.9":{"name":"@bcherny/json-schema-ref-parser","version":"9.0.9","description":"Parse, Resolve, and Dereference JSON Schema $ref pointers","keywords":["json","schema","jsonschema","json-schema","json-pointer","$ref","dereference","resolve"],"author":{"name":"James Messinger","url":"https://jamesmessinger.com"},"contributors":[{"name":"Boris Cherny","email":"boris@performancejs.com"},{"name":"Jakub Rożek","email":"jakub@stoplight.io"}],"homepage":"https://apitools.dev/json-schema-ref-parser/","repository":{"type":"git","url":"https://github.com/APIDevTools/json-schema-ref-parser.git"},"license":"MIT","main":"lib/index.js","typings":"lib/index.d.ts","browser":{"fs":false},"scripts":{"build":"cp LICENSE *.md dist","clean":"shx rm -rf .nyc_output coverage","lint":"eslint lib test/fixtures test/specs","test":"npm run test:node && npm run test:typescript && npm run test:browser && npm run lint","test:node":"mocha","test:browser":"karma start --single-run","test:typescript":"tsc --noEmit --strict --lib esnext,dom test/specs/typescript-definition.spec.ts","coverage":"npm run coverage:node && npm run coverage:browser","coverage:node":"nyc node_modules/mocha/bin/mocha","coverage:browser":"npm run test:browser -- --coverage","upgrade":"npm-check -u && npm audit fix"},"devDependencies":{"@amanda-mitchell/semantic-release-npm-multiple":"^2.5.0","@babel/polyfill":"^7.12.1","@jsdevtools/eslint-config":"^1.0.7","@jsdevtools/host-environment":"^2.1.2","@jsdevtools/karma-config":"^3.1.7","@types/node":"^14.14.21","chai-subset":"^1.6.0","chai":"^4.2.0","eslint":"^7.18.0","karma-cli":"^2.0.0","karma":"^5.0.2","mocha":"^8.2.1","npm-check":"^5.9.0","nyc":"^15.0.1","semantic-release-plugin-update-version-in-files":"^1.1.0","shx":"^0.3.2","typescript":"^4.0.5"},"dependencies":{"@jsdevtools/ono":"^7.1.3","@types/json-schema":"^7.0.6","call-me-maybe":"^1.0.1","js-yaml":"^4.1.0"},"release":{"branches":["main"],"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator",["semantic-release-plugin-update-version-in-files",{"files":["dist/package.json"],"placeholder":"X.X.X"}],["@amanda-mitchell/semantic-release-npm-multiple",{"registries":{"scoped":{"pkgRoot":"."},"unscoped":{"pkgRoot":"dist"}}}],"@semantic-release/github"]},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 James Messinger\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","_id":"@bcherny/json-schema-ref-parser@9.0.9","dist":{"shasum":"09899d405bc708c0acac0066ae8db5b94d465ca4","size":35489,"noattachment":false,"key":"/@bcherny/json-schema-ref-parser/-/@bcherny/json-schema-ref-parser-9.0.9.tgz","tarball":"http://registry.cnpm.dingdandao.com/@bcherny/json-schema-ref-parser/download/@bcherny/json-schema-ref-parser-9.0.9.tgz"},"_npmUser":{"name":"bcherny","email":"boris@performancejs.com"},"directories":{},"maintainers":[{"name":"bcherny","email":"boris@performancejs.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/json-schema-ref-parser_9.0.9_1659774891054_0.7461927681302436"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-08-06T08:34:56.670Z","publish_time":1659774891245,"_cnpm_publish_time":1659774891245}},"readme":"# JSON Schema $Ref Parser\n\n_**This package needs [a new maintainer](https://github.com/APIDevTools/json-schema-ref-parser/issues/285) or at least some contributors. For more information [please read this article](https://phil.tech/2022/bundling-openapi-with-javascript/). As of v10.0.0 I am no longer spending any time working on this tool, so I can focus on scaling up my [reforestation charity](https://protect.earth/) instead of burning myself out trying to maintain a whole load of OSS projects I don't use in my vanishingly small spare time. Get in touch if you'd like to take over.** - [Phil Sturgeon](https://github.com/philsturgeon)_\n\n#### Parse, Resolve, and Dereference JSON Schema $ref pointers\n\n[![Build Status](https://github.com/APIDevTools/json-schema-ref-parser/workflows/CI-CD/badge.svg?branch=master)](https://github.com/APIDevTools/json-schema-ref-parser/actions)\n[![Coverage Status](https://coveralls.io/repos/github/APIDevTools/json-schema-ref-parser/badge.svg?branch=master)](https://coveralls.io/github/APIDevTools/json-schema-ref-parser)\n\n[![npm](https://img.shields.io/npm/v/@apidevtools/json-schema-ref-parser.svg)](https://www.npmjs.com/package/@apidevtools/json-schema-ref-parser)\n[![License](https://img.shields.io/npm/l/@apidevtools/json-schema-ref-parser.svg)](LICENSE)\n[![Buy us a tree](https://img.shields.io/badge/Treeware-%F0%9F%8C%B3-lightgreen)](https://plant.treeware.earth/APIDevTools/json-schema-ref-parser)\n\nThe Problem:\n--------------------------\nYou've got a JSON Schema with `$ref` pointers to other files and/or URLs.  Maybe you know all the referenced files ahead of time.  Maybe you don't.  Maybe some are local files, and others are remote URLs.  Maybe they are a mix of JSON and YAML format.  Maybe some of the files contain cross-references to each other.\n\n```javascript\n{\n  \"definitions\": {\n    \"person\": {\n      // references an external file\n      \"$ref\": \"schemas/people/Bruce-Wayne.json\"\n    },\n    \"place\": {\n      // references a sub-schema in an external file\n      \"$ref\": \"schemas/places.yaml#/definitions/Gotham-City\"\n    },\n    \"thing\": {\n      // references a URL\n      \"$ref\": \"http://wayne-enterprises.com/things/batmobile\"\n    },\n    \"color\": {\n      // references a value in an external file via an internal reference\n      \"$ref\": \"#/definitions/thing/properties/colors/black-as-the-night\"\n    }\n  }\n}\n```\n\n\nThe Solution:\n--------------------------\nJSON Schema $Ref Parser is a full [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03) and [JSON Pointer](https://tools.ietf.org/html/rfc6901) implementation that crawls even the most complex [JSON Schemas](http://json-schema.org/latest/json-schema-core.html) and gives you simple, straightforward JavaScript objects.\n\n- Use **JSON** or **YAML** schemas &mdash; or even a mix of both!\n- Supports `$ref` pointers to external files and URLs, as well as [custom sources](https://apitools.dev/json-schema-ref-parser/docs/plugins/resolvers.html) such as databases\n- Can [bundle](https://apitools.dev/json-schema-ref-parser/docs/ref-parser.html#bundlepath-options-callback) multiple files into a single schema that only has _internal_ `$ref` pointers\n- Can [dereference](https://apitools.dev/json-schema-ref-parser/docs/ref-parser.html#dereferencepath-options-callback) your schema, producing a plain-old JavaScript object that's easy to work with\n- Supports [circular references](https://apitools.dev/json-schema-ref-parser/docs/#circular-refs), nested references, back-references, and cross-references between files\n- Maintains object reference equality &mdash; `$ref` pointers to the same value always resolve to the same object instance\n- Tested in Node v10, v12, & v14, and all major web browsers on Windows, Mac, and Linux\n\n\nExample\n--------------------------\n\n```javascript\n$RefParser.dereference(mySchema, (err, schema) => {\n  if (err) {\n    console.error(err);\n  }\n  else {\n    // `schema` is just a normal JavaScript object that contains your entire JSON Schema,\n    // including referenced files, combined into a single object\n    console.log(schema.definitions.person.properties.firstName);\n  }\n})\n```\n\nOr use `async`/`await` syntax instead. The following example is the same as above:\n\n```javascript\ntry {\n  let schema = await $RefParser.dereference(mySchema);\n  console.log(schema.definitions.person.properties.firstName);\n}\ncatch(err) {\n  console.error(err);\n}\n```\n\nFor more detailed examples, please see the [API Documentation](https://apitools.dev/json-schema-ref-parser/docs/)\n\n\n\nInstallation\n--------------------------\nInstall using [npm](https://docs.npmjs.com/about-npm/):\n\n```bash\nnpm install @apidevtools/json-schema-ref-parser\n```\n\n\n\nUsage\n--------------------------\nWhen using JSON Schema $Ref Parser in Node.js apps, you'll probably want to use **CommonJS** syntax:\n\n```javascript\nconst $RefParser = require(\"@apidevtools/json-schema-ref-parser\");\n```\n\nWhen using a transpiler such as [Babel](https://babeljs.io/) or [TypeScript](https://www.typescriptlang.org/), or a bundler such as [Webpack](https://webpack.js.org/) or [Rollup](https://rollupjs.org/), you can use **ECMAScript modules** syntax instead:\n\n```javascript\nimport $RefParser from \"@apidevtools/json-schema-ref-parser\";\n```\n\nIf you are using Node.js < 18, you'll need a polyfill for `fetch`, like [node-fetch](https://github.com/node-fetch/node-fetch):\n```javascript\nimport fetch from \"node-fetch\";\n\nglobalThis.fetch = fetch;\n```\n\n\n\nBrowser support\n--------------------------\nJSON Schema $Ref Parser supports recent versions of every major web browser.  Older browsers may require [Babel](https://babeljs.io/) and/or [polyfills](https://babeljs.io/docs/en/next/babel-polyfill).\n\nTo use JSON Schema $Ref Parser in a browser, you'll need to use a bundling tool such as [Webpack](https://webpack.js.org/), [Rollup](https://rollupjs.org/), [Parcel](https://parceljs.org/), or [Browserify](http://browserify.org/). Some bundlers may require a bit of configuration, such as setting `browser: true` in [rollup-plugin-resolve](https://github.com/rollup/rollup-plugin-node-resolve).\n\n\n\nAPI Documentation\n--------------------------\nFull API documentation is available [right here](https://apitools.dev/json-schema-ref-parser/docs/)\n\n\n\nContributing\n--------------------------\nI welcome any contributions, enhancements, and bug-fixes.  [Open an issue](https://github.com/APIDevTools/json-schema-ref-parser/issues) on GitHub and [submit a pull request](https://github.com/APIDevTools/json-schema-ref-parser/pulls).\n\n#### Building/Testing\nTo build/test the project locally on your computer:\n\n1. __Clone this repo__<br>\n`git clone https://github.com/APIDevTools/json-schema-ref-parser.git`\n\n2. __Install dependencies__<br>\n`npm install`\n\n3. __Run the tests__<br>\n`npm test`\n\n\n\nLicense\n--------------------------\nJSON Schema $Ref Parser is 100% free and open-source, under the [MIT license](LICENSE). Use it however you want.\n\nThis package is [Treeware](http://treeware.earth). If you use it in production, then we ask that you [**buy the world a tree**](https://plant.treeware.earth/APIDevTools/json-schema-ref-parser) to thank us for our work. By contributing to the Treeware forest you’ll be creating employment for local families and restoring wildlife habitats.\n\n\n\nBig Thanks To\n--------------------------\nThanks to these awesome companies for their support of Open Source developers ❤\n\n[![Stoplight](https://svgshare.com/i/TK5.svg)](https://stoplight.io/?utm_source=github&utm_medium=readme&utm_campaign=json_schema_ref_parser)\n[![SauceLabs](https://jstools.dev/img/badges/sauce-labs.svg)](https://saucelabs.com)\n[![Coveralls](https://jstools.dev/img/badges/coveralls.svg)](https://coveralls.io)\n","_attachments":{},"homepage":"https://apitools.dev/json-schema-ref-parser/","bugs":{"url":"https://github.com/APIDevTools/json-schema-ref-parser/issues"},"license":"MIT"}