@clayroach/unplugin 0.1.0-source-trace.3 → 0.1.0-source-trace.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/cjs/index.js +12 -3
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/transformers/annotateEffects.js +141 -0
  4. package/dist/cjs/transformers/annotateEffects.js.map +1 -0
  5. package/dist/cjs/transformers/sourceTrace.js +56 -6
  6. package/dist/cjs/transformers/sourceTrace.js.map +1 -1
  7. package/dist/cjs/transformers/withSpanTrace.js +54 -2
  8. package/dist/cjs/transformers/withSpanTrace.js.map +1 -1
  9. package/dist/cjs/utils/effectDetection.js +54 -0
  10. package/dist/cjs/utils/effectDetection.js.map +1 -1
  11. package/dist/dts/index.d.ts.map +1 -1
  12. package/dist/dts/transformers/annotateEffects.d.ts +41 -0
  13. package/dist/dts/transformers/annotateEffects.d.ts.map +1 -0
  14. package/dist/dts/transformers/sourceTrace.d.ts +11 -2
  15. package/dist/dts/transformers/sourceTrace.d.ts.map +1 -1
  16. package/dist/dts/transformers/withSpanTrace.d.ts.map +1 -1
  17. package/dist/dts/utils/effectDetection.d.ts +15 -1
  18. package/dist/dts/utils/effectDetection.d.ts.map +1 -1
  19. package/dist/esm/index.js +10 -3
  20. package/dist/esm/index.js.map +1 -1
  21. package/dist/esm/transformers/annotateEffects.js +140 -0
  22. package/dist/esm/transformers/annotateEffects.js.map +1 -0
  23. package/dist/esm/transformers/sourceTrace.js +66 -7
  24. package/dist/esm/transformers/sourceTrace.js.map +1 -1
  25. package/dist/esm/transformers/withSpanTrace.js +56 -2
  26. package/dist/esm/transformers/withSpanTrace.js.map +1 -1
  27. package/dist/esm/utils/effectDetection.js +54 -0
  28. package/dist/esm/utils/effectDetection.js.map +1 -1
  29. package/package.json +2 -5
  30. package/src/index.ts +16 -3
  31. package/src/transformers/annotateEffects.ts +197 -0
  32. package/src/transformers/sourceTrace.ts +91 -9
  33. package/src/transformers/withSpanTrace.ts +74 -2
  34. package/src/utils/effectDetection.ts +49 -1
package/dist/cjs/index.js CHANGED
@@ -8,6 +8,7 @@ var _generator = _interopRequireDefault(require("@babel/generator"));
8
8
  var _parser = require("@babel/parser");
9
9
  var _traverse2 = _interopRequireDefault(require("@babel/traverse"));
10
10
  var _unplugin = require("unplugin");
11
+ var _annotateEffects = require("./transformers/annotateEffects.js");
11
12
  var _sourceTrace = require("./transformers/sourceTrace.js");
12
13
  var _withSpanTrace = require("./transformers/withSpanTrace.js");
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -49,7 +50,7 @@ function shouldTransform(id, include, exclude) {
49
50
  */
50
51
  const unpluginFactory = (options = {}) => {
51
52
  const {
52
- annotateEffects: _annotateEffects = false,
53
+ annotateEffects = false,
53
54
  exclude = DEFAULT_EXCLUDE,
54
55
  include = DEFAULT_INCLUDE,
55
56
  sourceTrace = true,
@@ -74,8 +75,15 @@ const unpluginFactory = (options = {}) => {
74
75
  if (spanTrace) {
75
76
  visitors.push((0, _withSpanTrace.createWithSpanTraceVisitor)(id));
76
77
  }
78
+ // Run annotateEffects separately (it has a simpler state)
79
+ if (annotateEffects) {
80
+ const annotateState = {
81
+ filename: id
82
+ };
83
+ traverse(ast, (0, _annotateEffects.createAnnotateEffectsVisitor)(id), undefined, annotateState);
84
+ }
77
85
  // Combine visitors
78
- if (visitors.length === 0) {
86
+ if (visitors.length === 0 && !annotateEffects) {
79
87
  return null;
80
88
  }
81
89
  // Initialize state for each visitor
@@ -85,7 +93,8 @@ const unpluginFactory = (options = {}) => {
85
93
  hoistedTraces: new Map(),
86
94
  counter: 0,
87
95
  statements: []
88
- }
96
+ },
97
+ generatorAdapters: new Map()
89
98
  }));
90
99
  // Run each visitor
91
100
  for (let i = 0; i < visitors.length; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_generator","_interopRequireDefault","require","_parser","_traverse2","_unplugin","_sourceTrace","_withSpanTrace","e","__esModule","default","traverse","_traverse","generate","_generate","DEFAULT_INCLUDE","DEFAULT_EXCLUDE","shouldTransform","id","include","exclude","pattern","includes","test","unpluginFactory","options","annotateEffects","_annotateEffects","sourceTrace","spanTrace","name","transformInclude","transform","code","ast","parse","sourceType","plugins","visitors","push","createSourceTraceVisitor","createWithSpanTraceVisitor","length","states","map","filename","hoisting","hoistedTraces","Map","counter","statements","i","undefined","output","sourceMaps","sourceFileName","unplugin","exports","createUnplugin","_default"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;AAwBA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AAA4E,SAAAD,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAiB5E;AACA,MAAMG,QAAQ,GAAe,OAAOC,kBAAS,KAAK,UAAU,GACxDA,kBAAuB,GACtBA,kBAAgD,CAACF,OAAO;AAE7D,MAAMG,QAAQ,GAAe,OAAOC,kBAAS,KAAK,UAAU,GACxDA,kBAAuB,GACtBA,kBAAgD,CAACJ,OAAO;AAsD7D;;;AAGA,MAAMK,eAAe,GAAG,CAAC,YAAY,CAAC;AAEtC;;;AAGA,MAAMC,eAAe,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC;AAEpD;;;AAGA,SAASC,eAAeA,CACtBC,EAAU,EACVC,OAAuC,EACvCC,OAAuC;EAEvC;EACA,KAAK,MAAMC,OAAO,IAAID,OAAO,EAAE;IAC7B,IAAI,OAAOC,OAAO,KAAK,QAAQ,EAAE;MAC/B,IAAIH,EAAE,CAACI,QAAQ,CAACD,OAAO,CAAC,EAAE,OAAO,KAAK;IACxC,CAAC,MAAM,IAAIA,OAAO,CAACE,IAAI,CAACL,EAAE,CAAC,EAAE;MAC3B,OAAO,KAAK;IACd;EACF;EAEA;EACA,KAAK,MAAMG,OAAO,IAAIF,OAAO,EAAE;IAC7B,IAAI,OAAOE,OAAO,KAAK,QAAQ,EAAE;MAC/B,IAAIH,EAAE,CAACI,QAAQ,CAACD,OAAO,CAAC,EAAE,OAAO,IAAI;IACvC,CAAC,MAAM,IAAIA,OAAO,CAACE,IAAI,CAACL,EAAE,CAAC,EAAE;MAC3B,OAAO,IAAI;IACb;EACF;EAEA,OAAO,KAAK;AACd;AAEA;;;AAGA,MAAMM,eAAe,GAAqDA,CAACC,OAAO,GAAG,EAAE,KAAI;EACzF,MAAM;IACJC,eAAe,EAAEC,gBAAgB,GAAG,KAAK;IACzCP,OAAO,GAAGJ,eAAe;IACzBG,OAAO,GAAGJ,eAAe;IACzBa,WAAW,GAAG,IAAI;IAClBC,SAAS,GAAG;EAAI,CACjB,GAAGJ,OAAO;EAEX,OAAO;IACLK,IAAI,EAAE,kBAAkB;IAExBC,gBAAgBA,CAACb,EAAE;MACjB,OAAOD,eAAe,CAACC,EAAE,EAAEC,OAAiC,EAAEC,OAAiC,CAAC;IAClG,CAAC;IAEDY,SAASA,CAACC,IAAI,EAAEf,EAAE;MAChB;MACA,MAAMgB,GAAG,GAAG,IAAAC,aAAK,EAACF,IAAI,EAAE;QACtBG,UAAU,EAAE,QAAQ;QACpBC,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK;OAC9B,CAAC;MAEF;MACA,MAAMC,QAAQ,GAAmC,EAAE;MAEnD,IAAIV,WAAW,EAAE;QACfU,QAAQ,CAACC,IAAI,CAAC,IAAAC,qCAAwB,EAACtB,EAAE,CAAC,CAAC;MAC7C;MAEA,IAAIW,SAAS,EAAE;QACbS,QAAQ,CAACC,IAAI,CAAC,IAAAE,yCAA0B,EAACvB,EAAE,CAAC,CAAC;MAC/C;MAEA;MACA,IAAIoB,QAAQ,CAACI,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,IAAI;MACb;MAEA;MACA,MAAMC,MAAM,GAAGL,QAAQ,CAACM,GAAG,CAAC,OAAO;QACjCC,QAAQ,EAAE3B,EAAE;QACZ4B,QAAQ,EAAE;UACRC,aAAa,EAAE,IAAIC,GAAG,EAAE;UACxBC,OAAO,EAAE,CAAC;UACVC,UAAU,EAAE;;OAEf,CAAC,CAAC;MAEH;MACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGb,QAAQ,CAACI,MAAM,EAAES,CAAC,EAAE,EAAE;QACxCxC,QAAQ,CAACuB,GAAG,EAAEI,QAAQ,CAACa,CAAC,CAAC,EAAEC,SAAS,EAAET,MAAM,CAACQ,CAAC,CAAC,CAAC;MAClD;MAEA;MACA,MAAME,MAAM,GAAGxC,QAAQ,CAACqB,GAAG,EAAE;QAC3BoB,UAAU,EAAE,IAAI;QAChBC,cAAc,EAAErC;OACjB,EAAEe,IAAI,CAAC;MAER,OAAO;QACLA,IAAI,EAAEoB,MAAM,CAACpB,IAAI;QACjBW,GAAG,EAAES,MAAM,CAACT;OACb;IACH;GACD;AACH,CAAC;AAED;;;;;AAKO,MAAMY,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAA+D,IAAAE,wBAAc,EAAClC,eAAe,CAAC;AAEnH;;;;;AAAA,IAAAmC,QAAA,GAAAF,OAAA,CAAA/C,OAAA,GAKe8C,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_generator","_interopRequireDefault","require","_parser","_traverse2","_unplugin","_annotateEffects","_sourceTrace","_withSpanTrace","e","__esModule","default","traverse","_traverse","generate","_generate","DEFAULT_INCLUDE","DEFAULT_EXCLUDE","shouldTransform","id","include","exclude","pattern","includes","test","unpluginFactory","options","annotateEffects","sourceTrace","spanTrace","name","transformInclude","transform","code","ast","parse","sourceType","plugins","visitors","push","createSourceTraceVisitor","createWithSpanTraceVisitor","annotateState","filename","createAnnotateEffectsVisitor","undefined","length","states","map","hoisting","hoistedTraces","Map","counter","statements","generatorAdapters","i","output","sourceMaps","sourceFileName","unplugin","exports","createUnplugin","_default"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.annotateEffectsTransformer = annotateEffectsTransformer;
7
+ exports.createAnnotateEffectsVisitor = createAnnotateEffectsVisitor;
8
+ const PURE_ANNOTATION = "#__PURE__";
9
+ /**
10
+ * Checks if a node already has a PURE annotation.
11
+ */
12
+ function isPureAnnotated(node) {
13
+ const leadingComments = node.leadingComments;
14
+ if (!leadingComments) {
15
+ return false;
16
+ }
17
+ return leadingComments.some(comment => /[@#]__PURE__/.test(comment.value));
18
+ }
19
+ /**
20
+ * Adds a PURE annotation comment to a node.
21
+ */
22
+ function annotateAsPure(path) {
23
+ if (isPureAnnotated(path.node)) {
24
+ return;
25
+ }
26
+ path.addComment("leading", PURE_ANNOTATION);
27
+ }
28
+ /**
29
+ * Checks if the parent is a CallExpression or NewExpression.
30
+ */
31
+ function hasCallableParent(path) {
32
+ const parentPath = path.parentPath;
33
+ if (!parentPath) return false;
34
+ return parentPath.isCallExpression() || parentPath.isNewExpression();
35
+ }
36
+ /**
37
+ * Checks if this node is used as a callee (e.g., `foo()` where foo is the callee).
38
+ */
39
+ function isUsedAsCallee(path) {
40
+ if (!hasCallableParent(path)) {
41
+ return false;
42
+ }
43
+ const parentPath = path.parentPath;
44
+ return parentPath.get("callee") === path;
45
+ }
46
+ /**
47
+ * Checks if this node is inside a callee chain (e.g., `foo()()` or `foo.bar()`).
48
+ */
49
+ function isInCallee(path) {
50
+ let current = path;
51
+ do {
52
+ current = current.parentPath;
53
+ if (!current) return false;
54
+ if (isUsedAsCallee(current)) {
55
+ return true;
56
+ }
57
+ } while (!current.isStatement() && !current.isFunction());
58
+ return false;
59
+ }
60
+ /**
61
+ * Checks if this expression is executed during module initialization
62
+ * (not inside a function that isn't immediately invoked).
63
+ */
64
+ function isExecutedDuringInitialization(path) {
65
+ let functionParent = path.getFunctionParent();
66
+ while (functionParent) {
67
+ if (!isUsedAsCallee(functionParent)) {
68
+ return false;
69
+ }
70
+ functionParent = functionParent.getFunctionParent();
71
+ }
72
+ return true;
73
+ }
74
+ /**
75
+ * Checks if this expression is in an assignment context
76
+ * (variable declaration, assignment expression, or class).
77
+ */
78
+ function isInAssignmentContext(path) {
79
+ const statement = path.getStatementParent();
80
+ if (!statement) return false;
81
+ let currentPath = path;
82
+ do {
83
+ currentPath = currentPath.parentPath;
84
+ if (!currentPath) return false;
85
+ if (currentPath.isVariableDeclaration() || currentPath.isAssignmentExpression() || currentPath.isClass()) {
86
+ return true;
87
+ }
88
+ } while (currentPath !== statement);
89
+ return false;
90
+ }
91
+ /**
92
+ * Visitor function for CallExpression and NewExpression nodes.
93
+ */
94
+ function callableExpressionVisitor(path, _state) {
95
+ // Skip if this is used as a callee (e.g., foo()())
96
+ if (isUsedAsCallee(path)) {
97
+ return;
98
+ }
99
+ // Skip if this is inside a callee chain
100
+ if (isInCallee(path)) {
101
+ return;
102
+ }
103
+ // Skip if not executed during initialization
104
+ if (!isExecutedDuringInitialization(path)) {
105
+ return;
106
+ }
107
+ // Must be in assignment context or export default
108
+ const statement = path.getStatementParent();
109
+ if (!isInAssignmentContext(path) && !statement?.isExportDefaultDeclaration()) {
110
+ return;
111
+ }
112
+ annotateAsPure(path);
113
+ }
114
+ /**
115
+ * Creates a Babel visitor that adds PURE annotations to call expressions.
116
+ */
117
+ function createAnnotateEffectsVisitor(filename, _options) {
118
+ return {
119
+ Program: {
120
+ enter(_path, state) {
121
+ state.filename = filename;
122
+ }
123
+ },
124
+ CallExpression(path, state) {
125
+ callableExpressionVisitor(path, state);
126
+ },
127
+ NewExpression(path, state) {
128
+ callableExpressionVisitor(path, state);
129
+ }
130
+ };
131
+ }
132
+ /**
133
+ * Creates the annotate effects transformer plugin.
134
+ */
135
+ function annotateEffectsTransformer(options) {
136
+ return {
137
+ name: "effect-annotate-pure-calls",
138
+ visitor: createAnnotateEffectsVisitor("", options)
139
+ };
140
+ }
141
+ //# sourceMappingURL=annotateEffects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotateEffects.js","names":["PURE_ANNOTATION","isPureAnnotated","node","leadingComments","some","comment","test","value","annotateAsPure","path","addComment","hasCallableParent","parentPath","isCallExpression","isNewExpression","isUsedAsCallee","get","isInCallee","current","isStatement","isFunction","isExecutedDuringInitialization","functionParent","getFunctionParent","isInAssignmentContext","statement","getStatementParent","currentPath","isVariableDeclaration","isAssignmentExpression","isClass","callableExpressionVisitor","_state","isExportDefaultDeclaration","createAnnotateEffectsVisitor","filename","_options","Program","enter","_path","state","CallExpression","NewExpression","annotateEffectsTransformer","options","name","visitor"],"sources":["../../../src/transformers/annotateEffects.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -9,6 +9,21 @@ var t = _interopRequireWildcard(require("@babel/types"));
9
9
  var _effectDetection = require("../utils/effectDetection.js");
10
10
  var _hoisting = require("../utils/hoisting.js");
11
11
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ /**
13
+ * Default adapter name to use when adding one to modern pattern generators.
14
+ */
15
+ const INJECTED_ADAPTER_NAME = "$";
16
+ /**
17
+ * Gets the adapter parameter name from a generator function, or null if none.
18
+ */
19
+ function getAdapterParamName(gen) {
20
+ if (gen.params.length === 0) return null;
21
+ const firstParam = gen.params[0];
22
+ if (t.isIdentifier(firstParam)) {
23
+ return firstParam.name;
24
+ }
25
+ return null;
26
+ }
12
27
  /**
13
28
  * Creates a Babel visitor that injects source trace metadata into Effect.gen yields.
14
29
  */
@@ -18,6 +33,7 @@ function createSourceTraceVisitor(filename, _options) {
18
33
  enter(_path, state) {
19
34
  state.filename = filename;
20
35
  state.hoisting = (0, _hoisting.createHoistingState)();
36
+ state.generatorAdapters = new Map();
21
37
  },
22
38
  exit(path, state) {
23
39
  // Prepend all hoisted statements to the program body
@@ -26,22 +42,56 @@ function createSourceTraceVisitor(filename, _options) {
26
42
  }
27
43
  }
28
44
  },
45
+ // Process Effect.gen calls to detect and optionally add adapter parameters
46
+ CallExpression(path, state) {
47
+ const node = path.node;
48
+ if (!(0, _effectDetection.isEffectGenCall)(node)) return;
49
+ const generator = (0, _effectDetection.getEffectGenGenerator)(node);
50
+ if (!generator) return;
51
+ // Check if generator already has an adapter parameter
52
+ const existingAdapter = getAdapterParamName(generator);
53
+ if (existingAdapter) {
54
+ // Generator uses legacy adapter pattern - store the name
55
+ state.generatorAdapters.set(generator, existingAdapter);
56
+ } else {
57
+ // Modern pattern - add adapter parameter
58
+ generator.params.unshift(t.identifier(INJECTED_ADAPTER_NAME));
59
+ state.generatorAdapters.set(generator, INJECTED_ADAPTER_NAME);
60
+ }
61
+ },
29
62
  YieldExpression(path, state) {
30
63
  const node = path.node;
31
- // Only transform yield* _(effect) patterns
32
- if (!(0, _effectDetection.isYieldAdapterCall)(node)) {
64
+ // Must be yield* (delegating)
65
+ if (!node.delegate || !node.argument) return;
66
+ // Find the enclosing generator function
67
+ let generatorPath = path.getFunctionParent();
68
+ if (!generatorPath) return;
69
+ const generatorNode = generatorPath.node;
70
+ if (!("generator" in generatorNode) || !generatorNode.generator) return;
71
+ // Get the adapter name for this generator
72
+ const adapterName = state.generatorAdapters.get(generatorNode);
73
+ if (!adapterName) {
74
+ // Not inside an Effect.gen - skip
33
75
  return;
34
76
  }
35
77
  // Get source location
36
78
  const loc = node.loc;
37
79
  if (!loc) return;
38
- // Extract label from parent (e.g., `const user = yield* _(...)`)
80
+ // Extract label from parent (e.g., `const user = yield* ...`)
39
81
  const label = (0, _hoisting.extractLabelFromParent)(path);
40
82
  // Get or create hoisted trace identifier
41
83
  const traceId = (0, _hoisting.getOrCreateTraceIdentifier)(state.hoisting, state.filename, loc.start.line, loc.start.column, label);
42
- // Inject trace as second argument: _(effect) -> _(effect, trace)
43
- const callExpr = node.argument;
44
- callExpr.arguments.push(t.cloneNode(traceId));
84
+ // Check if this is already an adapter call
85
+ if (t.isCallExpression(node.argument) && (0, _effectDetection.isYieldAdapterCallWithName)(node, adapterName)) {
86
+ // Legacy pattern: _(effect) -> _(effect, trace)
87
+ const callExpr = node.argument;
88
+ callExpr.arguments.push(t.cloneNode(traceId));
89
+ } else if ((0, _effectDetection.isModernYield)(node)) {
90
+ // Modern pattern: effect -> $(effect, trace)
91
+ const originalArg = node.argument;
92
+ const wrappedCall = t.callExpression(t.identifier(adapterName), [originalArg, t.cloneNode(traceId)]);
93
+ node.argument = wrappedCall;
94
+ }
45
95
  }
46
96
  };
47
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sourceTrace.js","names":["t","_interopRequireWildcard","require","_effectDetection","_hoisting","e","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createSourceTraceVisitor","filename","_options","Program","enter","_path","state","hoisting","createHoistingState","exit","path","statements","length","unshiftContainer","YieldExpression","node","isYieldAdapterCall","loc","label","extractLabelFromParent","traceId","getOrCreateTraceIdentifier","start","line","column","callExpr","argument","arguments","push","cloneNode","sourceTraceTransformer","options","name","visitor"],"sources":["../../../src/transformers/sourceTrace.ts"],"sourcesContent":[null],"mappings":";;;;;;;AAUA,IAAAA,CAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAK6B,SAAAD,wBAAAI,CAAA,EAAAL,CAAA,6BAAAM,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAL,uBAAA,YAAAA,CAAAI,CAAA,EAAAL,CAAA,SAAAA,CAAA,IAAAK,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,MAAAK,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAT,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAO,CAAA,MAAAF,CAAA,GAAAV,CAAA,GAAAQ,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAV,CAAA,UAAAK,CAAA,CAAAM,GAAA,CAAAX,CAAA,GAAAK,CAAA,CAAAO,GAAA,CAAAZ,CAAA,EAAAO,CAAA,gBAAAZ,CAAA,IAAAK,CAAA,gBAAAL,CAAA,OAAAkB,cAAA,CAAAC,IAAA,CAAAd,CAAA,EAAAL,CAAA,OAAAW,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAjB,CAAA,EAAAL,CAAA,OAAAW,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAZ,CAAA,EAAAW,CAAA,IAAAC,CAAA,CAAAZ,CAAA,IAAAK,CAAA,CAAAL,CAAA,WAAAY,CAAA,KAAAP,CAAA,EAAAL,CAAA;AAqB7B;;;AAGM,SAAUuB,wBAAwBA,CACtCC,QAAgB,EAChBC,QAA6B;EAE7B,OAAO;IACLC,OAAO,EAAE;MACPC,KAAKA,CAACC,KAAK,EAAEC,KAAK;QAChBA,KAAK,CAACL,QAAQ,GAAGA,QAAQ;QACzBK,KAAK,CAACC,QAAQ,GAAG,IAAAC,6BAAmB,GAAE;MACxC,CAAC;MACDC,IAAIA,CAACC,IAAI,EAAEJ,KAAK;QACd;QACA,IAAIA,KAAK,CAACC,QAAQ,CAACI,UAAU,CAACC,MAAM,GAAG,CAAC,EAAE;UACxCF,IAAI,CAACG,gBAAgB,CAAC,MAAM,EAAEP,KAAK,CAACC,QAAQ,CAACI,UAAU,CAAC;QAC1D;MACF;KACD;IAEDG,eAAeA,CAACJ,IAAiC,EAAEJ,KAAK;MACtD,MAAMS,IAAI,GAAGL,IAAI,CAACK,IAAI;MAEtB;MACA,IAAI,CAAC,IAAAC,mCAAkB,EAACD,IAAI,CAAC,EAAE;QAC7B;MACF;MAEA;MACA,MAAME,GAAG,GAAGF,IAAI,CAACE,GAAG;MACpB,IAAI,CAACA,GAAG,EAAE;MAEV;MACA,MAAMC,KAAK,GAAG,IAAAC,gCAAsB,EAACT,IAAI,CAAC;MAE1C;MACA,MAAMU,OAAO,GAAG,IAAAC,oCAA0B,EACxCf,KAAK,CAACC,QAAQ,EACdD,KAAK,CAACL,QAAQ,EACdgB,GAAG,CAACK,KAAK,CAACC,IAAI,EACdN,GAAG,CAACK,KAAK,CAACE,MAAM,EAChBN,KAAK,CACN;MAED;MACA,MAAMO,QAAQ,GAAGV,IAAI,CAACW,QAA4B;MAClDD,QAAQ,CAACE,SAAS,CAACC,IAAI,CAACnD,CAAC,CAACoD,SAAS,CAACT,OAAO,CAAC,CAAC;IAC/C;GACD;AACH;AAEA;;;AAGM,SAAUU,sBAAsBA,CAACC,OAA4B;EAIjE,OAAO;IACLC,IAAI,EAAE,qBAAqB;IAC3BC,OAAO,EAAEjC,wBAAwB,CAAC,EAAE,EAAE+B,OAAO;GAC9C;AACH","ignoreList":[]}
1
+ {"version":3,"file":"sourceTrace.js","names":["t","_interopRequireWildcard","require","_effectDetection","_hoisting","e","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","INJECTED_ADAPTER_NAME","getAdapterParamName","gen","params","length","firstParam","isIdentifier","name","createSourceTraceVisitor","filename","_options","Program","enter","_path","state","hoisting","createHoistingState","generatorAdapters","Map","exit","path","statements","unshiftContainer","CallExpression","node","isEffectGenCall","generator","getEffectGenGenerator","existingAdapter","unshift","identifier","YieldExpression","delegate","argument","generatorPath","getFunctionParent","generatorNode","adapterName","loc","label","extractLabelFromParent","traceId","getOrCreateTraceIdentifier","start","line","column","isCallExpression","isYieldAdapterCallWithName","callExpr","arguments","push","cloneNode","isModernYield","originalArg","wrappedCall","callExpression","sourceTraceTransformer","options","visitor"],"sources":["../../../src/transformers/sourceTrace.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -41,6 +41,44 @@ function isDataFirstCall(node) {
41
41
  // Default to data-last pattern
42
42
  return false;
43
43
  }
44
+ /**
45
+ * Extracts the basename from a filepath.
46
+ */
47
+ function basename(filepath) {
48
+ const parts = filepath.split(/[/\\]/);
49
+ return parts[parts.length - 1] || filepath;
50
+ }
51
+ /**
52
+ * Modifies a span name to include source location.
53
+ * "fetchUser" -> "fetchUser (index.ts:9)"
54
+ */
55
+ function createSpanNameWithLocation(originalName, filepath, line) {
56
+ const filename = basename(filepath);
57
+ return `${originalName} (${filename}:${line})`;
58
+ }
59
+ /**
60
+ * Creates the source location suffix string.
61
+ */
62
+ function createLocationSuffix(filepath, line) {
63
+ const filename = basename(filepath);
64
+ return ` (${filename}:${line})`;
65
+ }
66
+ /**
67
+ * Modifies a template literal span name to include source location.
68
+ * Appends the location to the last quasi of the template.
69
+ */
70
+ function modifyTemplateLiteralWithLocation(templateLiteral, filepath, line) {
71
+ const suffix = createLocationSuffix(filepath, line);
72
+ const quasis = [...templateLiteral.quasis];
73
+ const lastQuasi = quasis[quasis.length - 1];
74
+ // Create new quasi with appended location
75
+ const newLastQuasi = t.templateElement({
76
+ raw: lastQuasi.value.raw + suffix,
77
+ cooked: (lastQuasi.value.cooked || lastQuasi.value.raw) + suffix
78
+ }, lastQuasi.tail);
79
+ quasis[quasis.length - 1] = newLastQuasi;
80
+ return t.templateLiteral(quasis, [...templateLiteral.expressions]);
81
+ }
44
82
  /**
45
83
  * Creates the attributes object with source location.
46
84
  */
@@ -106,7 +144,14 @@ function createWithSpanTraceVisitor(filename, _options) {
106
144
  const isDataFirst = isDataFirstCall(node);
107
145
  if (isDataFirst) {
108
146
  // Data-first: withSpan(effect, "name", options?)
109
- // Options is at index 2
147
+ // Name is at index 1, options at index 2
148
+ const nameArg = node.arguments[1];
149
+ if (t.isStringLiteral(nameArg)) {
150
+ const newName = createSpanNameWithLocation(nameArg.value, state.filename, line);
151
+ node.arguments[1] = t.stringLiteral(newName);
152
+ } else if (t.isTemplateLiteral(nameArg)) {
153
+ node.arguments[1] = modifyTemplateLiteralWithLocation(nameArg, state.filename, line);
154
+ }
110
155
  const optionsArg = node.arguments[2];
111
156
  const newOptions = mergeOrCreateOptions(optionsArg, sourceAttrs);
112
157
  if (node.arguments.length >= 3) {
@@ -118,7 +163,14 @@ function createWithSpanTraceVisitor(filename, _options) {
118
163
  }
119
164
  } else {
120
165
  // Data-last: withSpan("name", options?)
121
- // Options is at index 1
166
+ // Name is at index 0, options at index 1
167
+ const nameArg = node.arguments[0];
168
+ if (t.isStringLiteral(nameArg)) {
169
+ const newName = createSpanNameWithLocation(nameArg.value, state.filename, line);
170
+ node.arguments[0] = t.stringLiteral(newName);
171
+ } else if (t.isTemplateLiteral(nameArg)) {
172
+ node.arguments[0] = modifyTemplateLiteralWithLocation(nameArg, state.filename, line);
173
+ }
122
174
  const optionsArg = node.arguments[1];
123
175
  const newOptions = mergeOrCreateOptions(optionsArg, sourceAttrs);
124
176
  if (node.arguments.length >= 2) {
@@ -1 +1 @@
1
- {"version":3,"file":"withSpanTrace.js","names":["t","_interopRequireWildcard","require","_hoisting","e","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isWithSpanCall","node","callee","type","property","name","isDataFirstCall","arguments","length","isStringLiteral","createSourceAttributes","filepath","line","column","objectExpression","objectProperty","stringLiteral","numericLiteral","mergeOrCreateOptions","existingOptions","sourceAttrs","isSpreadElement","isArgumentPlaceholder","identifier","isObjectExpression","existingAttrsIndex","properties","findIndex","prop","isObjectProperty","isIdentifier","key","value","existingAttrsProp","mergedAttrs","spreadElement","newProperties","createWithSpanTraceVisitor","filename","_options","Program","enter","_path","state","hoisting","createHoistingState","exit","path","statements","unshiftContainer","CallExpression","loc","start","isDataFirst","optionsArg","newOptions","push","withSpanTraceTransformer","options","visitor"],"sources":["../../../src/transformers/withSpanTrace.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"withSpanTrace.js","names":["t","_interopRequireWildcard","require","_hoisting","e","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isWithSpanCall","node","callee","type","property","name","isDataFirstCall","arguments","length","isStringLiteral","basename","filepath","parts","split","createSpanNameWithLocation","originalName","line","filename","createLocationSuffix","modifyTemplateLiteralWithLocation","templateLiteral","suffix","quasis","lastQuasi","newLastQuasi","templateElement","raw","value","cooked","tail","expressions","createSourceAttributes","column","objectExpression","objectProperty","stringLiteral","numericLiteral","mergeOrCreateOptions","existingOptions","sourceAttrs","isSpreadElement","isArgumentPlaceholder","identifier","isObjectExpression","existingAttrsIndex","properties","findIndex","prop","isObjectProperty","isIdentifier","key","existingAttrsProp","mergedAttrs","spreadElement","newProperties","createWithSpanTraceVisitor","_options","Program","enter","_path","state","hoisting","createHoistingState","exit","path","statements","unshiftContainer","CallExpression","loc","start","isDataFirst","nameArg","newName","isTemplateLiteral","optionsArg","newOptions","push","withSpanTraceTransformer","options","visitor"],"sources":["../../../src/transformers/withSpanTrace.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,10 +3,21 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.getEffectGenGenerator = getEffectGenGenerator;
6
7
  exports.isAdapterCall = isAdapterCall;
7
8
  exports.isEffectGenCall = isEffectGenCall;
8
9
  exports.isInsideEffectGen = isInsideEffectGen;
10
+ exports.isModernYield = isModernYield;
9
11
  exports.isYieldAdapterCall = isYieldAdapterCall;
12
+ exports.isYieldAdapterCallWithName = isYieldAdapterCallWithName;
13
+ var t = _interopRequireWildcard(require("@babel/types"));
14
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
+ /**
16
+ * Utilities for detecting Effect patterns in AST nodes.
17
+ *
18
+ * @since 0.1.0
19
+ */
20
+
10
21
  /**
11
22
  * Checks if a CallExpression is `Effect.gen(...)`.
12
23
  */
@@ -55,4 +66,47 @@ function isYieldAdapterCall(node) {
55
66
  if (node.argument.type !== "CallExpression") return false;
56
67
  return isAdapterCall(node.argument);
57
68
  }
69
+ /**
70
+ * Checks if a YieldExpression is a `yield* _(effect)` pattern with a specific adapter name.
71
+ */
72
+ function isYieldAdapterCallWithName(node, adapterName) {
73
+ if (!node.delegate) return false; // Must be yield*, not yield
74
+ if (!node.argument) return false;
75
+ if (node.argument.type !== "CallExpression") return false;
76
+ const callee = node.argument.callee;
77
+ return callee.type === "Identifier" && callee.name === adapterName;
78
+ }
79
+ /**
80
+ * Checks if a YieldExpression is a modern `yield* effect` pattern (without adapter).
81
+ * This is the pattern used when Effect.gen is called without the adapter parameter.
82
+ */
83
+ function isModernYield(node) {
84
+ if (!node.delegate) return false; // Must be yield*, not yield
85
+ if (!node.argument) return false;
86
+ // Modern yields are NOT adapter calls - they yield the effect directly
87
+ if (node.argument.type === "CallExpression" && isAdapterCall(node.argument)) {
88
+ return false;
89
+ }
90
+ return true;
91
+ }
92
+ /**
93
+ * Gets the generator function from an Effect.gen call.
94
+ * Returns the FunctionExpression/ArrowFunctionExpression if found.
95
+ */
96
+ function getEffectGenGenerator(node) {
97
+ // Effect.gen can be called with 1 or 2 arguments:
98
+ // Effect.gen(function*() { ... }) - 1 arg
99
+ // Effect.gen(context, function*() { ... }) - 2 args
100
+ const args = node.arguments;
101
+ for (let i = args.length - 1; i >= 0; i--) {
102
+ const arg = args[i];
103
+ if (t.isFunctionExpression(arg) && arg.generator) {
104
+ return arg;
105
+ }
106
+ if (t.isArrowFunctionExpression(arg) && arg.generator) {
107
+ return arg;
108
+ }
109
+ }
110
+ return null;
111
+ }
58
112
  //# sourceMappingURL=effectDetection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"effectDetection.js","names":["isEffectGenCall","node","type","callee","object","name","property","isInsideEffectGen","path","current","parentPath","parent","isAdapterCall","isYieldAdapterCall","delegate","argument"],"sources":["../../../src/utils/effectDetection.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;AAOA;;;AAGM,SAAUA,eAAeA,CAACC,IAAY;EAC1C,IAAIA,IAAI,CAACC,IAAI,KAAK,gBAAgB,EAAE,OAAO,KAAK;EAEhD,MAAMC,MAAM,GAAGF,IAAI,CAACE,MAAM;EAE1B;EACA,IACEA,MAAM,CAACD,IAAI,KAAK,kBAAkB,IAClCC,MAAM,CAACC,MAAM,CAACF,IAAI,KAAK,YAAY,IACnCC,MAAM,CAACC,MAAM,CAACC,IAAI,KAAK,QAAQ,IAC/BF,MAAM,CAACG,QAAQ,CAACJ,IAAI,KAAK,YAAY,IACrCC,MAAM,CAACG,QAAQ,CAACD,IAAI,KAAK,KAAK,EAC9B;IACA,OAAO,IAAI;EACb;EAEA;EACA,IACEF,MAAM,CAACD,IAAI,KAAK,kBAAkB,IAClCC,MAAM,CAACG,QAAQ,CAACJ,IAAI,KAAK,YAAY,IACrCC,MAAM,CAACG,QAAQ,CAACD,IAAI,KAAK,KAAK,EAC9B;IACA,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd;AAWA;;;;;AAKM,SAAUE,iBAAiBA,CAACC,IAAc;EAC9C,IAAIC,OAAO,GAAGD,IAAI,CAACE,UAAU;EAC7B,OAAOD,OAAO,EAAE;IACd,MAAMR,IAAI,GAAGQ,OAAO,CAACE,MAA4B;IACjD,IAAIV,IAAI,IAAID,eAAe,CAACC,IAAI,CAAC,EAAE;MACjC,OAAO,IAAI;IACb;IACAQ,OAAO,GAAGA,OAAO,CAACC,UAAU;EAC9B;EACA,OAAO,KAAK;AACd;AAEA;;;;AAIM,SAAUE,aAAaA,CAACX,IAAsB;EAClD,OAAOA,IAAI,CAACE,MAAM,CAACD,IAAI,KAAK,YAAY,IAAID,IAAI,CAACE,MAAM,CAACE,IAAI,KAAK,GAAG;AACtE;AAEA;;;AAGM,SAAUQ,kBAAkBA,CAACZ,IAAuB;EACxD,IAAI,CAACA,IAAI,CAACa,QAAQ,EAAE,OAAO,KAAK,EAAC;EACjC,IAAI,CAACb,IAAI,CAACc,QAAQ,EAAE,OAAO,KAAK;EAChC,IAAId,IAAI,CAACc,QAAQ,CAACb,IAAI,KAAK,gBAAgB,EAAE,OAAO,KAAK;EACzD,OAAOU,aAAa,CAACX,IAAI,CAACc,QAAQ,CAAC;AACrC","ignoreList":[]}
1
+ {"version":3,"file":"effectDetection.js","names":["t","_interopRequireWildcard","require","e","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isEffectGenCall","node","type","callee","object","name","property","isInsideEffectGen","path","current","parentPath","parent","isAdapterCall","isYieldAdapterCall","delegate","argument","isYieldAdapterCallWithName","adapterName","isModernYield","getEffectGenGenerator","args","arguments","length","arg","isFunctionExpression","generator","isArrowFunctionExpression"],"sources":["../../../src/utils/effectDetection.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAwC,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAoCtF;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAE9B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAElC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAExC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACzC;AAgHD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,gBAAgB,CAAC,mBAAmB,GAAG,SAAS,EAAE,OAAO,CAAmC,CAAA;AAEnH;;;;GAIG;AACH,eAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAwC,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAA;AA0CtF;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAE9B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAElC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAExC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACzC;AAuHD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,gBAAgB,CAAC,mBAAmB,GAAG,SAAS,EAAE,OAAO,CAAmC,CAAA;AAEnH;;;;GAIG;AACH,eAAe,QAAQ,CAAA"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Pure call annotation transformer.
3
+ *
4
+ * This transformer adds `#__PURE__` comments to call expressions for better tree-shaking.
5
+ * It replicates the behavior of `babel-plugin-annotate-pure-calls` but integrated into
6
+ * the Effect unplugin.
7
+ *
8
+ * The `#__PURE__` annotation tells bundlers (Webpack, Rollup, esbuild) that a function call
9
+ * has no side effects and can be safely removed if the result is unused.
10
+ *
11
+ * @since 0.1.0
12
+ */
13
+ import type { Visitor } from "@babel/traverse";
14
+ /**
15
+ * Options for the annotate effects transformer.
16
+ */
17
+ export interface AnnotateEffectsOptions {
18
+ /**
19
+ * Filter function to determine if a file should be transformed.
20
+ */
21
+ readonly filter?: (filename: string) => boolean;
22
+ }
23
+ /**
24
+ * State passed through the transformer.
25
+ */
26
+ interface TransformState {
27
+ filename: string;
28
+ }
29
+ /**
30
+ * Creates a Babel visitor that adds PURE annotations to call expressions.
31
+ */
32
+ export declare function createAnnotateEffectsVisitor(filename: string, _options?: AnnotateEffectsOptions): Visitor<TransformState>;
33
+ /**
34
+ * Creates the annotate effects transformer plugin.
35
+ */
36
+ export declare function annotateEffectsTransformer(options?: AnnotateEffectsOptions): {
37
+ visitor: Visitor<TransformState>;
38
+ name: string;
39
+ };
40
+ export {};
41
+ //# sourceMappingURL=annotateEffects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotateEffects.d.ts","sourceRoot":"","sources":["../../../src/transformers/annotateEffects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGxD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;CAChD;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAmID;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,sBAAsB,GAChC,OAAO,CAAC,cAAc,CAAC,CAgBzB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG;IAC5E,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAChC,IAAI,EAAE,MAAM,CAAA;CACb,CAKA"}
@@ -2,8 +2,12 @@
2
2
  * Source location trace transformer.
3
3
  *
4
4
  * This transformer injects source location metadata into Effect.gen yield expressions.
5
- * It transforms `yield* _(effect)` into `yield* _(effect, trace)` where trace is a
6
- * hoisted SourceLocation object.
5
+ * It supports both patterns:
6
+ * - Legacy adapter: `yield* _(effect)` → `yield* _(effect, trace)`
7
+ * - Modern pattern: `yield* effect` → `yield* $_adapter(effect, trace)`
8
+ *
9
+ * For the modern pattern, the transformer adds an adapter parameter to the generator
10
+ * function if not present, since Effect.gen always passes the adapter at runtime.
7
11
  *
8
12
  * @since 0.1.0
9
13
  */
@@ -25,6 +29,11 @@ export interface SourceTraceOptions {
25
29
  interface TransformState {
26
30
  filename: string;
27
31
  hoisting: HoistingState;
32
+ /**
33
+ * Map from generator function to its adapter parameter name.
34
+ * Used to track which generators have been processed and their adapter names.
35
+ */
36
+ generatorAdapters: Map<unknown, string>;
28
37
  }
29
38
  /**
30
39
  * Creates a Babel visitor that injects source trace metadata into Effect.gen yields.
@@ -1 +1 @@
1
- {"version":3,"file":"sourceTrace.d.ts","sourceRoot":"","sources":["../../../src/transformers/sourceTrace.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGxD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAA;AAE7B;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;CAChD;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,aAAa,CAAA;CACxB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,OAAO,CAAC,cAAc,CAAC,CA4CzB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG;IACpE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAChC,IAAI,EAAE,MAAM,CAAA;CACb,CAKA"}
1
+ {"version":3,"file":"sourceTrace.d.ts","sourceRoot":"","sources":["../../../src/transformers/sourceTrace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAQxD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAA;AAE7B;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;CAChD;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,aAAa,CAAA;IACvB;;;OAGG;IACH,iBAAiB,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;CACxC;AAqBD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,OAAO,CAAC,cAAc,CAAC,CA6FzB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG;IACpE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAChC,IAAI,EAAE,MAAM,CAAA;CACb,CAKA"}
@@ -1 +1 @@
1
- {"version":3,"file":"withSpanTrace.d.ts","sourceRoot":"","sources":["../../../src/transformers/withSpanTrace.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAA;AAE7B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;CAChD;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,aAAa,CAAA;CACxB;AA0HD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC,cAAc,CAAC,CA+DzB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG;IACxE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAChC,IAAI,EAAE,MAAM,CAAA;CACb,CAKA"}
1
+ {"version":3,"file":"withSpanTrace.d.ts","sourceRoot":"","sources":["../../../src/transformers/withSpanTrace.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAA;AAE7B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;CAChD;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,aAAa,CAAA;CACxB;AAkLD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC,cAAc,CAAC,CA+EzB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG;IACxE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAChC,IAAI,EAAE,MAAM,CAAA;CACb,CAKA"}