Skip to content

Commit ed343ae

Browse files
committed
fix: build artifact export without mlly dep
1 parent 3368e0c commit ed343ae

File tree

9 files changed

+49
-39
lines changed

9 files changed

+49
-39
lines changed

src/transform.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { encrypt } from './core/encryption'
1818
import { randomUUID } from 'node:crypto'
1919
import { batchedArtifactsUploadByBuildId } from './transform/artifacts/batchedArtifactsUpload'
2020
import { flytrapTransformWithArtifacts } from './transform/index'
21+
import { findIgnoredImports } from './transform/package-ignores'
2122

2223
const transformedFiles = new Set<string>([])
2324

@@ -167,7 +168,8 @@ export const unpluginOptions: UnpluginOptions = {
167168
const transformedScriptTagContents = flytrapTransformWithArtifacts(
168169
ss.toString(),
169170
normalizeFilepath(pkgDirPath, id),
170-
config
171+
config,
172+
findIgnoredImports
171173
).unwrap()
172174
wholeSourceFile.overwrite(
173175
scriptStartIndex,

src/transform/artifacts/artifacts.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,15 @@ import {
1212
VariableDeclarator
1313
} from '@babel/types'
1414
import { ArtifactMarking, FlytrapConfig } from '../../core/types'
15-
import { getRequiredExportsForCapture } from '../imports'
15+
1616
import { parseCode } from '../parser'
1717
import { Ok } from 'ts-results'
1818
import type { ParserOptions } from '@babel/parser'
1919

20+
export function getRequiredExportsForCapture(): string[] {
21+
return ['uff', 'ufc', 'setFlytrapConfig']
22+
}
23+
2024
export function getParseConfig(config: ParserOptions = {}): ParserOptions {
2125
return {
2226
sourceType: 'module',
Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { findStaticImports, parseStaticImport } from 'mlly'
21
import { NodePath } from '@babel/traverse'
32
import { CallExpression, Expression, V8IntrinsicIdentifier } from '@babel/types'
43
import generate from '@babel/generator'
@@ -58,25 +57,6 @@ const reservedWords = [
5857
'require'
5958
]
6059

61-
export function findIgnoredImports(code: string, packageIgnores: string[]) {
62-
const ignoredImports: string[] = []
63-
const statements = findStaticImports(code).filter((staticImport) => {
64-
return packageIgnores.some((packageName) => staticImport.specifier.includes(packageName))
65-
})
66-
for (let i = 0; i < statements.length; i++) {
67-
const imports = parseStaticImport(statements[i])
68-
if (imports.defaultImport) {
69-
ignoredImports.push(imports.defaultImport)
70-
}
71-
if (imports.namedImports) {
72-
for (const [, importedName] of Object.entries(imports.namedImports)) {
73-
ignoredImports.push(importedName)
74-
}
75-
}
76-
}
77-
return ignoredImports
78-
}
79-
8060
function getFunctionPath(node: Expression | V8IntrinsicIdentifier): string {
8161
return _babelInterop(generate)(node).code
8262
}

src/transform/imports.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import MagicString from 'magic-string'
22
import { findStaticImports, parseStaticImport } from 'mlly'
33
import { FLYTRAP_PACKAGE_NAME } from '../core/config'
44
import { FlytrapConfig } from '../core/types'
5-
import * as flytrapExports from '../index'
65
import { parseCode } from './parser'
76
import { extname } from '../core/util'
87
import { log } from '../core/logging'
@@ -11,10 +10,6 @@ export function getRequiredExportsForCapture(): string[] {
1110
return ['uff', 'ufc', 'setFlytrapConfig']
1211
}
1312

14-
export function getCoreExports(): string[] {
15-
return Object.keys(flytrapExports)
16-
}
17-
1813
export function findStartingIndex(s: MagicString, fileNamePath?: string) {
1914
const parseResult = parseCode(s.toString(), fileNamePath)
2015

src/transform/index.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,28 +29,32 @@ import {
2929
ExportDefaultDeclaration,
3030
ExportNamedDeclaration,
3131
RestElement,
32-
Pattern,
33-
Expression,
34-
V8IntrinsicIdentifier
32+
Pattern
3533
} from '@babel/types'
3634
import generate from '@babel/generator'
37-
38-
import { getCoreExports } from './imports'
3935
import {
4036
_babelInterop,
4137
extractCurrentScope,
4238
extractFunctionCallId,
43-
extractFunctionCallName,
4439
extractFunctionId,
4540
extractFunctionName
4641
} from './artifacts/artifacts'
47-
import { findIgnoredImports, shouldIgnoreCall } from './packageIgnores'
4842
import { ArtifactMarking, FlytrapConfig } from '../core/types'
4943
import { parseCode } from './parser'
5044
import { createHumanLog } from '../core/errors'
5145
import { log } from '../core/logging'
5246
import { Err, Ok } from 'ts-results'
5347
import { shouldIgnoreFunctionName } from './function-excludes'
48+
import { shouldIgnoreCall } from './call-ignores'
49+
import * as flytrapExports from '../index'
50+
51+
function getRequiredExportsForCapture(): string[] {
52+
return ['uff', 'ufc', 'setFlytrapConfig']
53+
}
54+
55+
function getCoreExports(): string[] {
56+
return Object.keys(flytrapExports)
57+
}
5458

5559
export function getCalleeAndAccessorKey(node: MemberExpression | Identifier) {
5660
if (!isMemberExpression(node)) {
@@ -128,6 +132,7 @@ export function flytrapTransformWithArtifacts(
128132
code: string,
129133
filePath: string,
130134
config?: Partial<FlytrapConfig>,
135+
findIgnoredImports?: (code: string, packageIgnores: string[]) => string[],
131136
returnArtifacts = false
132137
) {
133138
const parseResult = parseCode(code, filePath, config?.babel?.parserOptions)
@@ -157,9 +162,10 @@ export function flytrapTransformWithArtifacts(
157162
return Ok([startIndex, endIndex])
158163
}
159164

160-
const ignoredImports = config?.packageIgnores
161-
? findIgnoredImports(code, config.packageIgnores)
162-
: undefined
165+
const ignoredImports =
166+
config?.packageIgnores && findIgnoredImports
167+
? findIgnoredImports(code, config.packageIgnores)
168+
: undefined
163169

164170
try {
165171
_babelInterop(babelTraverse)(ast, {

src/transform/package-ignores.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { findStaticImports, parseStaticImport } from 'mlly'
2+
3+
export function findIgnoredImports(code: string, packageIgnores: string[]) {
4+
const ignoredImports: string[] = []
5+
const statements = findStaticImports(code).filter((staticImport) => {
6+
return packageIgnores.some((packageName) => staticImport.specifier.includes(packageName))
7+
})
8+
for (let i = 0; i < statements.length; i++) {
9+
const imports = parseStaticImport(statements[i])
10+
if (imports.defaultImport) {
11+
ignoredImports.push(imports.defaultImport)
12+
}
13+
if (imports.namedImports) {
14+
for (const [, importedName] of Object.entries(imports.namedImports)) {
15+
ignoredImports.push(importedName)
16+
}
17+
}
18+
}
19+
return ignoredImports
20+
}

test/artifacts.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import babelTraverse from '@babel/traverse'
1010
import { parse } from '@babel/parser'
1111
import { flytrapTransformWithArtifacts } from '../src/transform/index'
1212
import { config } from 'dotenv'
13+
import { findIgnoredImports } from '../src/transform/package-ignores'
1314
config()
1415

1516
const largeFixture = `
@@ -179,6 +180,7 @@ it('generates values same as transform', () => {
179180
pageCodeFixture,
180181
'/file.js',
181182
undefined,
183+
findIgnoredImports,
182184
true
183185
).unwrap()
184186
const functionIds = artifactMarkings.map((a) => a.functionOrCallId)

test/excludes.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { describe, expect, it } from 'vitest'
22
import { parse } from '@babel/parser'
33
import babelTraverse from '@babel/traverse'
4-
import { findIgnoredImports, shouldIgnoreCall } from '../src/transform/packageIgnores'
4+
import { findIgnoredImports } from '../src/transform/package-ignores'
55
import { excludeDirectoriesIncludeFilePath } from '../src/transform/directory-excludes'
66
import { CapturePayload } from '../src/core/types'
77
import { shouldIgnoreCapture } from '../src/core/captureIgnores'
88
import { _babelInterop, getParseConfig } from '../src/transform/artifacts/artifacts'
99
import { shouldIgnoreFunctionName } from '../src/transform/function-excludes'
10+
import { shouldIgnoreCall } from '../src/transform/call-ignores'
1011

1112
describe('excludeDirectories', () => {
1213
it('excludeDirectoriesIncludeFilePath', () => {

test/transform/generate.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Generate tests using Flytrap
22

33
import MagicString from 'magic-string'
4-
import { afterAll, beforeAll, describe, expect, it } from 'vitest'
4+
import { afterAll, beforeAll, expect, it } from 'vitest'
55
import { mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'fs'
66
import { join } from 'path'
77
import { tryCatchSync } from '../../src/core/util'

0 commit comments

Comments
 (0)