UNPKG

next-slicezone

Version:

A component that maps other components to Prismic slices

2 lines (1 loc) 3.65 kB
import n from"fs";import e from"path";function t(n,e,t,r,o,i,c){try{var a=n[i](c),s=a.value}catch(n){return void t(n)}a.done?e(s):Promise.resolve(s).then(r,o)}function r(n){return function(){var e=this,r=arguments;return new Promise((function(o,i){var c=n.apply(e,r);function a(n){t(c,o,i,a,s,"next",n)}function s(n){t(c,o,i,a,s,"throw",n)}a(void 0)}))}}var o="sm.config.json",i="sm.json",c=/-(\w)/g;var a=/\B([A-Z])/g;function s(n){return n.replace(a,"-$1").toLowerCase()}var l={pascalize:function(n){return n?(n=n.replace(/_/g,"-").replace(c,((n,e)=>e?e.toUpperCase():"")))[0].toUpperCase()+n.slice(1):""},hyphenate:s,snakelize:function(n){return s(n).replace(/-/g,"_")}},u=n=>{const e=/^\\\\\?\\/.test(n),t=/[^\u0000-\u0080]+/.test(n);return e||t?n:n.replace(/\\/g,"/")};function p(t,r){var i=void 0!==["@/","~","/"].find((n=>0===t.indexOf(n))),c=e.join(r||process.cwd(),i?"":"node_modules",i?t.substring(1,t.length):t),a=e.join(c,o),s=n.existsSync(c),l={};n.existsSync(a)&&(l=JSON.parse(n.readFileSync(a)));var p=e.join(c,l.pathToLibrary||".",l.slicesFolder||(i?".":"slices"));return{config:l,isLocal:i,pathExists:s,pathToLib:u(c),pathToSlices:u(p)}}function f(){return(f=r((function*(n,e){var{isLocal:t,pathExists:r,pathToSlices:o}=yield p(n,e);if(!r)return console.warn('[next-slicezone] path to library "'.concat(o,'" does not exist. Skipping.')),null;var i=t?n.slice(2):n,c="".concat(t?"./":"").concat(i).concat(o.split(i).slice(1).join("")),a=l.pascalize(i);return{isLocal:t,from:i,name:a,importName:a.replace(/\//,"_"),pathToSlices:c}}))).apply(this,arguments)}var m=function(){var t=r((function*(t){var o=t||e.posix.join(process.cwd(),i),{libraries:c}=n.existsSync(o)?JSON.parse(n.readFileSync(o)):{};if(!c)return console.warn('[next-slicezone] expects a non-empty "libraries" array in file "'.concat(i,'"'));if(!Array.isArray(c)||!c.length)return console.error('[next-slicezone] expects "libraries" option to be a non-empty array');var a,s,l,u=e.dirname(o),p=yield Promise.all(c.map(function(){var n=r((function*(n){return yield function(n,e){return f.apply(this,arguments)}(n,u)}));return function(e){return n.apply(this,arguments)}}())),m=(a=p.filter((n=>n)),s=a.reduce(((n,e)=>{var{importName:t,from:r,isLocal:o}=e;return o?"".concat(n,"import * as ").concat(t," from './").concat(r,"'\n"):"".concat(n,"import { Slices as ").concat(t," } from '").concat(r,"'\n")}),""),l="const ".concat("__allSlices"," = { ").concat(a.reverse().reduce(((n,e)=>{var{importName:t}=e;return"".concat(n," ...").concat(t,",")}),"")," }"),"".concat(s,"\n").concat(l,"\n")),d="".concat(m,"\n").concat("const NotFound = ({ sliceName, slice, i }) => {\n console.error(`[sm-resolver] component \"${sliceName}\" not found at index ${i}.`)\n console.warn(`slice data: ${slice}`)\n\treturn process.env.NODE_ENV !== 'production' ? (\n <div\n style={{\n height: '30vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n textAlign: 'center',\n background: '#FAFAFA'\n }}\n >\n <h2>\n Slice \"{sliceName}\" not found.\n </h2>\n <p style={{ maxWidth: '320px', fontSize: '16px' }}>\n Check that you registered this component in your slices library!\n </p>\n </div>\n ) : null\n}\n\nexport default function SliceResolver({ sliceName, ...rest }) {\n\treturn __allSlices[sliceName] ? __allSlices[sliceName] : () => <NotFound sliceName={sliceName} {...rest} />\n}\n","\n ");return n.writeFileSync(e.join(u,"sm-resolver.js"),d,"utf-8")}));return function(n){return t.apply(this,arguments)}}();export{m as createResolver};