@polyfill-prune/vite-plugin 0.1.1 → 0.2.0-beta.1.41643446413.1
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/CHANGELOG.md +13 -0
- package/README.md +4 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @polyfill-prune/vite-plugin
|
|
2
2
|
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 20d0437: Recognize Web API presence checks, compound guards, stable aliases, synchronous IIFE parameters, early-return continuations, and for/while fallbacks in the Rust core. Derive browser API locations from pinned Webref Web IDL and support versions from MDN BCD. Preserve getter evaluation, retained side effects, conflicting writes, and unsupported targets.
|
|
8
|
+
|
|
9
|
+
Add the `environment` option: the core defaults to ECMAScript APIs, while the Vite client plugin enables Window Web APIs. Include the Webref source revision in version metadata and dependency cache fingerprints.
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [20d0437]
|
|
14
|
+
- @polyfill-prune/core@0.2.0
|
|
15
|
+
|
|
3
16
|
## 0.1.1
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -21,6 +21,7 @@ export default defineConfig({
|
|
|
21
21
|
| Option | Default | Description |
|
|
22
22
|
| --------------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------- |
|
|
23
23
|
| `targets` | Resolved `build.target` | Explicit runtime target array; can override a build target that specifies only ES syntax |
|
|
24
|
+
| `environment` | `'browser'` | Window Web API analysis; use `'ecmascript'` to restrict pruning to language APIs |
|
|
24
25
|
| `keep` | `[]` | Preserve APIs and their descendants |
|
|
25
26
|
| `sourceMap` | `true` | Generate transformation maps for Vite to compose |
|
|
26
27
|
| `filter(id)` | JS/TS module extensions | Receives module IDs during development and chunk filenames during production builds |
|
|
@@ -40,6 +41,8 @@ export default defineConfig({
|
|
|
40
41
|
|
|
41
42
|
Production pruning runs on output chunks. If another output plugin injects polyfills after this plugin, adjust its hook order. Filtering chunk filenames does not filter individual source modules within those chunks.
|
|
42
43
|
|
|
43
|
-
Only the `client` environment is processed. SSR, worker, and other environments are skipped. The development dependency cache includes targets, `keep`, the filter's source text, and core/data versions in the plugin identifier. In Vite 6/7, an earlier custom esbuild loader that handles a file prevents this plugin's `onLoad` hook from processing it again.
|
|
44
|
+
Only the `client` environment is processed. SSR, worker, and other environments are skipped. The development dependency cache includes targets, `environment`, `keep`, the filter's source text, and core/data versions in the plugin identifier. In Vite 6/7, an earlier custom esbuild loader that handles a file prevents this plugin's `onLoad` hook from processing it again.
|
|
45
|
+
|
|
46
|
+
Browser mode recognizes Web API guards, stable aliases, early-return continuations, and loop fallbacks. Getter attributes are checked for presence only. The core API uses ECMAScript-only mode by default; the plugin forwards its browser environment explicitly.
|
|
44
47
|
|
|
45
48
|
The plugin removes only branches the core library can prove unnecessary. It does not guarantee removal of arbitrary bundled core-js code or custom installers. Syntax-only build targets such as `esnext` or `es2015` require an explicit `targets` option.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Plugin } from 'vite';
|
|
2
2
|
import type { PruneOptions, PruneResult } from '@polyfill-prune/core';
|
|
3
3
|
export interface PolyfillPruneOptions extends Omit<PruneOptions, 'filename' | 'targets'> {
|
|
4
|
+
/** Window Web API analysis for client code. Default: browser. */
|
|
5
|
+
environment?: PruneOptions['environment'];
|
|
4
6
|
/** Defaults to the resolved Vite build.target. Syntax-only targets require an override. */
|
|
5
7
|
targets?: string[];
|
|
6
8
|
/** Defaults to JS/TS module files. Receives module IDs in dev and chunk filenames in build. */
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@ export function polyfillPrune(options = {}) {
|
|
|
16
16
|
const result = await prune(code, {
|
|
17
17
|
targets,
|
|
18
18
|
filename: id.split('?')[0],
|
|
19
|
+
environment: options.environment ?? 'browser',
|
|
19
20
|
keep: options.keep,
|
|
20
21
|
sourceMap: options.sourceMap,
|
|
21
22
|
});
|
|
@@ -69,10 +70,11 @@ export function polyfillPrune(options = {}) {
|
|
|
69
70
|
const target = options.targets ?? resolved.build.target;
|
|
70
71
|
targets = typeof target === 'string' ? [target] : target || [];
|
|
71
72
|
// Rust owns target parsing and validates even when no module needs pruning.
|
|
72
|
-
await prune('', { targets, sourceMap: false });
|
|
73
|
+
await prune('', { targets, environment: options.environment ?? 'browser', sourceMap: false });
|
|
73
74
|
const fingerprint = createHash('sha256')
|
|
74
75
|
.update(JSON.stringify({
|
|
75
76
|
targets,
|
|
77
|
+
environment: options.environment ?? 'browser',
|
|
76
78
|
keep: options.keep,
|
|
77
79
|
sourceMap: options.sourceMap,
|
|
78
80
|
filter: options.filter?.toString(),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polyfill-prune/vite-plugin",
|
|
3
|
-
"version": "0.1.1",
|
|
3
|
+
"version": "0.2.0-beta.1.41643446413.1",
|
|
4
4
|
"description": "Vite integration for the polyfill-prune Rust library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"CHANGELOG.md"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@polyfill-prune/core": "0.1.1"
|
|
25
|
+
"@polyfill-prune/core": "0.2.0-beta.1.41643446413.1"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"vite": ">=6 <9"
|