@codepress/codepress-engine 0.6.0 → 0.7.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/README.md CHANGED
@@ -20,24 +20,50 @@ TypeScript-powered instrumentation for the CodePress visual editor. The package
20
20
  npm install @codepress/codepress-engine
21
21
  ```
22
22
 
23
- ## SWC plugin (Next.js) usage
23
+ ### Next.js usage
24
24
 
25
25
  ```js
26
- // next.config.mjs (Next.js 14/15)
26
+ // next.config.mjs
27
27
  import { createSWCPlugin } from "@codepress/codepress-engine/swc";
28
+ import CodePressWebpackPlugin from "@codepress/codepress-engine/webpack-plugin";
28
29
 
29
30
  const nextConfig = {
31
+ // SWC plugin for code transformation (existing)
30
32
  experimental: {
31
- swcPlugins: [
32
- // Auto-detects repo/branch; no options required
33
- createSWCPlugin(),
34
- ],
33
+ swcPlugins: [createSWCPlugin()],
34
+ },
35
+
36
+ // Webpack plugin for production module mapping (new)
37
+ webpack: (config, { isServer, dev }) => {
38
+ config.plugins.push(new CodePressWebpackPlugin({ isServer, dev }));
39
+ return config;
35
40
  },
36
41
  };
37
42
 
38
43
  export default nextConfig;
39
44
  ```
40
45
 
46
+ ### How it works
47
+
48
+ The plugin:
49
+
50
+ 1. Automatically skips server builds (`isServer: true`) and dev builds (`dev: true`)
51
+ 2. Runs during webpack compilation for production client builds
52
+ 3. Builds a mapping: `{ 33: "react", 92: "react-dom", ... }`
53
+ 4. Injects `window.__CP_MODULE_MAP__` into the main bundle
54
+ 5. Enables O(1) module resolution instead of scanning all modules
55
+
56
+ ### Bundle size impact
57
+
58
+ - Typical app (1000 modules): +3-4KB gzipped
59
+ - Large app (3000 modules): +8-10KB gzipped
60
+
61
+ ### When to use
62
+
63
+ - **Required**: Production builds where you need HMR to work
64
+ - **Optional**: Development (already has named module IDs)
65
+ - **Alternative**: Set `moduleIds: 'named'` in webpack config (larger bundle, exposes file structure)
66
+
41
67
  Note: When using ESM (`next.config.mjs`), prefer the named import above due to CJS interop. For CommonJS configs you can use:
42
68
 
43
69
  ```js
@@ -76,12 +102,13 @@ Optional options for the Babel plugin (all are optional; omit to use auto-detect
76
102
 
77
103
  Entry points exposed by the package:
78
104
 
79
- | Export | Description |
80
- | ------------------------------------ | ---------------------------------- |
81
- | `@codepress/codepress-engine/babel` | Compiled Babel plugin (CommonJS) |
82
- | `@codepress/codepress-engine/swc` | SWC plugin factory & WASM helpers |
83
- | `@codepress/codepress-engine/server` | Fastify development server factory |
84
- | `@codepress/codepress-engine/cli` | CLI used by the `codepress` binary |
105
+ | Export | Description |
106
+ | -------------------------------------------- | ---------------------------------------- |
107
+ | `@codepress/codepress-engine/babel` | Compiled Babel plugin (CommonJS) |
108
+ | `@codepress/codepress-engine/swc` | SWC plugin factory & WASM helpers |
109
+ | `@codepress/codepress-engine/webpack-plugin` | Webpack plugin for production module map |
110
+ | `@codepress/codepress-engine/server` | Fastify development server factory |
111
+ | `@codepress/codepress-engine/cli` | CLI used by the `codepress` binary |
85
112
 
86
113
  ---
87
114
 
@@ -184,6 +211,7 @@ The helper automatically selects the correct WASM binary based on detected Next.
184
211
  ## Additional references
185
212
 
186
213
  - `INSTALL.md` – linking the package locally & publishing guidance
214
+ - `MODULE_MAP_INTEGRATION.md` – detailed guide for webpack plugin integration and troubleshooting
187
215
  - `scripts/build-swc.mjs` – rebuild the WASM binaries (requires Rust toolchain)
188
216
  - `tests/` – examples of mocking git, fetch, and file IO when validating the plugin
189
217
 
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Webpack plugin that injects a module ID → name mapping for CodePress HMR
3
+ *
4
+ * This plugin runs during webpack compilation and builds a mapping from numeric
5
+ * module IDs (used in production) to human-readable module names. The mapping
6
+ * is injected into the main bundle as window.__CP_MODULE_MAP__.
7
+ *
8
+ * @example
9
+ * // next.config.js
10
+ * const CodePressWebpackPlugin = require('@codepress/codepress-engine/webpack-plugin');
11
+ *
12
+ * module.exports = {
13
+ * webpack: (config, { isServer, dev }) => {
14
+ * config.plugins.push(new CodePressWebpackPlugin({ isServer, dev }));
15
+ * return config;
16
+ * }
17
+ * };
18
+ */
19
+ import type { Compiler } from 'webpack';
20
+ export interface CodePressWebpackPluginOptions {
21
+ /**
22
+ * Whether this is a server-side build (Next.js specific)
23
+ * Plugin will skip if true
24
+ */
25
+ isServer?: boolean;
26
+ /**
27
+ * Whether this is a development build
28
+ * Plugin will skip if true (dev already has named IDs)
29
+ */
30
+ dev?: boolean;
31
+ }
32
+ export default class CodePressWebpackPlugin {
33
+ /**
34
+ * The name of the plugin
35
+ */
36
+ readonly name = "CodePressWebpackPlugin";
37
+ private readonly options;
38
+ /**
39
+ * @param options - Plugin options for conditional execution
40
+ */
41
+ constructor(options?: CodePressWebpackPluginOptions);
42
+ /**
43
+ * Apply the plugin to the webpack compiler
44
+ */
45
+ apply(compiler: Compiler): void;
46
+ /**
47
+ * Process compilation assets and inject module map
48
+ */
49
+ private processAssets;
50
+ /**
51
+ * Build a mapping of module IDs to normalized paths
52
+ */
53
+ private buildModuleMap;
54
+ /**
55
+ * Normalize a module path to a human-readable format
56
+ *
57
+ * @param resourcePath - The absolute path to the module
58
+ * @param context - The webpack context (project root)
59
+ * @returns Normalized path or null if path should be excluded
60
+ */
61
+ private normalizePath;
62
+ /**
63
+ * Generate the inline script that injects the module map
64
+ */
65
+ private generateMapScript;
66
+ /**
67
+ * Find the main bundle and inject the map script
68
+ *
69
+ * @returns true if injection succeeded, false otherwise
70
+ */
71
+ private injectIntoMainBundle;
72
+ }
73
+ export { CodePressWebpackPlugin };
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ /**
3
+ * Webpack plugin that injects a module ID → name mapping for CodePress HMR
4
+ *
5
+ * This plugin runs during webpack compilation and builds a mapping from numeric
6
+ * module IDs (used in production) to human-readable module names. The mapping
7
+ * is injected into the main bundle as window.__CP_MODULE_MAP__.
8
+ *
9
+ * @example
10
+ * // next.config.js
11
+ * const CodePressWebpackPlugin = require('@codepress/codepress-engine/webpack-plugin');
12
+ *
13
+ * module.exports = {
14
+ * webpack: (config, { isServer, dev }) => {
15
+ * config.plugins.push(new CodePressWebpackPlugin({ isServer, dev }));
16
+ * return config;
17
+ * }
18
+ * };
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.CodePressWebpackPlugin = void 0;
22
+ class CodePressWebpackPlugin {
23
+ /**
24
+ * @param options - Plugin options for conditional execution
25
+ */
26
+ constructor(options = {}) {
27
+ /**
28
+ * The name of the plugin
29
+ */
30
+ this.name = 'CodePressWebpackPlugin';
31
+ this.options = options;
32
+ }
33
+ /**
34
+ * Apply the plugin to the webpack compiler
35
+ */
36
+ apply(compiler) {
37
+ // Skip if this is a server build or dev build
38
+ if (this.options.isServer) {
39
+ console.log('[CodePress] Skipping module map (server-side build)');
40
+ return;
41
+ }
42
+ if (this.options.dev) {
43
+ console.log('[CodePress] Skipping module map (dev build has named IDs)');
44
+ return;
45
+ }
46
+ compiler.hooks.thisCompilation.tap(this.name, (compilation) => {
47
+ compilation.hooks.processAssets.tap({
48
+ name: this.name,
49
+ // Run during the ADDITIONS stage to ensure all assets are present
50
+ stage: compilation.constructor.PROCESS_ASSETS_STAGE_ADDITIONS,
51
+ }, () => {
52
+ this.processAssets(compilation, compiler);
53
+ });
54
+ });
55
+ }
56
+ /**
57
+ * Process compilation assets and inject module map
58
+ */
59
+ processAssets(compilation, compiler) {
60
+ const moduleMap = this.buildModuleMap(compilation, compiler);
61
+ if (Object.keys(moduleMap).length === 0) {
62
+ console.warn('[CodePress] No modules found to map');
63
+ return;
64
+ }
65
+ console.log('[CodePress] Built module map with', Object.keys(moduleMap).length, 'entries');
66
+ const mapScript = this.generateMapScript(moduleMap);
67
+ const injected = this.injectIntoMainBundle(compilation, mapScript);
68
+ if (!injected) {
69
+ console.warn('[CodePress] Could not find main bundle to inject module map');
70
+ }
71
+ }
72
+ /**
73
+ * Build a mapping of module IDs to normalized paths
74
+ */
75
+ buildModuleMap(compilation, compiler) {
76
+ const moduleMap = {};
77
+ compilation.modules.forEach((module) => {
78
+ // Use ChunkGraph API instead of deprecated module.id
79
+ const moduleId = compilation.chunkGraph.getModuleId(module);
80
+ if (moduleId === null || moduleId === undefined) {
81
+ return;
82
+ }
83
+ // Type assertion: webpack modules can have a resource property
84
+ const moduleWithResource = module;
85
+ if (!moduleWithResource.resource) {
86
+ return;
87
+ }
88
+ const id = String(moduleId);
89
+ const normalizedPath = this.normalizePath(moduleWithResource.resource, compiler.context);
90
+ if (normalizedPath) {
91
+ moduleMap[id] = normalizedPath;
92
+ }
93
+ });
94
+ return moduleMap;
95
+ }
96
+ /**
97
+ * Normalize a module path to a human-readable format
98
+ *
99
+ * @param resourcePath - The absolute path to the module
100
+ * @param context - The webpack context (project root)
101
+ * @returns Normalized path or null if path should be excluded
102
+ */
103
+ normalizePath(resourcePath, context) {
104
+ let path = resourcePath;
105
+ // Handle node_modules
106
+ if (path.includes('node_modules')) {
107
+ // Extract package name (handles scoped packages like @foo/bar)
108
+ const packageMatch = path.match(/node_modules\/(@[^/]+\/[^/]+|[^/]+)/);
109
+ if (!packageMatch) {
110
+ return null;
111
+ }
112
+ const packageName = packageMatch[1];
113
+ // Extract subpath within the package (e.g., react/jsx-runtime)
114
+ const subPathMatch = path.match(/node_modules\/[^/]+(?:\/[^/]+)?\/(.+)/);
115
+ if (subPathMatch && subPathMatch[1]) {
116
+ const subPath = subPathMatch[1]
117
+ .replace(/\\/g, '/')
118
+ .replace(/\.(jsx?|tsx?|mjs|cjs)$/, '');
119
+ return `${packageName}/${subPath}`;
120
+ }
121
+ return packageName;
122
+ }
123
+ // Handle app code - make relative to context
124
+ path = path
125
+ .replace(context, '.')
126
+ .replace(/\\/g, '/') // Normalize Windows paths
127
+ .replace(/\.(jsx?|tsx?|mjs|cjs)$/, ''); // Remove extension
128
+ return path;
129
+ }
130
+ /**
131
+ * Generate the inline script that injects the module map
132
+ */
133
+ generateMapScript(moduleMap) {
134
+ const json = JSON.stringify(moduleMap);
135
+ return `(function(){if(typeof window!=="undefined"){window.__CP_MODULE_MAP__=${json};console.log("[CodePress] Loaded module map with",Object.keys(window.__CP_MODULE_MAP__).length,"entries");}})();`;
136
+ }
137
+ /**
138
+ * Find the main bundle and inject the map script
139
+ *
140
+ * @returns true if injection succeeded, false otherwise
141
+ */
142
+ injectIntoMainBundle(compilation, mapScript) {
143
+ // Find the main client bundle
144
+ // Matches patterns like: main-abc123.js, static/chunks/main-abc123.js
145
+ const mainAsset = compilation
146
+ .getAssets()
147
+ .find((asset) => asset.name.match(/^(static\/chunks\/main-|main-)[a-f0-9]+\.js$/));
148
+ if (!mainAsset) {
149
+ return false;
150
+ }
151
+ const { name } = mainAsset;
152
+ const source = mainAsset.source;
153
+ const originalSource = source.source();
154
+ const originalSourceStr = typeof originalSource === 'string'
155
+ ? originalSource
156
+ : Buffer.isBuffer(originalSource)
157
+ ? originalSource.toString('utf-8')
158
+ : String(originalSource);
159
+ // Update the asset with the prepended map script
160
+ compilation.updateAsset(name, {
161
+ source: () => mapScript + '\n' + originalSourceStr,
162
+ size: () => mapScript.length + originalSourceStr.length,
163
+ });
164
+ console.log('[CodePress] Injected module map into', name);
165
+ return true;
166
+ }
167
+ }
168
+ exports.default = CodePressWebpackPlugin;
169
+ exports.CodePressWebpackPlugin = CodePressWebpackPlugin;
170
+ // CommonJS compatibility
171
+ module.exports = CodePressWebpackPlugin;
172
+ module.exports.CodePressWebpackPlugin = CodePressWebpackPlugin;
173
+ module.exports.default = CodePressWebpackPlugin;
174
+ //# sourceMappingURL=webpack-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webpack-plugin.js","sourceRoot":"","sources":["../src/webpack-plugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codepress/codepress-engine",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
4
4
  "packageManager": "pnpm@10.22.0",
5
5
  "description": "CodePress engine - Babel and SWC plug-ins",
6
6
  "main": "./dist/index.js",
@@ -36,6 +36,11 @@
36
36
  "require": "./dist/esbuild-plugin.js",
37
37
  "default": "./dist/esbuild-plugin.js"
38
38
  },
39
+ "./webpack-plugin": {
40
+ "types": "./dist/webpack-plugin.d.ts",
41
+ "require": "./dist/webpack-plugin.js",
42
+ "default": "./dist/webpack-plugin.js"
43
+ },
39
44
  "./swc/wasm": "./swc/codepress_engine.v42.wasm",
40
45
  "./swc/wasm-v42": "./swc/codepress_engine.v42.wasm",
41
46
  "./swc/wasm-v26": "./swc/codepress_engine.v26.wasm",
@@ -101,6 +106,7 @@
101
106
  "@types/jest": "^30.0.0",
102
107
  "@types/node": "^22.9.0",
103
108
  "@types/node-fetch": "^2.6.11",
109
+ "@types/webpack": "^5.28.5",
104
110
  "esbuild": "^0.24.0",
105
111
  "babel-jest": "^30.2.0",
106
112
  "eslint": "^9.37.0",
Binary file
Binary file
Binary file