Socket
Socket
Sign inDemoInstall

@stoplight/json

Package Overview
Dependencies
Maintainers
25
Versions
107
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@stoplight/json - npm Package Compare versions

Comparing version 3.13.3 to 3.13.4

2

index.cjs.js

@@ -1,1 +0,1 @@

"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var lodash=require("lodash"),jsoncParser=require("jsonc-parser"),createOrderedObject=require("@stoplight/ordered-object-literal"),createOrderedObject__default=_interopDefault(createOrderedObject),types=require("@stoplight/types"),fastStringify=_interopDefault(require("safe-stable-stringify"));const hasRef=e=>lodash.isObject(e)&&"$ref"in e&&"string"==typeof e.$ref,isLocalRef=e=>e.length>0&&"#"===e[0],replaceInString=(e,t,r)=>{const n=e.toString();let o="",i=n,s=0,a=i.indexOf(t);for(;a>-1;)o+=n.substring(s,s+a)+r,i=i.substring(a+t.length,i.length),s+=a+t.length,a=i.indexOf(t);return i.length>0&&(o+=n.substring(n.length-i.length,n.length)),o};function isPlainObject(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}const encodePointerFragment=e=>"number"==typeof e?e:replaceInString(replaceInString(e,"~","~0"),"/","~1"),pathToPointer=e=>encodeUriFragmentIdentifier(e),encodeUriFragmentIdentifier=e=>{if(e&&"object"!=typeof e)throw new TypeError("Invalid type: path must be an array of segments.");return 0===e.length?"#":`#/${e.map(encodePointerFragment).join("/")}`};function safeDecodeURIComponent(e){try{return decodeURIComponent(e)}catch(t){return e}}const PERCENT_ENCODING_OCTET=/%[0-9a-f]+/gi,decodePointer=e=>{let t;try{t=decodeURIComponent(e)}catch(r){t=e.replace(PERCENT_ENCODING_OCTET,safeDecodeURIComponent)}return replaceInString(replaceInString(t,"~1","/"),"~0","~")},pointerToPath=e=>decodeUriFragmentIdentifier(e),decodeFragmentSegments=e=>{const t=e.length,r=[];let n=-1;for(;++n<t;)r.push(decodePointer(e[n]));return r},decodeUriFragmentIdentifier=e=>{if("string"!=typeof e)throw new TypeError("Invalid type: JSON Pointers are represented as strings.");if(0===e.length||"#"!==e[0])throw new URIError("Invalid JSON Pointer syntax; URI fragment identifiers must begin with a hash.");if(1===e.length)return[];if("/"!==e[1])throw new URIError("Invalid JSON Pointer syntax.");return decodeFragmentSegments(e.substring(2).split("/"))},extractSourceFromRef=e=>{if("string"!=typeof e||0===e.length||isLocalRef(e))return null;const t=e.indexOf("#");return-1===t?e:e.slice(0,t)};function _resolveInlineRef(e,t,r){if(null!==extractSourceFromRef(t))throw new ReferenceError("Cannot resolve external references");const n=pointerToPath(t);let o=e;for(const i of n){if(!(isPlainObject(o)&&i in o))throw new ReferenceError(`Could not resolve '${t}'`);if(isPlainObject(o=o[i])&&"$ref"in o){if(r.includes(o))return r[r.length-1];if(r.push(o),"string"!=typeof o.$ref)throw new TypeError("$ref should be a string");o=_resolveInlineRef(e,o.$ref,r)}}if(0===r.length)return o;const i=r[r.length-1];return isPlainObject(i)&&("summary"in i||"description"in i)?Object.assign(Object.assign(Object.assign({},o),"description"in i?{description:i.description}:null),"summary"in i?{summary:i.summary}:null):o}function resolveInlineRef(e,t){return _resolveInlineRef(e,t,[])}const traverse=(e,t,r=[])=>{if(e&&"object"==typeof e)for(const n in e)e.hasOwnProperty(n)&&(t({parent:e,parentPath:r,property:n,propertyValue:e[n]}),e[n]&&"object"==typeof e[n]&&traverse(e[n],t,r.concat(n)))},BUNDLE_ROOT="#/__bundled__",ERRORS_ROOT="#/__errors__",bundleTarget=({document:e,path:t,bundleRoot:r=BUNDLE_ROOT,errorsRoot:n=ERRORS_ROOT},o)=>{if(t===r||t===n)throw new Error("Roots do not make any sense");return bundle(lodash.cloneDeep(e),pointerToPath(r),pointerToPath(n))(t,{[t]:!0},o)},bundle=(e,t,r)=>{const n=new Set,o=(i,s,a,c={},l={},f={})=>{const p=pointerToPath(i),u=lodash.get(e,p);traverse(a||u,({parent:r})=>{if(hasRef(r)&&isLocalRef(r.$ref)){const a=r.$ref;if(f[a])return;if(c[a])return void(r.$ref=c[a]);let p,u,d,h,g;try{let r;if(p=pointerToPath(a),Array.isArray(lodash.get(e,p.slice(0,-1)))){r=`${p[p.length-2]}_${p[p.length-1]}`}else r=p[p.length-1];d=r;let o=1;for(;n.has(d);)if(d=`${r}_${++o}`,o>20)throw new Error(`Keys ${r}_2 through ${r}_20 already taken.`);n.add(d),u=[...t,d],h=pathToPointer(u)}catch(e){f[a]=e.message}if(!p||!u||!h)return;if("object"==typeof e&&null!==e)try{g=resolveInlineRef(Object(e),a)}catch(t){g=lodash.get(e,p)}if(void 0!==g&&(c[a]=h,r.$ref=h,!lodash.has(l,u))){const t=lodash.get(e,p);Array.isArray(t)?lodash.set(l,u,new Array(t.length).fill(null)):"object"==typeof t&&lodash.set(l,u,{}),lodash.set(l,u,g),s[a]||(s[a]=!0,o(i,s,g,c,l,f),s[a]=!1)}}});const d=lodash.get(l,t);return d&&Object.keys(d).length&&lodash.set(u,t,d),(Object.keys(f).length||lodash.has(e,r))&&lodash.set(u,r,lodash.has(e,r)?lodash.get(e,r):f),u};return o},decodePointerFragment=e=>replaceInString(replaceInString(e,"~1","/"),"~0","~"),encodePointer=e=>replaceInString(replaceInString(e,"~","~0"),"//","/~1"),decycle=(e,t)=>{const r=new WeakMap;return function e(n,o){let i;if(t&&(n=t(n)),isPlainObject(n)||Array.isArray(n)){const t=r.get(n);return t?{$ref:encodePointer(t)}:(r.set(n,o),Array.isArray(n)?i=n.map((t,r)=>e(t,`${o}/${r}`)):(i={},Object.keys(n).forEach(t=>{i[t]=e(n[t],`${o}/${t}`)})),r.delete(n),i)}return n}(e,"#")},extractPointerFromRef=e=>{if("string"!=typeof e||0===e.length)return null;const t=e.indexOf("#");return-1===t?null:e.slice(t)},getFirstPrimitiveProperty=e=>{const t=jsoncParser.createScanner(e,!0);if(t.scan(),1!==t.getToken())return;if(t.scan(),2===t.getToken())return;if(10!==t.getToken())throw new SyntaxError("Unexpected character");const r=t.getTokenValue();if(t.scan(),6!==t.getToken())throw new SyntaxError("Colon expected");switch(t.scan(),t.getToken()){case 10:return[r,t.getTokenValue()];case 11:return[r,Number(t.getTokenValue())];case 8:return[r,!0];case 9:return[r,!1];case 7:return[r,null];case 16:throw new SyntaxError("Unexpected character");case 17:throw new SyntaxError("Unexpected end of file");default:return}},getJsonPathForPosition=({lineMap:e,ast:t},r)=>{const n=e[r.line],o=e[r.line+1];if(void 0===n)return;const i=jsoncParser.findNodeAtOffset(t,void 0===o?n+r.character:Math.min(o,n+r.character),!0);if(void 0===i)return;const s=jsoncParser.getNodePath(i);return 0!==s.length?s:void 0};function getLastPathSegment(e){return decodePointerFragment(e.split("/").pop()||"")}const getLocationForJsonPath=({lineMap:e,ast:t},r,n=!1)=>{const o=findNodeAtPath(t,r,n);if(void 0!==o&&void 0!==o.range)return{range:o.range}};function findNodeAtPath(e,t,r){e:for(const n of t){const t=Number.isInteger(Number(n))?Number(n):n;if("string"==typeof t||"number"==typeof t&&"array"!==e.type){if("object"!==e.type||!Array.isArray(e.children))return r?e:void 0;for(const r of e.children)if(Array.isArray(r.children)&&r.children[0].value===String(t)&&2===r.children.length){e=r.children[1];continue e}return r?e:void 0}if("array"!==e.type||t<0||!Array.isArray(e.children)||t>=e.children.length)return r?e:void 0;e=e.children[t]}return e}const parseWithPointers=(e,t={disallowComments:!0})=>{const r=[],{ast:n,data:o,lineMap:i}=parseTree(e,r,t);return{data:o,diagnostics:r,ast:n,lineMap:i}};function parseTree(e,t=[],r){const n=computeLineMap(e);let o={type:"array",offset:-1,length:-1,children:[],parent:void 0},i=null,s=[];const a=new WeakMap,c=[];function l(e){"property"===o.type&&(o.length=e-o.offset,o=o.parent)}function f(e,t,r){return{start:{line:e,character:t},end:{line:e,character:t+r}}}function p(e){return o.children.push(e),e}function u(e){Array.isArray(s)?s.push(e):null!==i&&(s[i]=e)}function d(e){u(e),c.push(s),s=e,i=null}function h(){s=c.pop()}const g={onObjectBegin:(e,t,n,i)=>{o=p({type:"object",offset:e,length:-1,parent:o,children:[],range:f(n,i,t)}),!1===r.ignoreDuplicateKeys&&a.set(o,[]),d(createObjectLiteral(!0===r.preserveKeyOrder))},onObjectProperty:(e,n,c,l,u)=>{if((o=p({type:"property",offset:n,length:-1,parent:o,children:[]})).children.push({type:"string",value:e,offset:n,length:c,parent:o}),!1===r.ignoreDuplicateKeys){const r=a.get(o.parent);r&&(0!==r.length&&r.includes(e)?t.push({range:f(l,u,c),message:"DuplicateKey",severity:types.DiagnosticSeverity.Error,path:getJsonPath(o),code:20}):r.push(e))}!0===r.preserveKeyOrder&&swapKey(s,e),i=e},onObjectEnd:(e,t,n,i)=>{!1===r.ignoreDuplicateKeys&&a.delete(o),o.length=e+t-o.offset,o.range&&(o.range.end.line=n,o.range.end.character=i+t),o=o.parent,l(e+t),h()},onArrayBegin:(e,t,r,n)=>{o=p({type:"array",offset:e,length:-1,parent:o,children:[],range:f(r,n,t)}),d([])},onArrayEnd:(e,t,r,n)=>{o.length=e+t-o.offset,o.range&&(o.range.end.line=r,o.range.end.character=n+t),o=o.parent,l(e+t),h()},onLiteralValue:(e,t,r,n,i)=>{p({type:getLiteralNodeType(e),offset:t,length:r,parent:o,value:e,range:f(n,i,r)}),l(t+r),u(e)},onSeparator:(e,t,r)=>{"property"===o.type&&(":"===e?o.colonOffset=t:","===e&&l(t))},onError:(e,r,n,o,i)=>{t.push({range:f(o,i,n),message:jsoncParser.printParseErrorCode(e),severity:types.DiagnosticSeverity.Error,code:e})}};jsoncParser.visit(e,g,r);const y=o.children[0];return y&&delete y.parent,{ast:y,data:s[0],lineMap:n}}function getLiteralNodeType(e){switch(typeof e){case"boolean":return"boolean";case"number":return"number";case"string":return"string";default:return"null"}}const computeLineMap=e=>{const t=[0];let r=0;for(;r<e.length;r++)"\n"===e[r]&&t.push(r+1);return t.push(r+1),t};function getJsonPath(e,t=[]){return"property"===e.type&&t.unshift(e.children[0].value),void 0!==e.parent?("array"===e.parent.type&&void 0!==e.parent.parent&&t.unshift(e.parent.children.indexOf(e)),getJsonPath(e.parent,t)):t}function createObjectLiteral(e){return e?createOrderedObject__default({}):{}}function swapKey(e,t){if(!(t in e))return;const r=createOrderedObject.getOrder(e),n=r.indexOf(t);-1!==n&&(r.splice(n,1),r.push(t))}const renameObjectKey=(e,t,r)=>{if(!e||!Object.hasOwnProperty.call(e,t)||t===r)return e;const n={};for(const[o,i]of Object.entries(e))o===t?n[r]=i:o in n||(n[o]=i);return n},safeParse=(e,t)=>{if("string"!=typeof e)return e;try{const r=parseNumber(e);return"string"==typeof r?r:JSON.parse(e,t)}catch(e){return}},parseNumber=e=>{const t=Number(e);return Number.isFinite(t)?String(t)===e?t:e:NaN},safeStringify=(e,t,r)=>{if("string"==typeof e)return e;try{return JSON.stringify(e,t,r)}catch(n){return fastStringify(e,t,r)}},startsWith=(e,t)=>{if(e instanceof Array){if(t instanceof Array){if(t.length>e.length)return!1;for(const r in t){if(!t.hasOwnProperty(r))continue;const n=parseInt(e[r]),o=parseInt(t[r]);if(isNaN(n)&&isNaN(o)){if(e[r]!==t[r])return!1}else if(n!==o)return!1}}}else{if("string"!=typeof e)return!1;if("string"==typeof t)return e.startsWith(t)}return!0},stringify=(e,t,r)=>{const n=safeStringify(e,t,r);if(void 0===n)throw new Error("The value could not be stringified");return n};function toPropertyPath(e){return e.replace(/^(\/|#\/)/,"").split("/").map(decodePointerFragment).map(sanitize).join(".")}function sanitize(e){return e.includes(".")?`["${e.replace(/"/g,'\\"')}"]`:e}const KEYS=Symbol.for(createOrderedObject.ORDER_KEY_ID),traps={ownKeys:e=>KEYS in e?e[KEYS]:Reflect.ownKeys(e)},trapAccess=e=>new Proxy(e,traps);function trimStart(e,t){if("string"==typeof e&&"string"==typeof t)return lodash.trimStart(e,t);if(!(e&&Array.isArray(e)&&e.length&&t&&Array.isArray(t)&&t.length))return e;let r=0;for(const n in e)if(e.hasOwnProperty(n)){if(e[n]!==t[n])break;r++}return e.slice(r)}exports.BUNDLE_ROOT=BUNDLE_ROOT,exports.ERRORS_ROOT=ERRORS_ROOT,exports.KEYS=KEYS,exports.bundleTarget=bundleTarget,exports.decodePointer=decodePointer,exports.decodePointerFragment=decodePointerFragment,exports.decycle=decycle,exports.encodePointer=encodePointer,exports.encodePointerFragment=encodePointerFragment,exports.extractPointerFromRef=extractPointerFromRef,exports.extractSourceFromRef=extractSourceFromRef,exports.getFirstPrimitiveProperty=getFirstPrimitiveProperty,exports.getJsonPathForPosition=getJsonPathForPosition,exports.getLastPathSegment=getLastPathSegment,exports.getLocationForJsonPath=getLocationForJsonPath,exports.hasRef=hasRef,exports.isLocalRef=isLocalRef,exports.parseTree=parseTree,exports.parseWithPointers=parseWithPointers,exports.pathToPointer=pathToPointer,exports.pointerToPath=pointerToPath,exports.renameObjectKey=renameObjectKey,exports.resolveInlineRef=resolveInlineRef,exports.safeParse=safeParse,exports.safeStringify=safeStringify,exports.startsWith=startsWith,exports.stringify=stringify,exports.toPropertyPath=toPropertyPath,exports.trapAccess=trapAccess,exports.traverse=traverse,exports.trimStart=trimStart;
"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var lodash=require("lodash"),jsoncParser=require("jsonc-parser"),createOrderedObject=require("@stoplight/ordered-object-literal"),createOrderedObject__default=_interopDefault(createOrderedObject),types=require("@stoplight/types"),fastStringify=_interopDefault(require("safe-stable-stringify"));const hasRef=e=>lodash.isObject(e)&&"$ref"in e&&"string"==typeof e.$ref,isLocalRef=e=>e.length>0&&"#"===e[0],replaceInString=(e,r,t)=>{const n=e.toString();let o="",i=n,a=0,s=i.indexOf(r);for(;s>-1;)o+=n.substring(a,a+s)+t,i=i.substring(s+r.length,i.length),a+=s+r.length,s=i.indexOf(r);return i.length>0&&(o+=n.substring(n.length-i.length,n.length)),o};function isPlainObject(e){if("object"!=typeof e||null===e)return!1;const r=Object.getPrototypeOf(e);return null===r||r===Object.prototype}const encodePointerFragment=e=>"number"==typeof e?e:replaceInString(replaceInString(e,"~","~0"),"/","~1"),pathToPointer=e=>encodeUriFragmentIdentifier(e),encodeUriFragmentIdentifier=e=>{if(e&&"object"!=typeof e)throw new TypeError("Invalid type: path must be an array of segments.");return 0===e.length?"#":`#/${e.map(encodePointerFragment).join("/")}`};function safeDecodeURIComponent(e){try{return decodeURIComponent(e)}catch(r){return e}}const PERCENT_ENCODING_OCTET=/%[0-9a-f]+/gi,decodePointer=e=>{let r;try{r=decodeURIComponent(e)}catch(t){r=e.replace(PERCENT_ENCODING_OCTET,safeDecodeURIComponent)}return replaceInString(replaceInString(r,"~1","/"),"~0","~")},pointerToPath=e=>decodeUriFragmentIdentifier(e),decodeFragmentSegments=e=>{const r=e.length,t=[];let n=-1;for(;++n<r;)t.push(decodePointer(e[n]));return t},decodeUriFragmentIdentifier=e=>{if("string"!=typeof e)throw new TypeError("Invalid type: JSON Pointers are represented as strings.");if(0===e.length||"#"!==e[0])throw new URIError("Invalid JSON Pointer syntax; URI fragment identifiers must begin with a hash.");if(1===e.length)return[];if("/"!==e[1])throw new URIError("Invalid JSON Pointer syntax.");return decodeFragmentSegments(e.substring(2).split("/"))},extractSourceFromRef=e=>{if("string"!=typeof e||0===e.length||isLocalRef(e))return null;const r=e.indexOf("#");return-1===r?e:e.slice(0,r)};function _resolveInlineRef(e,r,t){if(null!==extractSourceFromRef(r))throw new ReferenceError("Cannot resolve external references");const n=pointerToPath(r);let o=e;for(const i of n){if(!isPlainObject(o)&&!Array.isArray(o)||!(i in o))throw new ReferenceError(`Could not resolve '${r}'`);if(isPlainObject(o=o[i])&&"$ref"in o){if(t.includes(o))return t[t.length-1];if(t.push(o),"string"!=typeof o.$ref)throw new TypeError("$ref should be a string");o=_resolveInlineRef(e,o.$ref,t)}}if(0===t.length)return o;const i=t[t.length-1];return isPlainObject(i)&&("summary"in i||"description"in i)?Object.assign(Object.assign(Object.assign({},o),"description"in i?{description:i.description}:null),"summary"in i?{summary:i.summary}:null):o}function resolveInlineRef(e,r){return _resolveInlineRef(e,r,[])}const traverse=(e,r,t=[])=>{if(e&&"object"==typeof e)for(const n in e)e.hasOwnProperty(n)&&(r({parent:e,parentPath:t,property:n,propertyValue:e[n]}),e[n]&&"object"==typeof e[n]&&traverse(e[n],r,t.concat(n)))},BUNDLE_ROOT="#/__bundled__",ERRORS_ROOT="#/__errors__",bundleTarget=({document:e,path:r,bundleRoot:t=BUNDLE_ROOT,errorsRoot:n=ERRORS_ROOT},o)=>{if(r===t||r===n)throw new Error("Roots do not make any sense");return bundle(lodash.cloneDeep(e),pointerToPath(t),pointerToPath(n))(r,{[r]:!0},o)},bundle=(e,r,t)=>{const n=new Set,o=(i,a,s,c={},l={},f={})=>{const p=pointerToPath(i),u=lodash.get(e,p);traverse(s||u,({parent:t})=>{if(hasRef(t)&&isLocalRef(t.$ref)){const s=t.$ref;if(f[s])return;if(c[s])return void(t.$ref=c[s]);let p,u,d,h,g;try{let t;if(p=pointerToPath(s),Array.isArray(lodash.get(e,p.slice(0,-1)))){t=`${p[p.length-2]}_${p[p.length-1]}`}else t=p[p.length-1];d=t;let o=1;for(;n.has(d);)if(d=`${t}_${++o}`,o>20)throw new Error(`Keys ${t}_2 through ${t}_20 already taken.`);n.add(d),u=[...r,d],h=pathToPointer(u)}catch(e){f[s]=e.message}if(!p||!u||!h)return;if("object"==typeof e&&null!==e)try{g=resolveInlineRef(Object(e),s)}catch(r){g=lodash.get(e,p)}if(void 0!==g&&(c[s]=h,t.$ref=h,!lodash.has(l,u))){const r=lodash.get(e,p);Array.isArray(r)?lodash.set(l,u,new Array(r.length).fill(null)):"object"==typeof r&&lodash.set(l,u,{}),lodash.set(l,u,g),a[s]||(a[s]=!0,o(i,a,g,c,l,f),a[s]=!1)}}});const d=lodash.get(l,r);return d&&Object.keys(d).length&&lodash.set(u,r,d),(Object.keys(f).length||lodash.has(e,t))&&lodash.set(u,t,lodash.has(e,t)?lodash.get(e,t):f),u};return o},decodePointerFragment=e=>replaceInString(replaceInString(e,"~1","/"),"~0","~"),encodePointer=e=>replaceInString(replaceInString(e,"~","~0"),"//","/~1"),decycle=(e,r)=>{const t=new WeakMap;return function e(n,o){let i;if(r&&(n=r(n)),isPlainObject(n)||Array.isArray(n)){const r=t.get(n);return r?{$ref:encodePointer(r)}:(t.set(n,o),Array.isArray(n)?i=n.map((r,t)=>e(r,`${o}/${t}`)):(i={},Object.keys(n).forEach(r=>{i[r]=e(n[r],`${o}/${r}`)})),t.delete(n),i)}return n}(e,"#")},extractPointerFromRef=e=>{if("string"!=typeof e||0===e.length)return null;const r=e.indexOf("#");return-1===r?null:e.slice(r)},getFirstPrimitiveProperty=e=>{const r=jsoncParser.createScanner(e,!0);if(r.scan(),1!==r.getToken())return;if(r.scan(),2===r.getToken())return;if(10!==r.getToken())throw new SyntaxError("Unexpected character");const t=r.getTokenValue();if(r.scan(),6!==r.getToken())throw new SyntaxError("Colon expected");switch(r.scan(),r.getToken()){case 10:return[t,r.getTokenValue()];case 11:return[t,Number(r.getTokenValue())];case 8:return[t,!0];case 9:return[t,!1];case 7:return[t,null];case 16:throw new SyntaxError("Unexpected character");case 17:throw new SyntaxError("Unexpected end of file");default:return}},getJsonPathForPosition=({lineMap:e,ast:r},t)=>{const n=e[t.line],o=e[t.line+1];if(void 0===n)return;const i=jsoncParser.findNodeAtOffset(r,void 0===o?n+t.character:Math.min(o,n+t.character),!0);if(void 0===i)return;const a=jsoncParser.getNodePath(i);return 0!==a.length?a:void 0};function getLastPathSegment(e){return decodePointerFragment(e.split("/").pop()||"")}const getLocationForJsonPath=({lineMap:e,ast:r},t,n=!1)=>{const o=findNodeAtPath(r,t,n);if(void 0!==o&&void 0!==o.range)return{range:o.range}};function findNodeAtPath(e,r,t){e:for(const n of r){const r=Number.isInteger(Number(n))?Number(n):n;if("string"==typeof r||"number"==typeof r&&"array"!==e.type){if("object"!==e.type||!Array.isArray(e.children))return t?e:void 0;for(const t of e.children)if(Array.isArray(t.children)&&t.children[0].value===String(r)&&2===t.children.length){e=t.children[1];continue e}return t?e:void 0}if("array"!==e.type||r<0||!Array.isArray(e.children)||r>=e.children.length)return t?e:void 0;e=e.children[r]}return e}const parseWithPointers=(e,r={disallowComments:!0})=>{const t=[],{ast:n,data:o,lineMap:i}=parseTree(e,t,r);return{data:o,diagnostics:t,ast:n,lineMap:i}};function parseTree(e,r=[],t){const n=computeLineMap(e);let o={type:"array",offset:-1,length:-1,children:[],parent:void 0},i=null,a=[];const s=new WeakMap,c=[];function l(e){"property"===o.type&&(o.length=e-o.offset,o=o.parent)}function f(e,r,t){return{start:{line:e,character:r},end:{line:e,character:r+t}}}function p(e){return o.children.push(e),e}function u(e){Array.isArray(a)?a.push(e):null!==i&&(a[i]=e)}function d(e){u(e),c.push(a),a=e,i=null}function h(){a=c.pop()}const g={onObjectBegin:(e,r,n,i)=>{o=p({type:"object",offset:e,length:-1,parent:o,children:[],range:f(n,i,r)}),!1===t.ignoreDuplicateKeys&&s.set(o,[]),d(createObjectLiteral(!0===t.preserveKeyOrder))},onObjectProperty:(e,n,c,l,u)=>{if((o=p({type:"property",offset:n,length:-1,parent:o,children:[]})).children.push({type:"string",value:e,offset:n,length:c,parent:o}),!1===t.ignoreDuplicateKeys){const t=s.get(o.parent);t&&(0!==t.length&&t.includes(e)?r.push({range:f(l,u,c),message:"DuplicateKey",severity:types.DiagnosticSeverity.Error,path:getJsonPath(o),code:20}):t.push(e))}!0===t.preserveKeyOrder&&swapKey(a,e),i=e},onObjectEnd:(e,r,n,i)=>{!1===t.ignoreDuplicateKeys&&s.delete(o),o.length=e+r-o.offset,o.range&&(o.range.end.line=n,o.range.end.character=i+r),o=o.parent,l(e+r),h()},onArrayBegin:(e,r,t,n)=>{o=p({type:"array",offset:e,length:-1,parent:o,children:[],range:f(t,n,r)}),d([])},onArrayEnd:(e,r,t,n)=>{o.length=e+r-o.offset,o.range&&(o.range.end.line=t,o.range.end.character=n+r),o=o.parent,l(e+r),h()},onLiteralValue:(e,r,t,n,i)=>{p({type:getLiteralNodeType(e),offset:r,length:t,parent:o,value:e,range:f(n,i,t)}),l(r+t),u(e)},onSeparator:(e,r,t)=>{"property"===o.type&&(":"===e?o.colonOffset=r:","===e&&l(r))},onError:(e,t,n,o,i)=>{r.push({range:f(o,i,n),message:jsoncParser.printParseErrorCode(e),severity:types.DiagnosticSeverity.Error,code:e})}};jsoncParser.visit(e,g,t);const y=o.children[0];return y&&delete y.parent,{ast:y,data:a[0],lineMap:n}}function getLiteralNodeType(e){switch(typeof e){case"boolean":return"boolean";case"number":return"number";case"string":return"string";default:return"null"}}const computeLineMap=e=>{const r=[0];let t=0;for(;t<e.length;t++)"\n"===e[t]&&r.push(t+1);return r.push(t+1),r};function getJsonPath(e,r=[]){return"property"===e.type&&r.unshift(e.children[0].value),void 0!==e.parent?("array"===e.parent.type&&void 0!==e.parent.parent&&r.unshift(e.parent.children.indexOf(e)),getJsonPath(e.parent,r)):r}function createObjectLiteral(e){return e?createOrderedObject__default({}):{}}function swapKey(e,r){if(!(r in e))return;const t=createOrderedObject.getOrder(e),n=t.indexOf(r);-1!==n&&(t.splice(n,1),t.push(r))}const renameObjectKey=(e,r,t)=>{if(!e||!Object.hasOwnProperty.call(e,r)||r===t)return e;const n={};for(const[o,i]of Object.entries(e))o===r?n[t]=i:o in n||(n[o]=i);return n},safeParse=(e,r)=>{if("string"!=typeof e)return e;try{const t=parseNumber(e);return"string"==typeof t?t:JSON.parse(e,r)}catch(e){return}},parseNumber=e=>{const r=Number(e);return Number.isFinite(r)?String(r)===e?r:e:NaN},safeStringify=(e,r,t)=>{if("string"==typeof e)return e;try{return JSON.stringify(e,r,t)}catch(n){return fastStringify(e,r,t)}},startsWith=(e,r)=>{if(e instanceof Array){if(r instanceof Array){if(r.length>e.length)return!1;for(const t in r){if(!r.hasOwnProperty(t))continue;const n=parseInt(e[t]),o=parseInt(r[t]);if(isNaN(n)&&isNaN(o)){if(e[t]!==r[t])return!1}else if(n!==o)return!1}}}else{if("string"!=typeof e)return!1;if("string"==typeof r)return e.startsWith(r)}return!0},stringify=(e,r,t)=>{const n=safeStringify(e,r,t);if(void 0===n)throw new Error("The value could not be stringified");return n};function toPropertyPath(e){return e.replace(/^(\/|#\/)/,"").split("/").map(decodePointerFragment).map(sanitize).join(".")}function sanitize(e){return e.includes(".")?`["${e.replace(/"/g,'\\"')}"]`:e}const KEYS=Symbol.for(createOrderedObject.ORDER_KEY_ID),traps={ownKeys:e=>KEYS in e?e[KEYS]:Reflect.ownKeys(e)},trapAccess=e=>new Proxy(e,traps);function trimStart(e,r){if("string"==typeof e&&"string"==typeof r)return lodash.trimStart(e,r);if(!(e&&Array.isArray(e)&&e.length&&r&&Array.isArray(r)&&r.length))return e;let t=0;for(const n in e)if(e.hasOwnProperty(n)){if(e[n]!==r[n])break;t++}return e.slice(t)}exports.BUNDLE_ROOT=BUNDLE_ROOT,exports.ERRORS_ROOT=ERRORS_ROOT,exports.KEYS=KEYS,exports.bundleTarget=bundleTarget,exports.decodePointer=decodePointer,exports.decodePointerFragment=decodePointerFragment,exports.decycle=decycle,exports.encodePointer=encodePointer,exports.encodePointerFragment=encodePointerFragment,exports.extractPointerFromRef=extractPointerFromRef,exports.extractSourceFromRef=extractSourceFromRef,exports.getFirstPrimitiveProperty=getFirstPrimitiveProperty,exports.getJsonPathForPosition=getJsonPathForPosition,exports.getLastPathSegment=getLastPathSegment,exports.getLocationForJsonPath=getLocationForJsonPath,exports.hasRef=hasRef,exports.isLocalRef=isLocalRef,exports.parseTree=parseTree,exports.parseWithPointers=parseWithPointers,exports.pathToPointer=pathToPointer,exports.pointerToPath=pointerToPath,exports.renameObjectKey=renameObjectKey,exports.resolveInlineRef=resolveInlineRef,exports.safeParse=safeParse,exports.safeStringify=safeStringify,exports.startsWith=startsWith,exports.stringify=stringify,exports.toPropertyPath=toPropertyPath,exports.trapAccess=trapAccess,exports.traverse=traverse,exports.trimStart=trimStart;

@@ -1,1 +0,1 @@

import{isObject as e,cloneDeep as r,get as t,has as n,set as o,trimStart as i}from"lodash";import{createScanner as s,findNodeAtOffset as a,getNodePath as c,visit as l,printParseErrorCode as f}from"jsonc-parser";import u,{getOrder as p,ORDER_KEY_ID as h}from"@stoplight/ordered-object-literal";import{DiagnosticSeverity as y}from"@stoplight/types";import g from"safe-stable-stringify";const d=r=>e(r)&&"$ref"in r&&"string"==typeof r.$ref,b=e=>e.length>0&&"#"===e[0],m=(e,r,t)=>{const n=e.toString();let o="",i=n,s=0,a=i.indexOf(r);for(;a>-1;)o+=n.substring(s,s+a)+t,i=i.substring(a+r.length,i.length),s+=a+r.length,a=i.indexOf(r);return i.length>0&&(o+=n.substring(n.length-i.length,n.length)),o};function w(e){if("object"!=typeof e||null===e)return!1;const r=Object.getPrototypeOf(e);return null===r||r===Object.prototype}const O=e=>"number"==typeof e?e:m(m(e,"~","~0"),"/","~1"),v=e=>j(e),j=e=>{if(e&&"object"!=typeof e)throw new TypeError("Invalid type: path must be an array of segments.");return 0===e.length?"#":`#/${e.map(O).join("/")}`};function A(e){try{return decodeURIComponent(e)}catch(r){return e}}const $=/%[0-9a-f]+/gi,E=e=>{let r;try{r=decodeURIComponent(e)}catch(t){r=e.replace($,A)}return m(m(r,"~1","/"),"~0","~")},_=e=>x(e),x=e=>{if("string"!=typeof e)throw new TypeError("Invalid type: JSON Pointers are represented as strings.");if(0===e.length||"#"!==e[0])throw new URIError("Invalid JSON Pointer syntax; URI fragment identifiers must begin with a hash.");if(1===e.length)return[];if("/"!==e[1])throw new URIError("Invalid JSON Pointer syntax.");return(e=>{const r=e.length,t=[];let n=-1;for(;++n<r;)t.push(E(e[n]));return t})(e.substring(2).split("/"))},N=e=>{if("string"!=typeof e||0===e.length||b(e))return null;const r=e.indexOf("#");return-1===r?e:e.slice(0,r)};function k(e,r){return function e(r,t,n){if(null!==N(t))throw new ReferenceError("Cannot resolve external references");const o=_(t);let i=r;for(const s of o){if(!(w(i)&&s in i))throw new ReferenceError(`Could not resolve '${t}'`);if(w(i=i[s])&&"$ref"in i){if(n.includes(i))return n[n.length-1];if(n.push(i),"string"!=typeof i.$ref)throw new TypeError("$ref should be a string");i=e(r,i.$ref,n)}}if(0===n.length)return i;const s=n[n.length-1];return w(s)&&("summary"in s||"description"in s)?Object.assign(Object.assign(Object.assign({},i),"description"in s?{description:s.description}:null),"summary"in s?{summary:s.summary}:null):i}(e,r,[])}const S=(e,r,t=[])=>{if(e&&"object"==typeof e)for(const n in e)e.hasOwnProperty(n)&&(r({parent:e,parentPath:t,property:n,propertyValue:e[n]}),e[n]&&"object"==typeof e[n]&&S(e[n],r,t.concat(n)))},I="#/__bundled__",T="#/__errors__",P=({document:e,path:t,bundleRoot:n="#/__bundled__",errorsRoot:o="#/__errors__"},i)=>{if(t===n||t===o)throw new Error("Roots do not make any sense");return R(r(e),_(n),_(o))(t,{[t]:!0},i)},R=(e,r,i)=>{const s=new Set,a=(c,l,f,u={},p={},h={})=>{const y=_(c),g=t(e,y);S(f||g,({parent:i})=>{if(d(i)&&b(i.$ref)){const f=i.$ref;if(h[f])return;if(u[f])return void(i.$ref=u[f]);let y,g,d,b,m;try{let n;if(y=_(f),Array.isArray(t(e,y.slice(0,-1)))){n=`${y[y.length-2]}_${y[y.length-1]}`}else n=y[y.length-1];d=n;let o=1;for(;s.has(d);)if(d=`${n}_${++o}`,o>20)throw new Error(`Keys ${n}_2 through ${n}_20 already taken.`);s.add(d),g=[...r,d],b=v(g)}catch(e){h[f]=e.message}if(!y||!g||!b)return;if("object"==typeof e&&null!==e)try{m=k(Object(e),f)}catch(r){m=t(e,y)}if(void 0!==m&&(u[f]=b,i.$ref=b,!n(p,g))){const r=t(e,y);Array.isArray(r)?o(p,g,new Array(r.length).fill(null)):"object"==typeof r&&o(p,g,{}),o(p,g,m),l[f]||(l[f]=!0,a(c,l,m,u,p,h),l[f]=!1)}}});const m=t(p,r);return m&&Object.keys(m).length&&o(g,r,m),(Object.keys(h).length||n(e,i))&&o(g,i,n(e,i)?t(e,i):h),g};return a},K=e=>m(m(e,"~1","/"),"~0","~"),M=e=>m(m(e,"~","~0"),"//","/~1"),U=(e,r)=>{const t=new WeakMap;return function e(n,o){let i;if(r&&(n=r(n)),w(n)||Array.isArray(n)){const r=t.get(n);return r?{$ref:M(r)}:(t.set(n,o),Array.isArray(n)?i=n.map((r,t)=>e(r,`${o}/${t}`)):(i={},Object.keys(n).forEach(r=>{i[r]=e(n[r],`${o}/${r}`)})),t.delete(n),i)}return n}(e,"#")},C=e=>{if("string"!=typeof e||0===e.length)return null;const r=e.indexOf("#");return-1===r?null:e.slice(r)},J=e=>{const r=s(e,!0);if(r.scan(),1!==r.getToken())return;if(r.scan(),2===r.getToken())return;if(10!==r.getToken())throw new SyntaxError("Unexpected character");const t=r.getTokenValue();if(r.scan(),6!==r.getToken())throw new SyntaxError("Colon expected");switch(r.scan(),r.getToken()){case 10:return[t,r.getTokenValue()];case 11:return[t,Number(r.getTokenValue())];case 8:return[t,!0];case 9:return[t,!1];case 7:return[t,null];case 16:throw new SyntaxError("Unexpected character");case 17:throw new SyntaxError("Unexpected end of file");default:return}},V=({lineMap:e,ast:r},t)=>{const n=e[t.line],o=e[t.line+1];if(void 0===n)return;const i=a(r,void 0===o?n+t.character:Math.min(o,n+t.character),!0);if(void 0===i)return;const s=c(i);return 0!==s.length?s:void 0};function D(e){return K(e.split("/").pop()||"")}const W=({lineMap:e,ast:r},t,n=!1)=>{const o=function(e,r,t){e:for(const n of r){const r=Number.isInteger(Number(n))?Number(n):n;if("string"==typeof r||"number"==typeof r&&"array"!==e.type){if("object"!==e.type||!Array.isArray(e.children))return t?e:void 0;for(const t of e.children)if(Array.isArray(t.children)&&t.children[0].value===String(r)&&2===t.children.length){e=t.children[1];continue e}return t?e:void 0}if("array"!==e.type||r<0||!Array.isArray(e.children)||r>=e.children.length)return t?e:void 0;e=e.children[r]}return e}(r,t,n);if(void 0!==o&&void 0!==o.range)return{range:o.range}};const B=(e,r={disallowComments:!0})=>{const t=[],{ast:n,data:o,lineMap:i}=F(e,t,r);return{data:o,diagnostics:t,ast:n,lineMap:i}};function F(e,r=[],t){const n=q(e);let o={type:"array",offset:-1,length:-1,children:[],parent:void 0},i=null,s=[];const a=new WeakMap,c=[];function h(e){"property"===o.type&&(o.length=e-o.offset,o=o.parent)}function g(e,r,t){return{start:{line:e,character:r},end:{line:e,character:r+t}}}function d(e){return o.children.push(e),e}function b(e){Array.isArray(s)?s.push(e):null!==i&&(s[i]=e)}function m(e){b(e),c.push(s),s=e,i=null}function w(){s=c.pop()}l(e,{onObjectBegin:(e,r,n,i)=>{o=d({type:"object",offset:e,length:-1,parent:o,children:[],range:g(n,i,r)}),!1===t.ignoreDuplicateKeys&&a.set(o,[]),m(function(e){return e?u({}):{}}(!0===t.preserveKeyOrder))},onObjectProperty:(e,n,c,l,f)=>{if((o=d({type:"property",offset:n,length:-1,parent:o,children:[]})).children.push({type:"string",value:e,offset:n,length:c,parent:o}),!1===t.ignoreDuplicateKeys){const t=a.get(o.parent);t&&(0!==t.length&&t.includes(e)?r.push({range:g(l,f,c),message:"DuplicateKey",severity:y.Error,path:z(o),code:20}):t.push(e))}!0===t.preserveKeyOrder&&function(e,r){if(!(r in e))return;const t=p(e),n=t.indexOf(r);-1!==n&&(t.splice(n,1),t.push(r))}(s,e),i=e},onObjectEnd:(e,r,n,i)=>{!1===t.ignoreDuplicateKeys&&a.delete(o),o.length=e+r-o.offset,o.range&&(o.range.end.line=n,o.range.end.character=i+r),o=o.parent,h(e+r),w()},onArrayBegin:(e,r,t,n)=>{o=d({type:"array",offset:e,length:-1,parent:o,children:[],range:g(t,n,r)}),m([])},onArrayEnd:(e,r,t,n)=>{o.length=e+r-o.offset,o.range&&(o.range.end.line=t,o.range.end.character=n+r),o=o.parent,h(e+r),w()},onLiteralValue:(e,r,t,n,i)=>{d({type:L(e),offset:r,length:t,parent:o,value:e,range:g(n,i,t)}),h(r+t),b(e)},onSeparator:(e,r,t)=>{"property"===o.type&&(":"===e?o.colonOffset=r:","===e&&h(r))},onError:(e,t,n,o,i)=>{r.push({range:g(o,i,n),message:f(e),severity:y.Error,code:e})}},t);const O=o.children[0];return O&&delete O.parent,{ast:O,data:s[0],lineMap:n}}function L(e){switch(typeof e){case"boolean":return"boolean";case"number":return"number";case"string":return"string";default:return"null"}}const q=e=>{const r=[0];let t=0;for(;t<e.length;t++)"\n"===e[t]&&r.push(t+1);return r.push(t+1),r};function z(e,r=[]){return"property"===e.type&&r.unshift(e.children[0].value),void 0!==e.parent?("array"===e.parent.type&&void 0!==e.parent.parent&&r.unshift(e.parent.children.indexOf(e)),z(e.parent,r)):r}const G=(e,r,t)=>{if(!e||!Object.hasOwnProperty.call(e,r)||r===t)return e;const n={};for(const[o,i]of Object.entries(e))o===r?n[t]=i:o in n||(n[o]=i);return n},H=(e,r)=>{if("string"!=typeof e)return e;try{const t=Q(e);return"string"==typeof t?t:JSON.parse(e,r)}catch(e){return}},Q=e=>{const r=Number(e);return Number.isFinite(r)?String(r)===e?r:e:NaN},X=(e,r,t)=>{if("string"==typeof e)return e;try{return JSON.stringify(e,r,t)}catch(n){return g(e,r,t)}},Y=(e,r)=>{if(e instanceof Array){if(r instanceof Array){if(r.length>e.length)return!1;for(const t in r){if(!r.hasOwnProperty(t))continue;const n=parseInt(e[t]),o=parseInt(r[t]);if(isNaN(n)&&isNaN(o)){if(e[t]!==r[t])return!1}else if(n!==o)return!1}}}else{if("string"!=typeof e)return!1;if("string"==typeof r)return e.startsWith(r)}return!0},Z=(e,r,t)=>{const n=X(e,r,t);if(void 0===n)throw new Error("The value could not be stringified");return n};function ee(e){return e.replace(/^(\/|#\/)/,"").split("/").map(K).map(re).join(".")}function re(e){return e.includes(".")?`["${e.replace(/"/g,'\\"')}"]`:e}const te=Symbol.for(h),ne={ownKeys:e=>te in e?e[te]:Reflect.ownKeys(e)},oe=e=>new Proxy(e,ne);function ie(e,r){if("string"==typeof e&&"string"==typeof r)return i(e,r);if(!(e&&Array.isArray(e)&&e.length&&r&&Array.isArray(r)&&r.length))return e;let t=0;for(const n in e)if(e.hasOwnProperty(n)){if(e[n]!==r[n])break;t++}return e.slice(t)}export{I as BUNDLE_ROOT,T as ERRORS_ROOT,te as KEYS,P as bundleTarget,E as decodePointer,K as decodePointerFragment,U as decycle,M as encodePointer,O as encodePointerFragment,C as extractPointerFromRef,N as extractSourceFromRef,J as getFirstPrimitiveProperty,V as getJsonPathForPosition,D as getLastPathSegment,W as getLocationForJsonPath,d as hasRef,b as isLocalRef,F as parseTree,B as parseWithPointers,v as pathToPointer,_ as pointerToPath,G as renameObjectKey,k as resolveInlineRef,H as safeParse,X as safeStringify,Y as startsWith,Z as stringify,ee as toPropertyPath,oe as trapAccess,S as traverse,ie as trimStart};
import{isObject as e,cloneDeep as r,get as t,has as n,set as o,trimStart as i}from"lodash";import{createScanner as s,findNodeAtOffset as a,getNodePath as c,visit as l,printParseErrorCode as f}from"jsonc-parser";import u,{getOrder as p,ORDER_KEY_ID as h}from"@stoplight/ordered-object-literal";import{DiagnosticSeverity as y}from"@stoplight/types";import g from"safe-stable-stringify";const d=r=>e(r)&&"$ref"in r&&"string"==typeof r.$ref,b=e=>e.length>0&&"#"===e[0],m=(e,r,t)=>{const n=e.toString();let o="",i=n,s=0,a=i.indexOf(r);for(;a>-1;)o+=n.substring(s,s+a)+t,i=i.substring(a+r.length,i.length),s+=a+r.length,a=i.indexOf(r);return i.length>0&&(o+=n.substring(n.length-i.length,n.length)),o};function w(e){if("object"!=typeof e||null===e)return!1;const r=Object.getPrototypeOf(e);return null===r||r===Object.prototype}const O=e=>"number"==typeof e?e:m(m(e,"~","~0"),"/","~1"),v=e=>A(e),A=e=>{if(e&&"object"!=typeof e)throw new TypeError("Invalid type: path must be an array of segments.");return 0===e.length?"#":`#/${e.map(O).join("/")}`};function j(e){try{return decodeURIComponent(e)}catch(r){return e}}const $=/%[0-9a-f]+/gi,E=e=>{let r;try{r=decodeURIComponent(e)}catch(t){r=e.replace($,j)}return m(m(r,"~1","/"),"~0","~")},_=e=>x(e),x=e=>{if("string"!=typeof e)throw new TypeError("Invalid type: JSON Pointers are represented as strings.");if(0===e.length||"#"!==e[0])throw new URIError("Invalid JSON Pointer syntax; URI fragment identifiers must begin with a hash.");if(1===e.length)return[];if("/"!==e[1])throw new URIError("Invalid JSON Pointer syntax.");return(e=>{const r=e.length,t=[];let n=-1;for(;++n<r;)t.push(E(e[n]));return t})(e.substring(2).split("/"))},N=e=>{if("string"!=typeof e||0===e.length||b(e))return null;const r=e.indexOf("#");return-1===r?e:e.slice(0,r)};function k(e,r){return function e(r,t,n){if(null!==N(t))throw new ReferenceError("Cannot resolve external references");const o=_(t);let i=r;for(const s of o){if(!w(i)&&!Array.isArray(i)||!(s in i))throw new ReferenceError(`Could not resolve '${t}'`);if(w(i=i[s])&&"$ref"in i){if(n.includes(i))return n[n.length-1];if(n.push(i),"string"!=typeof i.$ref)throw new TypeError("$ref should be a string");i=e(r,i.$ref,n)}}if(0===n.length)return i;const s=n[n.length-1];return w(s)&&("summary"in s||"description"in s)?Object.assign(Object.assign(Object.assign({},i),"description"in s?{description:s.description}:null),"summary"in s?{summary:s.summary}:null):i}(e,r,[])}const S=(e,r,t=[])=>{if(e&&"object"==typeof e)for(const n in e)e.hasOwnProperty(n)&&(r({parent:e,parentPath:t,property:n,propertyValue:e[n]}),e[n]&&"object"==typeof e[n]&&S(e[n],r,t.concat(n)))},I="#/__bundled__",T="#/__errors__",P=({document:e,path:t,bundleRoot:n="#/__bundled__",errorsRoot:o="#/__errors__"},i)=>{if(t===n||t===o)throw new Error("Roots do not make any sense");return R(r(e),_(n),_(o))(t,{[t]:!0},i)},R=(e,r,i)=>{const s=new Set,a=(c,l,f,u={},p={},h={})=>{const y=_(c),g=t(e,y);S(f||g,({parent:i})=>{if(d(i)&&b(i.$ref)){const f=i.$ref;if(h[f])return;if(u[f])return void(i.$ref=u[f]);let y,g,d,b,m;try{let n;if(y=_(f),Array.isArray(t(e,y.slice(0,-1)))){n=`${y[y.length-2]}_${y[y.length-1]}`}else n=y[y.length-1];d=n;let o=1;for(;s.has(d);)if(d=`${n}_${++o}`,o>20)throw new Error(`Keys ${n}_2 through ${n}_20 already taken.`);s.add(d),g=[...r,d],b=v(g)}catch(e){h[f]=e.message}if(!y||!g||!b)return;if("object"==typeof e&&null!==e)try{m=k(Object(e),f)}catch(r){m=t(e,y)}if(void 0!==m&&(u[f]=b,i.$ref=b,!n(p,g))){const r=t(e,y);Array.isArray(r)?o(p,g,new Array(r.length).fill(null)):"object"==typeof r&&o(p,g,{}),o(p,g,m),l[f]||(l[f]=!0,a(c,l,m,u,p,h),l[f]=!1)}}});const m=t(p,r);return m&&Object.keys(m).length&&o(g,r,m),(Object.keys(h).length||n(e,i))&&o(g,i,n(e,i)?t(e,i):h),g};return a},K=e=>m(m(e,"~1","/"),"~0","~"),M=e=>m(m(e,"~","~0"),"//","/~1"),U=(e,r)=>{const t=new WeakMap;return function e(n,o){let i;if(r&&(n=r(n)),w(n)||Array.isArray(n)){const r=t.get(n);return r?{$ref:M(r)}:(t.set(n,o),Array.isArray(n)?i=n.map((r,t)=>e(r,`${o}/${t}`)):(i={},Object.keys(n).forEach(r=>{i[r]=e(n[r],`${o}/${r}`)})),t.delete(n),i)}return n}(e,"#")},C=e=>{if("string"!=typeof e||0===e.length)return null;const r=e.indexOf("#");return-1===r?null:e.slice(r)},J=e=>{const r=s(e,!0);if(r.scan(),1!==r.getToken())return;if(r.scan(),2===r.getToken())return;if(10!==r.getToken())throw new SyntaxError("Unexpected character");const t=r.getTokenValue();if(r.scan(),6!==r.getToken())throw new SyntaxError("Colon expected");switch(r.scan(),r.getToken()){case 10:return[t,r.getTokenValue()];case 11:return[t,Number(r.getTokenValue())];case 8:return[t,!0];case 9:return[t,!1];case 7:return[t,null];case 16:throw new SyntaxError("Unexpected character");case 17:throw new SyntaxError("Unexpected end of file");default:return}},V=({lineMap:e,ast:r},t)=>{const n=e[t.line],o=e[t.line+1];if(void 0===n)return;const i=a(r,void 0===o?n+t.character:Math.min(o,n+t.character),!0);if(void 0===i)return;const s=c(i);return 0!==s.length?s:void 0};function D(e){return K(e.split("/").pop()||"")}const W=({lineMap:e,ast:r},t,n=!1)=>{const o=function(e,r,t){e:for(const n of r){const r=Number.isInteger(Number(n))?Number(n):n;if("string"==typeof r||"number"==typeof r&&"array"!==e.type){if("object"!==e.type||!Array.isArray(e.children))return t?e:void 0;for(const t of e.children)if(Array.isArray(t.children)&&t.children[0].value===String(r)&&2===t.children.length){e=t.children[1];continue e}return t?e:void 0}if("array"!==e.type||r<0||!Array.isArray(e.children)||r>=e.children.length)return t?e:void 0;e=e.children[r]}return e}(r,t,n);if(void 0!==o&&void 0!==o.range)return{range:o.range}};const B=(e,r={disallowComments:!0})=>{const t=[],{ast:n,data:o,lineMap:i}=F(e,t,r);return{data:o,diagnostics:t,ast:n,lineMap:i}};function F(e,r=[],t){const n=q(e);let o={type:"array",offset:-1,length:-1,children:[],parent:void 0},i=null,s=[];const a=new WeakMap,c=[];function h(e){"property"===o.type&&(o.length=e-o.offset,o=o.parent)}function g(e,r,t){return{start:{line:e,character:r},end:{line:e,character:r+t}}}function d(e){return o.children.push(e),e}function b(e){Array.isArray(s)?s.push(e):null!==i&&(s[i]=e)}function m(e){b(e),c.push(s),s=e,i=null}function w(){s=c.pop()}l(e,{onObjectBegin:(e,r,n,i)=>{o=d({type:"object",offset:e,length:-1,parent:o,children:[],range:g(n,i,r)}),!1===t.ignoreDuplicateKeys&&a.set(o,[]),m(function(e){return e?u({}):{}}(!0===t.preserveKeyOrder))},onObjectProperty:(e,n,c,l,f)=>{if((o=d({type:"property",offset:n,length:-1,parent:o,children:[]})).children.push({type:"string",value:e,offset:n,length:c,parent:o}),!1===t.ignoreDuplicateKeys){const t=a.get(o.parent);t&&(0!==t.length&&t.includes(e)?r.push({range:g(l,f,c),message:"DuplicateKey",severity:y.Error,path:z(o),code:20}):t.push(e))}!0===t.preserveKeyOrder&&function(e,r){if(!(r in e))return;const t=p(e),n=t.indexOf(r);-1!==n&&(t.splice(n,1),t.push(r))}(s,e),i=e},onObjectEnd:(e,r,n,i)=>{!1===t.ignoreDuplicateKeys&&a.delete(o),o.length=e+r-o.offset,o.range&&(o.range.end.line=n,o.range.end.character=i+r),o=o.parent,h(e+r),w()},onArrayBegin:(e,r,t,n)=>{o=d({type:"array",offset:e,length:-1,parent:o,children:[],range:g(t,n,r)}),m([])},onArrayEnd:(e,r,t,n)=>{o.length=e+r-o.offset,o.range&&(o.range.end.line=t,o.range.end.character=n+r),o=o.parent,h(e+r),w()},onLiteralValue:(e,r,t,n,i)=>{d({type:L(e),offset:r,length:t,parent:o,value:e,range:g(n,i,t)}),h(r+t),b(e)},onSeparator:(e,r,t)=>{"property"===o.type&&(":"===e?o.colonOffset=r:","===e&&h(r))},onError:(e,t,n,o,i)=>{r.push({range:g(o,i,n),message:f(e),severity:y.Error,code:e})}},t);const O=o.children[0];return O&&delete O.parent,{ast:O,data:s[0],lineMap:n}}function L(e){switch(typeof e){case"boolean":return"boolean";case"number":return"number";case"string":return"string";default:return"null"}}const q=e=>{const r=[0];let t=0;for(;t<e.length;t++)"\n"===e[t]&&r.push(t+1);return r.push(t+1),r};function z(e,r=[]){return"property"===e.type&&r.unshift(e.children[0].value),void 0!==e.parent?("array"===e.parent.type&&void 0!==e.parent.parent&&r.unshift(e.parent.children.indexOf(e)),z(e.parent,r)):r}const G=(e,r,t)=>{if(!e||!Object.hasOwnProperty.call(e,r)||r===t)return e;const n={};for(const[o,i]of Object.entries(e))o===r?n[t]=i:o in n||(n[o]=i);return n},H=(e,r)=>{if("string"!=typeof e)return e;try{const t=Q(e);return"string"==typeof t?t:JSON.parse(e,r)}catch(e){return}},Q=e=>{const r=Number(e);return Number.isFinite(r)?String(r)===e?r:e:NaN},X=(e,r,t)=>{if("string"==typeof e)return e;try{return JSON.stringify(e,r,t)}catch(n){return g(e,r,t)}},Y=(e,r)=>{if(e instanceof Array){if(r instanceof Array){if(r.length>e.length)return!1;for(const t in r){if(!r.hasOwnProperty(t))continue;const n=parseInt(e[t]),o=parseInt(r[t]);if(isNaN(n)&&isNaN(o)){if(e[t]!==r[t])return!1}else if(n!==o)return!1}}}else{if("string"!=typeof e)return!1;if("string"==typeof r)return e.startsWith(r)}return!0},Z=(e,r,t)=>{const n=X(e,r,t);if(void 0===n)throw new Error("The value could not be stringified");return n};function ee(e){return e.replace(/^(\/|#\/)/,"").split("/").map(K).map(re).join(".")}function re(e){return e.includes(".")?`["${e.replace(/"/g,'\\"')}"]`:e}const te=Symbol.for(h),ne={ownKeys:e=>te in e?e[te]:Reflect.ownKeys(e)},oe=e=>new Proxy(e,ne);function ie(e,r){if("string"==typeof e&&"string"==typeof r)return i(e,r);if(!(e&&Array.isArray(e)&&e.length&&r&&Array.isArray(r)&&r.length))return e;let t=0;for(const n in e)if(e.hasOwnProperty(n)){if(e[n]!==r[n])break;t++}return e.slice(t)}export{I as BUNDLE_ROOT,T as ERRORS_ROOT,te as KEYS,P as bundleTarget,E as decodePointer,K as decodePointerFragment,U as decycle,M as encodePointer,O as encodePointerFragment,C as extractPointerFromRef,N as extractSourceFromRef,J as getFirstPrimitiveProperty,V as getJsonPathForPosition,D as getLastPathSegment,W as getLocationForJsonPath,d as hasRef,b as isLocalRef,F as parseTree,B as parseWithPointers,v as pathToPointer,_ as pointerToPath,G as renameObjectKey,k as resolveInlineRef,H as safeParse,X as safeStringify,Y as startsWith,Z as stringify,ee as toPropertyPath,oe as trapAccess,S as traverse,ie as trimStart};
{
"name": "@stoplight/json",
"version": "3.13.3",
"version": "3.13.4",
"description": "Useful functions when working with JSON.",

@@ -5,0 +5,0 @@ "keywords": [

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc