@technik-sde/foxy
Advanced tools
Comparing version 0.3.0 to 1.0.0
@@ -1,1 +0,1 @@ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("foxy",[],t):"object"==typeof exports?exports.foxy=t():e.foxy=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";n.r(t),n.d(t,"Foxy",(function(){return r})),n.d(t,"handler",(function(){return u})),n.d(t,"utils",(function(){return o}));class r{constructor(e={}){this.handlers=e.handlers||[]}addHandler(e,t=0){null==this.handlers[t]&&this.handlers.push(e),this.handlers.splice(t,0,e)}removeHandler(e){this.handlers=this.handlers.filter(t=>t!==e)}getImageURL(e){return this.get("getImageURL",e)}getImageInfo(e){return this.get("getImageInfo",e)}getVideoURL(e){return this.get("getVideoURL",e)}getVideoInfo(e){return this.get("getVideoInfo",e)}getURL(e){return this.get("getURL",e)}get(e,t){const n=this.findHandler(e,t);return null==n?Promise.reject(new Error(`There is no handler for method '${e}(${JSON.stringify(t)})'`)):n[e](t)}isSupported(e){return this.handlers.some(t=>t.use(e))}findHandler(e,t){return this.handlers.find(n=>"function"==typeof n[e]&&!0===n.use(t))}}var o={loadImageInfo:function(e,t={}){const n={src:e,image:new Image,type:"",width:0,height:0};return fetch(e,t).then(e=>e.blob()).then(e=>(n.type=e.type.replace(/^[^/]+\//,""),URL.createObjectURL(e))).then(e=>new Promise((t,r)=>{n.image.addEventListener("load",()=>t()),n.image.addEventListener("error",r),n.image.src=e})).then(()=>(n.width=n.image.naturalWidth,n.height=n.image.naturalHeight,n))},loadVideoInfo:function(e,t={}){const n={src:e,width:0,height:0,video:document.createElement("video"),duration:0,poster:""};return fetch(e,t).then(e=>e.blob()).then(e=>(n.type=e.type.replace(/^[^/]+\//,""),URL.createObjectURL(e))).then(e=>new Promise((t,r)=>{n.video.addEventListener("error",r),n.video.addEventListener("loadedmetadata",()=>{const{video:e}=n;n.width=e.videoWidth,n.height=e.videoHeight,n.duration=e.duration,n.poster=e.poster,t(n)});const o=document.createElement("source");o.setAttribute("src",e),n.video.appendChild(o)}))},isHandler:function(e){return"[object Object]"===Object.prototype.toString.call(e)&&"function"==typeof e.use}};const i=/^https:\/\/images\.unsplash\.com\/photo-\d{13}-[0-9a-f]{12}/;function s(e){const t=e.url.replace(/\?.*$/,""),n=new URLSearchParams(e.url.replace(/^.*\?/,""));return e.width&&n.set("w",e.width),e.height&&n.set("h",e.height),e.quality&&n.set("q",e.quality),e.fit&&n.set("fit",e.fit),e.auto&&n.set("auto",e.auto),`${t}?${n.toString()}`}const u={unsplash:{use:e=>i.test(e.url),getImageURL:e=>Promise.resolve(s(e)),getImageInfo:e=>o.loadImageInfo(s(e))},image:{use:e=>/^https?:\/\//.test(e.url),getImageURL:e=>Promise.resolve(e.url),getImageInfo:e=>o.loadImageInfo(e.url)},video:{use:e=>/^https?:\/\//.test(e.url),getVideoURL:e=>Promise.resolve(e.url),getVideoInfo:e=>o.loadVideoInfo(e.url)}}}])})); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("foxy",[],t):"object"==typeof exports?exports.foxy=t():e.foxy=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";n.r(t),n.d(t,"Foxy",(function(){return r})),n.d(t,"handler",(function(){return u})),n.d(t,"utils",(function(){return o}));class r{constructor(e={}){this.handlers=e.handlers||[]}addHandler(e,t=0){null==this.handlers[t]&&this.handlers.push(e),this.handlers.splice(t,0,e)}removeHandler(e){this.handlers=this.handlers.filter(t=>t!==e)}getImageURL(e){return this.get("getImageURL",e)}getImageInfo(e){return this.get("getImageInfo",e)}getVideoURL(e){return this.get("getVideoURL",e)}getVideoInfo(e){return this.get("getVideoInfo",e)}getURL(e){return this.get("getURL",e)}get(e,t){const n=this.findHandler(e,t);return null==n?Promise.reject(new Error(`There is no handler for method '${e}(${JSON.stringify(t)})'`)):n[e](t)}isSupported(e){return this.handlers.some(t=>t.use(e))}findHandler(e,t){return this.handlers.find(n=>"function"==typeof n[e]&&!0===n.use(t))}}var o={loadImageInfo:function(e,t={}){const n={src:e,image:new Image,type:"",width:0,height:0};return fetch(e,t).then(e=>e.blob()).then(e=>(n.type=e.type.replace(/^[^/]+\//,""),URL.createObjectURL(e))).then(e=>new Promise((t,r)=>{n.image.addEventListener("load",()=>t()),n.image.addEventListener("error",r),n.image.src=e})).then(()=>(n.width=n.image.naturalWidth,n.height=n.image.naturalHeight,n))},loadVideoInfo:function(e,t={}){const n={src:e,width:0,height:0,video:document.createElement("video"),duration:0,poster:""};return fetch(e,t).then(e=>e.blob()).then(e=>(n.type=e.type.replace(/^[^/]+\//,""),URL.createObjectURL(e))).then(e=>new Promise((t,r)=>{n.video.addEventListener("error",r),n.video.addEventListener("loadedmetadata",()=>{const{video:e}=n;n.width=e.videoWidth,n.height=e.videoHeight,n.duration=e.duration,n.poster=e.poster,t(n)});const o=document.createElement("source");o.setAttribute("src",e),n.video.appendChild(o)}))},isHandler:function(e){return"[object Object]"===Object.prototype.toString.call(e)&&"function"==typeof e.use}};const i=/^https:\/\/images\.unsplash\.com\/photo-\d{13}-[0-9a-f]{12}/;function s(e){const t=e.source.replace(/\?.*$/,""),n=new URLSearchParams(e.source.replace(/^.*\?/,""));return e.width&&n.set("w",e.width),e.height&&n.set("h",e.height),e.quality&&n.set("q",e.quality),e.fit&&n.set("fit",e.fit),e.auto&&n.set("auto",e.auto),`${t}?${n.toString()}`}const u={unsplash:{use:e=>i.test(e.source),getImageURL:e=>Promise.resolve(s(e)),getImageInfo:e=>o.loadImageInfo(s(e))},image:{use:e=>/^https?:\/\//.test(e.source),getImageURL:e=>Promise.resolve(e.source),getImageInfo:e=>o.loadImageInfo(e.source)},video:{use:e=>/^https?:\/\//.test(e.source),getVideoURL:e=>Promise.resolve(e.source),getVideoInfo:e=>o.loadVideoInfo(e.source)}}}])})); |
import AnyObject from "../AnyObject"; | ||
export interface Request { | ||
url: string; | ||
[p: string]: any; | ||
export interface Request extends AnyObject { | ||
source: string; | ||
} | ||
@@ -6,0 +5,0 @@ export interface Info { |
{ | ||
"name": "@technik-sde/foxy", | ||
"version": "0.3.0", | ||
"version": "1.0.0", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "dist/foxy.js", |
@@ -10,3 +10,3 @@ # simple frontend proxy | ||
**Handler** A handler registers its methods for a specific request-object, containing an url-property. The handler will be selected for the exposed request-method, when its function `use(RequestObject):boolean` returns `true`. | ||
**Handler** A handler registers its methods for a specific request-object, containing a `source`-property. The handler will be selected for the exposed request-method, when its function `use(RequestObject):boolean` returns `true`. | ||
@@ -22,10 +22,10 @@ | ||
{ | ||
use({ url }) { | ||
return myUrlFormat.test(url); | ||
use({ source }) { | ||
return myUrlFormat.test(source); | ||
}, | ||
getImageURL({ url }) { | ||
return Promise.resolve(buildMyUrlScheme(url)); | ||
getImageURL({ source }) { | ||
return Promise.resolve(buildMyUrlScheme(source)); | ||
}, | ||
getImageInfo({ url }) { | ||
return utils.loadImage(buildMyUrlScheme(url)) | ||
getImageInfo({ source }) { | ||
return utils.loadImage(buildMyUrlScheme(source)) | ||
} | ||
@@ -36,4 +36,4 @@ } | ||
const finalUrl = await proxy.getImageURL({ url: 1234 }); | ||
const imageMetadata = await proxy.getImageInfo({ url: 1234 }); | ||
const finalUrl = await proxy.getImageURL({ source: 1234 }); | ||
const imageMetadata = await proxy.getImageInfo({ source: 1234 }); | ||
``` | ||
@@ -50,7 +50,7 @@ | ||
{ | ||
use({ url }) { | ||
return myUrlFormat.test(url); | ||
use({ source }) { | ||
return myUrlFormat.test(source); | ||
}, | ||
getImageURL({ url }) { | ||
return Promise.resolve(buildMyUrlScheme(url)); | ||
getImageURL({ source }) { | ||
return Promise.resolve(buildMyUrlScheme(source)); | ||
} | ||
@@ -61,3 +61,3 @@ }, | ||
// overwrites default exception to always return false | ||
getImageURL({ url }) { return Promise.resolve(false); } | ||
getImageURL({ source }) { return Promise.resolve(false); } | ||
} | ||
@@ -67,3 +67,3 @@ ] | ||
const finalUrl = await proxy.getImageURL({ url: "abc" }); // false, when not myUrlFormat | ||
const finalUrl = await proxy.getImageURL({ source: "abc" }); // false, when not myUrlFormat | ||
``` | ||
@@ -82,7 +82,7 @@ | ||
{ | ||
use({ url }) { | ||
return myUrlFormat.test(url); | ||
use({ source }) { | ||
return myUrlFormat.test(source); | ||
}, | ||
getJSON({ url }) { | ||
return fetch(buildMyUrlScheme(url)).then(response => response.json()); | ||
getJSON({ source }) { | ||
return fetch(buildMyUrlScheme(source)).then(response => response.json()); | ||
} | ||
@@ -93,3 +93,3 @@ } | ||
const json = await proxy.get("getJSON", { url: "my-json-url" }); | ||
const json = await proxy.get("getJSON", { source: "my-json-url" }); | ||
``` | ||
@@ -96,0 +96,0 @@ |
import AnyObject from "../AnyObject"; | ||
export interface Request { | ||
url: string; | ||
[p: string]: any; | ||
export interface Request extends AnyObject { | ||
source: string; | ||
} | ||
@@ -8,0 +7,0 @@ |
@@ -6,6 +6,6 @@ import Handler, { Request } from "./Handler"; | ||
export default { | ||
use: (request: Request) => /^https?:\/\//.test(request.url), | ||
getImageURL: (request: Request) => Promise.resolve(request.url), | ||
getImageInfo: (request: Request) => utils.loadImageInfo(request.url) | ||
use: (request: Request) => /^https?:\/\//.test(request.source), | ||
getImageURL: (request: Request) => Promise.resolve(request.source), | ||
getImageInfo: (request: Request) => utils.loadImageInfo(request.source) | ||
} as Handler; |
@@ -28,4 +28,4 @@ import Handler, { Request } from "./Handler"; | ||
export function getURL(request: Request): string { | ||
const baseURL = request.url.replace(/\?.*$/, ""); | ||
const params = new URLSearchParams(request.url.replace(/^.*\?/, "")); | ||
const baseURL = request.source.replace(/\?.*$/, ""); | ||
const params = new URLSearchParams(request.source.replace(/^.*\?/, "")); | ||
if (request.width) params.set("w", request.width); | ||
@@ -40,3 +40,3 @@ if (request.height) params.set("h", request.height); | ||
export default { | ||
use: request => isUnsplashImage.test(request.url), | ||
use: request => isUnsplashImage.test(request.source), | ||
getImageURL(request) { | ||
@@ -43,0 +43,0 @@ return Promise.resolve(getURL(request)); |
@@ -6,6 +6,6 @@ import Handler, { Request } from "./Handler"; | ||
export default { | ||
use: (request: Request) => /^https?:\/\//.test(request.url), | ||
getVideoURL: (request: Request) => Promise.resolve(request.url), | ||
getVideoInfo: (request: Request) => utils.loadVideoInfo(request.url) | ||
use: (request: Request) => /^https?:\/\//.test(request.source), | ||
getVideoURL: (request: Request) => Promise.resolve(request.source), | ||
getVideoInfo: (request: Request) => utils.loadVideoInfo(request.source) | ||
} as Handler; |
@@ -12,3 +12,3 @@ import "mocha"; | ||
const foxy = new Foxy(); | ||
await foxy.get("url", { url: "1234" }) | ||
await foxy.get("url", { source: "1234" }) | ||
.then(() => assert.fail("promise should have aborted")) | ||
@@ -22,7 +22,7 @@ .catch(e => assert.ok(e instanceof Error)) | ||
use: () => true, | ||
getImageURL: (request) => Promise.resolve(`https://image/${request.url}`) | ||
getImageURL: (request) => Promise.resolve(`https://image/${request.source}`) | ||
}] | ||
}); | ||
const url = await foxy.get("getImageURL", { url: "1234" }); | ||
const url = await foxy.get("getImageURL", { source: "1234" }); | ||
assert.equal(url, "https://image/1234"); | ||
@@ -36,3 +36,3 @@ }); | ||
use: (request) => { | ||
url = request.url; | ||
url = request.source; | ||
return true; | ||
@@ -44,3 +44,3 @@ }, | ||
await foxy.get("getImageURL", { url: "1234" }); | ||
await foxy.get("getImageURL", { source: "1234" }); | ||
assert.equal(url, "1234"); | ||
@@ -57,3 +57,3 @@ }); | ||
getImageURL(request) { | ||
return Promise.resolve(`${this.config.domain}image/${request.url}`); | ||
return Promise.resolve(`${this.config.domain}image/${request.source}`); | ||
} | ||
@@ -63,3 +63,3 @@ }] | ||
const url = await foxy.get("getImageURL", { url: "1234" }); | ||
const url = await foxy.get("getImageURL", { source: "1234" }); | ||
assert.equal(url, "https://image/1234"); | ||
@@ -77,3 +77,3 @@ }); | ||
use: () => true, | ||
getImageURL: (request) => Promise.resolve(`https://image/${request.url}`) | ||
getImageURL: (request) => Promise.resolve(`https://image/${request.source}`) | ||
} | ||
@@ -83,3 +83,3 @@ ] | ||
const url = await foxy.get("getImageURL", { url: "1234" }); | ||
const url = await foxy.get("getImageURL", { source: "1234" }); | ||
assert.equal(url, "https://image/1234"); | ||
@@ -96,3 +96,3 @@ }); | ||
use: () => true, | ||
getImageURL: (request) => Promise.resolve(`https://image/${request.url}`) | ||
getImageURL: (request) => Promise.resolve(`https://image/${request.source}`) | ||
} | ||
@@ -102,3 +102,3 @@ ] | ||
const url = await foxy.get("getImageURL", { url: "1234" }); | ||
const url = await foxy.get("getImageURL", { source: "1234" }); | ||
assert.equal(url, "https://image/1234"); | ||
@@ -105,0 +105,0 @@ }); |
@@ -10,3 +10,3 @@ import "mocha"; | ||
it("should register on unplash photo url", () => { | ||
const use = unsplashHandler.use({ url: UNSPLASH_URL }); | ||
const use = unsplashHandler.use({ source: UNSPLASH_URL }); | ||
assert.ok(use); | ||
@@ -16,3 +16,3 @@ }); | ||
it("should not register on non-unplash url", () => { | ||
const use = unsplashHandler.use({ url: "https://media.istockphoto.com/photos/apples-isolated-on-white-background-picture-id902183704" }); | ||
const use = unsplashHandler.use({ source: "https://media.istockphoto.com/photos/apples-isolated-on-white-background-picture-id902183704" }); | ||
assert.ok(use === false); | ||
@@ -25,3 +25,3 @@ }); | ||
it("should return input url", async () => { | ||
const url = await unsplashHandler.getImageURL({ url: UNSPLASH_URL }); | ||
const url = await unsplashHandler.getImageURL({ source: UNSPLASH_URL }); | ||
assert.equal(url, UNSPLASH_URL); | ||
@@ -31,3 +31,3 @@ }); | ||
it("should return add additional property", async () => { | ||
const url = await unsplashHandler.getImageURL({ url: UNSPLASH_URL, height: 400 }); | ||
const url = await unsplashHandler.getImageURL({ source: UNSPLASH_URL, height: 400 }); | ||
const params = new URLSearchParams(url); | ||
@@ -38,3 +38,3 @@ assert.equal(params.get("h"), "400"); | ||
it("should return update existing property", async () => { | ||
const url = await unsplashHandler.getImageURL({ url: UNSPLASH_URL, width: 360 }); | ||
const url = await unsplashHandler.getImageURL({ source: UNSPLASH_URL, width: 360 }); | ||
const params = new URLSearchParams(url); | ||
@@ -49,3 +49,3 @@ assert.equal(params.get("w"), "360"); | ||
it("should return image dimensions", async () => { | ||
const info = await unsplashHandler.getImageInfo({ url: UNSPLASH_URL }); | ||
const info = await unsplashHandler.getImageInfo({ source: UNSPLASH_URL }); | ||
assert.equal(info.width, 800); | ||
@@ -56,3 +56,3 @@ assert.equal(info.type, "jpg"); | ||
it("should return modified image", async () => { | ||
const info = await unsplashHandler.getImageInfo({ url: UNSPLASH_URL, width: 1200 }); | ||
const info = await unsplashHandler.getImageInfo({ source: UNSPLASH_URL, width: 1200 }); | ||
assert.equal(info.width, 1200); | ||
@@ -59,0 +59,0 @@ assert.equal(info.type, "jpg"); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
31579
1
546