jotai
Version:
👻 Primitive and flexible state management for React
2 lines (1 loc) • 1.84 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("path"),require("@babel/template")):"function"==typeof define&&define.amd?define(["path","@babel/template"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).jotaiBabelPluginDebugLabel=t(e.path,e._templateBuilder)}(this,(function(e,t){"use strict";function i(e,t,i){void 0===i&&(i=[]);var o=[].concat(a,i);if(e.isIdentifier(t)&&o.includes(t.name))return!0;if(e.isMemberExpression(t)){var n=t.property;if(e.isIdentifier(n)&&o.includes(n.name))return!0}return!1}var a=["atom","atomFamily","atomWithDefault","atomWithObservable","atomWithReducer","atomWithReset","atomWithStorage","freezeAtom","loadable","selectAtom","splitAtom","unstable_unwrap","atomWithMachine","atomWithImmer","atomWithProxy","atomWithQuery","atomWithMutation","atomWithSubscription","atomWithStore","atomWithHash","atomWithLocation","focusAtom","atomWithValidate","validateAtoms","atomWithCache","atomWithRecoilValue"],o=t.default||t;return function(t,a){var n=t.types;return{visitor:{ExportDefaultDeclaration:function(t,r){var m=t.node;if(n.isCallExpression(m.declaration)&&i(n,m.declaration.callee,null==a?void 0:a.customAtomNames)){var l=r.filename||"unknown",s=e.basename(l,e.extname(l));"index"===s&&(s=e.basename(e.dirname(l)));var d=o("\n const %%atomIdentifier%% = %%atom%%;\n export default %%atomIdentifier%%\n ")({atomIdentifier:n.identifier(s),atom:m.declaration});t.replaceWithMultiple(d)}},VariableDeclarator:function(e){n.isIdentifier(e.node.id)&&n.isCallExpression(e.node.init)&&i(n,e.node.init.callee,null==a?void 0:a.customAtomNames)&&e.parentPath.insertAfter(n.expressionStatement(n.assignmentExpression("=",n.memberExpression(n.identifier(e.node.id.name),n.identifier("debugLabel")),n.stringLiteral(e.node.id.name))))}}}}}));