UNPKG

11 kBJavaScriptView Raw
1import s from"autoprefixer";import e from"browserslist";import o from"cssdb";import t from"postcss-attribute-case-insensitive";import r from"css-blank-pseudo";import i from"postcss-color-functional-notation";import n from"postcss-color-hex-alpha";import c from"postcss-color-rebeccapurple";import p from"postcss-custom-media";import a from"postcss-custom-properties";import u from"postcss-custom-selectors";import l from"postcss-dir-pseudo-class";import m from"postcss-double-position-gradients";import f from"postcss-env-function";import d from"postcss-focus-visible";import b from"postcss-focus-within";import g from"postcss-font-variant";import y from"postcss-gap-properties";import v from"css-has-pseudo";import h from"postcss-image-set-function";import w from"postcss-initial";import O from"postcss-lab-function";import $ from"postcss-logical";import j from"postcss-media-minmax";import k from"postcss-nesting";import x from"postcss-overflow-shorthand";import S from"postcss-page-break";import P from"postcss-place";import M from"css-prefers-color-scheme";import q from"postcss-pseudo-class-any-link";import F from"postcss-replace-overflow-wrap";import T from"postcss-selector-not";import*as B from"caniuse-lite";import U from"fs";import A from"path";function V(){return{postcssPlugin:"postcss-system-ui-font",Declaration(s){E.test(s.prop)&&(s.value.includes(N.join(", "))||(s.value=s.value.replace(C,J)))}}}V.postcss=!0;const E=/(?:^(?:-|\\002d){2})|(?:^font(?:-family)?$)/i,I="[\\f\\n\\r\\x09\\x20]",N=["system-ui","-apple-system","Segoe UI","Roboto","Ubuntu","Cantarell","Noto Sans","sans-serif"],C=new RegExp(`(^|,|${I}+)(?:system-ui${I}*)(?:,${I}*(?:${N.join("|")})${I}*)?(,|$)`,"i"),J=`$1${N.join(", ")}$2`,R={"css-blank-pseudo":"blank-pseudo-class","css-has-pseudo":"has-pseudo-class","css-prefers-color-scheme":"prefers-color-scheme-query","postcss-attribute-case-insensitive":"case-insensitive-attributes","postcss-color-functional-notation":"color-functional-notation","postcss-color-hex-alpha":"hexadecimal-alpha-notation","postcss-color-rebeccapurple":"rebeccapurple-color","postcss-custom-media":"custom-media-queries","postcss-custom-properties":"custom-properties","postcss-custom-selectors":"custom-selectors","postcss-dir-pseudo-class":"dir-pseudo-class","postcss-double-position-gradients":"double-position-gradients","postcss-env-function":"environment-variables","postcss-focus-visible":"focus-visible-pseudo-class","postcss-focus-within":"focus-within-pseudo-class","postcss-font-variant":"font-variant-property","postcss-gap-properties":"gap-properties","postcss-image-set-function":"image-set-function","postcss-initial":"all-property","postcss-lab-function":"lab-function","postcss-logical":"logical-properties-and-values","postcss-media-minmax":"media-query-ranges","postcss-nesting":"nesting-rules","postcss-overflow-shorthand":"overflow-property","postcss-page-break":"break-properties","postcss-place":"place-properties","postcss-pseudo-class-any-link":"any-link-pseudo-class","postcss-replace-overflow-wrap":"overflow-wrap-property","postcss-selector-not":"not-pseudo-class","postcss-system-ui-font-family":"system-ui-font-family"},D=(()=>{const s={};for(const[e,o]of Object.entries(R))s[o]=e;return s})(),L={"all-property":w,"any-link-pseudo-class":q,"blank-pseudo-class":r,"break-properties":S,"case-insensitive-attributes":t,"color-functional-notation":i,"custom-media-queries":p,"custom-properties":a,"custom-selectors":u,"dir-pseudo-class":l,"double-position-gradients":m,"environment-variables":f,"focus-visible-pseudo-class":d,"focus-within-pseudo-class":b,"font-variant-property":g,"gap-properties":y,"has-pseudo-class":v,"hexadecimal-alpha-notation":n,"image-set-function":h,"lab-function":O,"logical-properties-and-values":$,"media-query-ranges":j,"nesting-rules":k,"not-pseudo-class":T,"overflow-property":x,"overflow-wrap-property":F,"place-properties":P,"prefers-color-scheme-query":M,"rebeccapurple-color":c,"system-ui-font-family":V};function z(s,e){return Object.keys(s).map((o=>[].concat(s[o]).map((s=>({[e]:!0,plugin:s,id:o}))))).reduce(((s,e)=>s.concat(e)),[])}function G(s){const e=B.features[s];if(e){const s=B.feature(e).stats;return Object.keys(s).reduce(((e,o)=>e.concat(Object.keys(s[o]).filter((e=>0!==s[o][e].indexOf("y"))).map((s=>`${o} ${s}`)))),[])}return["> 0%"]}var H=["custom-media-queries","custom-properties","environment-variables","image-set-function","media-query-ranges","prefers-color-scheme-query","nesting-rules","custom-selectors","any-link-pseudo-class","case-insensitive-attributes","focus-visible-pseudo-class","focus-within-pseudo-class","matches-pseudo-class","not-pseudo-class","logical-properties-and-values","dir-pseudo-class","all-property","color-functional-notation","double-position-gradients","hexadecimal-alpha-notation","lab-function","rebeccapurple-color","color-mod-function","blank-pseudo-class","break-properties","font-variant-property","has-pseudo-class","gap-properties","overflow-property","overflow-wrap-property","place-properties","system-ui-font-family"];async function K(s,e,o,t){const r=function(s){return`:root {\n${Object.keys(s).reduce(((e,o)=>(e.push(`\t${o}: ${s[o]};`),e)),[]).join("\n")}\n}\n`}(o),i=function(s){return`${Object.keys(s).reduce(((e,o)=>(e.push(`@custom-media ${o} ${s[o]};`),e)),[]).join("\n")}\n`}(e),n=function(s){return`${Object.keys(s).reduce(((e,o)=>(e.push(`@custom-selector ${o} ${s[o]};`),e)),[]).join("\n")}\n`}(t),c=`${i}\n${n}\n${r}`;await Z(s,c)}function Q(s,e){return`\n\t${s}: {\n${Object.keys(e).reduce(((s,o)=>(s.push(`\t\t'${_(o)}': '${_(e[o])}'`),s)),[]).join(",\n")}\n\t}`}function W(s,e){return`export const ${s} = {\n${Object.keys(e).reduce(((s,o)=>(s.push(`\t'${_(o)}': '${_(e[o])}'`),s)),[]).join(",\n")}\n};\n`}function X(s,e){return Promise.all([].concat(e).map((async e=>{if(e instanceof Function)await e({customMedia:Y(s.customMedia),customProperties:Y(s.customProperties),customSelectors:Y(s.customSelectors)});else{const o=e===Object(e)?e:{to:String(e)},t=o.toJSON||Y;if("customMedia"in o||"customProperties"in o||"customSelectors"in o)o.customMedia=t(s.customMedia),o.customProperties=t(s.customProperties),o.customSelectors=t(s.customSelectors);else if("custom-media"in o||"custom-properties"in o||"custom-selectors"in o)o["custom-media"]=t(s.customMedia),o["custom-properties"]=t(s.customProperties),o["custom-selectors"]=t(s.customSelectors);else{const e=String(o.to||""),r=(o.type||A.extname(o.to).slice(1)).toLowerCase(),i=t(s.customMedia),n=t(s.customProperties),c=t(s.customSelectors);"css"===r&&await K(e,i,n,c),"js"===r&&await async function(s,e,o,t){const r=`module.exports = {${Q("customMedia",e)},${Q("customProperties",o)},${Q("customSelectors",t)}\n};\n`;await Z(s,r)}(e,i,n,c),"json"===r&&await async function(s,e,o,t){const r=`${JSON.stringify({"custom-media":e,"custom-properties":o,"custom-selectors":t},null," ")}\n`;await Z(s,r)}(e,i,n,c),"mjs"===r&&await async function(s,e,o,t){const r=`${W("customMedia",e)}\n${W("customProperties",o)}\n${W("customSelectors",t)}`;await Z(s,r)}(e,i,n,c)}}})))}function Y(s){return Object.keys(s).reduce(((e,o)=>(e[o]=String(s[o]),e)),{})}function Z(s,e){return new Promise(((o,t)=>{U.writeFile(s,e,(s=>{s?t(s):o()}))}))}function _(s){return s.replace(/\\([\s\S])|(')/g,"\\$1$2").replace(/\n/g,"\\n").replace(/\r/g,"\\r")}function ss(s,o){const t=e(s,{ignoreUnknownVersions:!0});return"nesting-rules"===o.id&&function(s,o){const t=G(s);if(o.some((s=>e(t,{ignoreUnknownVersions:!0}).some((e=>e===s)))))return!0;return!1}("css-matches-pseudo",t)?{noIsPseudoSelector:!0}:{}}function es(s,e){let o="unknown",t=1/0;for(let r=0;r<e.length;r++){const i=os(s,e[r]);i<t&&(t=i,o=e[r])}return{mostSimilar:o,distance:t}}function os(s,e){if(!s.length)return e.length;if(!e.length)return s.length;const o=[];for(let t=0;t<=e.length;t++){o[t]=[t];for(let r=1;r<=s.length;r++)o[t][r]=0===t?r:Math.min(o[t-1][r]+1,o[t][r-1]+1,o[t-1][r-1]+(s[r-1]===e[t-1]?0:1))}return o[e.length][s.length]}function ts(s,e){if(!s)return!1;if("string"==typeof s)return!0;if(Array.isArray(s)){for(let o=0;o<s.length;o++){if("string"==typeof s[o])return!0;if(s[o]&&e in Object(s[o]))return!0}return!1}return e in Object(s)}const rs=t=>{const r=Object(Object(t).features),i=Object.keys(r),n=Object(Object(t).insertBefore),c=Object(Object(t).insertAfter),p=Object(t).browsers,a="stage"in Object(t)?!1===t.stage?5:parseInt(t.stage)||0:2,u=Object(t).autoprefixer,l=is(Object(t)),m=!1===u?()=>{}:s(Object.assign({overrideBrowserslist:p},u)),f=o.concat(z(n,"insertBefore"),z(c,"insertAfter")).filter((s=>s.insertBefore||s.id in L)).sort(((s,e)=>H.indexOf(s.id)-H.indexOf(e.id)||(s.insertBefore?-1:e.insertBefore?1:0)||(s.insertAfter?1:e.insertAfter?-1:0))).map((s=>{const e=G(s.caniuse);return s.insertBefore||s.insertAfter?{browsers:e,plugin:s.plugin,id:`${s.insertBefore?"before":"after"}-${s.id}`,stage:6}:{browsers:e,plugin:L[s.id],id:s.id,stage:s.stage}})).filter((s=>s.id in r?r[s.id]:s.stage>=a)).map((s=>{let e,o;return e=ss(p,s),e=!0===r[s.id]?l?Object.assign({},e,l):void 0:l?Object.assign({},e,l,r[s.id]):Object.assign({},e,r[s.id]),o=s.plugin.postcss?s.plugin(e):s.plugin,{browsers:s.browsers,plugin:o,pluginOptions:e,id:s.id}})),d=e(p,{ignoreUnknownVersions:!0}),b=f.filter((s=>s.id in r?r[s.id]:!!function(s){if("importFrom"in Object(s.pluginOptions))switch(s.id){case"custom-media-queries":if(ts(s.pluginOptions.importFrom,"customMedia"))return!0;break;case"custom-properties":if(ts(s.pluginOptions.importFrom,"customProperties"))return!0;break;case"environment-variables":if(ts(s.pluginOptions.importFrom,"environmentVariables"))return!0;break;case"custom-selectors":if(ts(s.pluginOptions.importFrom,"customSelectors"))return!0}if("exportTo"in Object(s.pluginOptions))switch(s.id){case"custom-media-queries":if(ts(s.pluginOptions.exportTo,"customMedia"))return!0;break;case"custom-properties":if(ts(s.pluginOptions.exportTo,"customProperties"))return!0;break;case"environment-variables":if(ts(s.pluginOptions.exportTo,"environmentVariables"))return!0;break;case"custom-selectors":if(ts(s.pluginOptions.exportTo,"customSelectors"))return!0}return!1}(s)||d.some((o=>e(s.browsers,{ignoreUnknownVersions:!0}).some((s=>s===o)))))).map((s=>s.plugin));b.push(m);const g=()=>({postcssPlugin:"postcss-preset-env",OnceExit:function(s,{result:e}){!function(s,e,o){const t=Object.keys(D),r=Object.keys(R);s.forEach((s=>{if(t.includes(s))return;const i=es(s,t),n=es(s,r);i.distance<n.distance?e.warn(o,`Unknown feature: "${s}" did you mean: "${i.mostSimilar}"`):e.warn(o,`Unknown feature: "${s}" did you mean: "${R[n.mostSimilar]}"`)}))}(i,s,e),Object(t).exportTo&&X(l.exportTo,t.exportTo)}});return g.postcss=!0,{postcssPlugin:"postcss-preset-env",plugins:[...b,g()]}},is=s=>{if("importFrom"in s||"exportTo"in s||"preserve"in s){const e={};return"importFrom"in s&&(e.importFrom=s.importFrom),"exportTo"in s&&(e.exportTo={customMedia:{},customProperties:{},customSelectors:{}}),"preserve"in s&&(e.preserve=s.preserve),e}return!1};rs.postcss=!0;export{rs as default};