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