UNPKG

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