phantom-build 0.1.0 → 0.2.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.
- package/README.md +52 -1
- package/dist/classify/index.d.ts +21 -1
- package/dist/classify/index.d.ts.map +1 -1
- package/dist/classify/index.js +19 -4
- package/dist/classify/index.js.map +1 -1
- package/dist/classify/ssr-boundary.d.ts +11 -0
- package/dist/classify/ssr-boundary.d.ts.map +1 -0
- package/dist/classify/ssr-boundary.js +760 -0
- package/dist/classify/ssr-boundary.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +110 -3
- package/dist/plugin.js.map +1 -1
- package/dist/types.d.ts +49 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Phantom is a build plugin that analyzes your React code, extracts event handlers into lazy-loaded chunks, and wraps below-fold components in `React.lazy` + `Suspense` — all automatically, with zero config changes to your components.
|
|
6
6
|
|
|
7
|
-
```
|
|
7
|
+
```bash
|
|
8
8
|
npm install phantom-build
|
|
9
9
|
```
|
|
10
10
|
|
|
@@ -198,9 +198,59 @@ phantom({
|
|
|
198
198
|
|
|
199
199
|
// Cerebras model ID. Default: "qwen-3-32b"
|
|
200
200
|
cerebrasModel: 'qwen-3-32b',
|
|
201
|
+
|
|
202
|
+
// SSR mode: skip all transforms for server builds. Default: false
|
|
203
|
+
ssr: false,
|
|
201
204
|
})
|
|
202
205
|
```
|
|
203
206
|
|
|
207
|
+
### SSR (Server-Side Rendering)
|
|
208
|
+
|
|
209
|
+
Phantom supports custom SSR setups where you run separate client and server builds. `React.lazy()` throws when used with `renderToString()`, so the server bundle needs original code with synchronous imports.
|
|
210
|
+
|
|
211
|
+
**The solution:** run Phantom with `ssr: true` for your server build. This makes the plugin a complete no-op — your server bundle gets untouched source code.
|
|
212
|
+
|
|
213
|
+
#### Vite
|
|
214
|
+
|
|
215
|
+
```ts
|
|
216
|
+
// vite.config.server.ts
|
|
217
|
+
import phantom from 'phantom-build/vite';
|
|
218
|
+
|
|
219
|
+
export default defineConfig({
|
|
220
|
+
plugins: [
|
|
221
|
+
phantom({ ssr: true }),
|
|
222
|
+
react(),
|
|
223
|
+
],
|
|
224
|
+
});
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
#### Webpack
|
|
228
|
+
|
|
229
|
+
```js
|
|
230
|
+
// webpack.config.server.js
|
|
231
|
+
import phantom from 'phantom-build/webpack';
|
|
232
|
+
|
|
233
|
+
export default {
|
|
234
|
+
target: 'node',
|
|
235
|
+
plugins: [
|
|
236
|
+
phantom({ ssr: true }),
|
|
237
|
+
],
|
|
238
|
+
};
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
#### Typical Setup
|
|
242
|
+
|
|
243
|
+
Most custom SSR setups (e.g., .NET + React, Express + React) use two bundler configs:
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
webpack.config.client.js → phantom() // full transforms
|
|
247
|
+
webpack.config.server.js → phantom({ ssr: true }) // no-op
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
The client build produces lazy-loaded handler chunks and `React.lazy` wrappers. The server build produces a synchronous bundle for `renderToString()` with all components inline.
|
|
251
|
+
|
|
252
|
+
**Why not strip just `React.lazy`?** Selectively removing lazy transforms while keeping handler extraction would still inject `__phantom_lazy` runtime imports and dynamic `import()` calls into the server bundle. A clean no-op is simpler, produces the smallest server bundle, and avoids any SSR-incompatible code paths.
|
|
253
|
+
|
|
204
254
|
### LLM-Assisted Optimization
|
|
205
255
|
|
|
206
256
|
Phantom's heuristics handle ~80% of cases correctly. For the remaining 20% that require judgment (grouping related components, choosing prefetch strategies for ambiguous cases), you can enable LLM refinement:
|
|
@@ -372,6 +422,7 @@ The generated `lazy()` calls will target the actual component modules (`./compon
|
|
|
372
422
|
- Node.js >= 18
|
|
373
423
|
- React 16.6+ (for `React.lazy` and `Suspense`)
|
|
374
424
|
- Vite or Webpack
|
|
425
|
+
- For SSR: any custom server setup (Express, .NET, etc.) — not framework-specific
|
|
375
426
|
|
|
376
427
|
## License
|
|
377
428
|
|
package/dist/classify/index.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Node } from 'estree';
|
|
2
|
+
import type { AnalyzedModule, ClassifiedSegment, FunctionDependency } from '../types.js';
|
|
3
|
+
import { type TaintResult } from './taint.js';
|
|
4
|
+
/** Intermediate classification results for downstream consumers (e.g., SSR boundary detection) */
|
|
5
|
+
export interface ClassificationContext {
|
|
6
|
+
segments: ClassifiedSegment[];
|
|
7
|
+
taintResults: Map<FunctionDependency, TaintResult>;
|
|
8
|
+
hookContexts: Map<FunctionDependency, string>;
|
|
9
|
+
eventHandlerContexts: Map<FunctionDependency, string>;
|
|
10
|
+
}
|
|
2
11
|
/**
|
|
3
12
|
* Run the full 3-pass classification on an analyzed module.
|
|
4
13
|
*
|
|
@@ -7,8 +16,19 @@ import type { AnalyzedModule, ClassifiedSegment } from '../types.js';
|
|
|
7
16
|
* Pass 3: Boundary detection — classify and identify extraction candidates
|
|
8
17
|
*/
|
|
9
18
|
export declare function classifyModule(analyzed: AnalyzedModule, sourceCode: string): ClassifiedSegment[];
|
|
19
|
+
/**
|
|
20
|
+
* Run classification and return intermediate results for SSR analysis.
|
|
21
|
+
* The SSR boundary detector needs taintResults, hookContexts, and
|
|
22
|
+
* eventHandlerContexts to avoid redundant AST walks.
|
|
23
|
+
*/
|
|
24
|
+
export declare function classifyModuleWithContext(analyzed: AnalyzedModule, sourceCode: string): ClassificationContext;
|
|
25
|
+
/**
|
|
26
|
+
* Simple recursive AST walker.
|
|
27
|
+
*/
|
|
28
|
+
export declare function walkNode(node: unknown, callback: (node: Node) => void): void;
|
|
10
29
|
export { analyzeTaint, type TaintResult } from './taint.js';
|
|
11
30
|
export { analyzePurity, type PurityResult } from './purity.js';
|
|
12
31
|
export { classifySegment } from './boundary.js';
|
|
13
32
|
export { detectLazyCandidates } from './lazy.js';
|
|
33
|
+
export { classifyModuleSSR } from './ssr-boundary.js';
|
|
14
34
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/classify/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/classify/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA8B,MAAM,QAAQ,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAgC,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAK5E,kGAAkG;AAClG,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,YAAY,EAAE,GAAG,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACnD,YAAY,EAAE,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC9C,oBAAoB,EAAE,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;CACvD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,GACjB,iBAAiB,EAAE,CAErB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,GACjB,qBAAqB,CAuDvB;AAsQD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI,CAmB5E;AAED,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/classify/index.js
CHANGED
|
@@ -10,9 +10,23 @@ import { EXTRACTABLE_HOOKS, CLIENT_ONLY_HOOKS, EVENT_HANDLER_PROPS } from './rea
|
|
|
10
10
|
* Pass 3: Boundary detection — classify and identify extraction candidates
|
|
11
11
|
*/
|
|
12
12
|
export function classifyModule(analyzed, sourceCode) {
|
|
13
|
+
return classifyModuleWithContext(analyzed, sourceCode).segments;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Run classification and return intermediate results for SSR analysis.
|
|
17
|
+
* The SSR boundary detector needs taintResults, hookContexts, and
|
|
18
|
+
* eventHandlerContexts to avoid redundant AST walks.
|
|
19
|
+
*/
|
|
20
|
+
export function classifyModuleWithContext(analyzed, sourceCode) {
|
|
13
21
|
const { functions } = analyzed;
|
|
14
|
-
if (functions.length === 0)
|
|
15
|
-
return
|
|
22
|
+
if (functions.length === 0) {
|
|
23
|
+
return {
|
|
24
|
+
segments: [],
|
|
25
|
+
taintResults: new Map(),
|
|
26
|
+
hookContexts: new Map(),
|
|
27
|
+
eventHandlerContexts: new Map(),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
16
30
|
// Pass 1: Taint analysis
|
|
17
31
|
const taintResults = new Map();
|
|
18
32
|
for (const fn of functions) {
|
|
@@ -48,7 +62,7 @@ export function classifyModule(analyzed, sourceCode) {
|
|
|
48
62
|
});
|
|
49
63
|
segments.push(segment);
|
|
50
64
|
}
|
|
51
|
-
return segments;
|
|
65
|
+
return { segments, taintResults, hookContexts, eventHandlerContexts };
|
|
52
66
|
}
|
|
53
67
|
/**
|
|
54
68
|
* Build a map from span key to AST node for all function nodes.
|
|
@@ -268,7 +282,7 @@ function detectEventHandlerContexts(analyzed) {
|
|
|
268
282
|
/**
|
|
269
283
|
* Simple recursive AST walker.
|
|
270
284
|
*/
|
|
271
|
-
function walkNode(node, callback) {
|
|
285
|
+
export function walkNode(node, callback) {
|
|
272
286
|
if (!node || typeof node !== 'object')
|
|
273
287
|
return;
|
|
274
288
|
if (Array.isArray(node)) {
|
|
@@ -291,4 +305,5 @@ export { analyzeTaint } from './taint.js';
|
|
|
291
305
|
export { analyzePurity } from './purity.js';
|
|
292
306
|
export { classifySegment } from './boundary.js';
|
|
293
307
|
export { detectLazyCandidates } from './lazy.js';
|
|
308
|
+
export { classifyModuleSSR } from './ssr-boundary.js';
|
|
294
309
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/classify/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAoB,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/classify/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AnalyzedModule, SSRModuleResult } from '../types.js';
|
|
2
|
+
import type { ClassificationContext } from './index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Classify all components in a module for SSR safety.
|
|
5
|
+
*
|
|
6
|
+
* Uses intermediate results from the classification pipeline to avoid
|
|
7
|
+
* redundant AST walks. The classification context provides taint results,
|
|
8
|
+
* hook contexts, and event handler contexts already computed.
|
|
9
|
+
*/
|
|
10
|
+
export declare function classifyModuleSSR(analyzed: AnalyzedModule, sourceCode: string, context: ClassificationContext): SSRModuleResult;
|
|
11
|
+
//# sourceMappingURL=ssr-boundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssr-boundary.d.ts","sourceRoot":"","sources":["../../src/classify/ssr-boundary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAId,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAwBxD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,qBAAqB,GAC7B,eAAe,CAkCjB"}
|