rollup-plugin-data-qa
Version:
[](https://www.npmjs.com/package/rollup-plugin-data-qa) [](https://github.com/semantic-releas
2 lines (1 loc) • 4.5 kB
JavaScript
import{createFilter as t}from"@rollup/pluginutils";import{walk as o}from"estree-walker";import e from"lodash/isEmpty.js";import n from"lodash/last.js";import i from"magic-string";import r from"lodash/isArray.js";import a from"lodash/isNaN.js";import l from"lodash/isNil.js";import*as s from"change-case";import d from"lodash/head.js";const u="process.env.E2E_ENABLED === 'true'",p=null,c="data-qa",v=["jsxDEV","jsx","_jsx","jsxs","_jsxs"],m=["Fragment","_Fragment"];function f(t,o){return s[o](t)}function y(t){var o,e,n,i,r,a,l;const s="React"===(null===(e=null===(o=null==t?void 0:t.callee)||void 0===o?void 0:o.object)||void 0===e?void 0:e.name)&&"createElement"===(null===(i=null===(n=null==t?void 0:t.callee)||void 0===n?void 0:n.property)||void 0===i?void 0:i.name),d=v.includes(null===(r=null==t?void 0:t.callee)||void 0===r?void 0:r.name)&&!m.includes(null===(l=null===(a=null==t?void 0:t.arguments)||void 0===a?void 0:a[0])||void 0===l?void 0:l.name);return s||d}function g(t){if(y(t))return!0;const o=null==t?void 0:t.body,e=n(null==o?void 0:o.body);return"ReturnStatement"===(null==e?void 0:e.type)?g(e.argument):!!o&&g(o)}function j({node:t,parent:o}){var e,n,i,r;return"ExportNamedDeclaration"===t.type&&(null===(n=null===(e=t.declaration)||void 0===e?void 0:e.id)||void 0===n?void 0:n.name)||"ExportDefaultDeclaration"===t.type&&(null===(r=null===(i=t.declaration)||void 0===i?void 0:i.id)||void 0===r?void 0:r.name)?t.declaration.id.name:"VariableDeclarator"===(null==o?void 0:o.type)&&(null==o?void 0:o.id)&&g(t)?o.id.name:""}function b({code:t,startPosition:o,attrs:e}){t.appendLeft(o,`...(${u} && ${JSON.stringify(e)}),`)}function h({code:t,node:o,attrs:e}){"ObjectExpression"===(null==o?void 0:o.type)&&t.appendLeft(o.start+1,`...(${u} && ${JSON.stringify(e)}),`)}function N({node:t,parent:o,code:n,componentName:i}){if(y(t)&&"CallExpression"!==o.type){const o=t.arguments[1];if((null==o?void 0:o.start)||!e(o.properties)){if(null!==o.value)if(function(t){var o,e,n,i;return"Object"===(null===(e=null===(o=t.callee)||void 0===o?void 0:o.object)||void 0===e?void 0:e.name)&&"assign"===(null===(i=null===(n=t.callee)||void 0===n?void 0:n.property)||void 0===i?void 0:i.name)}(o)){const t=d(o.arguments);t&&h({code:n,node:t,attrs:{[c]:i}})}else if(e(o.properties))h({code:n,node:o,attrs:{[c]:i}});else{const t=d(o.properties);t&&b({code:n,startPosition:t.start,attrs:{[c]:i}})}else!function({code:t,attrs:o,startPosition:e,endPosition:n}){t.overwrite(e,n,`{...(${u} && ${JSON.stringify(o)})}`)}({code:n,startPosition:o.start,endPosition:o.end,attrs:{[c]:i}});return!0}}return!1}function x({styledComponentName:t,node:o,parent:n,code:i}){var r,a,l,s,p,v;if("MemberExpression"===(null==o?void 0:o.type)&&"styled"===(null==o?void 0:o.object.name)&&"attrs"!==(null===(r=n.property)||void 0===r?void 0:r.name))return function({code:t,attrs:o,functionName:e,startPosition:n}){t.appendRight(n,`.${e}(props => ({...(${u} && ${JSON.stringify(o)}),...props}))`)}({code:i,startPosition:null===(a=o.property)||void 0===a?void 0:a.end,functionName:"attrs",attrs:{[c]:t}}),!0;if("attrs"===(null===(s=null===(l=null==n?void 0:n.callee)||void 0===l?void 0:l.property)||void 0===s?void 0:s.name)&&"ArrowFunctionExpression"===o.type&&!e(o.body.properties)){const e=o.body.properties;return b({code:i,startPosition:d(e).start,attrs:{[c]:t}}),!0}if("attrs"===(null===(v=null===(p=null==n?void 0:n.callee)||void 0===p?void 0:p.property)||void 0===v?void 0:v.name)&&"ObjectExpression"===o.type&&!e(o.properties)){const e=o.properties;return b({code:i,startPosition:d(e).start,attrs:{[c]:t}}),!0}return!1}let E=[];const $=({format:s="paramCase",include:d=[],exclude:u=[],options:{disabledReactFunctionComponent:c,disabledStyledComponent:v}={}}={})=>({name:"rollup-plugin-data-qa",options:t=>(E=t.input?Object.values(t.input):[],t),transform(m,y){E||this.error("not found input");var g;if(!t([...E,...(g=d,a(g)||l(g)?[]:r(g)?g:[g])],u)(y))return p;const b=this.parse.bind(this);let h,$;try{h=b(m)}catch(t){this.warn(`${y} - ${t}`)}if(!h)return p;let P="";const O=[];return o(h,{enter(t,o){if($=$||new i(m),!c){const i=j({node:t,parent:o});if(i&&!O.includes(i)&&O.push(i),!e(O)){N({code:$,componentName:f(n(O),s),node:t,parent:o})&&O.pop()}}if(!v&&(P=function(t){return"VariableDeclarator"===t.type&&t.id?t.id.name:""}(t)||P,P)){x({code:$,styledComponentName:f(P,s),node:t,parent:o})&&(P="")}}}),$?{code:$.toString(),map:$.generateMap({file:y,includeContent:!0,hires:!0})}:p}});export{$ as injectDataQa};