Created
October 21, 2018 23:36
-
-
Save NickColley/b920741df8c7541908bb7b361d84f35b to your computer and use it in GitHub Desktop.
JS Bin // source https://jsbin.com/bucijav
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width"> | |
<title>JS Bin</title> | |
<style id="jsbin-css"> | |
html, body { | |
font-size: 16px; | |
font-family: sans-serif; | |
line-height: normal; | |
margin: 1rem; | |
} | |
* { | |
margin-top: 0; | |
} | |
main > *, | |
body > * { | |
margin-bottom: 1.5rem; | |
} | |
ul { | |
padding: 0; | |
padding-left: 1em; | |
} | |
.scrollable-list { | |
display: inline-block; | |
max-height: 250px; | |
overflow-y: auto; | |
padding-right: 15px; | |
} | |
</style> | |
</head> | |
<body> | |
<!-- | |
This is not accessible, for demonstration only, do not use in production. | |
I will make an accessible real example when/if this is published to npm. | |
--> | |
<h1>Loading...</h1> | |
<script id="jsbin-javascript"> | |
var Registers=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){const{kebabCaseObjectKeys:n,objectToQueryString:o,validateParams:i}=r(1),s=r(5);e.exports=class{constructor(e){this.name=e}_getEndpoint(e,t={},r=[]){const s=n(t),u=i(s,r),c=o(u);return`https://${this.name}.register.gov.uk/${e}${c}`}register(){return s(this._getEndpoint("register"))}records(e,t={}){let r={},o="records";if("string"==typeof e)o+="/"+e,t.entries&&(o+="/entries");else if("object"==typeof e){const t=n(e);void 0!==t["field-name"]&&void 0!==t["field-value"]?o+=`/${t["field-name"]}/${t["field-value"]}`:r=e}return s(this._getEndpoint(o,r,["page-size","page-index"]))}entries(e){let t={},r="entries";return void 0!==e&&(isNaN(e)?t=e:r+="/"+e),s(this._getEndpoint(r,t,["start","limit"]))}items(e){return s(this._getEndpoint(`items/${e}`))}downloadRegister(){return s(this._getEndpoint("download-register"),"blob")}}},function(e,t,r){const n=r(2);e.exports={kebabCaseObjectKeys:function(e){if(void 0===e)throw new Error("expected object to be passed");let t={};return Object.keys(e).forEach(r=>{t[function(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}(r)]=e[r]}),t},objectToQueryString:function(e){if(void 0===e)throw new Error("expected object to be passed");const t=n.stringify(e);return t?"?"+t:""},validateParams:function(e,t=[]){let r={};return Object.keys(e).forEach(n=>{t.includes(n)&&(r[n]=e[n])}),r}}},function(e,t,r){"use strict";t.decode=t.parse=r(3),t.encode=t.stringify=r(4)},function(e,t,r){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,r,i){t=t||"&",r=r||"=";var s={};if("string"!=typeof e||0===e.length)return s;var u=/\+/g;e=e.split(t);var c=1e3;i&&"number"==typeof i.maxKeys&&(c=i.maxKeys);var a=e.length;c>0&&a>c&&(a=c);for(var f=0;f<a;++f){var p,l,d,b,y=e[f].replace(u,"%20"),g=y.indexOf(r);g>=0?(p=y.substr(0,g),l=y.substr(g+1)):(p=y,l=""),d=decodeURIComponent(p),b=decodeURIComponent(l),n(s,d)?o(s[d])?s[d].push(b):s[d]=[s[d],b]:s[d]=b}return s};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,r){"use strict";var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,r,u){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?i(s(e),function(s){var u=encodeURIComponent(n(s))+r;return o(e[s])?i(e[s],function(e){return u+encodeURIComponent(n(e))}).join(t):u+encodeURIComponent(n(e[s]))}).join(t):u?encodeURIComponent(n(u))+r+encodeURIComponent(n(e)):""};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function i(e,t){if(e.map)return e.map(t);for(var r=[],n=0;n<e.length;n++)r.push(t(e[n],n));return r}var s=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t}},function(e,t,r){const n=r(6),o=r(7);e.exports=function(e,t="json"){return n(e,{headers:{Accept:`application/${"json"===t?"json":"octet-stream"}`}}).then(e=>"blob"===t?o(e):e.json()).catch(e=>{throw e})}},function(e,t,r){"use strict";e.exports=t=self.fetch,t.default=self.fetch.bind(self),t.Headers=self.Headers,t.Request=self.Request,t.Response=self.Response},function(e,t){e.exports=function(e){return e.arrayBuffer()}}]); | |
// Utilities | |
function getItems (records) { | |
return Object.entries(records).map(record => { | |
return record[1].item[0] | |
}) | |
} | |
// Application code | |
async function App () { | |
const country = new window.Registers('country') | |
const info = await country.register() | |
const registerDescription = info['register-record'].text | |
const records = await country.records({ pageSize: 5000 }) | |
const countries = getItems(records) | |
const buffer = await country.downloadRegister() | |
const blob = new window.Blob([buffer], { type: 'application/octet-stream' }) | |
document.body.innerHTML = ` | |
<h1>Country register</h1> | |
<p>${registerDescription}</p> | |
<ul class="scrollable-list"> | |
${countries.map(country => { | |
return `<li> | |
${country.name} | |
</li>` | |
}).join('')} | |
</ul> | |
<br> | |
<a href="${URL.createObjectURL(blob)}" download='register.zip'> | |
Download register.zip | |
</a> | |
` | |
} | |
App() | |
</script> | |
<script id="jsbin-source-css" type="text/css">html, body { | |
font-size: 16px; | |
font-family: sans-serif; | |
line-height: normal; | |
margin: 1rem; | |
} | |
* { | |
margin-top: 0; | |
} | |
main > *, | |
body > * { | |
margin-bottom: 1.5rem; | |
} | |
ul { | |
padding: 0; | |
padding-left: 1em; | |
} | |
.scrollable-list { | |
display: inline-block; | |
max-height: 250px; | |
overflow-y: auto; | |
padding-right: 15px; | |
}</script> | |
<script id="jsbin-source-javascript" type="text/javascript">var Registers=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){const{kebabCaseObjectKeys:n,objectToQueryString:o,validateParams:i}=r(1),s=r(5);e.exports=class{constructor(e){this.name=e}_getEndpoint(e,t={},r=[]){const s=n(t),u=i(s,r),c=o(u);return`https://${this.name}.register.gov.uk/${e}${c}`}register(){return s(this._getEndpoint("register"))}records(e,t={}){let r={},o="records";if("string"==typeof e)o+="/"+e,t.entries&&(o+="/entries");else if("object"==typeof e){const t=n(e);void 0!==t["field-name"]&&void 0!==t["field-value"]?o+=`/${t["field-name"]}/${t["field-value"]}`:r=e}return s(this._getEndpoint(o,r,["page-size","page-index"]))}entries(e){let t={},r="entries";return void 0!==e&&(isNaN(e)?t=e:r+="/"+e),s(this._getEndpoint(r,t,["start","limit"]))}items(e){return s(this._getEndpoint(`items/${e}`))}downloadRegister(){return s(this._getEndpoint("download-register"),"blob")}}},function(e,t,r){const n=r(2);e.exports={kebabCaseObjectKeys:function(e){if(void 0===e)throw new Error("expected object to be passed");let t={};return Object.keys(e).forEach(r=>{t[function(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}(r)]=e[r]}),t},objectToQueryString:function(e){if(void 0===e)throw new Error("expected object to be passed");const t=n.stringify(e);return t?"?"+t:""},validateParams:function(e,t=[]){let r={};return Object.keys(e).forEach(n=>{t.includes(n)&&(r[n]=e[n])}),r}}},function(e,t,r){"use strict";t.decode=t.parse=r(3),t.encode=t.stringify=r(4)},function(e,t,r){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,r,i){t=t||"&",r=r||"=";var s={};if("string"!=typeof e||0===e.length)return s;var u=/\+/g;e=e.split(t);var c=1e3;i&&"number"==typeof i.maxKeys&&(c=i.maxKeys);var a=e.length;c>0&&a>c&&(a=c);for(var f=0;f<a;++f){var p,l,d,b,y=e[f].replace(u,"%20"),g=y.indexOf(r);g>=0?(p=y.substr(0,g),l=y.substr(g+1)):(p=y,l=""),d=decodeURIComponent(p),b=decodeURIComponent(l),n(s,d)?o(s[d])?s[d].push(b):s[d]=[s[d],b]:s[d]=b}return s};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,r){"use strict";var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,r,u){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?i(s(e),function(s){var u=encodeURIComponent(n(s))+r;return o(e[s])?i(e[s],function(e){return u+encodeURIComponent(n(e))}).join(t):u+encodeURIComponent(n(e[s]))}).join(t):u?encodeURIComponent(n(u))+r+encodeURIComponent(n(e)):""};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function i(e,t){if(e.map)return e.map(t);for(var r=[],n=0;n<e.length;n++)r.push(t(e[n],n));return r}var s=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t}},function(e,t,r){const n=r(6),o=r(7);e.exports=function(e,t="json"){return n(e,{headers:{Accept:`application/${"json"===t?"json":"octet-stream"}`}}).then(e=>"blob"===t?o(e):e.json()).catch(e=>{throw e})}},function(e,t,r){"use strict";e.exports=t=self.fetch,t.default=self.fetch.bind(self),t.Headers=self.Headers,t.Request=self.Request,t.Response=self.Response},function(e,t){e.exports=function(e){return e.arrayBuffer()}}]); | |
// Utilities | |
function getItems (records) { | |
return Object.entries(records).map(record => { | |
return record[1].item[0] | |
}) | |
} | |
// Application code | |
async function App () { | |
const country = new window.Registers('country') | |
const info = await country.register() | |
const registerDescription = info['register-record'].text | |
const records = await country.records({ pageSize: 5000 }) | |
const countries = getItems(records) | |
const buffer = await country.downloadRegister() | |
const blob = new window.Blob([buffer], { type: 'application/octet-stream' }) | |
document.body.innerHTML = ` | |
<h1>Country register</h1> | |
<p>${registerDescription}</p> | |
<ul class="scrollable-list"> | |
${countries.map(country => { | |
return `<li> | |
${country.name} | |
</li>` | |
}).join('')} | |
</ul> | |
<br> | |
<a href="${URL.createObjectURL(blob)}" download='register.zip'> | |
Download register.zip | |
</a> | |
` | |
} | |
App()</script></body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
html, body { | |
font-size: 16px; | |
font-family: sans-serif; | |
line-height: normal; | |
margin: 1rem; | |
} | |
* { | |
margin-top: 0; | |
} | |
main > *, | |
body > * { | |
margin-bottom: 1.5rem; | |
} | |
ul { | |
padding: 0; | |
padding-left: 1em; | |
} | |
.scrollable-list { | |
display: inline-block; | |
max-height: 250px; | |
overflow-y: auto; | |
padding-right: 15px; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var Registers=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){const{kebabCaseObjectKeys:n,objectToQueryString:o,validateParams:i}=r(1),s=r(5);e.exports=class{constructor(e){this.name=e}_getEndpoint(e,t={},r=[]){const s=n(t),u=i(s,r),c=o(u);return`https://${this.name}.register.gov.uk/${e}${c}`}register(){return s(this._getEndpoint("register"))}records(e,t={}){let r={},o="records";if("string"==typeof e)o+="/"+e,t.entries&&(o+="/entries");else if("object"==typeof e){const t=n(e);void 0!==t["field-name"]&&void 0!==t["field-value"]?o+=`/${t["field-name"]}/${t["field-value"]}`:r=e}return s(this._getEndpoint(o,r,["page-size","page-index"]))}entries(e){let t={},r="entries";return void 0!==e&&(isNaN(e)?t=e:r+="/"+e),s(this._getEndpoint(r,t,["start","limit"]))}items(e){return s(this._getEndpoint(`items/${e}`))}downloadRegister(){return s(this._getEndpoint("download-register"),"blob")}}},function(e,t,r){const n=r(2);e.exports={kebabCaseObjectKeys:function(e){if(void 0===e)throw new Error("expected object to be passed");let t={};return Object.keys(e).forEach(r=>{t[function(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}(r)]=e[r]}),t},objectToQueryString:function(e){if(void 0===e)throw new Error("expected object to be passed");const t=n.stringify(e);return t?"?"+t:""},validateParams:function(e,t=[]){let r={};return Object.keys(e).forEach(n=>{t.includes(n)&&(r[n]=e[n])}),r}}},function(e,t,r){"use strict";t.decode=t.parse=r(3),t.encode=t.stringify=r(4)},function(e,t,r){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,r,i){t=t||"&",r=r||"=";var s={};if("string"!=typeof e||0===e.length)return s;var u=/\+/g;e=e.split(t);var c=1e3;i&&"number"==typeof i.maxKeys&&(c=i.maxKeys);var a=e.length;c>0&&a>c&&(a=c);for(var f=0;f<a;++f){var p,l,d,b,y=e[f].replace(u,"%20"),g=y.indexOf(r);g>=0?(p=y.substr(0,g),l=y.substr(g+1)):(p=y,l=""),d=decodeURIComponent(p),b=decodeURIComponent(l),n(s,d)?o(s[d])?s[d].push(b):s[d]=[s[d],b]:s[d]=b}return s};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,r){"use strict";var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,r,u){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?i(s(e),function(s){var u=encodeURIComponent(n(s))+r;return o(e[s])?i(e[s],function(e){return u+encodeURIComponent(n(e))}).join(t):u+encodeURIComponent(n(e[s]))}).join(t):u?encodeURIComponent(n(u))+r+encodeURIComponent(n(e)):""};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function i(e,t){if(e.map)return e.map(t);for(var r=[],n=0;n<e.length;n++)r.push(t(e[n],n));return r}var s=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t}},function(e,t,r){const n=r(6),o=r(7);e.exports=function(e,t="json"){return n(e,{headers:{Accept:`application/${"json"===t?"json":"octet-stream"}`}}).then(e=>"blob"===t?o(e):e.json()).catch(e=>{throw e})}},function(e,t,r){"use strict";e.exports=t=self.fetch,t.default=self.fetch.bind(self),t.Headers=self.Headers,t.Request=self.Request,t.Response=self.Response},function(e,t){e.exports=function(e){return e.arrayBuffer()}}]); | |
// Utilities | |
function getItems (records) { | |
return Object.entries(records).map(record => { | |
return record[1].item[0] | |
}) | |
} | |
// Application code | |
async function App () { | |
const country = new window.Registers('country') | |
const info = await country.register() | |
const registerDescription = info['register-record'].text | |
const records = await country.records({ pageSize: 5000 }) | |
const countries = getItems(records) | |
const buffer = await country.downloadRegister() | |
const blob = new window.Blob([buffer], { type: 'application/octet-stream' }) | |
document.body.innerHTML = ` | |
<h1>Country register</h1> | |
<p>${registerDescription}</p> | |
<ul class="scrollable-list"> | |
${countries.map(country => { | |
return `<li> | |
${country.name} | |
</li>` | |
}).join('')} | |
</ul> | |
<br> | |
<a href="${URL.createObjectURL(blob)}" download='register.zip'> | |
Download register.zip | |
</a> | |
` | |
} | |
App() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment