@plaudit/webpack-extensions 2.68.1 → 2.69.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.
@@ -1,5 +1,5 @@
1
- import { ParsedAssetsJson, VerifiedAdvancedOutputConfig } from "../shared";
2
- import type { ExtensibleEntryObject, VerifiedPlauditWordpressWebpackConfig } from "../utils/common-config-helpers";
1
+ import { ParsedAssetsJson, VerifiedAdvancedOutputConfig, VerifiedPlauditWordpressWebpackConfig } from "../shared";
2
+ import type { ExtensibleEntryObject } from "../utils/common-config-helpers";
3
3
  import { PseudoSemaphore } from "../utils/pseduo-semaphore";
4
4
  import { AbstractBiPhasicGroupPlugin } from "./AbstractBiPhasicGroupPlugin";
5
5
  import { Compilation, Compiler, Entrypoint } from "webpack";
@@ -1,7 +1,6 @@
1
- import { Compilation, Compiler, type WebpackPluginInstance } from "webpack";
2
1
  import { PseudoSemaphore } from "../utils/pseduo-semaphore";
3
- import type { VerifiedPlauditWordpressWebpackConfig } from "../utils/common-config-helpers";
4
- import { ParsedAssetsJson } from "../shared";
2
+ import { type ParsedAssetsJson, type VerifiedPlauditWordpressWebpackConfig } from "../shared";
3
+ import { Compilation, Compiler, type WebpackPluginInstance } from "webpack";
5
4
  type TapWithAssetsJsonOptions = {
6
5
  name?: string;
7
6
  stage?: (typeof Compilation.PROCESS_ASSETS_STAGE_REPORT) | (typeof Compilation.PROCESS_ASSETS_STAGE_ANALYSE);
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractBiPhasicGroupPlugin = void 0;
4
- const webpack_1 = require("webpack");
5
4
  const shared_1 = require("../shared");
5
+ const webpack_1 = require("webpack");
6
6
  class AbstractBiPhasicGroupPlugin {
7
7
  config;
8
8
  group;
@@ -1,6 +1,6 @@
1
1
  import { AbstractBiPhasicGroupPlugin } from "./AbstractBiPhasicGroupPlugin";
2
2
  import type { AbstractBiPhasicGroupAndEntryPlugin } from "./AbstractBiPhasicGroupAndEntryPlugin";
3
- import { VerifiedPlauditWordpressWebpackConfig } from "../utils/common-config-helpers";
3
+ import { VerifiedPlauditWordpressWebpackConfig } from "../shared";
4
4
  import { Compilation } from "webpack";
5
5
  export declare class AdditionalDependencyInjectorPlugin extends AbstractBiPhasicGroupPlugin {
6
6
  private readonly processingModules;
@@ -1,5 +1,5 @@
1
1
  import { AbstractBiPhasicGroupAndEntryPlugin, EntryProvider } from "./AbstractBiPhasicGroupAndEntryPlugin";
2
- import type { VerifiedPlauditWordpressWebpackConfig } from "../utils/common-config-helpers";
2
+ import type { VerifiedPlauditWordpressWebpackConfig } from "../shared";
3
3
  export declare class EnhancedDynamicEntryPlugin extends AbstractBiPhasicGroupAndEntryPlugin {
4
4
  constructor(config: VerifiedPlauditWordpressWebpackConfig, context: string, entry: EntryProvider);
5
5
  protected attachUniquePhase(): void;
@@ -1,6 +1,5 @@
1
1
  import { AbstractBiPhasicGroupAndEntryPlugin, EntryProvider } from "./AbstractBiPhasicGroupAndEntryPlugin";
2
- import { ParsedAssetsJson, VerifiedAdvancedOutputConfig } from "../shared";
3
- import type { VerifiedPlauditWordpressWebpackConfig } from "../utils/common-config-helpers";
2
+ import { ParsedAssetsJson, VerifiedAdvancedOutputConfig, VerifiedPlauditWordpressWebpackConfig } from "../shared";
4
3
  import { Compilation, type Compiler } from "webpack";
5
4
  export declare class ExtensionsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAndEntryPlugin {
6
5
  private readonly extensionsSrcPath;
@@ -49,7 +49,7 @@ class ExtensionsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAndEntryP
49
49
  });
50
50
  }
51
51
  generateVersionThreeConfigFile(compilation, relevantAssetData, setupFilePaths) {
52
- const handlePrefix = `${this.config.plainEntrypointsHandlePrefix}_block-extensions`;
52
+ const handlePrefix = `${this.config.targetHandlePrefix}_block-extensions`;
53
53
  const regex = /^(.+?)-((?:editor-|view-|)(?:style|script|script-module))\.(?:css|m?js)$/i;
54
54
  const blockExtensionsConfig = {
55
55
  metadata: { version: this.config.extensionsVersion }, scriptHandles: {}, scriptModuleHandles: {}, styleHandles: {}, blocks: {}, setupFiles: {}
@@ -1,6 +1,5 @@
1
1
  import { AbstractBiPhasicGroupAndEntryPlugin, EntryProvider } from "./AbstractBiPhasicGroupAndEntryPlugin";
2
- import type { ParsedAssetsJson } from "../shared";
3
- import type { VerifiedPlauditWordpressWebpackConfig } from "../utils/common-config-helpers";
2
+ import type { ParsedAssetsJson, VerifiedPlauditWordpressWebpackConfig } from "../shared";
4
3
  import { Compilation } from "webpack";
5
4
  export declare class ExtensionsConfigFileGeneratorPluginV1 extends AbstractBiPhasicGroupAndEntryPlugin {
6
5
  private readonly extensionsDest;
@@ -1,5 +1,4 @@
1
- import { ParsedAssetsJson, BlockEntrypointInfo, UsageLocations } from "../shared";
2
- import type { VerifiedPlauditWordpressWebpackConfig } from "../utils/common-config-helpers";
1
+ import { ParsedAssetsJson, BlockEntrypointInfo, UsageLocations, VerifiedPlauditWordpressWebpackConfig } from "../shared";
3
2
  import { AbstractBiPhasicGroupAndEntryPlugin, EntryProvider } from "./AbstractBiPhasicGroupAndEntryPlugin";
4
3
  import { Compilation } from "webpack";
5
4
  export declare class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAndEntryPlugin<BlockEntrypointInfo> {
@@ -85,7 +85,7 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
85
85
  for (const { handle, type, data } of prioritizedHandleList) {
86
86
  writer.call(`wp_register_${type}`, [handle, php_writer_1.Op.concat(baseUriVar, node_path_1.default.relative(emitDir, data.src)), ...data.rest]);
87
87
  }
88
- }, { priority, accountForAlreadyDoing: true });
88
+ }, { priority, accountForAlreadyDoing: this.config.plainEntrypointsSettings.includePostInitFallback });
89
89
  }
90
90
  const sortedEditorStyleHandles = sortedStyleHandles
91
91
  .filter(([_, { locations: { clientEditor }, type }]) => type === 'style' && (clientEditor || typeof clientEditor === 'number'))
@@ -188,7 +188,7 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
188
188
  handleName: useHandleName ? this.usageLocations.handle : undefined,
189
189
  });
190
190
  }
191
- myAssetHandles.push({ handles, handlePrefix: this.config.plainEntrypointsHandlePrefix });
191
+ myAssetHandles.push({ handles, handlePrefix: this.config.targetHandlePrefix });
192
192
  }
193
193
  PlainEntrypointsConfigFileGeneratorPlugin.semaphore.resolve(this.id, myAssetHandles);
194
194
  UnifiedLoaderGenerator_1.UnifiedLoaderGenerator.semaphore.resolve(this.id, myAssetHandles.length
@@ -1,6 +1,5 @@
1
1
  import { AbstractBiPhasicGroupAndEntryPlugin, EntryProvider } from "./AbstractBiPhasicGroupAndEntryPlugin";
2
- import { ParsedAssetsJson, BlockEntrypointInfo, FileSegmentBlockEntrypointInfo } from "../shared";
3
- import type { VerifiedPlauditWordpressWebpackConfig } from "../utils/common-config-helpers";
2
+ import { ParsedAssetsJson, BlockEntrypointInfo, FileSegmentBlockEntrypointInfo, VerifiedPlauditWordpressWebpackConfig } from "../shared";
4
3
  import { Compilation } from "webpack";
5
4
  import type WebpackRemoveEmptyScriptsPlugin from "webpack-remove-empty-scripts";
6
5
  type WorkableBlockEntrypointInfo = Omit<FileSegmentBlockEntrypointInfo, 'originalValue'> & Partial<Pick<FileSegmentBlockEntrypointInfo, 'originalValue'>> & {
@@ -1,4 +1,4 @@
1
- import type { VerifiedPlauditWordpressWebpackConfig } from "../utils/common-config-helpers";
1
+ import { VerifiedPlauditWordpressWebpackConfig } from "../shared";
2
2
  import { AbstractBiPhasicGroupPlugin } from "./AbstractBiPhasicGroupPlugin";
3
3
  import { Compilation } from "webpack";
4
4
  export declare class SpecialAssetHandlingPlugin extends AbstractBiPhasicGroupPlugin {
@@ -1,5 +1,5 @@
1
1
  import { AbstractBiPhasicGroupPlugin } from "./AbstractBiPhasicGroupPlugin";
2
- import type { VerifiedPlauditWordpressWebpackConfig } from "../utils/common-config-helpers";
2
+ import { VerifiedPlauditWordpressWebpackConfig } from "../shared";
3
3
  import { PHPWriter } from "../utils/php-writer";
4
4
  import { PseudoSemaphore } from "../utils/pseduo-semaphore";
5
5
  import { Compilation } from "webpack";
@@ -1,4 +1,4 @@
1
- import type { VerifiedPlauditWordpressWebpackConfig } from "../utils/common-config-helpers";
1
+ import type { VerifiedPlauditWordpressWebpackConfig } from "../shared";
2
2
  import type { Compiler, WebpackPluginInstance } from "webpack";
3
3
  export declare class VariablesJSMonitorPlugin implements WebpackPluginInstance {
4
4
  private readonly config;
package/build/shared.d.ts CHANGED
@@ -82,7 +82,11 @@ type OptionalCfgFields = 'directoryLayout' | 'externalize' | 'lazyLoader';
82
82
  export type VerifiedAdvancedOutputConfig = Required<Omit<AdvancedOutputConfig, 'locations' | OptionalCfgFields>> & Pick<AdvancedOutputConfig, OptionalCfgFields> & {
83
83
  locations: UsageLocations;
84
84
  };
85
- export type PlauditWordpressWebpackConfig = {
85
+ type DeprecatedPlauditWordpressWebpackConfigProps = {
86
+ plainEntrypointsHandlePrefix?: string;
87
+ plainEntrypointsVersion?: PlainEntrypointsSettings['version'];
88
+ };
89
+ type PlauditWordpressWebpackConfigProps = {
86
90
  standaloneBlocks?: boolean;
87
91
  variables?: Record<string, any>;
88
92
  verbose?: boolean;
@@ -98,12 +102,23 @@ export type PlauditWordpressWebpackConfig = {
98
102
  useWebpackResourceFiltering?: boolean;
99
103
  outputDir?: string;
100
104
  extensionsVersion?: 1 | 2 | 3;
101
- plainEntrypointsHandlePrefix?: string;
102
- plainEntrypointsVersion?: 1 | 2;
105
+ targetHandlePrefix?: string;
106
+ plainEntrypointsSettings?: PlainEntrypointsSettings;
103
107
  srcDir?: string;
104
108
  srcPrefixes?: string[];
105
109
  useUnifiedLoader?: boolean;
106
110
  };
111
+ type PlainEntrypointsSettings = {
112
+ includePostInitFallback?: boolean;
113
+ version: 1 | 2;
114
+ };
115
+ export type PlauditWordpressWebpackConfig = PlauditWordpressWebpackConfigProps & DeprecatedPlauditWordpressWebpackConfigProps;
116
+ export type VerifiedPlauditWordpressWebpackConfig = Required<Omit<PlauditWordpressWebpackConfigProps, 'variables' | 'src' | 'externals' | 'plainEntrypointsSettings'>> & {
117
+ variablesFilePath?: string;
118
+ currentVariables: Record<string, any>;
119
+ } & Pick<PlauditWordpressWebpackConfig, 'externals'> & {
120
+ plainEntrypointsSettings: Required<PlainEntrypointsSettings>;
121
+ };
107
122
  export type FileSegmentBlockEntrypointInfo = {
108
123
  blockJsonOrigin: string;
109
124
  entrypointField: EntrypointFields[number];
@@ -1,12 +1,8 @@
1
1
  import type { AbstractBiPhasicGroupAndEntryPlugin, EntryProvider } from "../plugins/AbstractBiPhasicGroupAndEntryPlugin";
2
2
  import type { AdditionalDependencyInjectorPlugin } from "../plugins/AdditionalDependencyInjectorPlugin";
3
- import { EntrypointFields, PlauditWordpressWebpackConfig, BlockEntrypointInfo, VerifiedAdvancedOutputConfig } from "../shared";
3
+ import { EntrypointFields, VerifiedPlauditWordpressWebpackConfig, BlockEntrypointInfo, VerifiedAdvancedOutputConfig } from "../shared";
4
4
  import type { Compiler, Configuration, DynamicEntryPlugin, WebpackPluginInstance } from "webpack";
5
5
  import type WebpackRemoveEmptyScriptsPlugin from "webpack-remove-empty-scripts";
6
- export type VerifiedPlauditWordpressWebpackConfig = Required<Omit<PlauditWordpressWebpackConfig, 'variables' | 'src' | 'externals'>> & {
7
- variablesFilePath?: string;
8
- currentVariables: Record<string, any>;
9
- } & Pick<PlauditWordpressWebpackConfig, 'externals'>;
10
6
  export type CommonPluginConfig = {
11
7
  plugins: (WebpackPluginInstance | ((this: Compiler, compiler: Compiler) => void))[];
12
8
  removeEmptyScriptsPlugin: WebpackRemoveEmptyScriptsPlugin;
@@ -172,7 +172,11 @@ function injectSupportForInliningSVGsAsStrings(rules) {
172
172
  });
173
173
  }
174
174
  function buildVerifiedConfig(config) {
175
- const { standaloneBlocks = false, stats = 'errors-warnings', variables: rawVariables, verbose = process.argv.includes('--verbose') || process.env['VERBOSE'] === 'true', postcss = {}, externals, assumeGlobalizedPlauditLibraries = true, processTranslationConfigs = true, combineAssetMetadata = true, useWebpackResourceFiltering = true, outputDir = "", plainEntrypointsVersion = 1, srcDir = "", useUnifiedLoader = false } = config;
175
+ const { standaloneBlocks = false, stats = 'errors-warnings', variables: rawVariables, verbose = process.argv.includes('--verbose') || process.env['VERBOSE'] === 'true', postcss = {}, externals, assumeGlobalizedPlauditLibraries = true, processTranslationConfigs = true, combineAssetMetadata = true, useWebpackResourceFiltering = true, outputDir = "", srcDir = "", useUnifiedLoader = false } = config;
176
+ const plainEntrypointsSettings = {
177
+ version: config.plainEntrypointsSettings?.version ?? config.plainEntrypointsVersion ?? 1,
178
+ includePostInitFallback: config.plainEntrypointsSettings?.includePostInitFallback ?? true
179
+ };
176
180
  let srcPrefixes;
177
181
  const trailingSlashedSrcDir = srcDir && !srcDir.endsWith("/") ? srcDir + "/" : srcDir;
178
182
  if (config.srcPrefixes === undefined) {
@@ -181,12 +185,12 @@ function buildVerifiedConfig(config) {
181
185
  else {
182
186
  srcPrefixes = (srcDir && !config.srcPrefixes.includes(trailingSlashedSrcDir) ? [...config.srcPrefixes, trailingSlashedSrcDir] : config.srcPrefixes);
183
187
  }
184
- let plainEntrypointsHandlePrefix = config.plainEntrypointsHandlePrefix ?? "";
185
- if (plainEntrypointsVersion > 1) {
186
- if (!plainEntrypointsHandlePrefix) {
187
- plainEntrypointsHandlePrefix = deriveDefaultHandlePrefixFromComposerJsonOrThemeName();
188
- if (!plainEntrypointsHandlePrefix) {
189
- throw new Error("Plain Entrypoints V2 and higher require either 'plainEntrypointsHandlePrefix' to be set or an adjacent composer.json or style.css file to be present");
188
+ let targetHandlePrefix = config.targetHandlePrefix ?? config.plainEntrypointsHandlePrefix ?? "";
189
+ if (plainEntrypointsSettings.version > 1) {
190
+ if (!targetHandlePrefix) {
191
+ targetHandlePrefix = deriveDefaultHandlePrefixFromComposerJsonOrThemeName();
192
+ if (!targetHandlePrefix) {
193
+ throw new Error("Plain Entrypoints V2 and higher require either 'targetHandlePrefix' to be set or an adjacent composer.json or style.css file to be present");
190
194
  }
191
195
  }
192
196
  if (!outputDir) {
@@ -220,7 +224,7 @@ function buildVerifiedConfig(config) {
220
224
  }
221
225
  const cfg = {
222
226
  currentVariables, postcss, standaloneBlocks, stats, variablesFilePath, verbose, externals, assumeGlobalizedPlauditLibraries, processTranslationConfigs, combineAssetMetadata,
223
- useWebpackResourceFiltering, outputDir, extensionsVersion, plainEntrypointsVersion, plainEntrypointsHandlePrefix, srcDir, srcPrefixes, useUnifiedLoader
227
+ useWebpackResourceFiltering, outputDir, extensionsVersion, plainEntrypointsSettings, srcDir, srcPrefixes, targetHandlePrefix, useUnifiedLoader
224
228
  };
225
229
  // Destination -> source map
226
230
  const allocatedDestinations = {};
@@ -309,7 +313,7 @@ function deriveDefaultHandlePrefixFromComposerJsonOrThemeName() {
309
313
  return deriveDefaultHandlePrefixFromThemeName();
310
314
  }
311
315
  if (typeof composerJson !== 'object' || typeof composerJson.name !== 'string' || !composerJson.name) {
312
- throw new ReferenceError("plainEntrypointsHandlePrefix was not set and the adjacent composer.json file does not have a valid name in it");
316
+ throw new ReferenceError("targetHandlePrefix was not set and the adjacent composer.json file does not have a valid name in it");
313
317
  }
314
318
  return (0, shared_1.kebabCase)(composerJson.name.replace(/plaudit\/plaudit/, 'plaudit'));
315
319
  }
@@ -317,7 +321,7 @@ function deriveDefaultHandlePrefixFromThemeName() {
317
321
  const styleFileContents = node_fs_1.default.readFileSync(node_path_1.default.join(process.cwd(), "style.css"), 'utf-8');
318
322
  const themeName = /^\W*Theme\s*Name:\s*(.+)$/im.exec(styleFileContents)?.[1]?.trim();
319
323
  if (!themeName) {
320
- throw new ReferenceError("plainEntrypointsHandlePrefix was not set and the adjacent style.css file does not have a valid name in it");
324
+ throw new ReferenceError("targetHandlePrefix was not set and the adjacent style.css file does not have a valid name in it");
321
325
  }
322
326
  return (0, shared_1.kebabCase)(themeName);
323
327
  }
@@ -522,7 +526,7 @@ function processIndividualWebpackConfig(config, webpackConfig, sources, canClean
522
526
  }
523
527
  }
524
528
  const baseDest = stripExtension(dest.destination);
525
- if (config.plainEntrypointsVersion > 1) {
529
+ if (config.plainEntrypointsSettings.version > 1) {
526
530
  const entry = srcIsDirectory // This being true implies that srcRoot is not an array
527
531
  ? (0, common_config_helpers_1.resolveEntryFromDirectory)(commonConfig, srcRoot, dest)
528
532
  : () => ({ [baseDest]: { import: Array.isArray(srcRoot) ? srcRoot : [srcRoot], plauditMetadata: { purpose: "plain-entrypoint", dest } } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plaudit/webpack-extensions",
3
- "version": "2.68.1",
3
+ "version": "2.69.0",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "files": [
6
6
  "/build"
@@ -16,9 +16,9 @@
16
16
  }
17
17
  },
18
18
  "devDependencies": {
19
- "@plaudit/gutenberg-api-extensions": "^2.77.0",
19
+ "@plaudit/gutenberg-api-extensions": "^2.77.2",
20
20
  "@types/browser-sync-webpack-plugin": "^2.2.5",
21
- "@types/node": "^24.5.2",
21
+ "@types/node": "^24.6.0",
22
22
  "@types/postcss-functions": "^4.0.4",
23
23
  "@types/tapable": "^2.2.7",
24
24
  "@types/webpack": "^5.28.5",
@@ -59,7 +59,7 @@
59
59
  "postcss-url": "^10.1.3",
60
60
  "react": "^18.3.1",
61
61
  "react-dom": "^18.3.1",
62
- "webpack": "^5.101.3",
62
+ "webpack": "^5.102.0",
63
63
  "webpack-remove-empty-scripts": "^1.1.1",
64
64
  "xml-formatter": "^3.6.7"
65
65
  },