Skip to content

Commit 9ec198e

Browse files
author
Adam McKee
committed
going dependencyless
1 parent 0dceb2c commit 9ec198e

3 files changed

Lines changed: 32 additions & 49 deletions

File tree

lib/expression.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { readFile } from 'node:fs/promises'
2-
import MagicString from 'magic-string'
32

43
type TemplateExpression = {
54
index: number
@@ -23,15 +22,18 @@ export async function evalTemplateExpressions(
2322
if (!expressions.length) {
2423
return content
2524
}
26-
const ms = new MagicString(content)
25+
let offset = 0
2726
for (const expression of expressions) {
28-
ms.update(
29-
expression.index,
30-
expression.index + expression.outie.length,
31-
await evaluate(expression.innie),
32-
)
27+
const expressionResult = await evaluate(expression.innie)
28+
content =
29+
content.substring(0, expression.index + offset) +
30+
expressionResult +
31+
content.substring(
32+
expression.index + expression.outie.length + offset,
33+
)
34+
offset += expressionResult.length - expression.outie.length
3335
}
34-
return ms.toString()
36+
return content
3537
}
3638

3739
async function evaluate(expression: string): Promise<string> {

package.json

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,10 @@
3737
"test": "node --test \"lib/**/*.spec.ts\"",
3838
"typecheck": "tsc --noEmit"
3939
},
40-
"dependencies": {
41-
"magic-string": "0.30.17"
42-
},
4340
"devDependencies": {
44-
"@types/node": "^22.14.1",
45-
"prettier": "^3.5.3",
46-
"typescript": "5.8.2"
41+
"@types/node": "^25.3.0",
42+
"prettier": "^3.8.1",
43+
"typescript": "5.9.3"
4744
},
4845
"files": [
4946
"lib/*",

pnpm-lock.yaml

Lines changed: 19 additions & 35 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)