jotai
Version:
👻 Next gen state management that will spook you
5 lines (4 loc) • 1.27 kB
JavaScript
System.register(["path","@babel/template"],function(d){"use strict";var n,l;return{setters:[function(t){n=t.default},function(t){l=t.default}],execute:function(){d("default",u);function t(e,i){if(e.isIdentifier(i)&&m.includes(i.name))return!0;if(e.isMemberExpression(i)){const{property:a}=i;if(e.isIdentifier(a)&&m.includes(a.name))return!0}return!1}const m=["atom","atomFamily","atomWithDefault","atomWithObservable","atomWithReducer","atomWithReset","atomWithStorage","freezeAtom","loadable","selectAtom","splitAtom"];function u({types:e}){return{visitor:{ExportDefaultDeclaration(i,a){const{node:r}=i;if(e.isCallExpression(r.declaration)&&t(e,r.declaration.callee)){const o=a.filename||"unknown";let s=n.basename(o,n.extname(o));s==="index"&&(s=n.basename(n.dirname(o)));const f=l(`
const %%atomIdentifier%% = %%atom%%;
export default %%atomIdentifier%%
`)({atomIdentifier:e.identifier(s),atom:r.declaration});i.replaceWithMultiple(f)}},VariableDeclarator(i){e.isIdentifier(i.node.id)&&e.isCallExpression(i.node.init)&&t(e,i.node.init.callee)&&i.parentPath.insertAfter(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(i.node.id.name),e.identifier("debugLabel")),e.stringLiteral(i.node.id.name))))}}}}}}});