Socket
Socket
Sign inDemoInstall

@hyperjump/browser

Package Overview
Dependencies
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hyperjump/browser - npm Package Compare versions

Comparing version 0.9.1 to 0.9.2

8

index.js

@@ -6,2 +6,3 @@ const makeFetchHappen = require("make-fetch-happen");

const construct = (url, headers, body) => Object.freeze({ url, headers, body });
const extend = (doc, extras) => Object.freeze({ ...doc, ...extras });

@@ -15,3 +16,6 @@ const nil = construct("", {}, undefined);

if (uriReference(doc.url) === uriReference(resolvedUrl)) {
result = construct(resolvedUrl, doc.headers, doc.body);
result = extend(doc, { url: resolvedUrl });
} else if (doc.embedded && uriReference(resolvedUrl) in doc.embedded) {
const headers = { "content-type": doc.headers["content-type"] };
result = construct(resolvedUrl, headers, doc.embedded[resolvedUrl]);
} else {

@@ -43,2 +47,2 @@ const response = await fetch(resolvedUrl, options);

module.exports = { construct, nil, get, source, addContentType };
module.exports = { construct, extend, nil, get, source, addContentType };

@@ -10,15 +10,21 @@ const JsonPointer = require("@hyperjump/json-pointer");

const contentTypeHandler = async (doc, options) => {
let jsonDoc = await Json.contentTypeHandler(doc, options);
let docValue = value(jsonDoc);
const jrefDoc = (!("jref" in doc)) ? Hyperjump.extend(doc, parse(doc)) : doc;
const docValue = value(jrefDoc);
return isRef(docValue) ? await get(docValue["$ref"], jrefDoc, options) : jrefDoc;
};
if (isId(docValue)) {
const id = docValue["$id"];
delete docValue["$id"];
// TODO: Cache embedded document. I'll probably need to implement my own HTTP Cache for this.
const headers = { "content-type": jsonDoc.headers["content-type"] };
jsonDoc = Hyperjump.construct(id, headers, JSON.stringify(docValue));
docValue = value(jsonDoc);
}
const parse = (doc) => {
const embedded = {};
const jref = JSON.parse(Hyperjump.source(doc), (key, value) => {
if (isId(value)) {
const id = uriReference(value["$id"]);
delete value["$id"];
embedded[id] = JSON.stringify(value);
return { "$ref": id };
} else {
return value;
}
});
return isRef(docValue) ? await get(docValue["$ref"], jsonDoc, options) : jsonDoc;
return { jref, embedded };
};

@@ -37,3 +43,3 @@

const value = (doc) => JsonPointer.get(pointer(doc), Json.value(doc));
const value = (doc) => JsonPointer.get(pointer(doc), doc.jref);

@@ -69,2 +75,3 @@ const pointer = (doc) => decodeURIComponent(uriFragment(doc.url));

const uriFragment = (url) => url.split("#", 2)[1] || "";
const uriReference = (url) => url.split("#", 1)[0];
const isObject = (value) => typeof value === "object" && !Array.isArray(value) && value !== null;

@@ -71,0 +78,0 @@ const isRef = (value) => isObject(value) && "$ref" in value;

{
"name": "@hyperjump/browser",
"version": "0.9.1",
"version": "0.9.2",
"description": "A generic hypermedia client for JSON Reference",

@@ -5,0 +5,0 @@ "scripts": {

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