@clayroach/effect-unplugin 4.0.0-source-tracing.0

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.
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @since 0.0.1
3
+ * @category models
4
+ */
5
+ export interface AnnotateResult {
6
+ readonly code: string;
7
+ readonly map?: unknown;
8
+ readonly transformed: boolean;
9
+ }
10
+ /**
11
+ * Transforms source code to add pure annotations to Effect calls.
12
+ *
13
+ * @since 0.0.1
14
+ * @category transform
15
+ */
16
+ export declare function annotateEffects(code: string, id: string): AnnotateResult;
17
+ //# sourceMappingURL=annotateEffects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotateEffects.d.ts","sourceRoot":"","sources":["../src/annotateEffects.ts"],"names":[],"mappings":"AAkEA;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;CAC9B;AA0ED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,CA8CxE"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Effect tree-shaking annotations transformer.
3
+ *
4
+ * Adds `\/* @__PURE__ *\/` comments to Effect calls for bundler tree-shaking.
5
+ *
6
+ * @since 0.0.1
7
+ */
8
+ import { parse } from "@babel/parser";
9
+ import * as _traverse from "@babel/traverse";
10
+ import * as _generate from "@babel/generator";
11
+ import * as t from "@babel/types";
12
+ // Handle CommonJS default exports - runtime interop
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ const traverse = _traverse.default ?? _traverse;
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ const generate = _generate.default ?? _generate;
17
+ /**
18
+ * Effect module names that should have pure annotations.
19
+ */
20
+ const EFFECT_MODULES = /*#__PURE__*/new Set(["Effect", "Option", "Either", "Data", "Schema", "Array", "Chunk", "HashMap", "HashSet", "List", "Queue", "Stream", "Layer", "Scope", "Ref", "SynchronizedRef", "SubscriptionRef", "Duration", "Schedule", "Cause", "Exit", "Match", "Boolean", "Number", "String", "Struct", "Tuple", "Function", "Predicate", "Order", "Equivalence", "Context", "Brand", "Types"]);
21
+ /**
22
+ * Checks if a call expression already has a pure annotation.
23
+ */
24
+ function hasPureAnnotation(node) {
25
+ const comments = node.leadingComments;
26
+ if (!comments) return false;
27
+ return comments.some(comment => comment.type === "CommentBlock" && (comment.value.includes("@__PURE__") || comment.value.includes("#__PURE__")));
28
+ }
29
+ /**
30
+ * Checks if a call is to an Effect module method.
31
+ */
32
+ function isEffectModuleCall(node) {
33
+ const callee = node.callee;
34
+ // Effect.succeed(...) or Option.some(...)
35
+ if (t.isMemberExpression(callee) && t.isIdentifier(callee.object) && EFFECT_MODULES.has(callee.object.name)) {
36
+ return true;
37
+ }
38
+ return false;
39
+ }
40
+ /**
41
+ * Checks if a CallExpression is in a context where pure annotation is useful.
42
+ * Only annotate calls in variable declarations or export declarations.
43
+ */
44
+ function isInAnnotatableContext(path) {
45
+ let parent = path.parentPath;
46
+ while (parent !== null) {
47
+ const node = parent.node;
48
+ // Variable declaration: const x = Effect.succeed(...)
49
+ if (t.isVariableDeclarator(node)) {
50
+ return true;
51
+ }
52
+ // Export: export const x = Effect.succeed(...)
53
+ if (t.isExportDefaultDeclaration(node) || t.isExportNamedDeclaration(node)) {
54
+ return true;
55
+ }
56
+ // Return statement: return Effect.succeed(...)
57
+ if (t.isReturnStatement(node)) {
58
+ return true;
59
+ }
60
+ // Arrow function body: () => Effect.succeed(...)
61
+ if (t.isArrowFunctionExpression(node)) {
62
+ return true;
63
+ }
64
+ // Stop at block statements
65
+ if (t.isBlockStatement(node) || t.isProgram(node)) {
66
+ break;
67
+ }
68
+ parent = parent.parentPath;
69
+ }
70
+ return false;
71
+ }
72
+ /**
73
+ * Transforms source code to add pure annotations to Effect calls.
74
+ *
75
+ * @since 0.0.1
76
+ * @category transform
77
+ */
78
+ export function annotateEffects(code, id) {
79
+ let ast;
80
+ try {
81
+ ast = parse(code, {
82
+ sourceType: "module",
83
+ plugins: ["typescript", "jsx"],
84
+ sourceFilename: id
85
+ });
86
+ } catch {
87
+ return {
88
+ code,
89
+ transformed: false
90
+ };
91
+ }
92
+ let hasTransformed = false;
93
+ traverse(ast, {
94
+ CallExpression(path) {
95
+ // Skip if already has pure annotation
96
+ if (hasPureAnnotation(path.node)) return;
97
+ // Only annotate Effect module calls
98
+ if (!isEffectModuleCall(path.node)) return;
99
+ // Only annotate in useful contexts
100
+ if (!isInAnnotatableContext(path)) return;
101
+ // Add @__PURE__ annotation
102
+ t.addComment(path.node, "leading", "#__PURE__", false);
103
+ hasTransformed = true;
104
+ }
105
+ });
106
+ if (!hasTransformed) {
107
+ return {
108
+ code,
109
+ transformed: false
110
+ };
111
+ }
112
+ const result = generate(ast, {
113
+ sourceMaps: true,
114
+ sourceFileName: id,
115
+ comments: true
116
+ }, code);
117
+ return {
118
+ code: result.code,
119
+ map: result.map,
120
+ transformed: true
121
+ };
122
+ }
123
+ //# sourceMappingURL=annotateEffects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotateEffects.js","names":["parse","_traverse","_generate","t","traverse","default","generate","EFFECT_MODULES","Set","hasPureAnnotation","node","comments","leadingComments","some","comment","type","value","includes","isEffectModuleCall","callee","isMemberExpression","isIdentifier","object","has","name","isInAnnotatableContext","path","parent","parentPath","isVariableDeclarator","isExportDefaultDeclaration","isExportNamedDeclaration","isReturnStatement","isArrowFunctionExpression","isBlockStatement","isProgram","annotateEffects","code","id","ast","sourceType","plugins","sourceFilename","transformed","hasTransformed","CallExpression","addComment","result","sourceMaps","sourceFileName","map"],"sources":["../src/annotateEffects.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ declare const _default: (options?: import("./types.ts").SourceTraceOptions | undefined) => import("unplugin").EsbuildPlugin;
2
+ export default _default;
3
+ //# sourceMappingURL=esbuild.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esbuild.d.ts","sourceRoot":"","sources":["../src/esbuild.ts"],"names":[],"mappings":";AAiBA,wBAA+B"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * esbuild plugin for Effect source location tracing.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * import esbuild from "esbuild"
7
+ * import effectSourceTrace from "@effect/unplugin/esbuild"
8
+ *
9
+ * esbuild.build({
10
+ * plugins: [effectSourceTrace()]
11
+ * })
12
+ * ```
13
+ *
14
+ * @since 0.0.1
15
+ */
16
+ import unplugin from "./index.js";
17
+ export default unplugin.esbuild;
18
+ //# sourceMappingURL=esbuild.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esbuild.js","names":["unplugin","esbuild"],"sources":["../src/esbuild.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;AAeA,OAAOA,QAAQ,MAAM,YAAY;AAEjC,eAAeA,QAAQ,CAACC,OAAO","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import type { SourceTraceOptions } from "./types.ts";
2
+ export { type AnnotateResult, annotateEffects } from "./annotateEffects.ts";
3
+ export { type TransformResult } from "./sourceTrace.ts";
4
+ export type { FilterPattern, InstrumentableEffect, SourceTraceOptions, SpanInstrumentationOptions } from "./types.ts";
5
+ /**
6
+ * Creates the Effect source trace unplugin.
7
+ *
8
+ * @since 0.0.1
9
+ * @category unplugin
10
+ */
11
+ export declare const unplugin: import("unplugin").UnpluginInstance<SourceTraceOptions | undefined, boolean>;
12
+ export default unplugin;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAiB,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEnE,OAAO,EAAE,KAAK,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAiCrH;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,8EAwCnB,CAAA;AAEF,eAAe,QAAQ,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Build-time AST transformer for Effect source location tracing and auto-instrumentation.
3
+ *
4
+ * This plugin provides two features:
5
+ * 1. **Source Tracing**: Transforms `yield*` expressions inside `Effect.gen()` to
6
+ * inject source location information via `CurrentStackFrame`.
7
+ * 2. **Span Instrumentation**: Wraps Effect combinators with `withSpan()` for
8
+ * automatic distributed tracing.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * // vite.config.ts
13
+ * import { defineConfig } from "vite"
14
+ * import effectSourceTrace from "@effect/unplugin/vite"
15
+ *
16
+ * export default defineConfig({
17
+ * plugins: [effectSourceTrace({
18
+ * // Enable source tracing (default: true)
19
+ * sourceTrace: true,
20
+ * // Enable span instrumentation
21
+ * spans: {
22
+ * enabled: true,
23
+ * include: ["gen", "fork", "all", "forEach"]
24
+ * }
25
+ * })]
26
+ * })
27
+ * ```
28
+ *
29
+ * @since 0.0.1
30
+ */
31
+ import { createUnplugin } from "unplugin";
32
+ import { annotateEffects } from "./annotateEffects.js";
33
+ import { transform } from "./sourceTrace.js";
34
+ export { annotateEffects } from "./annotateEffects.js";
35
+ export {} from "./sourceTrace.js";
36
+ const defaultInclude = [/\.[jt]sx?$/];
37
+ const defaultExclude = [/node_modules/];
38
+ function toArray(value) {
39
+ if (value === undefined) return [];
40
+ if (Array.isArray(value)) return value;
41
+ return [value];
42
+ }
43
+ function createFilter(include, exclude) {
44
+ const includePatterns = toArray(include ?? defaultInclude);
45
+ const excludePatterns = toArray(exclude ?? defaultExclude);
46
+ return id => {
47
+ for (const pattern of excludePatterns) {
48
+ if (typeof pattern === "string" ? id.includes(pattern) : pattern.test(id)) {
49
+ return false;
50
+ }
51
+ }
52
+ for (const pattern of includePatterns) {
53
+ if (typeof pattern === "string" ? id.includes(pattern) : pattern.test(id)) {
54
+ return true;
55
+ }
56
+ }
57
+ return false;
58
+ };
59
+ }
60
+ /**
61
+ * Creates the Effect source trace unplugin.
62
+ *
63
+ * @since 0.0.1
64
+ * @category unplugin
65
+ */
66
+ export const unplugin = /*#__PURE__*/createUnplugin((options = {}) => {
67
+ const filter = createFilter(options.include, options.exclude);
68
+ return {
69
+ name: "effect-source-trace",
70
+ enforce: "pre",
71
+ transformInclude(id) {
72
+ return filter(id);
73
+ },
74
+ transform(code, id) {
75
+ let currentCode = code;
76
+ let hasTransformed = false;
77
+ let finalMap;
78
+ // Run source trace and span instrumentation
79
+ const traceResult = transform(currentCode, id, options);
80
+ if (traceResult.transformed) {
81
+ currentCode = traceResult.code;
82
+ finalMap = traceResult.map;
83
+ hasTransformed = true;
84
+ }
85
+ // Run annotateEffects if enabled
86
+ if (options.annotateEffects) {
87
+ const annotateResult = annotateEffects(currentCode, id);
88
+ if (annotateResult.transformed) {
89
+ currentCode = annotateResult.code;
90
+ finalMap = annotateResult.map;
91
+ hasTransformed = true;
92
+ }
93
+ }
94
+ if (!hasTransformed) {
95
+ return null;
96
+ }
97
+ return {
98
+ code: currentCode,
99
+ map: finalMap
100
+ };
101
+ }
102
+ };
103
+ });
104
+ export default unplugin;
105
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["createUnplugin","annotateEffects","transform","defaultInclude","defaultExclude","toArray","value","undefined","Array","isArray","createFilter","include","exclude","includePatterns","excludePatterns","id","pattern","includes","test","unplugin","options","filter","name","enforce","transformInclude","code","currentCode","hasTransformed","finalMap","traceResult","transformed","map","annotateResult"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,SAASA,cAAc,QAAyD,UAAU;AAC1F,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,SAAS,QAAQ,kBAAkB;AAG5C,SAA8BD,eAAe,QAAQ,sBAAsB;AAC3E,eAAqC,kBAAkB;AAGvD,MAAME,cAAc,GAAmC,CAAC,YAAY,CAAC;AACrE,MAAMC,cAAc,GAAmC,CAAC,cAAc,CAAC;AAEvE,SAASC,OAAOA,CAACC,KAAgC;EAC/C,IAAIA,KAAK,KAAKC,SAAS,EAAE,OAAO,EAAE;EAClC,IAAIC,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,EAAE,OAAOA,KAAK;EACtC,OAAO,CAACA,KAAwB,CAAC;AACnC;AAEA,SAASI,YAAYA,CACnBC,OAAkC,EAClCC,OAAkC;EAElC,MAAMC,eAAe,GAAGR,OAAO,CAACM,OAAO,IAAIR,cAAc,CAAC;EAC1D,MAAMW,eAAe,GAAGT,OAAO,CAACO,OAAO,IAAIR,cAAc,CAAC;EAE1D,OAAQW,EAAU,IAAa;IAC7B,KAAK,MAAMC,OAAO,IAAIF,eAAe,EAAE;MACrC,IAAI,OAAOE,OAAO,KAAK,QAAQ,GAAGD,EAAE,CAACE,QAAQ,CAACD,OAAO,CAAC,GAAGA,OAAO,CAACE,IAAI,CAACH,EAAE,CAAC,EAAE;QACzE,OAAO,KAAK;MACd;IACF;IACA,KAAK,MAAMC,OAAO,IAAIH,eAAe,EAAE;MACrC,IAAI,OAAOG,OAAO,KAAK,QAAQ,GAAGD,EAAE,CAACE,QAAQ,CAACD,OAAO,CAAC,GAAGA,OAAO,CAACE,IAAI,CAACH,EAAE,CAAC,EAAE;QACzE,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd,CAAC;AACH;AAEA;;;;;;AAMA,OAAO,MAAMI,QAAQ,gBAAGnB,cAAc,CAAiC,CAACoB,OAAO,GAAG,EAAE,KAAI;EACtF,MAAMC,MAAM,GAAGX,YAAY,CAACU,OAAO,CAACT,OAAO,EAAES,OAAO,CAACR,OAAO,CAAC;EAE7D,OAAO;IACLU,IAAI,EAAE,qBAAqB;IAC3BC,OAAO,EAAE,KAAK;IAEdC,gBAAgBA,CAACT,EAAE;MACjB,OAAOM,MAAM,CAACN,EAAE,CAAC;IACnB,CAAC;IAEDb,SAASA,CAACuB,IAAI,EAAEV,EAAE;MAChB,IAAIW,WAAW,GAAGD,IAAI;MACtB,IAAIE,cAAc,GAAG,KAAK;MAC1B,IAAIC,QAAiB;MAErB;MACA,MAAMC,WAAW,GAAG3B,SAAS,CAACwB,WAAW,EAAEX,EAAE,EAAEK,OAAO,CAAC;MACvD,IAAIS,WAAW,CAACC,WAAW,EAAE;QAC3BJ,WAAW,GAAGG,WAAW,CAACJ,IAAI;QAC9BG,QAAQ,GAAGC,WAAW,CAACE,GAAG;QAC1BJ,cAAc,GAAG,IAAI;MACvB;MAEA;MACA,IAAIP,OAAO,CAACnB,eAAe,EAAE;QAC3B,MAAM+B,cAAc,GAAG/B,eAAe,CAACyB,WAAW,EAAEX,EAAE,CAAC;QACvD,IAAIiB,cAAc,CAACF,WAAW,EAAE;UAC9BJ,WAAW,GAAGM,cAAc,CAACP,IAAI;UACjCG,QAAQ,GAAGI,cAAc,CAACD,GAAG;UAC7BJ,cAAc,GAAG,IAAI;QACvB;MACF;MAEA,IAAI,CAACA,cAAc,EAAE;QACnB,OAAO,IAAI;MACb;MACA,OAAO;QAAEF,IAAI,EAAEC,WAAW;QAAEK,GAAG,EAAEH;MAAQ,CAA6B;IACxE;GACD;AACH,CAAC,CAAC;AAEF,eAAeT,QAAQ","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ declare const _default: (options?: import("./types.ts").SourceTraceOptions | undefined) => import("rollup").Plugin<any> | import("rollup").Plugin<any>[];
2
+ export default _default;
3
+ //# sourceMappingURL=rollup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../src/rollup.ts"],"names":[],"mappings":";AAiBA,wBAA8B"}
package/dist/rollup.js ADDED
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Rollup plugin for Effect source location tracing.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * // rollup.config.js
7
+ * import effectSourceTrace from "@effect/unplugin/rollup"
8
+ *
9
+ * export default {
10
+ * plugins: [effectSourceTrace()]
11
+ * }
12
+ * ```
13
+ *
14
+ * @since 0.0.1
15
+ */
16
+ import unplugin from "./index.js";
17
+ export default unplugin.rollup;
18
+ //# sourceMappingURL=rollup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup.js","names":["unplugin","rollup"],"sources":["../src/rollup.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;AAeA,OAAOA,QAAQ,MAAM,YAAY;AAEjC,eAAeA,QAAQ,CAACC,MAAM","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ import type { SourceTraceOptions } from "./types.ts";
2
+ /**
3
+ * @since 0.0.1
4
+ * @category models
5
+ */
6
+ export interface TransformResult {
7
+ readonly code: string;
8
+ readonly map?: unknown;
9
+ readonly transformed: boolean;
10
+ }
11
+ /**
12
+ * Transforms source code to inject source location tracing and span instrumentation.
13
+ *
14
+ * @since 0.0.1
15
+ * @category transform
16
+ */
17
+ export declare function transform(code: string, id: string, options?: SourceTraceOptions): TransformResult;
18
+ //# sourceMappingURL=sourceTrace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceTrace.d.ts","sourceRoot":"","sources":["../src/sourceTrace.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAwB,kBAAkB,EAA8B,MAAM,YAAY,CAAA;AAmCtG;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;CAC9B;AAuND;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,kBAAuB,GAC/B,eAAe,CAyKjB"}