@azure-iot/hal
Advanced tools
Comparing version 1.0.0-rc.11 to 1.0.0-rc.12
{ | ||
"name": "@azure-iot/hal", | ||
"description": "Decorator library for HAL-based routes", | ||
"version": "1.0.0-rc.11", | ||
"version": "1.0.0-rc.12", | ||
"scripts": { | ||
@@ -6,0 +6,0 @@ "prebuild": "npm run lint", |
@@ -5,3 +5,3 @@ import { Rel } from './constants'; | ||
private static map; | ||
private static parse<T>(server, rel, callback); | ||
private static parse<T>(base, rel, callback); | ||
static handle<T>(base: Object, rel: Rel, callback: (server: Object, route: string, links: hal.Overrides[]) => T): T[]; | ||
@@ -8,0 +8,0 @@ static normalize(base: Object, rel: Rel): string; |
@@ -8,14 +8,18 @@ "use strict"; | ||
class Linker { | ||
static parse(server, rel, callback) { | ||
static parse(base, rel, callback) { | ||
if (typeof rel === 'string') { | ||
const parts = rel.split(':'); | ||
if (parts.length === 1) { | ||
return callback(server, (server && Data.from(server).name ? Data.from(server).name + ':' : '') + parts[0], ''); | ||
parts.unshift(base && Data.from(base).name); | ||
} | ||
if (parts[0]) { | ||
const server = Linker.map[parts[0]] && Linker.map[parts[0]].find(server => !!Data.from(server).links[parts.join(':')]); | ||
return callback(server || base, parts.join(':'), parts[0]); | ||
} | ||
else { | ||
return callback(Linker.map[parts[0]] || server, rel, parts[0]); | ||
return callback(base, parts[1], ''); | ||
} | ||
} | ||
else { | ||
return callback(server, constants_1.LinkRelation[rel], null); | ||
return callback(base, constants_1.LinkRelation[rel], null); | ||
} | ||
@@ -60,3 +64,4 @@ } | ||
Data.initialize(base, name).docs[name] = { name: name, href: href }; | ||
Linker.map[name] = base; | ||
Linker.map[name] = Linker.map[name] || []; | ||
Linker.map[name].push(base); | ||
} | ||
@@ -82,3 +87,3 @@ static registerLink(base, rel, href, overrides = {}) { | ||
static servers() { | ||
return Array.from(new Set(Object.keys(Linker.map).map(name => Linker.map[name]))); | ||
return Array.from(new Set(Object.keys(Linker.map).reduce((all, name) => all.concat(Linker.map[name]), []))); | ||
} | ||
@@ -85,0 +90,0 @@ } |
57273
996