chayns-toolkit 2.0.0-beta.11 → 2.0.0-beta.12

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.
Files changed (2) hide show
  1. package/lib/cli.js +2 -2
  2. package/package.json +1 -1
package/lib/cli.js CHANGED
@@ -31,7 +31,7 @@ attempted value: ${s}
31
31
  ${g.substring(P)}`}if(g){if(!(g==null?void 0:g.includes("api.chayns.net/css"))&&c){let T=g.indexOf("</head");g=`${g.substring(0,T)}
32
32
 
33
33
  <script>(${_l})();<\/script>
34
- ${g.substring(T)}`}let P=t==="production"?{removeComments:!0,collapseWhitespace:!0,removeRedundantAttributes:!0,useShortDoctype:!0,removeEmptyAttributes:!0,removeStyleLinkTypeAttributes:!0,keepClosingSlash:!0,minifyJS:!0,minifyCSS:!0,minifyURLs:!0}:void 0;f.push(new wl.default({templateContent:g,minify:P}))}if(e&&f.push(new Cl.BundleAnalyzerPlugin),t==="production"&&f.push(new vl.CleanWebpackPlugin),hl(t),t==="development"&&f.push(new bl.default({overlay:!1})),!h)throw Error("The name field in package.json has to be provided.");!n&&t!=="development"&&f.push(new Pi.default({filename:`static/css/${h}.[contenthash].css`,chunkFilename:`static/css/${h}.[chunkhash].chunk.css`}));let d=t!=="production",m=Jt({packageJson:s}),x=xl.createHash("md5").update([JSON.stringify(m),process.env.BABEL_ENV,process.env.NODE_ENV,yl.version].join("--")).digest("hex"),_=[];return L.hasFile("jsconfig.json")?_.push(new Ri.default({configFile:"jsconfig.json",extensions:[".js",".jsx"]})):L.hasFile("tsconfig.json")&&_.push(new Ri.default({extensions:[".js",".jsx",".ts",".tsx"]})),{entry:L.resolvePath("src/index"),mode:t,target:t==="development"?"web":"browserslist",devtool:d?"eval-cheap-source-map":!1,context:L.resolvePath("."),output:{path:i!=null?i:L.resolvePath("build/"),hashDigestLength:12,filename:qv({mode:t,filename:r,singleBundle:n,packageName:h}),assetModuleFilename:"static/media/[hash][ext][query]"},resolve:{extensions:[".js",".jsx",".ts",".tsx"],plugins:_},module:{rules:[{test:/\.(js|jsx)$/,use:require.resolve("source-map-loader"),include:/node_modules\/chayns-components/},{test:/\.(js|jsx|ts|tsx)$/,use:{loader:require.resolve("babel-loader"),options:{presets:[["chayns-toolkit/babel",m]],babelrc:!1,configFile:!1,compact:t==="production",cacheDirectory:!0,cacheIdentifier:x}},exclude:/node_modules/},{test:/\.(css|scss)/,use:[t==="development"||n?{loader:require.resolve("style-loader"),options:u?{insert:P=>{let T=document.querySelector(".module-css:not(.injected)");T?(T.appendChild(P),T.classList.add("injected")):document.head.appendChild(P)}}:void 0}:Pi.default.loader,{loader:require.resolve("css-loader"),options:{modules:{auto:!0,localIdentName:t==="development"?"[path][name]__[local]":"[hash:base64]",exportLocalsConvention:"camelCase"}}},{loader:require.resolve("postcss-loader"),options:{postcssOptions:{plugins:[["postcss-preset-env",{autoprefixer:{flexbox:"no-2009"},stage:2}],"postcss-flexbugs-fixes",t==="production"&&"cssnano",o&&["postcss-prefix-selector",{prefix:`.${h}`}]].filter(Boolean)}}},require.resolve("sass-loader")]},{test:/\.(png|jpe?g|gif|webp)$/i,type:"asset",parser:{dataUrlCondition:{maxSize:10*1024}}},{test:/\.svg$/,use:require.resolve("@svgr/webpack")}]},plugins:f,optimization:{splitChunks:n?!1:{chunks:"all"}},performance:!1}}function qv({mode:t,filename:e,singleBundle:r,packageName:n}){let i=r?"":"static/js/",s=e.replace("[package]",(0,El.paramCase)(n));return t==="development"?`${i}[name].bundle.js`:i+s}var _t=F(Ir()),D={path(t){return _t.default.hex("#16BDCA")(`\`${Zr(t)}\``)},command(t){return _t.default.hex("#AC94FA")(`\`${Zr(t)}\``)},code(t){return _t.default.hex("#76A9FA")(`\`${Zr(t)}\``)},alt(t){return _t.default.hex("#97A6BA")(Zr(t))},number(t){return _t.default.hex("#F17EB8")(t)}};function Zr(t){return kv(t)?t[0]:t}function kv(t){return Array.isArray(t)}var Tg=F(require("webpack"));var X=F(Cg()),NR=X.object({host:X.string().max(255).default("adaptive").required(),port:X.number().positive().max(65535).default(1234).required(),cert:X.string().notRequired(),key:X.string().notRequired()}).required().noUnknown(),HR=X.object({singleBundle:X.boolean().default(!1).required(),filename:X.string().default("[package].[contenthash].js").required(),path:X.string().notRequired(),injectCssInPage:X.boolean().notRequired(),prefixCss:X.boolean().notRequired(),exposeModules:X.object().notRequired(),injectChaynsCss:X.boolean().notRequired()}).required().noUnknown(),Og=X.object({development:NR,output:HR,webpack:X.mixed().notRequired().default(null).test("is-function-or-null","${path} is not a function or null",t=>typeof t=="function"||t===null),jest:X.mixed().notRequired().default(null).test("is-function-or-null","${path} is not a function or null",t=>typeof t=="function"||t===null)}).required().noUnknown();async function Pg(){var e;let t={};if(L.hasFile(Sr))t=await Promise.resolve().then(()=>F(require(L.resolvePath(Sr))));else if(L.hasFile(Rg)){let r=(e=await L.readFile(Rg))!=null?e:"{}";t=JSON.parse(r)}try{let r=await Og.validate(t),{host:n,cert:i,key:s}=r.development;if(n==="adaptive"){let a=Boolean(i&&s);r.development.host=a?"0.0.0.0":"localhost"}return r}catch(r){let n=r,i="";throw n.errors.length&&n.errors.forEach(s=>{i+=`- ${s}
34
+ ${g.substring(T)}`}let P=t==="production"?{removeComments:!0,collapseWhitespace:!0,removeRedundantAttributes:!0,useShortDoctype:!0,removeEmptyAttributes:!0,removeStyleLinkTypeAttributes:!0,keepClosingSlash:!0,minifyJS:!0,minifyCSS:!0,minifyURLs:!0}:void 0;f.push(new wl.default({templateContent:g,minify:P}))}if(e&&f.push(new Cl.BundleAnalyzerPlugin),t==="production"&&f.push(new vl.CleanWebpackPlugin),hl(t),t==="development"&&f.push(new bl.default({overlay:!1})),!h)throw Error("The name field in package.json has to be provided.");!n&&t!=="development"&&f.push(new Pi.default({filename:`static/css/${h}.[contenthash].css`,chunkFilename:`static/css/${h}.[chunkhash].chunk.css`}));let d=t!=="production",m=Jt({packageJson:s}),x=xl.createHash("md5").update([JSON.stringify(m),process.env.BABEL_ENV,process.env.NODE_ENV,yl.version].join("--")).digest("hex"),_=[];return L.hasFile("jsconfig.json")?_.push(new Ri.default({configFile:"jsconfig.json",extensions:[".js",".jsx"]})):L.hasFile("tsconfig.json")&&_.push(new Ri.default({extensions:[".js",".jsx",".ts",".tsx"]})),{entry:L.resolvePath("src/index"),mode:t,target:t==="development"?"web":"browserslist",devtool:d?"eval-cheap-source-map":!1,context:L.resolvePath("."),output:{path:i!=null?i:L.resolvePath("build/"),hashDigestLength:12,filename:qv({mode:t,filename:r,singleBundle:n,packageName:h}),assetModuleFilename:"static/media/[hash][ext][query]"},resolve:{extensions:[".js",".jsx",".ts",".tsx"],plugins:_},module:{rules:[{test:/\.(js|jsx)$/,use:require.resolve("source-map-loader"),include:/node_modules\/chayns-components/},{test:/\.(js|jsx|ts|tsx)$/,use:{loader:require.resolve("babel-loader"),options:{presets:[["chayns-toolkit/babel",m]],babelrc:!1,configFile:!1,compact:t==="production",cacheDirectory:!0,cacheIdentifier:x}},exclude:/node_modules/},{test:/\.(css|scss)/,use:[t==="development"||n?{loader:require.resolve("style-loader"),options:u?{insert:P=>{let T=document.querySelector(".module-css:not(.injected)");T?(T.appendChild(P),T.classList.add("injected")):document.head.appendChild(P)}}:void 0}:Pi.default.loader,{loader:require.resolve("css-loader"),options:{modules:{auto:!0,localIdentName:t==="development"?"[path][name]__[local]":"[hash:base64]",exportLocalsConvention:"camelCase"}}},{loader:require.resolve("postcss-loader"),options:{postcssOptions:{plugins:[["postcss-preset-env",{autoprefixer:{flexbox:"no-2009"},stage:2}],"postcss-flexbugs-fixes",t==="production"&&"cssnano",o&&["postcss-prefix-selector",{prefix:`.${h}`}]].filter(Boolean)}}},require.resolve("sass-loader")]},{test:/\.(png|jpe?g|gif|webp)$/i,type:"asset",parser:{dataUrlCondition:{maxSize:10*1024}}},{test:/\.svg$/,use:require.resolve("@svgr/webpack")}]},plugins:f,optimization:{splitChunks:l||n?!1:{chunks:"all"}},performance:!1}}function qv({mode:t,filename:e,singleBundle:r,packageName:n}){let i=r?"":"static/js/",s=e.replace("[package]",(0,El.paramCase)(n));return t==="development"?`${i}[name].bundle.js`:i+s}var _t=F(Ir()),D={path(t){return _t.default.hex("#16BDCA")(`\`${Zr(t)}\``)},command(t){return _t.default.hex("#AC94FA")(`\`${Zr(t)}\``)},code(t){return _t.default.hex("#76A9FA")(`\`${Zr(t)}\``)},alt(t){return _t.default.hex("#97A6BA")(Zr(t))},number(t){return _t.default.hex("#F17EB8")(t)}};function Zr(t){return kv(t)?t[0]:t}function kv(t){return Array.isArray(t)}var Tg=F(require("webpack"));var X=F(Cg()),NR=X.object({host:X.string().max(255).default("adaptive").required(),port:X.number().positive().max(65535).default(1234).required(),cert:X.string().notRequired(),key:X.string().notRequired()}).required().noUnknown(),HR=X.object({singleBundle:X.boolean().default(!1).required(),filename:X.string().default("[package].[contenthash].js").required(),path:X.string().notRequired(),injectCssInPage:X.boolean().notRequired(),prefixCss:X.boolean().notRequired(),exposeModules:X.object().notRequired(),injectChaynsCss:X.boolean().notRequired()}).required().noUnknown(),Og=X.object({development:NR,output:HR,webpack:X.mixed().notRequired().default(null).test("is-function-or-null","${path} is not a function or null",t=>typeof t=="function"||t===null),jest:X.mixed().notRequired().default(null).test("is-function-or-null","${path} is not a function or null",t=>typeof t=="function"||t===null)}).required().noUnknown();async function Pg(){var e;let t={};if(L.hasFile(Sr))t=await Promise.resolve().then(()=>F(require(L.resolvePath(Sr))));else if(L.hasFile(Rg)){let r=(e=await L.readFile(Rg))!=null?e:"{}";t=JSON.parse(r)}try{let r=await Og.validate(t),{host:n,cert:i,key:s}=r.development;if(n==="adaptive"){let a=Boolean(i&&s);r.development.host=a?"0.0.0.0":"localhost"}return r}catch(r){let n=r,i="";throw n.errors.length&&n.errors.forEach(s=>{i+=`- ${s}
35
35
  `}),Error(i)}}var Rg="chayns-toolkit.json",Sr="toolkit.config.js";function Fn({config:t,dev:e,modifier:r}){let n=r(t,{webpack:Tg.default,dev:e});if(n===void 0)throw Error(`The webpack customization function in your ${D.path(Sr)} returned nothing.`);if(typeof n!="object")throw Error(`The webpack customization function in your ${D.path(Sr)} returned an invalid configuration.`);return n}var wr=F(Ir()),q={info(t){console.info(`${wr.default.hex("#76A9FA")("info ")} - ${t}`)},hint(t){console.info(`${wr.default.hex("#31C48D")("hint ")} - ${t}`)},warn(t){console.info(`${wr.default.hex("#FACA15")("warn ")} - ${t}`)},error(t){console.info(`${wr.default.hex("#F98080")("error")} - ${t}`)},blank(t){console.info(` ${t}`)},exit(t){console.info(""),t?process.exit(t):process.exit()}};function Fg(t){return new Promise((e,r)=>{t.run((n,i)=>{n?r(n):i?e(i):r(Error("No stats available."))})})}function qg(t){return new Promise((e,r)=>{t.close(n=>{n?r(n):e()})})}function Dg({analyze:t}){return async({config:e,packageJson:r})=>{process.env.BABEL_ENV="production",process.env.NODE_ENV="production";let n=await Xr({mode:"production",analyze:t,outputFilename:e.output.filename,singleBundle:e.output.singleBundle,path:e.output.path,packageJson:r,prefixCss:e.output.prefixCss,injectCssInPage:e.output.injectCssInPage});if(typeof e.webpack=="function"){let u=e.webpack;n=Fn({config:n,dev:!1,modifier:u})}let i=(0,Mg.default)(n),s=Date.now();q.info("Bundling your code...");let a=await Fg(i),o=(Date.now()-s)/1e3;if(await qg(i),a==null?void 0:a.hasErrors())q.error(`Compilation failed.
36
36
  `),a.compilation.errors.forEach(u=>{console.error(u)});else{let u=a==null?void 0:a.toJson(),{assets:l}=u;if(q.info(`Finished build in ${D.number(o.toFixed(2))} seconds. These files were emitted:`),console.info(""),l){let c=new kg.default(ee(H({},BR),{colAligns:["left","right"]}));l.forEach(h=>{let f="B",g=h.size;h.size>1e6?(f="mB",g=h.size/1e6):h.size>1e3&&(f="kB",g=h.size/1e3);let d=`${g.toLocaleString("en-US",{maximumFractionDigits:2})} ${f}`,m=" ";h.size>5e5&&(m=Is.default.yellow("!")),h.size>1e6&&(m=Is.default.redBright("!")),c.push([h.name,d,m])}),console.info(c.toString())}}}}var BR={chars:{top:"","top-mid":"","top-left":"","top-right":"",bottom:"","bottom-mid":"","bottom-left":"","bottom-right":"",left:"","left-mid":"",mid:"","mid-mid":"",right:"","right-mid":"",middle:" "},style:{"padding-left":0,"padding-right":0}};var jg=F(require("child_process")),$g=F(require("path")),Lg=F(require("webpack")),Ig=F(require("webpack-dev-server"));var rt={install(t,e,r=!1){let n="npm i ";return t==="yarn"&&(n="yarn add "),Array.isArray(e)?n+=e.join(" "):n+=e,r&&(n+=" -D"),D.command(n)},remove(t,e){let r=t==="yarn"?"yarn remove ":"npm remove ";return r+=Array.isArray(e)?e.join(" "):e,D.command(r)},move(t,e,r){let n=Array.isArray(e)?e.join(" "):e;return t==="yarn"?D.command(`yarn remove ${n} && yarn add ${n}${r==="dev"?" -D":""}`):D.command(`npm install ${n}${r==="dev"?" -D":""}`)}};function Ng({devtools:t}){return async({config:e,packageJson:r,packageManager:n})=>{process.env.BABEL_ENV="development",process.env.NODE_ENV="development";let{port:i,host:s,cert:a,key:o}=e.development,u=await Xr({analyze:!1,mode:"development",outputFilename:e.output.filename,singleBundle:e.output.singleBundle,packageJson:r,injectDevtoolsScript:t,prefixCss:e.output.prefixCss,injectCssInPage:e.output.injectCssInPage,injectChaynsCss:e.output.injectChaynsCss,exposeModules:e.output.exposeModules});if(typeof e.webpack=="function"){let h=e.webpack;u=Fn({config:u,dev:!0,modifier:h})}t&&("react-devtools"in(r.dependencies||{})?(q.error(`You added ${D.code`react-devtools`} as a regular dependency.`),q.blank(`Install it under ${D.code`devDependencies`} by running ${rt.move(n,"react-devtools","dev")}.
37
37
  `),process.exit(1)):"react-devtools"in(r.devDependencies||{})||(q.error(`You need to install the ${D.code`react-devtools`} package to use the ${D.command`--devtools`} option.`),q.blank(`Run ${rt.move(n,"react-devtools","dev")} to add it as a ${D.code`devDependency`}.
@@ -47,7 +47,7 @@ ${g.substring(T)}`}let P=t==="production"?{removeComments:!0,collapseWhitespace:
47
47
  module.exports = `;var Bs=F(require("fs"));function Wg({config:t}){let{cert:e,key:r}=t.development,n=!1;return r&&!e||!r&&e?(q.error(`You have specified the ${D.code(r?"key":"cert")} field in your ${D.path`chayns-toolkit.json`} file, but not ${D.code(r?"cert":"key")}. You need to specify paths in both fields for SSL to work.`),n=!0):(r&&(Bs.existsSync(r)||(q.error(`No file exists at the ${D.code`key`} path specified in ${D.path`chayns-toolkit.json`}.`),n=!0)),e&&(Bs.existsSync(e)||(q.error(`No file exists at the ${D.code`cert`} path specified in ${D.path`chayns-toolkit.json`}.`),n=!0))),n}var zg=F(require("fs")),Kg=F(require("path")),Yg=F(require("util")),VR=(0,Yg.promisify)(zg.readFile);async function Gs(t){let e=Kg.resolve("package.json"),r=await VR(e,{encoding:"utf-8"}),n=JSON.parse(r),i=Object.keys(H(H({},n.dependencies),n.devDependencies));return Array.isArray(t)?i.filter(s=>t.some(a=>Jg(a)?a.test(s):a===s)):Jg(t)?i.some(s=>t.test(s)):i.includes(t)}function Jg(t){return Object.prototype.toString.call(t)==="[object RegExp]"}async function Xg(t){let e=await Gs("@types/react"),r=await Gs("@types/react-dom"),n=[!e&&"@types/react",!r&&"@types/react-dom"].filter(Boolean);if(n.length>0){let i=n.map(s=>D.code(s)).join(" and ");q.hint(`You should install the ${i} package${n.length>0?"s":""} to get TypeScript support for React.
48
48
  `),t!==void 0&&q.blank(`Install them by running ${rt.install(t,n,!0)}`)}}async function Zg(){var n;if(!L.hasFile("tsconfig.json"))return!0;let r=((n=await L.readFile("tsconfig.json"))!=null?n:"").replace(/\s/gi,"");return r===""||r==="{}"}var ub=F(ob());async function lb(){return L.hasFile("tsconfig.json")?!0:(await(0,ub.default)("src/**/*.{ts,tsx}")).length>0}async function cb({packageJson:t,packageManager:e}){let r=Yr(t,"typescript"),n=await Zg();return r?(await Xg(e),n&&await fb(),!1):await lb()?(n&&await fb(),q.error(`To use TypeScript, you have to install the ${D.code`typescript`} package by running ${rt.install(e,"typescript",!0)}.`),!0):!1}async function fb(){await L.writeFile("tsconfig.json",JSON.stringify(Hk,void 0,4)),q.info(`Seems like you want to use TypeScript. A ${D.path`tsconfig.json`} file has been set up for you.`)}var Hk={compilerOptions:{allowJs:!0,allowSyntheticDefaultImports:!0,checkJs:!1,esModuleInterop:!0,experimentalDecorators:!0,isolatedModules:!0,jsx:"react",lib:["DOM","ESNext"],noEmit:!0,skipLibCheck:!0,strict:!0}};var si=F(require("tcp-port-used"));async function pb({config:t}){let{port:e,host:r}=t.development;if(await(0,si.check)(e,r)){q.warn(`The port ${D.number(e)} on host ${D.code(r)} is already in use. Waiting for it to free up...`);try{return await(0,si.waitUntilFreeOnHost)(e,r,500,6e4),q.info("Is has freed up. Starting the development server..."),!1}catch{return q.error("The port did not free up within 60 seconds."),!0}}return!1}function hb(){let t=Bk.some(r=>L.hasFile(r)),e=Gk.some(r=>L.hasFile(r));if(t&&e&&(q.warn(`You have both ${D.path`package-lock.json`} and ${D.path`yarn.lock`} files in your project.
49
49
  `),q.blank("Decide on wether you want to use Yarn or NPM and remove one of the lockfiles.")),t)return"npm";if(e)return"yarn"}var Bk=["./package-lock.json","../package-lock.json","../../package-lock.json"],Gk=["./yarn.lock","../yarn.lock","../../yarn.lock"];async function db(){let t=await L.readFile("package.json");if(t===null)throw Error("No package.json file was found.");return JSON.parse(t)}async function ai(...t){let e;try{e=await Pg()}catch(s){let a=s;q.error(`An error occured while loading the ${D.path`chayns-toolkit.json`} file:
50
- `),q.blank(a.message);return}let[r,n]=await Promise.all([db(),hb()]),i=!0;for(let s of t)if(i){for(let a of s)await a({config:e,packageJson:r,packageManager:n})&&(i=!1);t.indexOf(s)!==t.length-1&&q.blank("")}}var Vt=new mb.Command;Vt.version("2.0.0-beta.11","-v, --version","output the version number");Vt.command("dev").description("start up a development server with hot module replacement").option("-d, --devtools","open react-devtools in a separate window",!1).action(async t=>{await ai([Ug,cb,Wg,pb],[Ng({devtools:t.devtools})])});Vt.command("build").description("bundles your code for production").option("-a, --analyze","analyze your bundle size",!1).action(async t=>{try{await ai([Dg({analyze:t.analyze})])}catch(e){q.error(e)}console.info("")});Vt.command("lint").description("lints your code for possible errors").action(async()=>{await Hg(),console.info("")});Vt.command("test").description("executes all Jest tests for this project").option("-w, --watch","watch for changes to rerun tests",!1).option("--setupFile <path>","file that should be executed before the tests are initialized","").action(async t=>{try{await ai([Vg(t)])}catch(e){q.error(e)}console.info("")});Vt.parse(process.argv);
50
+ `),q.blank(a.message);return}let[r,n]=await Promise.all([db(),hb()]),i=!0;for(let s of t)if(i){for(let a of s)await a({config:e,packageJson:r,packageManager:n})&&(i=!1);t.indexOf(s)!==t.length-1&&q.blank("")}}var Vt=new mb.Command;Vt.version("2.0.0-beta.12","-v, --version","output the version number");Vt.command("dev").description("start up a development server with hot module replacement").option("-d, --devtools","open react-devtools in a separate window",!1).action(async t=>{await ai([Ug,cb,Wg,pb],[Ng({devtools:t.devtools})])});Vt.command("build").description("bundles your code for production").option("-a, --analyze","analyze your bundle size",!1).action(async t=>{try{await ai([Dg({analyze:t.analyze})])}catch(e){q.error(e)}console.info("")});Vt.command("lint").description("lints your code for possible errors").action(async()=>{await Hg(),console.info("")});Vt.command("test").description("executes all Jest tests for this project").option("-w, --watch","watch for changes to rerun tests",!1).option("--setupFile <path>","file that should be executed before the tests are initialized","").action(async t=>{try{await ai([Vg(t)])}catch(e){q.error(e)}console.info("")});Vt.parse(process.argv);
51
51
  /*!
52
52
  * fill-range <https://github.com/jonschlinkert/fill-range>
53
53
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chayns-toolkit",
3
- "version": "2.0.0-beta.11",
3
+ "version": "2.0.0-beta.12",
4
4
  "description": "A zero-config toolchain for developing chayns® apps.",
5
5
  "keywords": [
6
6
  "chayns",