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(i){n=i.default},function(i){l=i.default}],execute:function(){d("default",f);function i(e,t){if(e.isIdentifier(t)&&m.includes(t.name))return!0;if(e.isMemberExpression(t)){const{property:a}=t;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 f({types:e}){return{visitor:{ExportDefaultDeclaration(t,a){const{node:r}=t;if(e.isCallExpression(r.declaration)&&i(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 c=l(`
const %%atomIdentifier%% = %%atom%%;
export default %%atomIdentifier%%
`)({atomIdentifier:e.identifier(s),atom:r.declaration});t.replaceWithMultiple(c)}},VariableDeclarator(t){e.isIdentifier(t.node.id)&&e.isCallExpression(t.node.init)&&i(e,t.node.init.callee)&&t.parentPath.insertAfter(e.expressionStatement(e.assignmentExpression("=",e.memberExpression(e.identifier(t.node.id.name),e.identifier("debugLabel")),e.stringLiteral(t.node.id.name))))}}}}}}});