MCPcopy
hub / github.com/Kong/insomnia / getData

Function getData

packages/insomnia/bin/yarn-standalone.js:34618–34650  ·  view source on GitHub ↗
($data, lvl, paths)

Source from the content-addressed store, hash-verified

34616var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/;
34617var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;
34618function getData($data, lvl, paths) {
34619 var up, jsonPointer, data, matches;
34620 if ($data === '') return 'rootData';
34621 if ($data[0] == '/') {
34622 if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data);
34623 jsonPointer = $data;
34624 data = 'rootData';
34625 } else {
34626 matches = $data.match(RELATIVE_JSON_POINTER);
34627 if (!matches) throw new Error('Invalid JSON-pointer: ' + $data);
34628 up = +matches[1];
34629 jsonPointer = matches[2];
34630 if (jsonPointer == '#') {
34631 if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);
34632 return paths[lvl - up];
34633 }
34634
34635 if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);
34636 data = 'data' + ((lvl - up) || '');
34637 if (!jsonPointer) return data;
34638 }
34639
34640 var expr = data;
34641 var segments = jsonPointer.split('/');
34642 for (var i=0; i<segments.length; i++) {
34643 var segment = segments[i];
34644 if (segment) {
34645 data += getProperty(unescapeJsonPointer(segment));
34646 expr += ' && ' + data;
34647 }
34648 }
34649 return expr;
34650}
34651
34652
34653function joinPaths (a, b) {

Callers 3

createFlowFunction · 0.85
createWrapFunction · 0.85
isLaziableFunction · 0.85

Calls 4

getPropertyFunction · 0.85
unescapeJsonPointerFunction · 0.85
matchMethod · 0.80
testMethod · 0.45

Tested by

no test coverage detected