@plaudit/webpack-extensions 3.15.0 → 3.15.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 CHANGED
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.15.1] - 2026-07-20
9
+ ### Fixed
10
+ - A bug that caused all styles bound for editor use to be emitted as inline CSS
11
+ - This comes from version `2.94.1`
12
+
8
13
  ## [3.15.0] - 2026-07-17
9
14
  ### Changed
10
15
  - The `add_editor_style()` enqueue path to use `block_editor_settings_all` to avoid a litany of bugs courtesy of WordPress's high-quality code
@@ -214,6 +219,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
214
219
  - Legacy PostCSS features that have been integrated into modern CSS
215
220
  - `@extends` support
216
221
 
222
+ ## [2.94.1] - 2026-07-20
223
+ ### Fixed
224
+ - A bug that caused all styles bound for editor use to be emitted as inline CSS
225
+
217
226
  ## [2.94.0] - 2026-07-17
218
227
  ### Changed
219
228
  - The `add_editor_style()` enqueue path to use `block_editor_settings_all` to avoid a litany of bugs courtesy of WordPress's high-quality code
@@ -1,15 +1,17 @@
1
1
  import { Compilation } from "webpack";
2
2
  import type WebpackRemoveEmptyScriptsPlugin from "webpack-remove-empty-scripts";
3
3
  import { AbstractBiPhasicGroupAndEntryPlugin, EntryProvider } from "./AbstractBiPhasicGroupAndEntryPlugin";
4
- import { BlockEntrypointInfo, FileSegmentBlockEntrypointInfo, InlinedAsset, ParsedAssetJsonProvider, ParsedAssetsJson, ScriptArgsObject, VerifiedAdvancedOutputConfig } from "../shared";
4
+ import { AssetMetaSegment, BlockEntrypointInfo, FileSegmentBlockEntrypointInfo, ParsedAssetJsonProvider, ParsedAssetsJson, ScriptArgsObject, VerifiedAdvancedOutputConfig } from "../shared";
5
5
  import type { VerifiedPlauditWordpressWebpackConfig } from "../utils/common-config-helpers";
6
6
  type WorkableBlockEntrypointInfo = Omit<FileSegmentBlockEntrypointInfo, 'originalValue' | 'pathQueryParameters'> & Partial<Pick<FileSegmentBlockEntrypointInfo, 'originalValue'>> & {
7
7
  outputPath: string;
8
8
  assetData: ParsedAssetsJson[string];
9
9
  hash: string;
10
10
  scriptArgsObject: ScriptArgsObject | undefined;
11
- inlinedAsset: InlinedAsset | undefined;
12
- };
11
+ } & (AssetMetaSegment | {
12
+ inlinedAsset?: undefined;
13
+ assetContents?: string;
14
+ });
13
15
  type CollatedWorkableBlockInfo = Record<string, {
14
16
  sourcePath?: string;
15
17
  workableBlockEntrypointsInfo: WorkableBlockEntrypointInfo[];
@@ -65,8 +65,8 @@ class EnhancedBlockJSONPlugin extends AbstractBiPhasicGroupAndEntryPlugin_1.Abst
65
65
  .filter((item) => item[1] !== '')
66
66
  .map(([file, assetType]) => {
67
67
  const enqueuingFlags = (0, path_query_and_related_helpers_1.mergeTwoEnqueuingControlFlagSets)(file, metadata.enqueuingFlags, this.dest.enqueuingFlags);
68
- const { scriptArgsObject, inlinedAsset } = (0, path_query_and_related_helpers_1.convertEnqueuingControlFlagsToScriptArgsObject)(compilation, file, enqueuingFlags);
69
- if (inlinedAsset !== undefined) {
68
+ const { scriptArgsObject, assetMeta } = (0, path_query_and_related_helpers_1.convertEnqueuingControlFlagsToScriptArgsObject)(compilation, file, enqueuingFlags);
69
+ if (assetMeta?.inlinedAsset !== undefined) {
70
70
  staticallyLoadedEntrypoints.push(file);
71
71
  }
72
72
  const wasOriginallyAStyleField = (0, shared_1.isStyleField)(metadata.entrypointField);
@@ -75,10 +75,10 @@ class EnhancedBlockJSONPlugin extends AbstractBiPhasicGroupAndEntryPlugin_1.Abst
75
75
  const entrypointField = (0, shared_1.convertEntrypointFieldForAssetType)(metadata.entrypointField, assetType);
76
76
  return {
77
77
  ...metadata, outputPath, assetData, originalValue: undefined, hash: entrypointChunk.hash ?? "",
78
- entrypointField, handleGroup: (0, shared_1.getHandleGroup)(entrypointField), scriptArgsObject, inlinedAsset
78
+ entrypointField, handleGroup: (0, shared_1.getHandleGroup)(entrypointField), scriptArgsObject, ...assetMeta
79
79
  };
80
80
  }
81
- return { ...metadata, outputPath, assetData, hash: entrypointChunk.hash ?? "", scriptArgsObject, inlinedAsset };
81
+ return { ...metadata, outputPath, assetData, hash: entrypointChunk.hash ?? "", scriptArgsObject, ...assetMeta };
82
82
  });
83
83
  if (applicableBlockJsonFiles[epBlockJson]) {
84
84
  applicableBlockJsonFiles[epBlockJson].workableBlockEntrypointsInfo.push(...workableBlockEntrypointsInfo);
@@ -127,7 +127,7 @@ class EnhancedBlockJSONPlugin extends AbstractBiPhasicGroupAndEntryPlugin_1.Abst
127
127
  const { inlinedAsset, ...finalizedHandle } = handleData;
128
128
  if (inlinedAsset !== undefined) {
129
129
  finalizedHandle.src = false;
130
- inlinedAssets.push([handle, type, inlinedAsset, handleData, handleData.src]);
130
+ inlinedAssets.push([handle, type, handleData]);
131
131
  }
132
132
  registerableHandles[handle] = finalizedHandle;
133
133
  }
@@ -327,7 +327,10 @@ class EnhancedBlockJSONPlugin extends AbstractBiPhasicGroupAndEntryPlugin_1.Abst
327
327
  .convertToScriptHandles(handleData.filter(hd => !(0, shared_1.isStyleField)(hd.entrypointField) && (0, shared_1.isScriptModuleField)(hd.entrypointField)))),
328
328
  styleHandles: Object.fromEntries(handleData.filter(hd => (0, shared_1.isStyleField)(hd.entrypointField))
329
329
  .map(hd => {
330
- return [hd.handle, { src: hd.outputPath, rest: [hd.originalValue !== undefined ? hd.assetData.dependencies : [], hd.assetData.version], inlinedAsset: hd.inlinedAsset }];
330
+ if (hd.inlinedAsset === undefined) {
331
+ return [hd.handle, { src: hd.outputPath, rest: [hd.originalValue !== undefined ? hd.assetData.dependencies : [], hd.assetData.version], assetContents: hd.assetContents }];
332
+ }
333
+ return [hd.handle, { src: hd.outputPath, rest: [hd.originalValue !== undefined ? hd.assetData.dependencies : [], hd.assetData.version], inlinedAsset: hd.inlinedAsset, assetContents: hd.assetContents }];
331
334
  })),
332
335
  bindableBlockAttributes
333
336
  },
@@ -340,7 +343,7 @@ class EnhancedBlockJSONPlugin extends AbstractBiPhasicGroupAndEntryPlugin_1.Abst
340
343
  }
341
344
  static convertToScriptHandles(handleData) {
342
345
  return handleData.map(hd => {
343
- const { inlinedAsset, originalValue, outputPath, entrypointField, scriptArgsObject: rawScriptArgsObject, assetData, handle } = hd;
346
+ const { assetContents, inlinedAsset, originalValue, outputPath, entrypointField, scriptArgsObject: rawScriptArgsObject, assetData, handle } = hd;
344
347
  const { dependencies = [], module_dependencies = undefined } = originalValue !== undefined ? assetData : {};
345
348
  let scriptArgsObject;
346
349
  if (rawScriptArgsObject !== undefined) {
@@ -366,7 +369,13 @@ class EnhancedBlockJSONPlugin extends AbstractBiPhasicGroupAndEntryPlugin_1.Abst
366
369
  }
367
370
  }
368
371
  }
369
- return [handle, { src: outputPath, rest: scriptArgsObject !== undefined ? [dependencies, assetData.version, scriptArgsObject] : [dependencies, assetData.version], inlinedAsset }];
372
+ const rest = scriptArgsObject !== undefined ? [dependencies, assetData.version, scriptArgsObject] : [dependencies, assetData.version];
373
+ if (inlinedAsset) {
374
+ return [handle, { src: outputPath, rest, inlinedAsset, assetContents }];
375
+ }
376
+ else {
377
+ return [handle, { src: outputPath, rest, assetContents }];
378
+ }
370
379
  });
371
380
  }
372
381
  static doFileOrHandleReplacements(compilation, blockJson, workableBlockEntrypointsInfo, getter) {
@@ -70,13 +70,12 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
70
70
  writer.action("init", writer => {
71
71
  writer.call("plaudit_webpack_extensions__resolve_base_uri", [expressions_1.Constants.__DIR__], { assignTo: baseUriVar });
72
72
  for (const { handle, type, data } of prioritizedHandleList) {
73
- const { inlinedAsset, rest, src } = data;
74
- const emittedSrc = inlinedAsset === undefined
75
- ? expressions_1.Op.concat(baseUriVar, (0, node_path_1.relative)(emitDir, src))
76
- : false;
77
- writer.call(`wp_register_${type}`, [handle, emittedSrc, ...rest]);
78
- if (inlinedAsset !== undefined) {
79
- (0, shared_1.appendAddInlineAssetCall)(compilation, writer, handle, type, inlinedAsset, data, src);
73
+ if (data.inlinedAsset !== undefined) {
74
+ writer.call(`wp_register_${type}`, [handle, false, ...data.rest]);
75
+ (0, shared_1.appendAddInlineAssetCall)(compilation, writer, handle, type, data);
76
+ }
77
+ else {
78
+ writer.call(`wp_register_${type}`, [handle, expressions_1.Op.concat(baseUriVar, (0, node_path_1.relative)(emitDir, data.src)), ...data.rest]);
80
79
  }
81
80
  }
82
81
  }, { priority, accountForAlreadyDoing: this.config.includePostInitFallback });
@@ -85,10 +84,9 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
85
84
  writer.action("init", writer => {
86
85
  writer.call("plaudit_webpack_extensions__resolve_base_uri", [expressions_1.Constants.__DIR__], { assignTo: baseUriVar });
87
86
  for (const { handle, type, data } of prioritizedHandleList) {
88
- const { inlinedAsset, rest, src } = data;
89
- writer.call(`wp_register_${type}`, [handle, false, ...rest]);
90
- if (inlinedAsset !== undefined) {
91
- (0, shared_1.appendAddInlineAssetCall)(compilation, writer, handle, type, inlinedAsset, data, src);
87
+ writer.call(`wp_register_${type}`, [handle, false, ...data.rest]);
88
+ if (data.inlinedAsset !== undefined) {
89
+ (0, shared_1.appendAddInlineAssetCall)(compilation, writer, handle, type, data);
92
90
  }
93
91
  }
94
92
  }, { priority, accountForAlreadyDoing: this.config.includePostInitFallback });
@@ -107,7 +105,7 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
107
105
  const editorSettings = new expressions_1.Var("editor_settings");
108
106
  writer.filter("block_editor_settings_all", writer => {
109
107
  for (const [handle, data] of sortedEditorStyleHandles) {
110
- const contents = data.inlinedAsset?.contents;
108
+ const contents = data.assetContents;
111
109
  if (contents) {
112
110
  writer.appendExpr(new expressions_1.Assignment(new expressions_1.ArrayAccess(editorSettings, "styles"), new expressions_1.PHPArray({ css: (0, shared_1.wrapInlineAssetContents)(compilation, "plaudit_editor_style", handle, contents) }), true));
113
111
  }
@@ -302,7 +300,7 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
302
300
  const { dependencies = [], module_dependencies = undefined } = isScript === entrypointChunkIsScript ? assetData : {};
303
301
  const { lazyLoader, locations } = this.dest;
304
302
  const { flags } = (0, path_query_and_related_helpers_1.unpackEnqueuingControlFlagsFromPathQueryParameters)(typeof locations.registerScriptArgs === 'object' ? locations.registerScriptArgs : { strategy: locations.registerScriptArgs }, file, "registerScriptArgs");
305
- const { inlinedAsset, scriptArgsObject } = (0, path_query_and_related_helpers_1.convertEnqueuingControlFlagsToScriptArgsObject)(compilation, file, (0, path_query_and_related_helpers_1.mergeTwoEnqueuingControlFlagSets)(file, flags, this.dest.enqueuingFlags), type === 'style' && (!!locations.clientEditor || locations.clientEditor === 0));
303
+ const { assetMeta, scriptArgsObject } = (0, path_query_and_related_helpers_1.convertEnqueuingControlFlagsToScriptArgsObject)(compilation, file, (0, path_query_and_related_helpers_1.mergeTwoEnqueuingControlFlagSets)(file, flags, this.dest.enqueuingFlags), type === 'style' && (!!locations.clientEditor || locations.clientEditor === 0));
306
304
  const completeScriptArgsObject = module_dependencies?.length ? { ...scriptArgsObject, module_dependencies } : scriptArgsObject;
307
305
  const rest = isScript && completeScriptArgsObject !== undefined ? [dependencies, assetData.version, completeScriptArgsObject] : [dependencies, assetData.version];
308
306
  const destPath = (0, node_path_1.join)(compilation.outputOptions.path, file);
@@ -313,7 +311,7 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
313
311
  locations,
314
312
  handleName: useHandleName ? locations.handle : undefined,
315
313
  lazyLoader,
316
- inlinedAsset
314
+ ...assetMeta
317
315
  });
318
316
  }
319
317
  myAssetHandles.push({ handles, handlePrefix: this.config.targetHandlePrefix });
package/dist/shared.d.ts CHANGED
@@ -15,22 +15,29 @@ export type ParsedAssetsJson = Record<string, {
15
15
  module_dependencies?: (string | WPModuleDependency)[];
16
16
  }>;
17
17
  export declare function isParsedAssetsJson(thing: any): thing is ParsedAssetsJson;
18
+ type BaseRestType = [/* dependencies: */ string[], /* version: */ string];
19
+ export type AssetMetaSegment = {
20
+ inlinedAsset: InlinedAsset;
21
+ assetContents: string;
22
+ };
23
+ export type BaseHandleData = {
24
+ src: string;
25
+ rest: BaseRestType | [...BaseRestType, ScriptArgsObject];
26
+ };
18
27
  export type ScriptArgsObject = {
19
28
  strategy?: 'defer' | 'async';
20
29
  in_footer?: boolean;
21
30
  fetchpriority?: 'auto' | 'low' | 'high';
22
31
  module_dependencies?: (string | WPModuleDependency)[];
23
32
  };
24
- type BaseRestType = [/* dependencies: */ string[], /* version: */ string];
25
33
  export type InlinedAsset = {
26
- contents: string;
27
34
  position?: 'before' | 'after';
28
35
  };
29
- export type HandleData = {
30
- src: string;
31
- rest: BaseRestType | [...BaseRestType, ScriptArgsObject];
32
- inlinedAsset?: InlinedAsset;
33
- };
36
+ export type IAHandleData = BaseHandleData & AssetMetaSegment;
37
+ export type HandleData = BaseHandleData & (AssetMetaSegment | {
38
+ inlinedAsset?: undefined;
39
+ assetContents?: string;
40
+ });
34
41
  export declare const standardLocationNamesMeta: {
35
42
  readonly clientView: {
36
43
  readonly action: "wp_enqueue_scripts";
@@ -260,11 +267,9 @@ export declare function resolveLegacyBlockScriptsInFolder(folder: string): strin
260
267
  * @param writer
261
268
  * @param handle
262
269
  * @param type 'script_module' is NOT supported at this time; however, it is *handled* in this function
263
- * @param inlinedAsset
264
270
  * @param handleData
265
- * @param file something that represents the file that is being inlined (this is purely for error-reporting purposes)
266
271
  */
267
- export declare function appendAddInlineAssetCall(compilation: Compilation, writer: PHPWriter, handle: string, type: 'script' | 'style' | 'script_module', inlinedAsset: InlinedAsset, handleData: HandleData, file: string): void;
272
+ export declare function appendAddInlineAssetCall(compilation: Compilation, writer: PHPWriter, handle: string, type: 'script' | 'style' | 'script_module', handleData: IAHandleData): void;
268
273
  export declare function wrapInlineAssetContents(compilation: Compilation, wrapperIdPrefix: string, handle: string, contents: string): HereOrNowDoc;
269
274
  export declare function synchronousDirIterator(dirPath: string): Generator<import("node:fs").Dirent<string>, void, unknown>;
270
275
  /**
package/dist/shared.js CHANGED
@@ -390,19 +390,17 @@ function resolveLegacyBlockScriptsInFolder(folder) {
390
390
  * @param writer
391
391
  * @param handle
392
392
  * @param type 'script_module' is NOT supported at this time; however, it is *handled* in this function
393
- * @param inlinedAsset
394
393
  * @param handleData
395
- * @param file something that represents the file that is being inlined (this is purely for error-reporting purposes)
396
394
  */
397
- function appendAddInlineAssetCall(compilation, writer, handle, type, inlinedAsset, handleData, file) {
395
+ function appendAddInlineAssetCall(compilation, writer, handle, type, handleData) {
398
396
  if (type === 'script_module') {
399
- throw newWebpackErrorForFile("WordPress does not support inlined script modules", file);
397
+ throw newWebpackErrorForFile("WordPress does not support inlined script modules", handleData.src);
400
398
  }
401
399
  if (handleData.rest[0]?.length) { // If there are any dependencies
402
400
  compilation.errors.push(newWebpackErrorForFile("Inlined scripts MUST NOT have dependencies. It WILL cause runtime inconsistencies and potentially cause sever performance issues", handleData.src));
403
401
  }
404
- const args = [handle, wrapInlineAssetContents(compilation, `plaudit_inlined_${type}`, handle, inlinedAsset.contents)];
405
- if (type === 'script' && inlinedAsset.position === 'before') {
402
+ const args = [handle, wrapInlineAssetContents(compilation, `plaudit_inlined_${type}`, handle, handleData.assetContents)];
403
+ if (type === 'script' && handleData.inlinedAsset.position === 'before') {
406
404
  args.push('before');
407
405
  }
408
406
  writer.call(`wp_add_inline_${type}`, args);
@@ -55,5 +55,11 @@ export declare function unpackEnqueuingControlFlagsFromPathQueryParameters(pathQ
55
55
  */
56
56
  export declare function convertEnqueuingControlFlagsToScriptArgsObject(compilation: Compilation, file: string, flags: NormalizedEnqueuingControlFlags | undefined, forceRecordContents?: boolean): {
57
57
  scriptArgsObject?: ScriptArgsObject;
58
- inlinedAsset?: InlinedAsset;
58
+ assetMeta?: {
59
+ inlinedAsset: InlinedAsset;
60
+ assetContents: string;
61
+ } | {
62
+ inlinedAsset?: undefined;
63
+ assetContents: string | undefined;
64
+ };
59
65
  };
@@ -196,11 +196,15 @@ function unpackEnqueuingControlFlagsFromPathQueryParameters(pathQueryParameters,
196
196
  */
197
197
  function convertEnqueuingControlFlagsToScriptArgsObject(compilation, file, flags, forceRecordContents = false) {
198
198
  if (flags === undefined) {
199
+ if (forceRecordContents) {
200
+ return { assetMeta: { assetContents: getAssetFileContents(compilation, file) } };
201
+ }
199
202
  return {};
200
203
  }
201
204
  const { strategy, in_footer, inline, position, fetchpriority } = flags;
202
205
  const scriptArgsObject = {};
203
206
  let inlinedAsset = undefined;
207
+ let assetContents = undefined;
204
208
  switch (strategy) {
205
209
  case 'async':
206
210
  case 'defer':
@@ -231,7 +235,8 @@ function convertEnqueuingControlFlagsToScriptArgsObject(compilation, file, flags
231
235
  scriptArgsObject.in_footer = in_footer;
232
236
  }
233
237
  if (inline) {
234
- inlinedAsset = { contents: getAssetFileContents(compilation, file) };
238
+ inlinedAsset = {};
239
+ assetContents = getAssetFileContents(compilation, file);
235
240
  removeFileAndAssetPHP(compilation, file);
236
241
  if (position !== undefined) {
237
242
  if (!isValidPositionForInlineStrategy(position)) {
@@ -247,7 +252,7 @@ function convertEnqueuingControlFlagsToScriptArgsObject(compilation, file, flags
247
252
  }
248
253
  }
249
254
  else if (forceRecordContents) {
250
- inlinedAsset = { contents: getAssetFileContents(compilation, file) };
255
+ assetContents = getAssetFileContents(compilation, file);
251
256
  }
252
257
  if (fetchpriority !== undefined) {
253
258
  if (!isValidFetchPriority(fetchpriority)) {
@@ -258,7 +263,8 @@ function convertEnqueuingControlFlagsToScriptArgsObject(compilation, file, flags
258
263
  }
259
264
  scriptArgsObject.fetchpriority = fetchpriority;
260
265
  }
261
- return Object.keys(scriptArgsObject).length > 0 ? { scriptArgsObject, inlinedAsset } : { inlinedAsset };
266
+ const assetMeta = inlinedAsset ? { inlinedAsset, assetContents: assetContents } : { assetContents };
267
+ return Object.keys(scriptArgsObject).length > 0 ? { scriptArgsObject, assetMeta } : { assetMeta };
262
268
  }
263
269
  function removeFileAndAssetPHP(compilation, file) {
264
270
  const pathParts = (0, node_path_1.parse)(file);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plaudit/webpack-extensions",
3
- "version": "3.15.0",
3
+ "version": "3.15.1",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "files": [
6
6
  "/dist",
@@ -57,7 +57,7 @@
57
57
  "http-proxy-middleware": "^3.0.7",
58
58
  "jsdom": "^29.1.1",
59
59
  "json2php": "0.0.12",
60
- "postcss": "^8.5.19",
60
+ "postcss": "^8.5.20",
61
61
  "postcss-calc": "^10.1.1",
62
62
  "postcss-functions": "^4.0.2",
63
63
  "postcss-import": "^16.1.1",