UNPKG

rollup-plugin-data-qa

Version:

[![npm](https://img.shields.io/npm/dm/rollup-plugin-data-qa.svg)](https://www.npmjs.com/package/rollup-plugin-data-qa) [![semantic-release](https://img.shields.io/badge/semantic-release-e10079.svg?logo=semantic-release)](https://github.com/semantic-releas

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