UNPKG

2.84 kBJavaScriptView Raw
1System.register(["path","@babel/template"],function(f){"use strict";var s,l;return{setters:[function(n){s=n.default},function(n){l=n.default}],execute:function(){f("default",b);function n(e,t){if(e.isIdentifier(t)&&d.includes(t.name))return!0;if(e.isMemberExpression(t)){const{property:i}=t;if(e.isIdentifier(i)&&d.includes(i.name))return!0}return!1}const d=["abortableAtom","atom","atomFamily","atomWithDefault","atomWithHash","atomWithImmer","atomWithInfiniteQuery","atomWithMachine","atomWithMutation","atomWithObservable","atomWithProxy","atomWithQuery","atomWithReducer","atomWithReset","atomWithSubscription","atomWithStorage","atomWithStore","freezeAtom","loadable","selectAtom","splitAtom"],u=l.default||l;function h({types:e}){return{visitor:{ExportDefaultDeclaration(t,i){const{node:a}=t;if(e.isCallExpression(a.declaration)&&n(e,a.declaration.callee)){const o=i.filename||"unknown";let r=s.basename(o,s.extname(o));r==="index"&&(r=s.basename(s.dirname(o)));const c=u(`
2 const %%atomIdentifier%% = %%atom%%;
3 export default %%atomIdentifier%%
4 `)({atomIdentifier:e.identifier(r),atom:a.declaration});t.replaceWithMultiple(c)}},VariableDeclarator(t){e.isIdentifier(t.node.id)&&e.isCallExpression(t.node.init)&&n(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))))}}}}const m=l.default||l;function p({types:e}){return{pre({opts:t}){if(!t.filename)throw new Error("Filename must be available")},visitor:{Program:{exit(t){const i=m(`
5 globalThis.jotaiAtomCache = globalThis.jotaiAtomCache || {
6 cache: new Map(),
7 get(name, inst) {
8 if (this.cache.has(name)) {
9 return this.cache.get(name)
10 }
11 this.cache.set(name, inst)
12 return inst
13 },
14 }`)();t.unshiftContainer("body",i)}},ExportDefaultDeclaration(t,i){const{node:a}=t;if(e.isCallExpression(a.declaration)&&n(e,a.declaration.callee)){const o=`${i.filename||"unknown"}/defaultExport`,r=m("export default globalThis.jotaiAtomCache.get(%%atomKey%%, %%atom%%)")({atomKey:e.stringLiteral(o),atom:a.declaration});t.replaceWith(r)}},VariableDeclarator(t,i){var a,o;if(e.isIdentifier(t.node.id)&&e.isCallExpression(t.node.init)&&n(e,t.node.init.callee)&&(((a=t.parentPath.parentPath)==null?void 0:a.isProgram())||((o=t.parentPath.parentPath)==null?void 0:o.isExportNamedDeclaration()))){const r=`${i.filename||"unknown"}/${t.node.id.name}`,c=m("const %%atomIdentifier%% = globalThis.jotaiAtomCache.get(%%atomKey%%, %%atom%%)")({atomIdentifier:e.identifier(t.node.id.name),atomKey:e.stringLiteral(r),atom:t.node.init});t.parentPath.replaceWith(c)}}}}}function b(){return{plugins:[h,p]}}}}});