UNPKG

6.86 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/generateClient.js"],"names":["path","require","fse","steps","mapValues","obj","iterator","keys","Object","mapped","forEach","key","getImports","strategy","libs","map","lib","requireLib","filter","e","fragments","module","clientImportFragment","join","file","resolve","__dirname","undefined","createClientStrategy","clientStrategy","step","Array","isArray","name","createClientCode","preRenderCode","preRenders","preRenderFragment","preRender","inits","init","initFragment","runRender","length","getStatePromise","createStoreFragment","router","routerFragment","render","renderFragment","generateClient","filename","code","ensureFile","writeFile","console","error","process","exit","exports"],"mappings":";;;;AAAA,MAAMA,OAAOC,QAAQ,MAAR,CAAb;AACA,MAAMC,MAAMD,QAAQ,UAAR,CAAZ;;AAEA,MAAME,QAAQ,CACZ,OADY,EAEZ,iBAFY,EAGZ,QAHY,EAIZ,YAJY,EAKZ,QALY,EAMZ,cANY,CAAd;;AASA,MAAMC,YAAY,CAACC,GAAD,EAAMC,QAAN,KAAmB;AACnC,QAAMC,OAAOC,OAAOD,IAAP,CAAYF,GAAZ,CAAb;AACA,QAAMI,SAAS,EAAf;AACAF,OAAKG,OAAL,CAAaC,OAAO;AAClBF,WAAOE,GAAP,IAAcL,SAASD,IAAIM,GAAJ,CAAT,EAAmBA,GAAnB,EAAwBN,GAAxB,CAAd;AACD,GAFD;AAGA,SAAOI,MAAP;AACD,CAPD;;AASA,MAAMG,aAAaC,YAAY;AAC7B,QAAMC,OAAOD,SAASC,IAAT,CAAcC,GAAd,CAAkBC,OAAOC,WAAWD,GAAX,CAAzB,EAA0CE,MAA1C,CAAiDC,KAAKA,CAAtD,CAAb;AACA,QAAMC,YAAYN,KAAKC,GAAL,CAChBM,UAAWA,SAASA,OAAOC,oBAAhB,GAAuC,EADlC,CAAlB;AAGA,SAAOF,UAAUG,IAAV,CAAe,IAAf,CAAP;AACD,CAND;;AAQA,MAAMN,aAAaI,UAAU;AAC3B,QAAMG,OAAOxB,KAAKyB,OAAL,CAAaC,SAAb,EAAwB,MAAxB,EAAgC,eAAhC,EAAiDL,MAAjD,CAAb;AACA,MAAI;AACF,WAAOpB,QAAQuB,IAAR,CAAP;AACD,GAFD,CAEE,OAAOL,CAAP,EAAU;AACV,WAAOQ,SAAP;AACD;AACF,CAPD;;AASA,MAAMC,uBAAuBf,YAAY;AACvC,QAAMgB,iBAAiB,EAAvB;AACA1B,QAAMO,OAAN,CAAcoB,QAAQ;AACpB,UAAMT,SAASR,SAASiB,IAAT,CAAf;AACA,QAAI,OAAOT,MAAP,KAAkB,QAAtB,EAAgC;AAC9BQ,qBAAeC,IAAf,IAAuBb,WAAWI,MAAX,CAAvB;AACD,KAFD,MAEO,IAAIU,MAAMC,OAAN,CAAcX,MAAd,CAAJ,EAA2B;AAChCQ,qBAAeC,IAAf,IAAuBT,OAAON,GAAP,CAAWkB,QAAQhB,WAAWgB,IAAX,CAAnB,EAAqCf,MAArC,CAA4CC,KAAKA,CAAjD,CAAvB;AACD;AACF,GAPD;AAQA,SAAOU,cAAP;AACD,CAXD;;AAaA,MAAMK,mBAAmBrB,YAAY;AACnC,QAAMgB,iBAAiBD,qBAAqBf,QAArB,CAAvB;;AAEA,MAAIsB,aAAJ;AACA,MAAIN,eAAeO,UAAnB,EAA+B;AAC7B,UAAMA,aAAaP,eAAeO,UAAf,CAA0BlB,MAA1B,CACjBC,KAAKA,EAAEkB,iBADU,CAAnB;AAGA,UAAMjB,YAAYgB,WAAWrB,GAAX,CAAeuB,aAC/BA,UAAUD,iBAAV,CAA4B,iBAA5B,EAA+C,OAA/C,CADgB,CAAlB;AAGAF,oBAAgBf,UAAUG,IAAV,CAAe,IAAf,CAAhB;AACD;;AAED,QAAMgB,QAAQV,eAAeU,KAAf,CACXxB,GADW,CACPyB,QAAQA,KAAKC,YAAL,EADD,EAEXvB,MAFW,CAEJC,KAAKA,CAFD,CAAd;AAGA,MAAIuB,YAAY,QAAhB;AACA,MAAIH,MAAMI,MAAN,GAAe,CAAnB,EAAsB;AACpBD,gBAAa;IACbH,MAAMhB,IAAN,CAAW,IAAX,CAAiB;;KADjB;AAID;;AAED,SAAQ;EACRX,WAAWC,QAAX,CAAqB;;;;;;;;;;;;IAYnBgB,eAAee,eAAf,CAA+BC,mBAA/B,CAAmD,OAAnD,EAA4D,cAA5D,CAA4E;;;;;;IAM5EhB,eAAeiB,MAAf,CAAsBC,cAAtB,CAAqC,gBAArC,EAAuD,SAAvD,CAAkE;;IAElEZ,iBAAiB,EAAG;IACpBN,eAAemB,MAAf,CAAsBC,cAAtB,CAAqC,iBAArC,EAAwD,MAAxD,CAAgE;;;EAGlEP,SAAU;;;;;;;;;;;;EAzBV;AAsCD,CA/DD;;AAiEA,MAAMQ;AAAA,+BAAiB,WAAOC,QAAP,EAAiBtC,QAAjB,EAA8B;AACnD,QAAI;AACF,YAAMuC,OAAOlB,iBAAiBrB,QAAjB,CAAb;AACA,YAAMX,IAAImD,UAAJ,CAAeF,QAAf,CAAN;AACA,aAAOjD,IAAIoD,SAAJ,CAAcH,QAAd,EAAwBC,IAAxB,CAAP;AACD,KAJD,CAIE,OAAOjC,CAAP,EAAU;AACVoC,cAAQC,KAAR,CAAc,2CAAd;AACAD,cAAQC,KAAR,CAAc,YAAd,EAA4B3C,QAA5B;AACA0C,cAAQC,KAAR,CAAcrC,CAAd;AACAsC,cAAQC,IAAR,CAAa,CAAC,CAAd;AACD;AACF,GAXK;;AAAA;AAAA;AAAA;AAAA,IAAN;;AAaArC,OAAOsC,OAAP,GAAiBT,cAAjB","file":"generateClient.js","sourcesContent":["const path = require('path')\nconst fse = require('fs-extra')\n\nconst steps = [\n 'inits',\n 'getStatePromise',\n 'router',\n 'preRenders',\n 'render',\n 'afterRenders'\n]\n\nconst mapValues = (obj, iterator) => {\n const keys = Object.keys(obj)\n const mapped = {}\n keys.forEach(key => {\n mapped[key] = iterator(obj[key], key, obj)\n })\n return mapped\n}\n\nconst getImports = strategy => {\n const libs = strategy.libs.map(lib => requireLib(lib)).filter(e => e)\n const fragments = libs.map(\n module => (module ? module.clientImportFragment : '')\n )\n return fragments.join('\\n')\n}\n\nconst requireLib = module => {\n const file = path.resolve(__dirname, 'libs', 'config_client', module)\n try {\n return require(file)\n } catch (e) {\n return undefined\n }\n}\n\nconst createClientStrategy = strategy => {\n const clientStrategy = {}\n steps.forEach(step => {\n const module = strategy[step]\n if (typeof module === 'string') {\n clientStrategy[step] = requireLib(module)\n } else if (Array.isArray(module)) {\n clientStrategy[step] = module.map(name => requireLib(name)).filter(e => e)\n }\n })\n return clientStrategy\n}\n\nconst createClientCode = strategy => {\n const clientStrategy = createClientStrategy(strategy)\n\n let preRenderCode\n if (clientStrategy.preRenders) {\n const preRenders = clientStrategy.preRenders.filter(\n e => e.preRenderFragment\n )\n const fragments = preRenders.map(preRender =>\n preRender.preRenderFragment('renderComponent', 'store')\n )\n preRenderCode = fragments.join('\\n')\n }\n\n const inits = clientStrategy.inits\n .map(init => init.initFragment())\n .filter(e => e)\n let runRender = 'main()'\n if (inits.length > 0) {\n runRender = `Promise.all([\n ${inits.join('\\n')}\n]).then(main())\n `\n }\n\n return `\n${getImports(strategy)}\n\nimport createConfig from 'linc-config-js'\n\nconst config = typeof createConfig === 'function' ? createConfig('CLIENT') : createConfig;\n\nconst serverState = (window && window.__INITIALSTATE__);\nconst initialState = config.state && config.state.parseServerState ? config.state.parseServerState(serverState) : serverState;\nconst userInfo = (window && window.__USER_INFO__) || {};\n\nconst main = () => {\n\n ${clientStrategy.getStatePromise.createStoreFragment('store', 'initialState')}\n const env = {store, userInfo, config};\n if(typeof config.init ==='function') {\n config.init(env);\n }\n\n ${clientStrategy.router.routerFragment('routeComponent', 'history')}\n let renderComponent = routeComponent\n ${preRenderCode || ''}\n ${clientStrategy.render.renderFragment('renderComponent', 'root')}\n}\n\n${runRender}\n\nif (!config.disableServiceWorker && 'serviceWorker' in navigator) {\n navigator.serviceWorker.register('/serviceworker.js')\n .then(function(reg) {\n // registration worked\n console.log('Registration succeeded. Scope is ' + reg.scope);\n }).catch(function(error) {\n // registration failed\n console.log('Registration failed with ' + error);\n });\n}\n\t`\n}\n\nconst generateClient = async (filename, strategy) => {\n try {\n const code = createClientCode(strategy)\n await fse.ensureFile(filename)\n return fse.writeFile(filename, code)\n } catch (e) {\n console.error(\"Couldn't create or write the client code.\")\n console.error('Strategy: ', strategy)\n console.error(e)\n process.exit(-1)\n }\n}\n\nmodule.exports = generateClient\n"]}
\No newline at end of file