Skip to content

Commit 84e33ef

Browse files
committed
chore: update examples
1 parent f1ee06c commit 84e33ef

File tree

7 files changed

+124
-79
lines changed

7 files changed

+124
-79
lines changed

examples/nebu-strip-dev/index.js

Lines changed: 0 additions & 53 deletions
This file was deleted.

examples/nebu-strip-dev/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
22
"name": "nebu-strip-dev",
3-
"version": "1.0.0"
3+
"version": "0.1.0",
4+
"main": "dist/index.js"
45
}

examples/nebu-strip-dev/src/index.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { Plugin, Node } from '../../..'
2+
3+
// const re = /(^|(&&|\|\|) )process\.env\.NODE_ENV !==? ['"]production['"]/
4+
5+
export default <Plugin>{
6+
IfStatement(node) {
7+
let { test } = node
8+
if (isDevCondition(test)) {
9+
copyAlternate(node)
10+
// TODO: Add closing } when parent is an IfStatement.
11+
// TODO: Avoid removing alternates when parent is an IfStatement.
12+
node.remove()
13+
} else {
14+
findDevConditions(test)
15+
}
16+
},
17+
}
18+
19+
function isDevCondition(cond: Node.Expression) {
20+
return (
21+
cond.isBinaryExpression() &&
22+
cond.operator.startsWith('!=') &&
23+
cond.right.isLiteral('string') &&
24+
cond.right.value == 'production' &&
25+
cond.left.toString() == 'process.env.NODE_ENV'
26+
)
27+
}
28+
29+
function copyAlternate(cond: Node.IfStatement) {
30+
const alt = cond.alternate
31+
if (!alt) return
32+
if (alt.isBlockStatement()) {
33+
if (alt.body.length) {
34+
// TODO: Preserve blank lines.
35+
alt.body.forEach(alt => {
36+
cond.after('\n' + alt.toString())
37+
})
38+
}
39+
} else {
40+
cond.after('\n' + alt.toString())
41+
}
42+
}
43+
44+
function findDevConditions(cond: Node.Expression) {
45+
while (cond.isLogicalExpression()) {
46+
// TODO: Remove branch if expression has only && operators.
47+
if (isDevCondition(cond.left)) {
48+
cond.left.replace('false')
49+
} else {
50+
findDevConditions(cond.left)
51+
}
52+
if (isDevCondition(cond.right)) {
53+
return cond.right.replace('false')
54+
} else {
55+
cond = cond.right
56+
}
57+
}
58+
}

examples/nebu-strip-dev/tsconfig.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"extends": "../../tsconfig.json",
3+
"include": ["src"],
4+
"exclude": [],
5+
"compilerOptions": {
6+
"outDir": "dist"
7+
}
8+
}

examples/package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
"name": "nebu-examples",
33
"dependencies": {
44
"changed-lines": "^1.0.0",
5-
"nebu": "file:.."
5+
"nebu": "link:..",
6+
"typescript": "link:../node_modules/typescript"
7+
},
8+
"devDependencies": {
9+
"kleur": "^4.1.4"
610
}
711
}

examples/pnpm-lock.yaml

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

examples/try

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,44 @@
11
#!/usr/bin/env node
2-
const nebu = require('nebu');
2+
const { nebu } = require('nebu')
33

4-
let plugin = process.argv[2];
4+
let plugin = process.argv[2]
55
if (!plugin.startsWith('nebu-')) {
6-
plugin = 'nebu-' + plugin;
6+
plugin = 'nebu-' + plugin
77
}
88

9-
const fs = require('fs');
10-
const path = require('path');
9+
const fs = require('fs')
10+
const path = require('path')
1111

12-
const script = path.resolve(plugin, 'script.js');
13-
const input = fs.readFileSync(script, 'utf8');
12+
const script = path.resolve(plugin, 'script.js')
13+
const input = fs.readFileSync(script, 'utf8')
1414

1515
// For debugging:
16-
const util = require('util');
17-
global.inspect = function(obj) {
18-
console.log(util.inspect(obj, false, 4, true) + '\n');
16+
const util = require('util')
17+
global.inspect = function (obj) {
18+
console.log(util.inspect(obj, false, 4, true) + '\n')
1919
}
2020

21-
const output = nebu.process(input, {
21+
const { js: output } = nebu.process(input, {
2222
filename: script,
23-
plugins: [
24-
require('./' + plugin)
25-
]
26-
});
23+
plugins: [require('./' + plugin)],
24+
})
2725

28-
const huey = require('huey');
26+
const k = require('kleur')
2927

3028
// Print the diff before running.
3129
if (input !== output) {
32-
const diff = require('changed-lines');
33-
console.log(diff(input, output, huey).join('\n'));
30+
const diff = require('changed-lines')
31+
console.log(diff(input, output, k).join('\n'))
3432
} else {
35-
console.log(huey.gray('No changes were made.'));
33+
console.log(k.gray('No changes were made.'))
3634
}
3735

38-
console.log('');
39-
console.log('Testing:', huey.yellow(plugin));
40-
console.log('');
36+
console.log('')
37+
console.log('Testing:', k.yellow(plugin))
38+
console.log('')
4139

42-
const vm = require('vm');
40+
const vm = require('vm')
4341
vm.runInThisContext(output, {
4442
filename: script,
4543
displayErrors: true,
46-
});
44+
})

0 commit comments

Comments
 (0)