storyblok-generator
Advanced tools
Comparing version
@@ -1,13 +0,9 @@ | ||
"use strict";var pe=Object.create;var B=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var me=Object.getOwnPropertyNames;var be=Object.getPrototypeOf,ge=Object.prototype.hasOwnProperty;var ye=(t,e)=>{for(var o in e)B(t,o,{get:e[o],enumerable:!0})},V=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of me(e))!ge.call(t,n)&&n!==o&&B(t,n,{get:()=>e[n],enumerable:!(r=de(e,n))||r.enumerable});return t};var w=(t,e,o)=>(o=t!=null?pe(be(t)):{},V(e||!t||!t.__esModule?B(o,"default",{value:t,enumerable:!0}):o,t)),he=t=>V(B({},"__esModule",{value:!0}),t);var Le={};ye(Le,{storyblokPlugin:()=>Ge});module.exports=he(Le);var oe=require("child_process"),m=require("fs"),re=require("fs/promises"),f=w(require("path"));var W=(t=0)=>e=>`\x1B[${e+t}m`,z=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,K=(t=0)=>(e,o,r)=>`\x1B[${38+t};2;${e};${o};${r}m`,l={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Ue=Object.keys(l.modifier),Ce=Object.keys(l.color),ke=Object.keys(l.bgColor),Ye=[...Ce,...ke];function Oe(){let t=new Map;for(let[e,o]of Object.entries(l)){for(let[r,n]of Object.entries(o))l[r]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},o[r]=l[r],t.set(n[0],n[1]);Object.defineProperty(l,e,{value:o,enumerable:!1})}return Object.defineProperty(l,"codes",{value:t,enumerable:!1}),l.color.close="\x1B[39m",l.bgColor.close="\x1B[49m",l.color.ansi=W(),l.color.ansi256=z(),l.color.ansi16m=K(),l.bgColor.ansi=W(10),l.bgColor.ansi256=z(10),l.bgColor.ansi16m=K(10),Object.defineProperties(l,{rgbToAnsi256:{value(e,o,r){return e===o&&o===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(o/255*5)+Math.round(r/255*5)},enumerable:!1},hexToRgb:{value(e){let o=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!o)return[0,0,0];let[r]=o;r.length===3&&(r=[...r].map(s=>s+s).join(""));let n=Number.parseInt(r,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>l.rgbToAnsi256(...l.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let o,r,n;if(e>=232)o=((e-232)*10+8)/255,r=o,n=o;else{e-=16;let p=e%36;o=Math.floor(e/36)/5,r=Math.floor(p/6)/5,n=p%6/5}let s=Math.max(o,r,n)*2;if(s===0)return 30;let i=30+(Math.round(n)<<2|Math.round(r)<<1|Math.round(o));return s===2&&(i+=60),i},enumerable:!1},rgbToAnsi:{value:(e,o,r)=>l.ansi256ToAnsi(l.rgbToAnsi256(e,o,r)),enumerable:!1},hexToAnsi:{value:e=>l.ansi256ToAnsi(l.hexToAnsi256(e)),enumerable:!1}}),l}var Te=Oe(),u=Te;var $=w(require("process"),1),Z=w(require("os"),1),M=w(require("tty"),1);function c(t,e=globalThis.Deno?globalThis.Deno.args:$.default.argv){let o=t.startsWith("-")?"":t.length===1?"-":"--",r=e.indexOf(o+t),n=e.indexOf("--");return r!==-1&&(n===-1||r<n)}var{env:a}=$.default,F;c("no-color")||c("no-colors")||c("color=false")||c("color=never")?F=0:(c("color")||c("colors")||c("color=true")||c("color=always"))&&(F=1);function Re(){if("FORCE_COLOR"in a)return a.FORCE_COLOR==="true"?1:a.FORCE_COLOR==="false"?0:a.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(a.FORCE_COLOR,10),3)}function ve(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Se(t,{streamIsTTY:e,sniffFlags:o=!0}={}){let r=Re();r!==void 0&&(F=r);let n=o?F:r;if(n===0)return 0;if(o){if(c("color=16m")||c("color=full")||c("color=truecolor"))return 3;if(c("color=256"))return 2}if("TF_BUILD"in a&&"AGENT_NAME"in a)return 1;if(t&&!e&&n===void 0)return 0;let s=n||0;if(a.TERM==="dumb")return s;if($.default.platform==="win32"){let i=Z.default.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in a)return"GITHUB_ACTIONS"in a||"GITEA_ACTIONS"in a?3:["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(i=>i in a)||a.CI_NAME==="codeship"?1:s;if("TEAMCITY_VERSION"in a)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(a.TEAMCITY_VERSION)?1:0;if(a.COLORTERM==="truecolor"||a.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in a){let i=Number.parseInt((a.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(a.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(a.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(a.TERM)||"COLORTERM"in a?1:s}function H(t,e={}){let o=Se(t,{streamIsTTY:t&&t.isTTY,...e});return ve(o)}var Ee={stdout:H({isTTY:M.default.isatty(1)}),stderr:H({isTTY:M.default.isatty(2)})},q=Ee;function Q(t,e,o){let r=t.indexOf(e);if(r===-1)return t;let n=e.length,s=0,i="";do i+=t.slice(s,r)+e+o,s=r+n,r=t.indexOf(e,s);while(r!==-1);return i+=t.slice(s),i}function X(t,e,o,r){let n=0,s="";do{let i=t[r-1]==="\r";s+=t.slice(n,i?r-1:r)+e+(i?`\r | ||
`:` | ||
`)+o,n=r+1,r=t.indexOf(` | ||
`,n)}while(r!==-1);return s+=t.slice(n),s}var{stdout:J,stderr:ee}=q,P=Symbol("GENERATOR"),O=Symbol("STYLER"),N=Symbol("IS_EMPTY"),te=["ansi","ansi","ansi256","ansi16m"],T=Object.create(null),Ne=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let o=J?J.level:0;t.level=e.level===void 0?o:e.level};var xe=t=>{let e=(...o)=>o.join(" ");return Ne(e,t),Object.setPrototypeOf(e,x.prototype),e};function x(t){return xe(t)}Object.setPrototypeOf(x.prototype,Function.prototype);for(let[t,e]of Object.entries(u))T[t]={get(){let o=I(this,_(e.open,e.close,this[O]),this[N]);return Object.defineProperty(this,t,{value:o}),o}};T.visible={get(){let t=I(this,this[O],!0);return Object.defineProperty(this,"visible",{value:t}),t}};var j=(t,e,o,...r)=>t==="rgb"?e==="ansi16m"?u[o].ansi16m(...r):e==="ansi256"?u[o].ansi256(u.rgbToAnsi256(...r)):u[o].ansi(u.rgbToAnsi(...r)):t==="hex"?j("rgb",e,o,...u.hexToRgb(...r)):u[o][t](...r),Ae=["rgb","hex","ansi256"];for(let t of Ae){T[t]={get(){let{level:o}=this;return function(...r){let n=_(j(t,te[o],"color",...r),u.color.close,this[O]);return I(this,n,this[N])}}};let e="bg"+t[0].toUpperCase()+t.slice(1);T[e]={get(){let{level:o}=this;return function(...r){let n=_(j(t,te[o],"bgColor",...r),u.bgColor.close,this[O]);return I(this,n,this[N])}}}}var Be=Object.defineProperties(()=>{},{...T,level:{enumerable:!0,get(){return this[P].level},set(t){this[P].level=t}}}),_=(t,e,o)=>{let r,n;return o===void 0?(r=t,n=e):(r=o.openAll+t,n=e+o.closeAll),{open:t,close:e,openAll:r,closeAll:n,parent:o}},I=(t,e,o)=>{let r=(...n)=>we(r,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(r,Be),r[P]=t,r[O]=e,r[N]=o,r},we=(t,e)=>{if(t.level<=0||!e)return t[N]?"":e;let o=t[O];if(o===void 0)return e;let{openAll:r,closeAll:n}=o;if(e.includes("\x1B"))for(;o!==void 0;)e=Q(e,o.close,o.open),o=o.parent;let s=e.indexOf(` | ||
`);return s!==-1&&(e=X(e,n,r,s)),r+e+n};Object.defineProperties(x.prototype,T);var Fe=x(),qe=x({level:ee?ee.level:0});var d=Fe;var L=require("vite"),b=process.env.NODE_ENV==="development"?console.log:()=>{},$e=process.env.NODE_ENV==="development"?console.error:()=>{},G=async t=>{try{return await m.promises.readFile(t,"utf8")}catch{return null}},ne=async({inputFile:t,outputDir:e,cwd:o,typeFile:r,fileNameConvention:n,componentAs:s,debug:i})=>{let p=o??process.cwd(),R=f.default.relative(p,e),k=await G(f.default.resolve(p,t));if(!k){$e(`Component file ${t} not found`);return}let g=JSON.parse(k).components;if(await(0,re.mkdir)(R,{recursive:!0}),g.length===0){b(d.red(`No components found in ${t}`));return}let se=(await Promise.all(g.map(async y=>{let C=y?.name,S=Ie(C),h=S===S.toUpperCase()?S.toLowerCase().replace(/^./,S[0]):S,A=n==="kebab-case"?h.match(/[A-Z][a-z]+/g)?.map(fe=>fe.toLowerCase()).join("-")??h:h,E=f.default.join(e,s==="folder"?`${A}/${A}.tsx`:`${A}.tsx`),U={name:h,originalName:y.name,fileName:A};if(await je(E)&&i)return b(`\u26A0\uFE0F Component ${d.yellow(C)} already exists. Skipping...`),U;let le=y?.schema?.body,ae=y?.schema?.columns,ce=(0,L.normalizePath)(f.default.relative(E,r).replace("..\\","")).replace(".d.ts",""),ue=await G(E),Y=[`import { type SbBlokData, storyblokEditable${le||ae?", StoryblokComponent":""} } from "@storyblok/react";`,`import type { ${h}Storyblok } from "${ce}";`,"",`export const ${h} = ({ blok }: { blok: ${h}Storyblok }) => {`," return ("," <div {...storyblokEditable(blok as SbBlokData)} key={blok._uid}>",Pe(y)," </div>"," )","};","",`export default ${h}`].join(` | ||
`);return ue!==Y&&(s==="folder"&&await m.promises.mkdir(f.default.dirname(E),{recursive:!0}),await m.promises.writeFile(E,Y),b(d.green(`Component ${C} created`))),U}))).filter(Boolean),ie=await G(f.default.join(e,"index.ts")),D=['import { lazy } from "react"',"","export const components = {",se.map(({fileName:y,originalName:C})=>` ${Me(C)?`"${C}"`:C}: lazy(() => import("./${s==="folder"?`${y}/${y}`:y}")),`).join(` | ||
"use strict";var O=Object.create;var $=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var V=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var Z=(e,t)=>{for(var o in t)$(e,o,{get:t[o],enumerable:!0})},B=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of H(t))!I.call(e,n)&&n!==o&&$(e,n,{get:()=>t[n],enumerable:!(r=W(t,n))||r.enumerable});return e};var E=(e,t,o)=>(o=e!=null?O(V(e)):{},B(t||!e||!e.__esModule?$(o,"default",{value:e,enumerable:!0}):o,e)),q=e=>B($({},"__esModule",{value:!0}),e);var ee={};Z(ee,{storyblokPlugin:()=>L});module.exports=q(ee);var F=require("child_process"),a=require("fs"),j=require("fs/promises"),s=E(require("path")),i=E(require("chalk")),v=require("vite"),l=process.env.NODE_ENV==="development"?console.log:()=>{},K=process.env.NODE_ENV==="development"?console.error:()=>{},S=async e=>{try{return await a.promises.readFile(e,"utf8")}catch{return null}},z=async({inputFile:e,outputDir:t,cwd:o,typeFile:r,fileNameConvention:n,componentAs:m,debug:f})=>{let y=o??process.cwd(),g=s.default.relative(y,t),b=await S(s.default.resolve(y,e));if(!b){K(`Component file ${e} not found`);return}let c=JSON.parse(b).components;if(await(0,j.mkdir)(g,{recursive:!0}),c.length===0){l(i.default.red(`No components found in ${e}`));return}let T=(await Promise.all(c.map(async p=>{let u=p?.name,C=M(u),d=C===C.toUpperCase()?C.toLowerCase().replace(/^./,C[0]):C,w=n==="kebab-case"?d.match(/[A-Z][a-z]+/g)?.map(A=>A.toLowerCase()).join("-")??d:d,h=s.default.join(t,m==="folder"?`${w}/${w}.tsx`:`${w}.tsx`),x={name:d,originalName:p.name,fileName:w};if(await Y(h)&&f)return l(`\u26A0\uFE0F Component ${i.default.yellow(u)} already exists. Skipping...`),x;let _=p?.schema?.body,D=p?.schema?.columns,G=(0,v.normalizePath)(s.default.relative(h,r).replace("..\\","")).replace(".d.ts",""),R=await S(h),N=[`import { type SbBlokData, storyblokEditable${_||D?", StoryblokComponent":""} } from "@storyblok/react";`,`import type { ${d}Storyblok } from "${G}";`,"",`export const ${d} = ({ blok }: { blok: ${d}Storyblok }) => {`," return ("," <div {...storyblokEditable(blok as SbBlokData)} key={blok._uid}>",X(p)," </div>"," )","};","",`export default ${d}`].join(` | ||
`);return R!==N&&(m==="folder"&&await a.promises.mkdir(s.default.dirname(h),{recursive:!0}),await a.promises.writeFile(h,N),l(i.default.green(`Component ${u} created`))),x}))).filter(Boolean),U=await S(s.default.join(t,"index.ts")),P=['import { lazy } from "react"',"","export const components = {",T.map(({fileName:p,originalName:u})=>` ${Q(u)?`"${u}"`:u}: lazy(() => import("./${m==="folder"?`${p}/${p}`:p}")),`).join(` | ||
`),"};"].join(` | ||
`);ie!==D&&(await m.promises.writeFile(f.default.join(e,"index.ts"),D),b(d.green("Components config created!")))};function Ie(t){return t.split("-").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join("").split(" ").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join("")}var Me=t=>/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?\s]+/.test(t),Pe=t=>{let e=t?.schema?.body,o=t?.schema?.columns;return e?[" {blok.body?.map((nestedBlok) => ("," <StoryblokComponent blok={nestedBlok} key={nestedBlok._uid} />"," ))}"].join(` | ||
`);U!==P&&(await a.promises.writeFile(s.default.join(t,"index.ts"),P),l(i.default.green("Components config created!")))};function M(e){return e.split("-").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join("").split(" ").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join("")}var Q=e=>/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?\s]+/.test(e),X=e=>{let t=e?.schema?.body,o=e?.schema?.columns;return t?[" {blok.body?.map((nestedBlok) => ("," <StoryblokComponent blok={nestedBlok} key={nestedBlok._uid} />"," ))}"].join(` | ||
`):o?[" {blok.columns?.map((nestedBlok) => ("," <StoryblokComponent blok={nestedBlok} key={nestedBlok._uid} />"," ))}"].join(` | ||
`):" {/** Have fun! */}"};async function je(t){try{return await m.promises.readFile(t,"utf8"),!0}catch{return!1}}var _e=async({componentsDir:t,debug:e=!1,typeFileLoc:o="./storyblok/types.d.ts",pullCommand:r,componentsJsonLoc:n,typesCommand:s,fileNameConvention:i="kebab-case",componentAs:p="file"})=>{b(d.bold.green("Pulling components and generating types...")),await m.promises.stat(t).catch(()=>!1)||await m.promises.mkdir(t,{recursive:!0}),await m.promises.stat(f.default.dirname(o)).catch(()=>!1)||await m.promises.mkdir(f.default.dirname(o),{recursive:!0}),(0,oe.spawn)(`${r} && ${s}`,{stdio:e?"inherit":"ignore",shell:!0,env:process.env}).on("exit",async g=>{if(g===0&&n)return b(d.bold.green("Storyblok Components successfully pulled and types generated!")),await ne({inputFile:n,outputDir:t,typeFile:o,fileNameConvention:i,componentAs:p,debug:e});b(d.bold.red("Storyblok Components pull failed!")),b(d.bold.red("Check your Storyblok space ID and if you're logged in to Storyblok"))})},Ge=({spaceId:t,componentsDir:e,typeFileLoc:o="./storyblok/types.d.ts",componentsJsonLoc:r=`./storyblok/components.${t}.json`,pullCommand:n=`storyblok pull-components --space ${t} --path ${f.default.dirname(r)}/`,typesCommand:s=`storyblok generate-typescript-typedefs --sourceFilePaths ${r} --destinationFilePath ${o}`,debug:i=!1,fileNameConvention:p="kebab-case",componentAs:R="file"})=>{let k=async()=>ne({inputFile:r,outputDir:e,typeFile:o,fileNameConvention:p,componentAs:R,debug:i});return{enforce:"pre",name:"Storyblok Generator",apply:"serve",async handleHotUpdate(g){let v=g.file.replace((0,L.normalizePath)(process.cwd()),"");o.endsWith(v)&&await k()},async configureServer(g){if(g.config.appType==="spa"){await k();let v=d.bold.green("Storyblok plugin ".toUpperCase());b(` | ||
${v}- Started`),b(`${v}- Type 'gsb' and press ENTER to generate Storyblok types | ||
`),g.bindCLIShortcuts({customShortcuts:[{description:"Generate Storyblok types",key:"gsb",action:()=>_e({spaceId:t,componentsDir:e,componentsJsonLoc:r,typeFileLoc:o,pullCommand:n,typesCommand:s,debug:i,componentAs:R,fileNameConvention:p})}]})}}}};0&&(module.exports={storyblokPlugin}); | ||
`):" {/** Have fun! */}"};async function Y(e){try{return await a.promises.readFile(e,"utf8"),!0}catch{return!1}}var J=async({componentsDir:e,debug:t=!1,typeFileLoc:o="./storyblok/types.d.ts",pullCommand:r,componentsJsonLoc:n,typesCommand:m,fileNameConvention:f="kebab-case",componentAs:y="file"})=>{l(i.default.bold.green("Pulling components and generating types...")),await a.promises.stat(e).catch(()=>!1)||await a.promises.mkdir(e,{recursive:!0}),await a.promises.stat(s.default.dirname(o)).catch(()=>!1)||await a.promises.mkdir(s.default.dirname(o),{recursive:!0}),(0,F.spawn)(`${r} && ${m}`,{stdio:t?"inherit":"ignore",shell:!0,env:process.env}).on("exit",async c=>{if(c===0&&n)return l(i.default.bold.green("Storyblok Components successfully pulled and types generated!")),await z({inputFile:n,outputDir:e,typeFile:o,fileNameConvention:f,componentAs:y,debug:t});l(i.default.bold.red("Storyblok Components pull failed!")),l(i.default.bold.red("Check your Storyblok space ID and if you're logged in to Storyblok"))})},L=({spaceId:e,componentsDir:t,typeFileLoc:o="./storyblok/types.d.ts",componentsJsonLoc:r=`./storyblok/components.${e}.json`,pullCommand:n=`storyblok pull-components --space ${e} --path ${s.default.dirname(r)}/`,typesCommand:m=`storyblok generate-typescript-typedefs --sourceFilePaths ${r} --destinationFilePath ${o}`,debug:f=!1,fileNameConvention:y="kebab-case",componentAs:g="file"})=>{let b=async()=>z({inputFile:r,outputDir:t,typeFile:o,fileNameConvention:y,componentAs:g,debug:f});return{enforce:"pre",name:"Storyblok Generator",apply:"serve",async handleHotUpdate(c){let k=c.file.replace((0,v.normalizePath)(process.cwd()),"");o.endsWith(k)&&await b()},async configureServer(c){if(c.config.appType==="spa"){await b();let k=i.default.bold.green("Storyblok plugin ".toUpperCase());l(` | ||
${k}- Started`),l(`${k}- Type 'gsb' and press ENTER to generate Storyblok types | ||
`),c.bindCLIShortcuts({customShortcuts:[{description:"Generate Storyblok types",key:"gsb",action:()=>J({spaceId:e,componentsDir:t,componentsJsonLoc:r,typeFileLoc:o,pullCommand:n,typesCommand:m,debug:f,componentAs:g,fileNameConvention:y})}]})}}}};0&&(module.exports={storyblokPlugin}); | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "storyblok-generator", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "Generate Storyblok components out of your components.json file and get full type-safety and bundle splitting out of the box", | ||
@@ -5,0 +5,0 @@ "main": "./dist/index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
55294
-56.55%103
-36.02%