UNPKG

@jmcanterafonseca-iota/anchoring-channels

Version:

Powered by IOTA Streams, Anchor Channels is an easy to be used library that allows to anchor messages to the Tangle.

71 lines 5.37 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.customLdContextLoader = void 0; const JSON = "application/json"; const JSON_LD = "application/ld+json"; /** * JSON-LD @context loader * * @param url The URL of the LD @context * @param options Options * * @returns the LD document and the final URL after following redirects * */ function customLdContextLoader(url, options) { var _a, _b; return __awaiter(this, void 0, void 0, function* () { const headers = new Headers(); headers.append("accept", `${JSON},${JSON_LD}`); const response = yield fetch(url); let document; let documentUrl = url; if (response.ok) { const respMimeType = response.headers.get("content-type").toLowerCase(); // If this is not a JSON-LD @context but there is an alternate representation // which MIME type is JSON-LD we follow our nose if (respMimeType !== JSON && respMimeType !== JSON_LD) { // Let's check if there is a Link alternate header const link = response.headers.get("link"); const components = link.split(";"); if ((_a = components[1]) === null || _a === void 0 ? void 0 : _a.includes("alternate")) { if ((_b = components[2]) === null || _b === void 0 ? void 0 : _b.includes(JSON_LD)) { const bracketsLinkPath = components[0]; // Remove link's brackets const extraPath = components[0].slice(1, bracketsLinkPath.length - 1); // This is the alternate representation const contextUrl = `${url}${extraPath}`; // Only the link is followed to the alternate representation if it is a different one if (contextUrl !== url) { return customLdContextLoader(contextUrl, {}); } } } } else { document = yield response.json(); if (response.redirected) { documentUrl = response.url; } } } else { console.error(`The JSON-LD @context ${url} cannot be retrieved`); } return { document, documentUrl // this is the actual context URL after redirects }; }); } exports.customLdContextLoader = customLdContextLoader; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkxkSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlcnMvanNvbkxkSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDO0FBQ2hDLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDO0FBRXRDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBc0IscUJBQXFCLENBQUMsR0FBRyxFQUFFLE9BQU87OztRQUlwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbEMsSUFBSSxRQUFpQyxDQUFDO1FBQ3RDLElBQUksV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUV0QixJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDYixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV4RSw2RUFBNkU7WUFDN0UsZ0RBQWdEO1lBQ2hELElBQUksWUFBWSxLQUFLLElBQUksSUFBSSxZQUFZLEtBQUssT0FBTyxFQUFFO2dCQUNuRCxrREFBa0Q7Z0JBQ2xELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUVuQyxJQUFJLE1BQUEsVUFBVSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7b0JBQ3RDLElBQUksTUFBQSxVQUFVLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTt3QkFDbEMsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3ZDLHlCQUF5Qjt3QkFDekIsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUN0RSx1Q0FBdUM7d0JBQ3ZDLE1BQU0sVUFBVSxHQUFHLEdBQUcsR0FBRyxHQUFHLFNBQVMsRUFBRSxDQUFDO3dCQUN4QyxxRkFBcUY7d0JBQ3JGLElBQUksVUFBVSxLQUFLLEdBQUcsRUFBRTs0QkFDcEIsT0FBTyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7eUJBQ2hEO3FCQUNKO2lCQUNKO2FBQ0o7aUJBQU07Z0JBQ0gsUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNqQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUU7b0JBQ3JCLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO2lCQUM5QjthQUNKO1NBQ0o7YUFBTTtZQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztTQUNwRTtRQUVELE9BQU87WUFDSCxRQUFRO1lBQ1IsV0FBVyxDQUFDLGlEQUFpRDtTQUNoRSxDQUFDOztDQUNMO0FBakRELHNEQWlEQyJ9