https://github.com/StephanHoyer/mithril-isomorphic-example
https://github.com/lhorie/mithril.js/wiki/Community-Projects#starter-kits
| function PublicRoute({ children, ...rest }) { | |
| const { auth } = rest; | |
| return ( | |
| <Route | |
| {...rest} | |
| render={() => { | |
| if (!auth) return <Redirect to="/login" />; | |
| return <Dashboard>{children}</Dashboard>; | |
| }} |
| /tmp/ruby-build.20190605174356.12792 ~/Projects/mxhero/new-dashboard | |
| /tmp/ruby-build.20190605174356.12792/ruby-2.3.0 /tmp/ruby-build.20190605174356.12792 ~/Projects/mxhero/new-dashboard | |
| checking for ruby... false | |
| checking build system type... x86_64-pc-linux-gnu | |
| checking host system type... x86_64-pc-linux-gnu | |
| checking target system type... x86_64-pc-linux-gnu | |
| checking for gcc... gcc | |
| checking whether the C compiler works... yes | |
| checking for C compiler default output file name... a.out | |
| checking for suffix of executables... |
| (function(w,d,s,a){ | |
| var t,f;w['NextTripBookingRef']=a;w[a]=w[a]||function(){(w[a].q=w[a].q||[]).push(arguments)}; | |
| w[a].s=w.location.origin;t=d.createElement('script');f=d.getElementsByTagName('script')[0]; | |
| t.async=1;t.src=s;f.parentNode.insertBefore(t,f);d.querySelectorAll('[data-nexttrip]').forEach( | |
| function(b){b.addEventListener('click', function(e){w[a]('dataset', e.target.dataset); | |
| e.preventDefault()})}) | |
| })(window, document,'http://localhost:3000/booking.js','nextTrip'); | |
| nextTrip.customerId = 'ALLUSA' | |
| nextTrip.dealId = 'SHUTTLES' |
| const merge = require('ramda/src/merge') | |
| const m = require('mithril') | |
| /* | |
| @param {string} key - The unique key of the request | |
| @param {Object} params - The same params used in m.request of mithril | |
| @returns Promise | |
| @link https://mithril.js.org/request.html |
| const m = require('mithril') | |
| function emitChangeToSubscribers(subscribers, newState, oldState){ | |
| subscribers.forEach(function(subscriber){ | |
| subscriber.call(null, newState, oldState) | |
| }) | |
| } | |
| module.exports = function(initState){ | |
| const store = m.prop(initState) |
| void function(m) { | |
| function closure(fn) { | |
| var component = { | |
| controller : function(options) { | |
| component.view = fn(options); | |
| } | |
| }; | |
| return component; |
| // The limited unauthenticated routemap | |
| var authRoutes = { | |
| '/signup' : modules.signup, | |
| '/login' : modules.login | |
| }; | |
| // The whole shebang | |
| var appRoutes = Object.assign( { | |
| '/:semantic/:app/:routes' : various.modules | |
| }, authRoutes ); |
| var crypto = require('crypto'); | |
| crypto.randomBytes(16).toString('hex'); | |
| // 'e834ba2133229fb78a693f5ca3ae05de' |
| // Use Gists to store code you would like to remember later on | |
| console.log(window); // log the "window" object to the console |