@data-fair/dev-server 1.6.0 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ module.exports = {
2
+ dataFair: {
3
+ apiKey: '9xsUActJxZozhg5xpoT4A'
4
+ }
5
+ }
package/dist/200.html CHANGED
@@ -1,9 +1,9 @@
1
1
  <!doctype html>
2
2
  <html>
3
3
  <head>
4
- <title>DataFair - Dev server</title><meta data-n-head="1" charset="utf-8"><meta data-n-head="1" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="1" data-hid="application" name="application-name" content="DataFair - Dev server"><meta data-n-head="1" data-hid="description" name="description" content="A development server for optimal development experience of data-fair applications."><meta data-n-head="1" data-hid="robots" name="robots" content="noindex"><link rel="preload" href="/_nuxt/c140857.js" as="script"><link rel="preload" href="/_nuxt/0c5f45a.js" as="script"><link rel="preload" href="/_nuxt/df98766.js" as="script"><link rel="preload" href="/_nuxt/b1b5217.js" as="script">
4
+ <title>DataFair - Dev server</title><meta data-n-head="1" charset="utf-8"><meta data-n-head="1" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="1" data-hid="application" name="application-name" content="DataFair - Dev server"><meta data-n-head="1" data-hid="description" name="description" content="A development server for optimal development experience of data-fair applications."><meta data-n-head="1" data-hid="robots" name="robots" content="noindex"><link rel="preload" href="/_nuxt/bcc65de.js" as="script"><link rel="preload" href="/_nuxt/0c5f45a.js" as="script"><link rel="preload" href="/_nuxt/df98766.js" as="script"><link rel="preload" href="/_nuxt/b1b5217.js" as="script">
5
5
  </head>
6
6
  <body>
7
7
  <div id="__nuxt"><style>#nuxt-loading{background:#fff;visibility:hidden;opacity:0;position:absolute;left:0;right:0;top:0;bottom:0;display:flex;justify-content:center;align-items:center;flex-direction:column;animation:nuxtLoadingIn 10s ease;-webkit-animation:nuxtLoadingIn 10s ease;animation-fill-mode:forwards;overflow:hidden}@keyframes nuxtLoadingIn{0%{visibility:hidden;opacity:0}20%{visibility:visible;opacity:0}100%{visibility:visible;opacity:1}}@-webkit-keyframes nuxtLoadingIn{0%{visibility:hidden;opacity:0}20%{visibility:visible;opacity:0}100%{visibility:visible;opacity:1}}#nuxt-loading>div,#nuxt-loading>div:after{border-radius:50%;width:5rem;height:5rem}#nuxt-loading>div{font-size:10px;position:relative;text-indent:-9999em;border:.5rem solid #f5f5f5;border-left:.5rem solid #000;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:nuxtLoading 1.1s infinite linear;animation:nuxtLoading 1.1s infinite linear}#nuxt-loading.error>div{border-left:.5rem solid #ff4500;animation-duration:5s}@-webkit-keyframes nuxtLoading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes nuxtLoading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}</style><script>window.addEventListener("error",function(){var e=document.getElementById("nuxt-loading");e&&(e.className+=" error")})</script><div id="nuxt-loading" aria-live="polite" role="status"><div>Loading...</div></div></div><script>window.__NUXT__={config:{_app:{basePath:"/",assetsPath:"/_nuxt/",cdnURL:null}}}</script>
8
- <script src="/_nuxt/c140857.js"></script><script src="/_nuxt/0c5f45a.js"></script><script src="/_nuxt/df98766.js"></script><script src="/_nuxt/b1b5217.js"></script></body>
8
+ <script src="/_nuxt/bcc65de.js"></script><script src="/_nuxt/0c5f45a.js"></script><script src="/_nuxt/df98766.js"></script><script src="/_nuxt/b1b5217.js"></script></body>
9
9
  </html>
@@ -0,0 +1 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[6,5],{308:function(e,t){e.exports=function(e){e.options.__i18n=e.options.__i18n||[],e.options.__i18n.push('{"en":{"metadata":"Metadata read from index.html","missingApplicationName":"Metadata \\"application-name\\" is missing. Add a tag <meta name=\\"application-name\\" content=\\"my-application\\">","missingThumbnail":"Metadata \\"thumbnail\\" is missing. Add a tag <meta name=\\"thumbnail\\" content=\\"http://my/thumbnail.png\\">","missingTitle":"Add a tag <title lang=\\"{locale}\\">My title</title>","missingDesc":"Metadata \\"description\\" is missing. Add a tag <meta name=\\"description\\" lang=\\"{locale}\\" content=\\"My description\\">","missingKeywords":"Metadata \\"keywords\\" is missing. Add a tag <meta name=\\"keywords\\" lang=\\"{locale}\\" content=\\"My keyword\\">","missingVocabAccept":"Metadata \\"vocabulary-accept\\" is missing. Add a tag <meta name=\\"vocabulary-accept\\" content=\\"http://www.w3.org/2000/01/rdf-schema#label\\">","missingVocabRequire":"Metadata \\"vocabulary-require\\" is missing. Add a tag <meta name=\\"vocabulary-require\\" content=\\"http://www.w3.org/2003/01/geo/wgs84_pos#lat_long\\">","config":"Configuration form created from config-schema.json"}}'),delete e.options._Ctor}},312:function(e,t,n){"use strict";n.r(t);var r={components:{VIframe:n(311).a},data:function(){return{dialog:!1}}},o=n(63),l=n(127),c=n.n(l),d=n(358),m=n(328),f=n(264),v=n(659),component=Object(o.a)(r,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-dialog",{attrs:{scrollable:"","max-width":"1100px"},scopedSlots:e._u([{key:"activator",fn:function(t){var r=t.on;return[n("v-btn",e._g({attrs:{color:"primary",text:""}},r),[e._v("\n Simulate screenshot\n ")])]}}]),model:{value:e.dialog,callback:function(t){e.dialog=t},expression:"dialog"}},[e._v(" "),n("v-card",[n("v-card-title",{attrs:{"primary-title":""}},[e._v("\n Screenshot simulation\n ")]),e._v(" "),n("v-card-text",[n("p",[e._v("Data Fair will automatically render the visualization after each configuration change and take a screenshot to be used as a thumbnail.")]),e._v(" "),n("p",[e._v("The screenshot will be rendered in a box of 1050x450 pixels (21/9 resolution) and the URL will have the query parameter ?thumbnail=true.")]),e._v(" "),n("p",[e._v('For performance it is a recommended to call the window.triggerCapture method as soon as the application is fully rendered. For guidance look for messages prefixed with "[capture]" in your browser developper\'s console.')]),e._v(" "),e.dialog?n("v-iframe",{staticStyle:{border:"1px solid grey",width:"1050px"},attrs:{"aspect-ratio":21/9,src:"http://localhost:5888/app?thumbnail=true"}}):e._e()],1)],1)],1)}),[],!1,null,"c87a3f30",null);t.default=component.exports;c()(component,{VBtn:d.a,VCard:m.a,VCardText:f.b,VCardTitle:f.c,VDialog:v.a})},356:function(e,t,n){var content=n(641);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[e.i,content,""]]),content.locals&&(e.exports=content.locals);(0,n(61).default)("2068a7e4",content,!0,{sourceMap:!1})},357:function(e,t,n){"use strict";n.r(t);var r={computed:{locales:function(){return["en","fr"]}},methods:{setLocale:function(e){this.$i18n.setLocale(e),window.location.reload()}}},o=n(63),l=n(127),c=n.n(l),d=n(358),m=n(643),component=Object(o.a)(r,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.locales.length>1?n("v-speed-dial",{attrs:{direction:"bottom",transition:"fade-transition"},scopedSlots:e._u([{key:"activator",fn:function(){return[n("v-btn",{staticClass:"mx-2",attrs:{fab:"",small:""}},[e._v("\n "+e._s(e.$i18n.locale)+"\n ")])]},proxy:!0}],null,!1,4142082435)},[e._v(" "),e._l(e.locales.filter((function(t){return t!==e.$i18n.locale})),(function(t){return n("v-btn",{key:t,attrs:{fab:"",small:"",nuxt:""},on:{click:function(n){return e.setLocale(t)}}},[e._v("\n "+e._s(t)+"\n ")])}))],2):e._e()}),[],!1,null,null,null);t.default=component.exports;c()(component,{VBtn:d.a,VSpeedDial:m.a})},640:function(e,t,n){"use strict";n(356)},641:function(e,t,n){var r=n(60)(!1);r.push([e.i,".app-meta p[data-v-57858f63]{margin-bottom:4px}",""]),e.exports=r},642:function(e,t,n){"use strict";var r=n(308),o=n.n(r);t.default=o.a},658:function(e,t,n){"use strict";n.r(t);n(15),n(11),n(26),n(27),n(28),n(36),n(35),n(32);var r=n(3),o=n(4),l=(n(83),n(16),n(22),n(31),n(38),n(39),n(13),n(45),n(362)),c=n(644),d=(n(489),n(491),n(314)),m=n(620),f=n.n(m),v=(n(622),n(311)),h=n(312);function _(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return y(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,l=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){c=!0,o=e},f:function(){try{l||null==n.return||n.return()}finally{if(c)throw o}}}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}function w(object,e){var t=Object.keys(object);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(object);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(object,e).enumerable}))),t.push.apply(t,n)}return t}function x(e){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?w(Object(source),!0).forEach((function(t){Object(r.a)(e,t,source[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(source)):w(Object(source)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(source,t))}))}return e}var k=n(627),$=n(302),C=n(349),A=n(348),O=new $({strict:!1,allErrors:!0,messages:!1});O.addFormat("hexcolor",/^#[0-9A-Fa-f]{6,8}$/),C(O);var S={components:{VIframe:v.a,VJsf:c.a,ScreenshotSimulation:h.default},data:function(){return{error:null,schema:null,dataFair:null,editConfig:null,showPreview:!0,compileError:null,formValid:!1,iframeLog:!1,loading:!1,meta:null}},computed:{options:function(){return{context:{owner:this.dataFair&&this.dataFair.owner},locale:this.$i18n.locale,defaultLocale:this.$i18n.defaultLocale,rootDisplay:"expansion-panels",expansionPanelsProps:{value:0,hover:!0},dialogProps:{maxWidth:500,overlayOpacity:0},arrayItemCardProps:{outlined:!0,tile:!0},dialogCardProps:{outlined:!0}}},validationErrors:function(){if(this.schema&&this.schemaValidate)return this.schemaValidate(this.editConfig)?null:(A[this.$i18n.locale](this.schemaValidate.errors),this.schemaValidate.errors)}},created:function(){var e=this;return Object(o.a)(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.dataFair={url:"https://STARTCONFIGALIAS-string-dataFair.url-ENDCONFIGALIAS",owner:{type:"STARTCONFIGALIAS-string-dataFair.owner.type-ENDCONFIGALIAS",id:"STARTCONFIGALIAS-string-dataFair.owner.id-ENDCONFIGALIAS"},apiKey:"STARTCONFIGALIAS-string-dataFair.apiKey-ENDCONFIGALIAS"},e.iframeLog="STARTCONFIGALIAS-boolean-iframeLog-ENDCONFIGALIAS",t.next=4,e.$axios.$get("http://localhost:5888/config");case 4:e.editConfig=t.sent,e.fetchInfo();case 6:case"end":return t.stop()}}),t)})))()},mounted:function(){var e=this;console.log("connect to to ws://localhost:5888"),this.socketDevServer=new l.a("ws://localhost:5888"),this.socketDevServer.onopen=function(){e.socketDevServer.onmessage=function(t){var data=JSON.parse(t.data);"app-error"===data.type&&(e.error=data.data.message)}},window.addEventListener("message",function(){var t=Object(o.a)(regeneratorRuntime.mark((function t(n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(console.log("received message from iframe",n.data),"set-config"!==n.data.type){t.next=7;break}return e.loading=!0,e.editConfig=f.a.set(x({},e.editConfig),n.data.content.field,n.data.content.value),t.next=6,e.validate();case 6:e.loading=!1;case 7:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())},destroyed:function(){this.socketDevServer&&this.socketDevServer.close()},methods:{empty:function(){var e=this;return Object(o.a)(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.editConfig=null,t.next=3,e.save({});case 3:e.editConfig={};case 4:case"end":return t.stop()}}),t)})))()},validate:function(){var e=this;return Object(o.a)(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e.$refs.form.validate()){t.next=4;break}return e.error=null,t.next=4,e.save(e.editConfig);case 4:case"end":return t.stop()}}),t)})))()},save:function(e){var t=this;return Object(o.a)(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,t.$axios.$put("http://localhost:5888/config",e);case 2:return n.next=4,t.reloadIframe();case 4:case"end":return n.stop()}}),n)})))()},fetchInfo:function(){var e=this;return Object(o.a)(regeneratorRuntime.mark((function t(){var n,r,o,l,html,c,head,meta,m,f,v,h,y,w,x,$,C,A,S,I,V;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading=!0,t.next=3,e.$axios.$get("http://localhost:5888/app/index.html");case 3:if(o=t.sent,l=k.parse(o),html=l.childNodes.find((function(e){return"html"===e.tagName}))){t.next=8;break}throw new Error("broken HTML");case 8:if(c=(null===(n=html.attrs)||void 0===n||null===(r=n.find((function(a){return"lang"===a.name})))||void 0===r?void 0:r.value)||e.$i18n.defaultLocale,head=html.childNodes.find((function(e){return"head"===e.tagName}))){t.next=12;break}throw new Error("broken HTML, missing head tag");case 12:meta={title:{}},m=_(head.childNodes.filter((function(e){return"title"===e.tagName})));try{for(m.s();!(f=m.n()).done;)y=f.value,meta.title[(null==y||null===(v=y.attrs.find((function(a){return"lang"===a.name})))||void 0===v?void 0:v.value)||c]=null===(h=y.childNodes)||void 0===h?void 0:h[0].value}catch(e){m.e(e)}finally{m.f()}w=["application-name","description","keywords","vocabulary-accept","vocabulary-require","thumbnail"],x=["description","keywords"],$=["keywords","vocabulary-accept","vocabulary-require"],C=head.childNodes.filter((function(e){return"meta"===e.tagName})).map((function(e){var t,n,r;return{name:null===(t=e.attrs.find((function(a){return"name"===a.name})))||void 0===t?void 0:t.value,locale:(null===(n=e.attrs.find((function(a){return"lang"===a.name})))||void 0===n?void 0:n.value)||c,content:null===(r=e.attrs.find((function(a){return"content"===a.name})))||void 0===r?void 0:r.value}})).filter((function(e){return w.includes(e.name)})),A=_(C);try{for(A.s();!(S=A.n()).done;)I=S.value,x.includes(I.name)?(meta[I.name]=meta[I.name]||{},$.includes(I.name)?(meta[I.name][I.locale]=meta[I.name][I.locale]||[],I.content&&meta[I.name][I.locale].push(I.content)):meta[I.name][I.locale]=I.content):$.includes(I.name)?(meta[I.name]=meta[I.name]||[],I.content&&meta[I.name].push(I.content)):meta[I.name]=I.content}catch(e){A.e(e)}finally{A.f()}return e.meta=meta,e.schema=null,t.next=25,e.$axios.$get("http://localhost:5888/app/config-schema.json");case 25:(V=t.sent)["x-display"]="tabs",e.schema=d.a.resolve(V,{"~$locale~":e.$i18n.locale===e.$i18n.defaultLocale?e.$i18n.locale:[e.$i18n.locale,e.$i18n.defaultLocale]});try{e.schemaValidate=O.compile(e.schema),e.compileError=null}catch(t){console.error(t),e.compileError=t.message}e.loading=!1;case 30:case"end":return t.stop()}}),t)})))()},reloadIframe:function(){var e=this;return Object(o.a)(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.showPreview=!1,t.next=3,new Promise((function(e){return setTimeout(e,10)}));case 3:e.showPreview=!0;case 4:case"end":return t.stop()}}),t)})))()}}},I=S,V=(n(640),n(63)),j=n(642),L=n(127),N=n.n(L),F=n(651),E=n(358),R=n(328),T=n(653),D=n(660),P=n(656),M=n(322),G=n(654),J=n(655),component=Object(V.a)(I,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-container",{staticClass:"pt-4",attrs:{fluid:""}},[n("v-row",[n("v-col",{attrs:{xs:"12",md:"6",lg:"4"}},[e.error?n("v-alert",{attrs:{color:"error"}},[e._v("\n "+e._s(e.error.message||e.error)+"\n ")]):e._e(),e._v(" "),n("v-row",{staticClass:"mb-2"},[n("v-spacer"),e._v(" "),n("v-btn",{staticClass:"mx-2",attrs:{fab:"",dark:"",small:"",color:"primary",loading:e.loading},on:{click:e.fetchInfo}},[n("v-icon",{attrs:{dark:""}},[e._v("\n mdi-refresh\n ")])],1)],1),e._v(" "),n("h2",{staticClass:"text-h6 mt-2"},[e._v("\n "+e._s(e.$t("config"))+"\n ")]),e._v(" "),n("v-form",{ref:"form",model:{value:e.formValid,callback:function(t){e.formValid=t},expression:"formValid"}},[n("v-alert",{attrs:{value:!!e.compileError,type:"error"}},[e._v("\n "+e._s(e.compileError)+"\n ")]),e._v(" "),n("v-alert",{attrs:{value:!!e.validationErrors&&e.formValid,type:"error"}},[e._v("\n Formulaire valide pourtant le modèle ne respecte pas le schéma:\n "),n("p",[e._v(e._s(e.validationErrors))])]),e._v(" "),e.schema&&e.editConfig&&!e.loading?n("v-jsf",{attrs:{schema:e.schema,options:e.options},on:{change:e.validate},model:{value:e.editConfig,callback:function(t){e.editConfig=t},expression:"editConfig"}}):e._e()],1),e._v(" "),n("v-row",{staticClass:"ma-2"},[n("v-spacer"),e._v(" "),n("v-btn",{attrs:{color:"warning"},on:{click:e.empty}},[e._v("\n Empty\n ")])],1),e._v(" "),e.meta?n("v-row",{staticClass:"mt-4"},[n("v-col",{staticClass:"app-meta"},[n("h2",{staticClass:"text-h6"},[e._v("\n "+e._s(e.$t("metadata"))+"\n ")]),e._v(" "),e.meta["application-name"]?n("p",[n("b",[e._v("application-name:")]),e._v(" "+e._s(e.meta["application-name"])+"\n ")]):n("v-alert",{attrs:{type:"error",dense:""}},[e._v("\n "+e._s(e.$t("missingApplicationName"))+"\n ")]),e._v(" "),e.meta.thumbnail?n("p",[n("b",[e._v("thumbnail:")]),e._v(" "),n("img",{attrs:{width:"25",src:e.meta.thumbnail.startsWith("http://")||e.meta.thumbnail.startsWith("https://")?e.meta.thumbnail:"http://localhost:5888/app/"+e.meta.thumbnail}})]):n("v-alert",{attrs:{type:"error",dense:""}},[e._v("\n "+e._s(e.$t("missingThumbnail"))+"\n ")]),e._v(" "),e.meta.title&&e.meta.title[e.$i18n.locale]?n("p",[n("b",[e._v("title:")]),e._v(" "+e._s(e.meta.title[e.$i18n.locale])+"\n ")]):n("v-alert",{attrs:{type:"error",dense:""}},[e._v("\n "+e._s(e.$t("missingTitle",{locale:e.$i18n.locale}))+"\n ")]),e._v(" "),e.meta.description&&e.meta.description[e.$i18n.locale]?n("p",[n("b",[e._v("description:")]),e._v(" "+e._s(e.meta.description[e.$i18n.locale])+"\n ")]):n("v-alert",{attrs:{type:"error",dense:""}},[e._v("\n "+e._s(e.$t("missingDesc",{locale:e.$i18n.locale}))+"\n ")]),e._v(" "),e.meta.keywords&&e.meta.keywords[e.$i18n.locale]?n("p",[n("b",[e._v("keywords:")]),e._v(" "+e._s(e.meta.keywords[e.$i18n.locale])+"\n ")]):n("v-alert",{attrs:{type:"error",dense:""}},[e._v("\n "+e._s(e.$t("missingKeywords",{locale:e.$i18n.locale}))+"\n ")]),e._v(" "),e.meta["vocabulary-accept"]&&e.meta["vocabulary-accept"]?n("p",[n("b",[e._v("vocabulary-accept:")]),e._v(" "+e._s(e.meta["vocabulary-accept"])+"\n ")]):n("v-alert",{attrs:{type:"info",dense:""}},[e._v("\n "+e._s(e.$t("missingVocabAccept",{locale:e.$i18n.locale}))+"\n ")]),e._v(" "),e.meta["vocabulary-require"]&&e.meta["vocabulary-require"]?n("p",[n("b",[e._v("vocabulary-require:")]),e._v(" "+e._s(e.meta["vocabulary-require"])+"\n ")]):n("v-alert",{attrs:{type:"info",dense:""}},[e._v("\n "+e._s(e.$t("missingVocabRequire",{locale:e.$i18n.locale}))+"\n ")])],1)],1):e._e()],1),e._v(" "),n("v-col",{attrs:{xs:"12",md:"6",lg:"8"}},[n("v-row",{staticClass:"mb-2"},[n("v-spacer"),e._v(" "),n("screenshot-simulation"),e._v(" "),n("v-btn",{staticClass:"mx-2",attrs:{fab:"",dark:"",small:"",color:"primary"},on:{click:e.reloadIframe}},[n("v-icon",{attrs:{dark:""}},[e._v("\n mdi-refresh\n ")])],1),e._v(" "),n("lang-switcher")],1),e._v(" "),n("v-card",[e.showPreview?n("v-iframe",{attrs:{src:"http://localhost:5888/app?draft=true",log:e.iframeLog}}):e._e()],1)],1)],1)],1)}),[],!1,null,"57858f63",null);"function"==typeof j.default&&Object(j.default)(component);t.default=component.exports;N()(component,{ScreenshotSimulation:n(312).default,LangSwitcher:n(357).default}),N()(component,{VAlert:F.a,VBtn:E.a,VCard:R.a,VCol:T.a,VContainer:D.a,VForm:P.a,VIcon:M.a,VRow:G.a,VSpacer:J.a})}}]);
@@ -1 +1 @@
1
- !function(e){function r(data){for(var r,n,f=data[0],l=data[1],d=data[2],i=0,h=[];i<f.length;i++)n=f[i],Object.prototype.hasOwnProperty.call(o,n)&&o[n]&&h.push(o[n][0]),o[n]=0;for(r in l)Object.prototype.hasOwnProperty.call(l,r)&&(e[r]=l[r]);for(v&&v(data);h.length;)h.shift()();return c.push.apply(c,d||[]),t()}function t(){for(var e,i=0;i<c.length;i++){for(var r=c[i],t=!0,n=1;n<r.length;n++){var l=r[n];0!==o[l]&&(t=!1)}t&&(c.splice(i--,1),e=f(f.s=r[0]))}return e}var n={},o={7:0},c=[];function f(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var c,script=document.createElement("script");script.charset="utf-8",script.timeout=120,f.nc&&script.setAttribute("nonce",f.nc),script.src=function(e){return f.p+""+{0:"b68e30f",1:"553dac1",4:"d6dd90c",5:"898243c",6:"1d11d1a",9:"5d119d6",10:"4f0f04d"}[e]+".js"}(e);var l=new Error;c=function(r){script.onerror=script.onload=null,clearTimeout(d);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),c=r&&r.target&&r.target.src;l.message="Loading chunk "+e+" failed.\n("+n+": "+c+")",l.name="ChunkLoadError",l.type=n,l.request=c,t[1](l)}o[e]=void 0}};var d=setTimeout((function(){c({type:"timeout",target:script})}),12e4);script.onerror=script.onload=c,document.head.appendChild(script)}return Promise.all(r)},f.m=e,f.c=n,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)f.d(t,n,function(r){return e[r]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(object,e){return Object.prototype.hasOwnProperty.call(object,e)},f.p="/_nuxt/",f.oe=function(e){throw console.error(e),e};var l=window.webpackJsonp=window.webpackJsonp||[],d=l.push.bind(l);l.push=r,l=l.slice();for(var i=0;i<l.length;i++)r(l[i]);var v=d;t()}([]);
1
+ !function(e){function r(data){for(var r,n,f=data[0],l=data[1],d=data[2],i=0,h=[];i<f.length;i++)n=f[i],Object.prototype.hasOwnProperty.call(o,n)&&o[n]&&h.push(o[n][0]),o[n]=0;for(r in l)Object.prototype.hasOwnProperty.call(l,r)&&(e[r]=l[r]);for(v&&v(data);h.length;)h.shift()();return c.push.apply(c,d||[]),t()}function t(){for(var e,i=0;i<c.length;i++){for(var r=c[i],t=!0,n=1;n<r.length;n++){var l=r[n];0!==o[l]&&(t=!1)}t&&(c.splice(i--,1),e=f(f.s=r[0]))}return e}var n={},o={7:0},c=[];function f(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var c,script=document.createElement("script");script.charset="utf-8",script.timeout=120,f.nc&&script.setAttribute("nonce",f.nc),script.src=function(e){return f.p+""+{0:"b68e30f",1:"553dac1",4:"d6dd90c",5:"898243c",6:"9363572",9:"5d119d6",10:"4f0f04d"}[e]+".js"}(e);var l=new Error;c=function(r){script.onerror=script.onload=null,clearTimeout(d);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),c=r&&r.target&&r.target.src;l.message="Loading chunk "+e+" failed.\n("+n+": "+c+")",l.name="ChunkLoadError",l.type=n,l.request=c,t[1](l)}o[e]=void 0}};var d=setTimeout((function(){c({type:"timeout",target:script})}),12e4);script.onerror=script.onload=c,document.head.appendChild(script)}return Promise.all(r)},f.m=e,f.c=n,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)f.d(t,n,function(r){return e[r]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(object,e){return Object.prototype.hasOwnProperty.call(object,e)},f.p="/_nuxt/",f.oe=function(e){throw console.error(e),e};var l=window.webpackJsonp=window.webpackJsonp||[],d=l.push.bind(l);l.push=r,l=l.slice();for(var i=0;i<l.length;i++)r(l[i]);var v=d;t()}([]);
package/dist/index.html CHANGED
@@ -1,9 +1,9 @@
1
1
  <!doctype html>
2
2
  <html>
3
3
  <head>
4
- <title>DataFair - Dev server</title><meta data-n-head="1" charset="utf-8"><meta data-n-head="1" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="1" data-hid="application" name="application-name" content="DataFair - Dev server"><meta data-n-head="1" data-hid="description" name="description" content="A development server for optimal development experience of data-fair applications."><meta data-n-head="1" data-hid="robots" name="robots" content="noindex"><link rel="preload" href="/_nuxt/c140857.js" as="script"><link rel="preload" href="/_nuxt/0c5f45a.js" as="script"><link rel="preload" href="/_nuxt/df98766.js" as="script"><link rel="preload" href="/_nuxt/b1b5217.js" as="script">
4
+ <title>DataFair - Dev server</title><meta data-n-head="1" charset="utf-8"><meta data-n-head="1" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="1" data-hid="application" name="application-name" content="DataFair - Dev server"><meta data-n-head="1" data-hid="description" name="description" content="A development server for optimal development experience of data-fair applications."><meta data-n-head="1" data-hid="robots" name="robots" content="noindex"><link rel="preload" href="/_nuxt/bcc65de.js" as="script"><link rel="preload" href="/_nuxt/0c5f45a.js" as="script"><link rel="preload" href="/_nuxt/df98766.js" as="script"><link rel="preload" href="/_nuxt/b1b5217.js" as="script">
5
5
  </head>
6
6
  <body>
7
7
  <div id="__nuxt"><style>#nuxt-loading{background:#fff;visibility:hidden;opacity:0;position:absolute;left:0;right:0;top:0;bottom:0;display:flex;justify-content:center;align-items:center;flex-direction:column;animation:nuxtLoadingIn 10s ease;-webkit-animation:nuxtLoadingIn 10s ease;animation-fill-mode:forwards;overflow:hidden}@keyframes nuxtLoadingIn{0%{visibility:hidden;opacity:0}20%{visibility:visible;opacity:0}100%{visibility:visible;opacity:1}}@-webkit-keyframes nuxtLoadingIn{0%{visibility:hidden;opacity:0}20%{visibility:visible;opacity:0}100%{visibility:visible;opacity:1}}#nuxt-loading>div,#nuxt-loading>div:after{border-radius:50%;width:5rem;height:5rem}#nuxt-loading>div{font-size:10px;position:relative;text-indent:-9999em;border:.5rem solid #f5f5f5;border-left:.5rem solid #000;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:nuxtLoading 1.1s infinite linear;animation:nuxtLoading 1.1s infinite linear}#nuxt-loading.error>div{border-left:.5rem solid #ff4500;animation-duration:5s}@-webkit-keyframes nuxtLoading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes nuxtLoading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}</style><script>window.addEventListener("error",function(){var e=document.getElementById("nuxt-loading");e&&(e.className+=" error")})</script><div id="nuxt-loading" aria-live="polite" role="status"><div>Loading...</div></div></div><script>window.__NUXT__={config:{_app:{basePath:"/",assetsPath:"/_nuxt/",cdnURL:null}}}</script>
8
- <script src="/_nuxt/c140857.js"></script><script src="/_nuxt/0c5f45a.js"></script><script src="/_nuxt/df98766.js"></script><script src="/_nuxt/b1b5217.js"></script></body>
8
+ <script src="/_nuxt/bcc65de.js"></script><script src="/_nuxt/0c5f45a.js"></script><script src="/_nuxt/df98766.js"></script><script src="/_nuxt/b1b5217.js"></script></body>
9
9
  </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@data-fair/dev-server",
3
- "version": "1.6.0",
3
+ "version": "1.7.2",
4
4
  "description": "A development server for optimal development experience of data-fair applications.",
5
5
  "main": "server/index.js",
6
6
  "bin": {
package/server/app.js CHANGED
@@ -7,30 +7,49 @@ const config = require('config')
7
7
  const eventToPromise = require('event-to-promise')
8
8
  const http = require('http')
9
9
  const fs = require('fs-extra')
10
- const { createProxyMiddleware } = require('http-proxy-middleware')
10
+ const { createProxyMiddleware, fixRequestBody } = require('http-proxy-middleware')
11
11
  const cors = require('cors')
12
12
  const kill = require('tree-kill')
13
13
  const escapeStringRegexp = require('escape-string-regexp')
14
14
  const parse5 = require('parse5')
15
- const WebSocket = require('ws')
15
+ const { WebSocket, WebSocketServer } = require('ws')
16
16
  const debug = require('debug')('df-dev-server')
17
17
  const chalk = require('chalk')
18
18
 
19
19
  const app = express()
20
20
  const server = http.createServer(app)
21
21
 
22
- const wss = new WebSocket.Server({ server })
23
- let ws
24
- wss.on('connection', (_ws) => {
25
- if (ws) ws.terminate()
26
- ws = _ws
27
-
28
- ws.on('message', function incoming (message) {
29
- if (!message.includes('"pong"')) console.log('received: %s', message)
22
+ // web socket server, used both by dev-server UI (opened on / path)
23
+ // and by application (opened on /data-fair), in this case we transmit all messages to and from data-fair
24
+ const wss = new WebSocketServer({ noServer: true })
25
+ let devServerWS, dataFairWS
26
+ server.on('upgrade', function upgrade (req, socket, head) {
27
+ wss.handleUpgrade(req, socket, head, (ws) => {
28
+ if (req.url === '/data-fair') {
29
+ console.log('data-fair websocket connection from application')
30
+ if (dataFairWS) dataFairWS.terminate()
31
+ dataFairWS = ws
32
+ ws.on('message', (data) => {
33
+ if (dataFairOutputWS) {
34
+ const message = JSON.parse(data)
35
+ if (message.type === 'subscribe') message.apiKey = config.dataFair.apiKey
36
+ dataFairOutputWS.send(JSON.stringify(message))
37
+ }
38
+ })
39
+ } else {
40
+ if (devServerWS) devServerWS.terminate()
41
+ devServerWS = ws
42
+ }
43
+ wss.emit('connection', ws, req)
30
44
  })
31
- ws.send(JSON.stringify({ type: 'ping' }))
32
45
  })
33
46
 
47
+ const dfWsUrl = config.dataFair.url.replace('http://', 'ws://').replace('https://', 'wss://') + '/'
48
+ const dataFairOutputWS = new WebSocket(dfWsUrl)
49
+ dataFairOutputWS.on('open', () => dataFairOutputWS.send('connect to external websocket server', dfWsUrl))
50
+ dataFairOutputWS.on('message', (data) => { if (dataFairWS) dataFairWS.send(data.toString()) })
51
+ dataFairOutputWS.on('error', (err) => console.error('failed to connect to external websocket server', dfWsUrl, err))
52
+
34
53
  app.use(bodyParser.json())
35
54
  app.use(cors())
36
55
 
@@ -47,7 +66,8 @@ app.put('/config', (req, res, next) => {
47
66
  })
48
67
  app.post('/config/error', (req, res) => {
49
68
  console.log('Application sent an error', req.body)
50
- if (ws) ws.send(JSON.stringify({ type: 'app-error', data: req.body }))
69
+ if (devServerWS) devServerWS.send(JSON.stringify({ type: 'app-error', data: req.body }))
70
+ else console.error('no dev-server websocket open to send error to')
51
71
  res.send()
52
72
  })
53
73
 
@@ -58,7 +78,6 @@ app.use('/app', createProxyMiddleware({
58
78
  pathRewrite: { '^/app': appUrl.pathname === '/' ? '' : appUrl.pathname },
59
79
  secure: false,
60
80
  changeOrigin: true,
61
- ws: true,
62
81
  selfHandleResponse: true, // so that the onProxyRes takes care of sending the response
63
82
  onProxyReq (proxyReq, req, res) {
64
83
  proxyReq.setHeader('Accept-Encoding', 'identity') // disable compression
@@ -160,13 +179,14 @@ app.use('/data-fair', createProxyMiddleware({
160
179
  pathRewrite: { '^/data-fair': dfUrl.pathname },
161
180
  secure: false,
162
181
  changeOrigin: true,
163
- ws: true,
164
182
  selfHandleResponse: true, // so that the onProxyRes takes care of sending the response
165
- onProxyReq (proxyReq) {
183
+ onProxyReq (proxyReq, req, res) {
166
184
  // no gzip so that we can process the content
167
185
  proxyReq.setHeader('accept-encoding', 'identity')
168
186
  proxyReq.setHeader('cookie', '')
169
187
  if (config.dataFair.apiKey) proxyReq.setHeader('x-apiKey', config.dataFair.apiKey)
188
+ // body was already parsed by body-parser and no longer available as a stream
189
+ fixRequestBody(proxyReq, req, res)
170
190
  },
171
191
  onProxyRes (proxyRes, req, res) {
172
192
  if (proxyRes.headers['content-type'] && proxyRes.headers['content-type'].startsWith('application/json')) {
@@ -227,7 +247,8 @@ exports.run = async () => {
227
247
 
228
248
  exports.stop = async () => {
229
249
  if (spawnedDevSrc) kill(spawnedDevSrc.pid)
230
- if (ws) ws.terminate()
250
+ if (devServerWS) devServerWS.terminate()
251
+ if (dataFairWS) dataFairWS.terminate()
231
252
  server.close()
232
253
  await eventToPromise(server, 'close')
233
254
  await app.get('client').close()
@@ -1 +0,0 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[6,5],{308:function(e,t){e.exports=function(e){e.options.__i18n=e.options.__i18n||[],e.options.__i18n.push('{"en":{"metadata":"Metadata read from index.html","missingApplicationName":"Metadata \\"application-name\\" is missing. Add a tag <meta name=\\"application-name\\" content=\\"my-application\\">","missingThumbnail":"Metadata \\"thumbnail\\" is missing. Add a tag <meta name=\\"thumbnail\\" content=\\"http://my/thumbnail.png\\">","missingTitle":"Add a tag <title lang=\\"{locale}\\">My title</title>","missingDesc":"Metadata \\"description\\" is missing. Add a tag <meta name=\\"description\\" lang=\\"{locale}\\" content=\\"My description\\">","missingKeywords":"Metadata \\"keywords\\" is missing. Add a tag <meta name=\\"keywords\\" lang=\\"{locale}\\" content=\\"My keyword\\">","missingVocabAccept":"Metadata \\"vocabulary-accept\\" is missing. Add a tag <meta name=\\"vocabulary-accept\\" content=\\"http://www.w3.org/2000/01/rdf-schema#label\\">","missingVocabRequire":"Metadata \\"vocabulary-require\\" is missing. Add a tag <meta name=\\"vocabulary-require\\" content=\\"http://www.w3.org/2003/01/geo/wgs84_pos#lat_long\\">","config":"Configuration form created from config-schema.json"}}'),delete e.options._Ctor}},312:function(e,t,n){"use strict";n.r(t);var r={components:{VIframe:n(311).a},data:function(){return{dialog:!1}}},o=n(63),l=n(127),c=n.n(l),d=n(358),m=n(328),f=n(264),v=n(659),component=Object(o.a)(r,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-dialog",{attrs:{scrollable:"","max-width":"1100px"},scopedSlots:e._u([{key:"activator",fn:function(t){var r=t.on;return[n("v-btn",e._g({attrs:{color:"primary",text:""}},r),[e._v("\n Simulate screenshot\n ")])]}}]),model:{value:e.dialog,callback:function(t){e.dialog=t},expression:"dialog"}},[e._v(" "),n("v-card",[n("v-card-title",{attrs:{"primary-title":""}},[e._v("\n Screenshot simulation\n ")]),e._v(" "),n("v-card-text",[n("p",[e._v("Data Fair will automatically render the visualization after each configuration change and take a screenshot to be used as a thumbnail.")]),e._v(" "),n("p",[e._v("The screenshot will be rendered in a box of 1050x450 pixels (21/9 resolution) and the URL will have the query parameter ?thumbnail=true.")]),e._v(" "),n("p",[e._v('For performance it is a recommended to call the window.triggerCapture method as soon as the application is fully rendered. For guidance look for messages prefixed with "[capture]" in your browser developper\'s console.')]),e._v(" "),e.dialog?n("v-iframe",{staticStyle:{border:"1px solid grey",width:"1050px"},attrs:{"aspect-ratio":21/9,src:"http://localhost:5888/app?thumbnail=true"}}):e._e()],1)],1)],1)}),[],!1,null,"c87a3f30",null);t.default=component.exports;c()(component,{VBtn:d.a,VCard:m.a,VCardText:f.b,VCardTitle:f.c,VDialog:v.a})},356:function(e,t,n){var content=n(641);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[e.i,content,""]]),content.locals&&(e.exports=content.locals);(0,n(61).default)("1c80b324",content,!0,{sourceMap:!1})},357:function(e,t,n){"use strict";n.r(t);var r={computed:{locales:function(){return["en","fr"]}},methods:{setLocale:function(e){this.$i18n.setLocale(e),window.location.reload()}}},o=n(63),l=n(127),c=n.n(l),d=n(358),m=n(643),component=Object(o.a)(r,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.locales.length>1?n("v-speed-dial",{attrs:{direction:"bottom",transition:"fade-transition"},scopedSlots:e._u([{key:"activator",fn:function(){return[n("v-btn",{staticClass:"mx-2",attrs:{fab:"",small:""}},[e._v("\n "+e._s(e.$i18n.locale)+"\n ")])]},proxy:!0}],null,!1,4142082435)},[e._v(" "),e._l(e.locales.filter((function(t){return t!==e.$i18n.locale})),(function(t){return n("v-btn",{key:t,attrs:{fab:"",small:"",nuxt:""},on:{click:function(n){return e.setLocale(t)}}},[e._v("\n "+e._s(t)+"\n ")])}))],2):e._e()}),[],!1,null,null,null);t.default=component.exports;c()(component,{VBtn:d.a,VSpeedDial:m.a})},640:function(e,t,n){"use strict";n(356)},641:function(e,t,n){var r=n(60)(!1);r.push([e.i,".app-meta p[data-v-8fe84b72]{margin-bottom:4px}",""]),e.exports=r},642:function(e,t,n){"use strict";var r=n(308),o=n.n(r);t.default=o.a},658:function(e,t,n){"use strict";n.r(t);n(15),n(11),n(26),n(27),n(28),n(36),n(35),n(32);var r=n(3),o=n(4),l=(n(83),n(16),n(22),n(31),n(38),n(39),n(13),n(45),n(362)),c=n(644),d=(n(489),n(491),n(314)),m=n(620),f=n.n(m),v=(n(622),n(311)),h=n(312);function _(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return y(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,l=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){c=!0,o=e},f:function(){try{l||null==n.return||n.return()}finally{if(c)throw o}}}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}function w(object,e){var t=Object.keys(object);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(object);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(object,e).enumerable}))),t.push.apply(t,n)}return t}var x=n(627),$=n(302),k=n(349),C=n(348),A=new $({strict:!1,allErrors:!0,messages:!1});A.addFormat("hexcolor",/^#[0-9A-Fa-f]{6,8}$/),k(A);var O={components:{VIframe:v.a,VJsf:c.a,ScreenshotSimulation:h.default},data:function(){return{error:null,schema:null,dataFair:null,editConfig:null,showPreview:!0,compileError:null,formValid:!1,iframeLog:!1,loading:!1,meta:null}},computed:{options:function(){return{context:{owner:this.dataFair&&this.dataFair.owner},locale:this.$i18n.locale,defaultLocale:this.$i18n.defaultLocale,rootDisplay:"expansion-panels",expansionPanelsProps:{value:0,hover:!0},dialogProps:{maxWidth:500,overlayOpacity:0},arrayItemCardProps:{outlined:!0,tile:!0},dialogCardProps:{outlined:!0}}},validationErrors:function(){if(this.schema&&this.schemaValidate)return this.schemaValidate(this.editConfig)?null:(C[this.$i18n.locale](this.schemaValidate.errors),this.schemaValidate.errors)}},created:function(){var e=this;return Object(o.a)(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.dataFair={url:"https://STARTCONFIGALIAS-string-dataFair.url-ENDCONFIGALIAS",owner:{type:"STARTCONFIGALIAS-string-dataFair.owner.type-ENDCONFIGALIAS",id:"STARTCONFIGALIAS-string-dataFair.owner.id-ENDCONFIGALIAS"},apiKey:"STARTCONFIGALIAS-string-dataFair.apiKey-ENDCONFIGALIAS"},e.iframeLog="STARTCONFIGALIAS-boolean-iframeLog-ENDCONFIGALIAS",t.next=4,e.$axios.$get("http://localhost:5888/config");case 4:e.editConfig=t.sent,e.fetchInfo();case 6:case"end":return t.stop()}}),t)})))()},mounted:function(){var e=this;console.log("connect to to ws://localhost:5888"),this.socketDevServer=new l.a("ws://localhost:5888"),this.socketDevServer.onopen=function(){e.socketDevServer.onmessage=function(t){var data=JSON.parse(t.data);"app-error"===data.type&&(e.error=data.data.message),"ping"===data.type&&e.socketDevServer.send(JSON.stringify({type:"pong"}))}},window.addEventListener("message",(function(t){console.log("received message from iframe",t.data),"set-config"===t.data.type&&(e.editConfig=f.a.set(function(e){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?w(Object(source),!0).forEach((function(t){Object(r.a)(e,t,source[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(source)):w(Object(source)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(source,t))}))}return e}({},e.editConfig),t.data.content.field,t.data.content.value),e.validate())}))},destroyed:function(){console.log("destroyed"),this.socketDevServer&&this.socketDevServer.close()},methods:{empty:function(){var e=this;return Object(o.a)(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.editConfig=null,t.next=3,e.save({});case 3:e.editConfig={};case 4:case"end":return t.stop()}}),t)})))()},validate:function(){var e=arguments,t=this;return Object(o.a)(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:r=!(e.length>0&&void 0!==e[0])||e[0],t.$refs.form.validate()&&(t.save(t.editConfig,r),t.error=null);case 2:case"end":return n.stop()}}),n)})))()},save:function(e){var t=this;return Object(o.a)(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,t.$axios.$put("http://localhost:5888/config",e);case 2:return n.next=4,t.reloadIframe();case 4:case"end":return n.stop()}}),n)})))()},fetchInfo:function(){var e=this;return Object(o.a)(regeneratorRuntime.mark((function t(){var n,r,o,l,html,c,head,meta,m,f,v,h,y,w,$,k,C,O,S,I,V;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading=!0,t.next=3,e.$axios.$get("http://localhost:5888/app/index.html");case 3:if(o=t.sent,l=x.parse(o),html=l.childNodes.find((function(e){return"html"===e.tagName}))){t.next=8;break}throw new Error("broken HTML");case 8:if(c=(null===(n=html.attrs)||void 0===n||null===(r=n.find((function(a){return"lang"===a.name})))||void 0===r?void 0:r.value)||e.$i18n.defaultLocale,head=html.childNodes.find((function(e){return"head"===e.tagName}))){t.next=12;break}throw new Error("broken HTML, missing head tag");case 12:meta={title:{}},m=_(head.childNodes.filter((function(e){return"title"===e.tagName})));try{for(m.s();!(f=m.n()).done;)y=f.value,meta.title[(null==y||null===(v=y.attrs.find((function(a){return"lang"===a.name})))||void 0===v?void 0:v.value)||c]=null===(h=y.childNodes)||void 0===h?void 0:h[0].value}catch(e){m.e(e)}finally{m.f()}w=["application-name","description","keywords","vocabulary-accept","vocabulary-require","thumbnail"],$=["description","keywords"],k=["keywords","vocabulary-accept","vocabulary-require"],C=head.childNodes.filter((function(e){return"meta"===e.tagName})).map((function(e){var t,n,r;return{name:null===(t=e.attrs.find((function(a){return"name"===a.name})))||void 0===t?void 0:t.value,locale:(null===(n=e.attrs.find((function(a){return"lang"===a.name})))||void 0===n?void 0:n.value)||c,content:null===(r=e.attrs.find((function(a){return"content"===a.name})))||void 0===r?void 0:r.value}})).filter((function(e){return w.includes(e.name)})),O=_(C);try{for(O.s();!(S=O.n()).done;)I=S.value,$.includes(I.name)?(meta[I.name]=meta[I.name]||{},k.includes(I.name)?(meta[I.name][I.locale]=meta[I.name][I.locale]||[],I.content&&meta[I.name][I.locale].push(I.content)):meta[I.name][I.locale]=I.content):k.includes(I.name)?(meta[I.name]=meta[I.name]||[],I.content&&meta[I.name].push(I.content)):meta[I.name]=I.content}catch(e){O.e(e)}finally{O.f()}return e.meta=meta,e.schema=null,t.next=25,e.$axios.$get("http://localhost:5888/app/config-schema.json");case 25:(V=t.sent)["x-display"]="tabs",e.schema=d.a.resolve(V,{"~$locale~":e.$i18n.locale===e.$i18n.defaultLocale?e.$i18n.locale:[e.$i18n.locale,e.$i18n.defaultLocale]});try{e.schemaValidate=A.compile(e.schema),e.compileError=null}catch(t){console.error(t),e.compileError=t.message}e.loading=!1;case 30:case"end":return t.stop()}}),t)})))()},reloadIframe:function(){var e=this;return Object(o.a)(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.showPreview=!1,t.next=3,new Promise((function(e){return setTimeout(e,10)}));case 3:e.showPreview=!0;case 4:case"end":return t.stop()}}),t)})))()}}},S=O,I=(n(640),n(63)),V=n(642),j=n(127),N=n.n(j),L=n(651),F=n(358),E=n(328),D=n(653),R=n(660),T=n(656),P=n(322),M=n(654),G=n(655),component=Object(I.a)(S,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-container",{staticClass:"pt-4",attrs:{fluid:""}},[n("v-row",[n("v-col",{attrs:{xs:"12",md:"6",lg:"4"}},[e.error?n("v-alert",{attrs:{color:"error"}},[e._v("\n "+e._s(e.error.message||e.error)+"\n ")]):e._e(),e._v(" "),n("v-row",{staticClass:"mb-2"},[n("v-spacer"),e._v(" "),n("v-btn",{staticClass:"mx-2",attrs:{fab:"",dark:"",small:"",color:"primary",loading:e.loading},on:{click:e.fetchInfo}},[n("v-icon",{attrs:{dark:""}},[e._v("\n mdi-refresh\n ")])],1)],1),e._v(" "),n("h2",{staticClass:"text-h6 mt-2"},[e._v("\n "+e._s(e.$t("config"))+"\n ")]),e._v(" "),n("v-form",{ref:"form",model:{value:e.formValid,callback:function(t){e.formValid=t},expression:"formValid"}},[n("v-alert",{attrs:{value:!!e.compileError,type:"error"}},[e._v("\n "+e._s(e.compileError)+"\n ")]),e._v(" "),n("v-alert",{attrs:{value:!!e.validationErrors&&e.formValid,type:"error"}},[e._v("\n Formulaire valide pourtant le modèle ne respecte pas le schéma:\n "),n("p",[e._v(e._s(e.validationErrors))])]),e._v(" "),e.schema&&e.editConfig?n("v-jsf",{attrs:{schema:e.schema,options:e.options},on:{change:e.validate},model:{value:e.editConfig,callback:function(t){e.editConfig=t},expression:"editConfig"}}):e._e()],1),e._v(" "),n("v-row",{staticClass:"ma-2"},[n("v-spacer"),e._v(" "),n("v-btn",{attrs:{color:"warning"},on:{click:e.empty}},[e._v("\n Empty\n ")])],1),e._v(" "),e.meta?n("v-row",{staticClass:"mt-4"},[n("v-col",{staticClass:"app-meta"},[n("h2",{staticClass:"text-h6"},[e._v("\n "+e._s(e.$t("metadata"))+"\n ")]),e._v(" "),e.meta["application-name"]?n("p",[n("b",[e._v("application-name:")]),e._v(" "+e._s(e.meta["application-name"])+"\n ")]):n("v-alert",{attrs:{type:"error",dense:""}},[e._v("\n "+e._s(e.$t("missingApplicationName"))+"\n ")]),e._v(" "),e.meta.thumbnail?n("p",[n("b",[e._v("thumbnail:")]),e._v(" "),n("img",{attrs:{width:"25",src:e.meta.thumbnail.startsWith("http://")||e.meta.thumbnail.startsWith("https://")?e.meta.thumbnail:"http://localhost:5888/app/"+e.meta.thumbnail}})]):n("v-alert",{attrs:{type:"error",dense:""}},[e._v("\n "+e._s(e.$t("missingThumbnail"))+"\n ")]),e._v(" "),e.meta.title&&e.meta.title[e.$i18n.locale]?n("p",[n("b",[e._v("title:")]),e._v(" "+e._s(e.meta.title[e.$i18n.locale])+"\n ")]):n("v-alert",{attrs:{type:"error",dense:""}},[e._v("\n "+e._s(e.$t("missingTitle",{locale:e.$i18n.locale}))+"\n ")]),e._v(" "),e.meta.description&&e.meta.description[e.$i18n.locale]?n("p",[n("b",[e._v("description:")]),e._v(" "+e._s(e.meta.description[e.$i18n.locale])+"\n ")]):n("v-alert",{attrs:{type:"error",dense:""}},[e._v("\n "+e._s(e.$t("missingDesc",{locale:e.$i18n.locale}))+"\n ")]),e._v(" "),e.meta.keywords&&e.meta.keywords[e.$i18n.locale]?n("p",[n("b",[e._v("keywords:")]),e._v(" "+e._s(e.meta.keywords[e.$i18n.locale])+"\n ")]):n("v-alert",{attrs:{type:"error",dense:""}},[e._v("\n "+e._s(e.$t("missingKeywords",{locale:e.$i18n.locale}))+"\n ")]),e._v(" "),e.meta["vocabulary-accept"]&&e.meta["vocabulary-accept"]?n("p",[n("b",[e._v("vocabulary-accept:")]),e._v(" "+e._s(e.meta["vocabulary-accept"])+"\n ")]):n("v-alert",{attrs:{type:"info",dense:""}},[e._v("\n "+e._s(e.$t("missingVocabAccept",{locale:e.$i18n.locale}))+"\n ")]),e._v(" "),e.meta["vocabulary-require"]&&e.meta["vocabulary-require"]?n("p",[n("b",[e._v("vocabulary-require:")]),e._v(" "+e._s(e.meta["vocabulary-require"])+"\n ")]):n("v-alert",{attrs:{type:"info",dense:""}},[e._v("\n "+e._s(e.$t("missingVocabRequire",{locale:e.$i18n.locale}))+"\n ")])],1)],1):e._e()],1),e._v(" "),n("v-col",{attrs:{xs:"12",md:"6",lg:"8"}},[n("v-row",{staticClass:"mb-2"},[n("v-spacer"),e._v(" "),n("screenshot-simulation"),e._v(" "),n("v-btn",{staticClass:"mx-2",attrs:{fab:"",dark:"",small:"",color:"primary"},on:{click:e.reloadIframe}},[n("v-icon",{attrs:{dark:""}},[e._v("\n mdi-refresh\n ")])],1),e._v(" "),n("lang-switcher")],1),e._v(" "),n("v-card",[e.showPreview?n("v-iframe",{attrs:{src:"http://localhost:5888/app?draft=true",log:e.iframeLog}}):e._e()],1)],1)],1)],1)}),[],!1,null,"8fe84b72",null);"function"==typeof V.default&&Object(V.default)(component);t.default=component.exports;N()(component,{ScreenshotSimulation:n(312).default,LangSwitcher:n(357).default}),N()(component,{VAlert:L.a,VBtn:F.a,VCard:E.a,VCol:D.a,VContainer:R.a,VForm:T.a,VIcon:P.a,VRow:M.a,VSpacer:G.a})}}]);