@clayroach/unplugin
Advanced tools
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| exports.createWithSpanTraceVisitor = createWithSpanTraceVisitor; | ||
| exports.withSpanTraceTransformer = withSpanTraceTransformer; | ||
| var t = _interopRequireWildcard(require("@babel/types")); | ||
| var _hoisting = require("../utils/hoisting.js"); | ||
| 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); } | ||
| /** | ||
| * Checks if a CallExpression is a withSpan call. | ||
| * Matches: Effect.withSpan(...), _.withSpan(...), or standalone withSpan(...) | ||
| */ | ||
| function isWithSpanCall(node) { | ||
| const callee = node.callee; | ||
| // Match Effect.withSpan(...) or _.withSpan(...) | ||
| if (callee.type === "MemberExpression" && callee.property.type === "Identifier" && callee.property.name === "withSpan") { | ||
| return true; | ||
| } | ||
| // Match standalone withSpan(...) | ||
| if (callee.type === "Identifier" && callee.name === "withSpan") { | ||
| return true; | ||
| } | ||
| return false; | ||
| } | ||
| /** | ||
| * Determines if this is a data-first call (effect as first arg) or data-last (name as first arg). | ||
| * Data-first: withSpan(effect, "name", options?) | ||
| * Data-last: withSpan("name", options?) | ||
| */ | ||
| function isDataFirstCall(node) { | ||
| // If first argument is a string literal, it's data-last | ||
| if (node.arguments.length > 0 && t.isStringLiteral(node.arguments[0])) { | ||
| return false; | ||
| } | ||
| // If second argument exists and is a string literal, it's data-first | ||
| if (node.arguments.length > 1 && t.isStringLiteral(node.arguments[1])) { | ||
| return true; | ||
| } | ||
| // Default to data-last pattern | ||
| return false; | ||
| } | ||
| /** | ||
| * Creates the attributes object with source location. | ||
| */ | ||
| function createSourceAttributes(filepath, line, column) { | ||
| return t.objectExpression([t.objectProperty(t.stringLiteral("code.filepath"), t.stringLiteral(filepath)), t.objectProperty(t.stringLiteral("code.lineno"), t.numericLiteral(line)), t.objectProperty(t.stringLiteral("code.column"), t.numericLiteral(column))]); | ||
| } | ||
| /** | ||
| * Merges source attributes into an existing options object or creates a new one. | ||
| */ | ||
| function mergeOrCreateOptions(existingOptions, sourceAttrs) { | ||
| if (!existingOptions || t.isSpreadElement(existingOptions) || t.isArgumentPlaceholder(existingOptions)) { | ||
| // No existing options, create new object with attributes | ||
| return t.objectExpression([t.objectProperty(t.identifier("attributes"), sourceAttrs)]); | ||
| } | ||
| if (t.isObjectExpression(existingOptions)) { | ||
| // Check if there's an existing attributes property | ||
| const existingAttrsIndex = existingOptions.properties.findIndex(prop => t.isObjectProperty(prop) && (t.isIdentifier(prop.key) && prop.key.name === "attributes" || t.isStringLiteral(prop.key) && prop.key.value === "attributes")); | ||
| if (existingAttrsIndex >= 0) { | ||
| // Merge with existing attributes using spread | ||
| const existingAttrsProp = existingOptions.properties[existingAttrsIndex]; | ||
| const mergedAttrs = t.objectExpression([t.spreadElement(existingAttrsProp.value), ...sourceAttrs.properties]); | ||
| // Clone the options and replace the attributes property | ||
| const newProperties = [...existingOptions.properties]; | ||
| newProperties[existingAttrsIndex] = t.objectProperty(t.identifier("attributes"), mergedAttrs); | ||
| return t.objectExpression(newProperties); | ||
| } else { | ||
| // Add new attributes property to existing object | ||
| return t.objectExpression([...existingOptions.properties, t.objectProperty(t.identifier("attributes"), sourceAttrs)]); | ||
| } | ||
| } | ||
| // If it's a variable reference, spread it and add attributes | ||
| return t.objectExpression([t.spreadElement(existingOptions), t.objectProperty(t.identifier("attributes"), sourceAttrs)]); | ||
| } | ||
| /** | ||
| * Creates a Babel visitor that injects source location attributes into Effect.withSpan calls. | ||
| */ | ||
| function createWithSpanTraceVisitor(filename, _options) { | ||
| return { | ||
| Program: { | ||
| enter(_path, state) { | ||
| state.filename = filename; | ||
| state.hoisting = (0, _hoisting.createHoistingState)(); | ||
| }, | ||
| exit(path, state) { | ||
| // Prepend all hoisted statements to the program body | ||
| if (state.hoisting.statements.length > 0) { | ||
| path.unshiftContainer("body", state.hoisting.statements); | ||
| } | ||
| } | ||
| }, | ||
| CallExpression(path, state) { | ||
| const node = path.node; | ||
| if (!isWithSpanCall(node)) { | ||
| return; | ||
| } | ||
| // Get source location | ||
| const loc = node.loc; | ||
| if (!loc) return; | ||
| const line = loc.start.line; | ||
| const column = loc.start.column; | ||
| // Create source attributes | ||
| const sourceAttrs = createSourceAttributes(state.filename, line, column); | ||
| const isDataFirst = isDataFirstCall(node); | ||
| if (isDataFirst) { | ||
| // Data-first: withSpan(effect, "name", options?) | ||
| // Options is at index 2 | ||
| const optionsArg = node.arguments[2]; | ||
| const newOptions = mergeOrCreateOptions(optionsArg, sourceAttrs); | ||
| if (node.arguments.length >= 3) { | ||
| // Replace existing options | ||
| node.arguments[2] = newOptions; | ||
| } else { | ||
| // Add options as third argument | ||
| node.arguments.push(newOptions); | ||
| } | ||
| } else { | ||
| // Data-last: withSpan("name", options?) | ||
| // Options is at index 1 | ||
| const optionsArg = node.arguments[1]; | ||
| const newOptions = mergeOrCreateOptions(optionsArg, sourceAttrs); | ||
| if (node.arguments.length >= 2) { | ||
| // Replace existing options | ||
| node.arguments[1] = newOptions; | ||
| } else { | ||
| // Add options as second argument | ||
| node.arguments.push(newOptions); | ||
| } | ||
| } | ||
| } | ||
| }; | ||
| } | ||
| /** | ||
| * Creates the withSpan trace transformer plugin. | ||
| */ | ||
| function withSpanTraceTransformer(options) { | ||
| return { | ||
| name: "effect-withspan-trace", | ||
| visitor: createWithSpanTraceVisitor("", options) | ||
| }; | ||
| } | ||
| //# sourceMappingURL=withSpanTrace.js.map |
| {"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":[]} |
| /** | ||
| * WithSpan source location trace transformer. | ||
| * | ||
| * This transformer injects source location metadata as attributes into Effect.withSpan() calls. | ||
| * It transforms `Effect.withSpan("name")` into `Effect.withSpan("name", { attributes: { "code.filepath": ..., "code.lineno": ... }})`. | ||
| * | ||
| * @since 0.1.0 | ||
| */ | ||
| import type { Visitor } from "@babel/traverse"; | ||
| import { type HoistingState } from "../utils/hoisting.js"; | ||
| /** | ||
| * Options for the withSpan trace transformer. | ||
| */ | ||
| export interface WithSpanTraceOptions { | ||
| /** | ||
| * Filter function to determine if a file should be transformed. | ||
| */ | ||
| readonly filter?: (filename: string) => boolean; | ||
| } | ||
| /** | ||
| * State passed through the transformer. | ||
| */ | ||
| interface TransformState { | ||
| filename: string; | ||
| hoisting: HoistingState; | ||
| } | ||
| /** | ||
| * Creates a Babel visitor that injects source location attributes into Effect.withSpan calls. | ||
| */ | ||
| export declare function createWithSpanTraceVisitor(filename: string, _options?: WithSpanTraceOptions): Visitor<TransformState>; | ||
| /** | ||
| * Creates the withSpan trace transformer plugin. | ||
| */ | ||
| export declare function withSpanTraceTransformer(options?: WithSpanTraceOptions): { | ||
| visitor: Visitor<TransformState>; | ||
| name: string; | ||
| }; | ||
| export {}; | ||
| //# sourceMappingURL=withSpanTrace.d.ts.map |
| {"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"} |
| import * as t from "@babel/types"; | ||
| import { createHoistingState } from "../utils/hoisting.js"; | ||
| /** | ||
| * Checks if a CallExpression is a withSpan call. | ||
| * Matches: Effect.withSpan(...), _.withSpan(...), or standalone withSpan(...) | ||
| */ | ||
| function isWithSpanCall(node) { | ||
| const callee = node.callee; | ||
| // Match Effect.withSpan(...) or _.withSpan(...) | ||
| if (callee.type === "MemberExpression" && | ||
| callee.property.type === "Identifier" && | ||
| callee.property.name === "withSpan") { | ||
| return true; | ||
| } | ||
| // Match standalone withSpan(...) | ||
| if (callee.type === "Identifier" && callee.name === "withSpan") { | ||
| return true; | ||
| } | ||
| return false; | ||
| } | ||
| /** | ||
| * Determines if this is a data-first call (effect as first arg) or data-last (name as first arg). | ||
| * Data-first: withSpan(effect, "name", options?) | ||
| * Data-last: withSpan("name", options?) | ||
| */ | ||
| function isDataFirstCall(node) { | ||
| // If first argument is a string literal, it's data-last | ||
| if (node.arguments.length > 0 && t.isStringLiteral(node.arguments[0])) { | ||
| return false; | ||
| } | ||
| // If second argument exists and is a string literal, it's data-first | ||
| if (node.arguments.length > 1 && t.isStringLiteral(node.arguments[1])) { | ||
| return true; | ||
| } | ||
| // Default to data-last pattern | ||
| return false; | ||
| } | ||
| /** | ||
| * Creates the attributes object with source location. | ||
| */ | ||
| function createSourceAttributes(filepath, line, column) { | ||
| return t.objectExpression([ | ||
| t.objectProperty(t.stringLiteral("code.filepath"), t.stringLiteral(filepath)), | ||
| t.objectProperty(t.stringLiteral("code.lineno"), t.numericLiteral(line)), | ||
| t.objectProperty(t.stringLiteral("code.column"), t.numericLiteral(column)) | ||
| ]); | ||
| } | ||
| /** | ||
| * Merges source attributes into an existing options object or creates a new one. | ||
| */ | ||
| function mergeOrCreateOptions(existingOptions, sourceAttrs) { | ||
| if (!existingOptions || t.isSpreadElement(existingOptions) || t.isArgumentPlaceholder(existingOptions)) { | ||
| // No existing options, create new object with attributes | ||
| return t.objectExpression([ | ||
| t.objectProperty(t.identifier("attributes"), sourceAttrs) | ||
| ]); | ||
| } | ||
| if (t.isObjectExpression(existingOptions)) { | ||
| // Check if there's an existing attributes property | ||
| const existingAttrsIndex = existingOptions.properties.findIndex((prop) => t.isObjectProperty(prop) && | ||
| ((t.isIdentifier(prop.key) && prop.key.name === "attributes") || | ||
| (t.isStringLiteral(prop.key) && prop.key.value === "attributes"))); | ||
| if (existingAttrsIndex >= 0) { | ||
| // Merge with existing attributes using spread | ||
| const existingAttrsProp = existingOptions.properties[existingAttrsIndex]; | ||
| const mergedAttrs = t.objectExpression([ | ||
| t.spreadElement(existingAttrsProp.value), | ||
| ...sourceAttrs.properties | ||
| ]); | ||
| // Clone the options and replace the attributes property | ||
| const newProperties = [...existingOptions.properties]; | ||
| newProperties[existingAttrsIndex] = t.objectProperty(t.identifier("attributes"), mergedAttrs); | ||
| return t.objectExpression(newProperties); | ||
| } | ||
| else { | ||
| // Add new attributes property to existing object | ||
| return t.objectExpression([ | ||
| ...existingOptions.properties, | ||
| t.objectProperty(t.identifier("attributes"), sourceAttrs) | ||
| ]); | ||
| } | ||
| } | ||
| // If it's a variable reference, spread it and add attributes | ||
| return t.objectExpression([ | ||
| t.spreadElement(existingOptions), | ||
| t.objectProperty(t.identifier("attributes"), sourceAttrs) | ||
| ]); | ||
| } | ||
| /** | ||
| * Creates a Babel visitor that injects source location attributes into Effect.withSpan calls. | ||
| */ | ||
| export function createWithSpanTraceVisitor(filename, _options) { | ||
| return { | ||
| Program: { | ||
| enter(_path, state) { | ||
| state.filename = filename; | ||
| state.hoisting = createHoistingState(); | ||
| }, | ||
| exit(path, state) { | ||
| // Prepend all hoisted statements to the program body | ||
| if (state.hoisting.statements.length > 0) { | ||
| path.unshiftContainer("body", state.hoisting.statements); | ||
| } | ||
| } | ||
| }, | ||
| CallExpression(path, state) { | ||
| const node = path.node; | ||
| if (!isWithSpanCall(node)) { | ||
| return; | ||
| } | ||
| // Get source location | ||
| const loc = node.loc; | ||
| if (!loc) | ||
| return; | ||
| const line = loc.start.line; | ||
| const column = loc.start.column; | ||
| // Create source attributes | ||
| const sourceAttrs = createSourceAttributes(state.filename, line, column); | ||
| const isDataFirst = isDataFirstCall(node); | ||
| if (isDataFirst) { | ||
| // Data-first: withSpan(effect, "name", options?) | ||
| // Options is at index 2 | ||
| const optionsArg = node.arguments[2]; | ||
| const newOptions = mergeOrCreateOptions(optionsArg, sourceAttrs); | ||
| if (node.arguments.length >= 3) { | ||
| // Replace existing options | ||
| node.arguments[2] = newOptions; | ||
| } | ||
| else { | ||
| // Add options as third argument | ||
| node.arguments.push(newOptions); | ||
| } | ||
| } | ||
| else { | ||
| // Data-last: withSpan("name", options?) | ||
| // Options is at index 1 | ||
| const optionsArg = node.arguments[1]; | ||
| const newOptions = mergeOrCreateOptions(optionsArg, sourceAttrs); | ||
| if (node.arguments.length >= 2) { | ||
| // Replace existing options | ||
| node.arguments[1] = newOptions; | ||
| } | ||
| else { | ||
| // Add options as second argument | ||
| node.arguments.push(newOptions); | ||
| } | ||
| } | ||
| } | ||
| }; | ||
| } | ||
| /** | ||
| * Creates the withSpan trace transformer plugin. | ||
| */ | ||
| export function withSpanTraceTransformer(options) { | ||
| return { | ||
| name: "effect-withspan-trace", | ||
| visitor: createWithSpanTraceVisitor("", options) | ||
| }; | ||
| } | ||
| //# sourceMappingURL=withSpanTrace.js.map |
| {"version":3,"file":"withSpanTrace.js","sourceRoot":"","sources":["../../../src/transformers/withSpanTrace.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * WithSpan source location trace transformer. | ||
| * | ||
| * This transformer injects source location metadata as attributes into Effect.withSpan() calls. | ||
| * It transforms `Effect.withSpan("name")` into `Effect.withSpan("name", { attributes: { "code.filepath": ..., "code.lineno": ... }})`. | ||
| * | ||
| * @since 0.1.0 | ||
| */ | ||
| import type { NodePath, Visitor } from "@babel/traverse" | ||
| import * as t from "@babel/types" | ||
| import { | ||
| createHoistingState, | ||
| type HoistingState | ||
| } from "../utils/hoisting.js" | ||
| /** | ||
| * Options for the withSpan trace transformer. | ||
| */ | ||
| export interface WithSpanTraceOptions { | ||
| /** | ||
| * Filter function to determine if a file should be transformed. | ||
| */ | ||
| readonly filter?: (filename: string) => boolean | ||
| } | ||
| /** | ||
| * State passed through the transformer. | ||
| */ | ||
| interface TransformState { | ||
| filename: string | ||
| hoisting: HoistingState | ||
| } | ||
| /** | ||
| * Checks if a CallExpression is a withSpan call. | ||
| * Matches: Effect.withSpan(...), _.withSpan(...), or standalone withSpan(...) | ||
| */ | ||
| function isWithSpanCall(node: t.CallExpression): boolean { | ||
| const callee = node.callee | ||
| // Match Effect.withSpan(...) or _.withSpan(...) | ||
| if ( | ||
| callee.type === "MemberExpression" && | ||
| callee.property.type === "Identifier" && | ||
| callee.property.name === "withSpan" | ||
| ) { | ||
| return true | ||
| } | ||
| // Match standalone withSpan(...) | ||
| if (callee.type === "Identifier" && callee.name === "withSpan") { | ||
| return true | ||
| } | ||
| return false | ||
| } | ||
| /** | ||
| * Determines if this is a data-first call (effect as first arg) or data-last (name as first arg). | ||
| * Data-first: withSpan(effect, "name", options?) | ||
| * Data-last: withSpan("name", options?) | ||
| */ | ||
| function isDataFirstCall(node: t.CallExpression): boolean { | ||
| // If first argument is a string literal, it's data-last | ||
| if (node.arguments.length > 0 && t.isStringLiteral(node.arguments[0])) { | ||
| return false | ||
| } | ||
| // If second argument exists and is a string literal, it's data-first | ||
| if (node.arguments.length > 1 && t.isStringLiteral(node.arguments[1])) { | ||
| return true | ||
| } | ||
| // Default to data-last pattern | ||
| return false | ||
| } | ||
| /** | ||
| * Creates the attributes object with source location. | ||
| */ | ||
| function createSourceAttributes( | ||
| filepath: string, | ||
| line: number, | ||
| column: number | ||
| ): t.ObjectExpression { | ||
| return t.objectExpression([ | ||
| t.objectProperty( | ||
| t.stringLiteral("code.filepath"), | ||
| t.stringLiteral(filepath) | ||
| ), | ||
| t.objectProperty( | ||
| t.stringLiteral("code.lineno"), | ||
| t.numericLiteral(line) | ||
| ), | ||
| t.objectProperty( | ||
| t.stringLiteral("code.column"), | ||
| t.numericLiteral(column) | ||
| ) | ||
| ]) | ||
| } | ||
| /** | ||
| * Merges source attributes into an existing options object or creates a new one. | ||
| */ | ||
| function mergeOrCreateOptions( | ||
| existingOptions: t.Expression | t.SpreadElement | t.ArgumentPlaceholder | undefined, | ||
| sourceAttrs: t.ObjectExpression | ||
| ): t.ObjectExpression { | ||
| if (!existingOptions || t.isSpreadElement(existingOptions) || t.isArgumentPlaceholder(existingOptions)) { | ||
| // No existing options, create new object with attributes | ||
| return t.objectExpression([ | ||
| t.objectProperty(t.identifier("attributes"), sourceAttrs) | ||
| ]) | ||
| } | ||
| if (t.isObjectExpression(existingOptions)) { | ||
| // Check if there's an existing attributes property | ||
| const existingAttrsIndex = existingOptions.properties.findIndex( | ||
| (prop) => | ||
| t.isObjectProperty(prop) && | ||
| ((t.isIdentifier(prop.key) && prop.key.name === "attributes") || | ||
| (t.isStringLiteral(prop.key) && prop.key.value === "attributes")) | ||
| ) | ||
| if (existingAttrsIndex >= 0) { | ||
| // Merge with existing attributes using spread | ||
| const existingAttrsProp = existingOptions.properties[existingAttrsIndex] as t.ObjectProperty | ||
| const mergedAttrs = t.objectExpression([ | ||
| t.spreadElement(existingAttrsProp.value as t.Expression), | ||
| ...sourceAttrs.properties | ||
| ]) | ||
| // Clone the options and replace the attributes property | ||
| const newProperties = [...existingOptions.properties] | ||
| newProperties[existingAttrsIndex] = t.objectProperty( | ||
| t.identifier("attributes"), | ||
| mergedAttrs | ||
| ) | ||
| return t.objectExpression(newProperties) | ||
| } else { | ||
| // Add new attributes property to existing object | ||
| return t.objectExpression([ | ||
| ...existingOptions.properties, | ||
| t.objectProperty(t.identifier("attributes"), sourceAttrs) | ||
| ]) | ||
| } | ||
| } | ||
| // If it's a variable reference, spread it and add attributes | ||
| return t.objectExpression([ | ||
| t.spreadElement(existingOptions), | ||
| t.objectProperty(t.identifier("attributes"), sourceAttrs) | ||
| ]) | ||
| } | ||
| /** | ||
| * Creates a Babel visitor that injects source location attributes into Effect.withSpan calls. | ||
| */ | ||
| export function createWithSpanTraceVisitor( | ||
| filename: string, | ||
| _options?: WithSpanTraceOptions | ||
| ): Visitor<TransformState> { | ||
| return { | ||
| Program: { | ||
| enter(_path, state) { | ||
| state.filename = filename | ||
| state.hoisting = createHoistingState() | ||
| }, | ||
| exit(path, state) { | ||
| // Prepend all hoisted statements to the program body | ||
| if (state.hoisting.statements.length > 0) { | ||
| path.unshiftContainer("body", state.hoisting.statements) | ||
| } | ||
| } | ||
| }, | ||
| CallExpression(path: NodePath<t.CallExpression>, state) { | ||
| const node = path.node | ||
| if (!isWithSpanCall(node)) { | ||
| return | ||
| } | ||
| // Get source location | ||
| const loc = node.loc | ||
| if (!loc) return | ||
| const line = loc.start.line | ||
| const column = loc.start.column | ||
| // Create source attributes | ||
| const sourceAttrs = createSourceAttributes(state.filename, line, column) | ||
| const isDataFirst = isDataFirstCall(node) | ||
| if (isDataFirst) { | ||
| // Data-first: withSpan(effect, "name", options?) | ||
| // Options is at index 2 | ||
| const optionsArg = node.arguments[2] | ||
| const newOptions = mergeOrCreateOptions(optionsArg, sourceAttrs) | ||
| if (node.arguments.length >= 3) { | ||
| // Replace existing options | ||
| node.arguments[2] = newOptions | ||
| } else { | ||
| // Add options as third argument | ||
| node.arguments.push(newOptions) | ||
| } | ||
| } else { | ||
| // Data-last: withSpan("name", options?) | ||
| // Options is at index 1 | ||
| const optionsArg = node.arguments[1] | ||
| const newOptions = mergeOrCreateOptions(optionsArg, sourceAttrs) | ||
| if (node.arguments.length >= 2) { | ||
| // Replace existing options | ||
| node.arguments[1] = newOptions | ||
| } else { | ||
| // Add options as second argument | ||
| node.arguments.push(newOptions) | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
| /** | ||
| * Creates the withSpan trace transformer plugin. | ||
| */ | ||
| export function withSpanTraceTransformer(options?: WithSpanTraceOptions): { | ||
| visitor: Visitor<TransformState> | ||
| name: string | ||
| } { | ||
| return { | ||
| name: "effect-withspan-trace", | ||
| visitor: createWithSpanTraceVisitor("", options) | ||
| } | ||
| } |
@@ -12,2 +12,3 @@ "use strict"; | ||
| var _sourceTrace = require("./transformers/sourceTrace.js"); | ||
| var _withSpanTrace = require("./transformers/withSpanTrace.js"); | ||
| function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } | ||
@@ -55,3 +56,4 @@ // Handle both ESM and CJS module exports for Babel packages | ||
| include = DEFAULT_INCLUDE, | ||
| sourceTrace = true | ||
| sourceTrace = true, | ||
| spanTrace = true | ||
| } = options; | ||
@@ -74,2 +76,5 @@ return { | ||
| } | ||
| if (spanTrace) { | ||
| visitors.push((0, _withSpanTrace.createWithSpanTraceVisitor)(id)); | ||
| } | ||
| // Combine visitors | ||
@@ -76,0 +81,0 @@ if (visitors.length === 0) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","names":["_generator","_interopRequireDefault","require","_parser","_traverse2","_unplugin","_sourceTrace","e","__esModule","default","traverse","_traverse","generate","_generate","DEFAULT_INCLUDE","DEFAULT_EXCLUDE","shouldTransform","id","include","exclude","pattern","includes","test","unpluginFactory","options","annotateEffects","_annotateEffects","sourceTrace","name","transformInclude","transform","code","ast","parse","sourceType","plugins","visitors","push","createSourceTraceVisitor","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;AAAwE,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAiBxE;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;AA8C7D;;;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;EAAI,CACnB,GAAGH,OAAO;EAEX,OAAO;IACLI,IAAI,EAAE,kBAAkB;IAExBC,gBAAgBA,CAACZ,EAAE;MACjB,OAAOD,eAAe,CAACC,EAAE,EAAEC,OAAiC,EAAEC,OAAiC,CAAC;IAClG,CAAC;IAEDW,SAASA,CAACC,IAAI,EAAEd,EAAE;MAChB;MACA,MAAMe,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,IAAIT,WAAW,EAAE;QACfS,QAAQ,CAACC,IAAI,CAAC,IAAAC,qCAAwB,EAACrB,EAAE,CAAC,CAAC;MAC7C;MAEA;MACA,IAAImB,QAAQ,CAACG,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,IAAI;MACb;MAEA;MACA,MAAMC,MAAM,GAAGJ,QAAQ,CAACK,GAAG,CAAC,OAAO;QACjCC,QAAQ,EAAEzB,EAAE;QACZ0B,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,GAAGZ,QAAQ,CAACG,MAAM,EAAES,CAAC,EAAE,EAAE;QACxCtC,QAAQ,CAACsB,GAAG,EAAEI,QAAQ,CAACY,CAAC,CAAC,EAAEC,SAAS,EAAET,MAAM,CAACQ,CAAC,CAAC,CAAC;MAClD;MAEA;MACA,MAAME,MAAM,GAAGtC,QAAQ,CAACoB,GAAG,EAAE;QAC3BmB,UAAU,EAAE,IAAI;QAChBC,cAAc,EAAEnC;OACjB,EAAEc,IAAI,CAAC;MAER,OAAO;QACLA,IAAI,EAAEmB,MAAM,CAACnB,IAAI;QACjBU,GAAG,EAAES,MAAM,CAACT;OACb;IACH;GACD;AACH,CAAC;AAED;;;;;AAKO,MAAMY,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAA+D,IAAAE,wBAAc,EAAChC,eAAe,CAAC;AAEnH;;;;;AAAA,IAAAiC,QAAA,GAAAF,OAAA,CAAA7C,OAAA,GAKe4C,QAAQ","ignoreList":[]} | ||
| {"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":"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","ignoreList":[]} |
@@ -16,2 +16,9 @@ import { type UnpluginInstance } from "unplugin"; | ||
| /** | ||
| * Enable source location attributes injection into Effect.withSpan() calls. | ||
| * When enabled, spans will include code.filepath, code.lineno, and code.column attributes. | ||
| * | ||
| * @default true | ||
| */ | ||
| readonly spanTrace?: boolean; | ||
| /** | ||
| * Enable @__PURE__ annotations for tree-shaking. | ||
@@ -18,0 +25,0 @@ * |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAwC,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAmCtF;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAE9B;;;;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;AA2GD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,gBAAgB,CAAC,mBAAmB,GAAG,SAAS,EAAE,OAAO,CAAmC,CAAA;AAEnH;;;;GAIG;AACH,eAAe,QAAQ,CAAA"} | ||
| {"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"} |
@@ -6,2 +6,3 @@ import _generate from "@babel/generator"; | ||
| import { createSourceTraceVisitor } from "./transformers/sourceTrace.js"; | ||
| import { createWithSpanTraceVisitor } from "./transformers/withSpanTrace.js"; | ||
| // Handle both ESM and CJS module exports for Babel packages | ||
@@ -52,3 +53,3 @@ const traverse = typeof _traverse === "function" | ||
| const unpluginFactory = (options = {}) => { | ||
| const { annotateEffects: _annotateEffects = false, exclude = DEFAULT_EXCLUDE, include = DEFAULT_INCLUDE, sourceTrace = true } = options; | ||
| const { annotateEffects: _annotateEffects = false, exclude = DEFAULT_EXCLUDE, include = DEFAULT_INCLUDE, sourceTrace = true, spanTrace = true } = options; | ||
| return { | ||
@@ -70,2 +71,5 @@ name: "@effect/unplugin", | ||
| } | ||
| if (spanTrace) { | ||
| visitors.push(createWithSpanTraceVisitor(id)); | ||
| } | ||
| // Combine visitors | ||
@@ -72,0 +76,0 @@ if (visitors.length === 0) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"} |
+2
-2
| { | ||
| "name": "@clayroach/unplugin", | ||
| "version": "0.1.0-source-trace.2", | ||
| "version": "0.1.0-source-trace.3", | ||
| "description": "Universal bundler plugin for Effect transformations", | ||
@@ -21,3 +21,3 @@ "license": "MIT", | ||
| "peerDependencies": { | ||
| "@clayroach/effect": "^3.19.14-source-trace.2" | ||
| "@clayroach/effect": "^3.19.14-source-trace.3" | ||
| }, | ||
@@ -24,0 +24,0 @@ "publishConfig": { |
+15
-1
@@ -32,2 +32,3 @@ /** | ||
| import { createSourceTraceVisitor } from "./transformers/sourceTrace.js" | ||
| import { createWithSpanTraceVisitor } from "./transformers/withSpanTrace.js" | ||
| import type { HoistingState } from "./utils/hoisting.js" | ||
@@ -81,2 +82,10 @@ | ||
| /** | ||
| * Enable source location attributes injection into Effect.withSpan() calls. | ||
| * When enabled, spans will include code.filepath, code.lineno, and code.column attributes. | ||
| * | ||
| * @default true | ||
| */ | ||
| readonly spanTrace?: boolean | ||
| /** | ||
| * Enable @__PURE__ annotations for tree-shaking. | ||
@@ -150,3 +159,4 @@ * | ||
| include = DEFAULT_INCLUDE, | ||
| sourceTrace = true | ||
| sourceTrace = true, | ||
| spanTrace = true | ||
| } = options | ||
@@ -175,2 +185,6 @@ | ||
| if (spanTrace) { | ||
| visitors.push(createWithSpanTraceVisitor(id)) | ||
| } | ||
| // Combine visitors | ||
@@ -177,0 +191,0 @@ if (visitors.length === 0) { |
AI-detected possible typosquat
Supply chain riskAI has identified this package as a potential typosquat of a more popular package. This suggests that the package may be intentionally mimicking another package's name, description, or other metadata.
Found 1 instance in 1 package
117742
40.89%86
8.86%2389
32.06%0
-100%