@plaudit/webpack-extensions 2.94.0 → 2.94.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
@@ -60,6 +60,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
60
60
  - Legacy PostCSS features that have been integrated into modern CSS
61
61
  - `@extends` support
62
62
 
63
+ ## [2.94.1] - 2026-07-20
64
+ ### Fixed
65
+ - A bug that caused all styles bound for editor use to be emitted as inline CSS
66
+
63
67
  ## [2.94.0] - 2026-07-17
64
68
  ### Changed
65
69
  - 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) {
@@ -78,13 +78,12 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
78
78
  writer.action("init", writer => {
79
79
  writer.call("plaudit_webpack_extensions__resolve_base_uri", [expressions_1.Constants.__DIR__], { assignTo: baseUriVar });
80
80
  for (const { handle, type, data } of prioritizedHandleList) {
81
- const { inlinedAsset, rest, src } = data;
82
- const emittedSrc = inlinedAsset === undefined
83
- ? expressions_1.Op.concat(baseUriVar, (0, node_path_1.relative)(emitDir, src))
84
- : false;
85
- writer.call(`wp_register_${type}`, [handle, emittedSrc, ...rest]);
86
- if (inlinedAsset !== undefined) {
87
- (0, shared_1.appendAddInlineAssetCall)(compilation, writer, handle, type, inlinedAsset, data, src);
81
+ if (data.inlinedAsset !== undefined) {
82
+ writer.call(`wp_register_${type}`, [handle, false, ...data.rest]);
83
+ (0, shared_1.appendAddInlineAssetCall)(compilation, writer, handle, type, data);
84
+ }
85
+ else {
86
+ writer.call(`wp_register_${type}`, [handle, expressions_1.Op.concat(baseUriVar, (0, node_path_1.relative)(emitDir, data.src)), ...data.rest]);
88
87
  }
89
88
  }
90
89
  }, { priority, accountForAlreadyDoing: this.config.includePostInitFallback });
@@ -93,10 +92,9 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
93
92
  writer.action("init", writer => {
94
93
  writer.call("plaudit_webpack_extensions__resolve_base_uri", [expressions_1.Constants.__DIR__], { assignTo: baseUriVar });
95
94
  for (const { handle, type, data } of prioritizedHandleList) {
96
- const { inlinedAsset, rest, src } = data;
97
- writer.call(`wp_register_${type}`, [handle, false, ...rest]);
98
- if (inlinedAsset !== undefined) {
99
- (0, shared_1.appendAddInlineAssetCall)(compilation, writer, handle, type, inlinedAsset, data, src);
95
+ writer.call(`wp_register_${type}`, [handle, false, ...data.rest]);
96
+ if (data.inlinedAsset !== undefined) {
97
+ (0, shared_1.appendAddInlineAssetCall)(compilation, writer, handle, type, data);
100
98
  }
101
99
  }
102
100
  }, { priority, accountForAlreadyDoing: this.config.includePostInitFallback });
@@ -115,7 +113,7 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
115
113
  const editorSettings = new expressions_1.Var("editor_settings");
116
114
  writer.filter("block_editor_settings_all", writer => {
117
115
  for (const [handle, data] of sortedEditorStyleHandles) {
118
- const contents = data.inlinedAsset?.contents;
116
+ const contents = data.assetContents;
119
117
  if (contents) {
120
118
  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));
121
119
  }
@@ -305,7 +303,7 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
305
303
  const { dependencies = [], module_dependencies = undefined } = isScript === entrypointChunkIsScript ? assetData : {};
306
304
  const { lazyLoader, locations } = this.dest;
307
305
  const { flags } = (0, path_query_and_related_helpers_1.unpackEnqueuingControlFlagsFromPathQueryParameters)(typeof locations.registerScriptArgs === 'object' ? locations.registerScriptArgs : { strategy: locations.registerScriptArgs }, file, "registerScriptArgs");
308
- 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));
306
+ 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));
309
307
  const completeScriptArgsObject = module_dependencies?.length ? { ...scriptArgsObject, module_dependencies } : scriptArgsObject;
310
308
  const rest = isScript && completeScriptArgsObject !== undefined ? [dependencies, assetData.version, completeScriptArgsObject] : [dependencies, assetData.version];
311
309
  const destPath = (0, node_path_1.join)(compilation.outputOptions.path, file);
@@ -316,7 +314,7 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
316
314
  locations,
317
315
  handleName: useHandleName ? locations.handle : undefined,
318
316
  lazyLoader,
319
- inlinedAsset
317
+ ...assetMeta
320
318
  });
321
319
  }
322
320
  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";
@@ -254,11 +261,9 @@ export declare function resolveLegacyBlockScriptsInFolder(folder: string): strin
254
261
  * @param writer
255
262
  * @param handle
256
263
  * @param type 'script_module' is NOT supported at this time; however, it is *handled* in this function
257
- * @param inlinedAsset
258
264
  * @param handleData
259
- * @param file something that represents the file that is being inlined (this is purely for error-reporting purposes)
260
265
  */
261
- export declare function appendAddInlineAssetCall(compilation: Compilation, writer: PHPWriter, handle: string, type: 'script' | 'style' | 'script_module', inlinedAsset: InlinedAsset, handleData: HandleData, file: string): void;
266
+ export declare function appendAddInlineAssetCall(compilation: Compilation, writer: PHPWriter, handle: string, type: 'script' | 'style' | 'script_module', handleData: IAHandleData): void;
262
267
  export declare function wrapInlineAssetContents(compilation: Compilation, wrapperIdPrefix: string, handle: string, contents: string): HereOrNowDoc;
263
268
  export declare function synchronousDirIterator(dirPath: string): Generator<import("node:fs").Dirent<string>, void, unknown>;
264
269
  /**
package/dist/shared.js CHANGED
@@ -348,19 +348,17 @@ function resolveLegacyBlockScriptsInFolder(folder) {
348
348
  * @param writer
349
349
  * @param handle
350
350
  * @param type 'script_module' is NOT supported at this time; however, it is *handled* in this function
351
- * @param inlinedAsset
352
351
  * @param handleData
353
- * @param file something that represents the file that is being inlined (this is purely for error-reporting purposes)
354
352
  */
355
- function appendAddInlineAssetCall(compilation, writer, handle, type, inlinedAsset, handleData, file) {
353
+ function appendAddInlineAssetCall(compilation, writer, handle, type, handleData) {
356
354
  if (type === 'script_module') {
357
- throw newWebpackErrorForFile("WordPress does not support inlined script modules", file);
355
+ throw newWebpackErrorForFile("WordPress does not support inlined script modules", handleData.src);
358
356
  }
359
357
  if (handleData.rest[0]?.length) { // If there are any dependencies
360
358
  compilation.errors.push(newWebpackErrorForFile("Inlined scripts MUST NOT have dependencies. It WILL cause runtime inconsistencies and potentially cause sever performance issues", handleData.src));
361
359
  }
362
- const args = [handle, wrapInlineAssetContents(compilation, `plaudit_inlined_${type}`, handle, inlinedAsset.contents)];
363
- if (type === 'script' && inlinedAsset.position === 'before') {
360
+ const args = [handle, wrapInlineAssetContents(compilation, `plaudit_inlined_${type}`, handle, handleData.assetContents)];
361
+ if (type === 'script' && handleData.inlinedAsset.position === 'before') {
364
362
  args.push('before');
365
363
  }
366
364
  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": "2.94.0",
3
+ "version": "2.94.1",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "files": [
6
6
  "/dist",