@plaudit/webpack-extensions 2.93.1 → 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,14 @@ 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
+
67
+ ## [2.94.0] - 2026-07-17
68
+ ### Changed
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
70
+
63
71
  ## [2.93.1] - 2026-07-15
64
72
  ### Fixed
65
73
  - The new supported features code overriding unintended data in theme.json
@@ -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 });
@@ -109,14 +107,19 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
109
107
  const aPriority = typeof a[1].locations.clientEditor === 'boolean' ? 10 : a[1].locations.clientEditor;
110
108
  const bPriority = typeof b[1].locations.clientEditor === 'boolean' ? 10 : b[1].locations.clientEditor;
111
109
  return aPriority - bPriority;
112
- })
113
- .map(info => info[1].src);
110
+ });
114
111
  if (sortedEditorStyleHandles.length > 0) {
115
112
  writer.linebreak();
116
- for (const handleSrc of sortedEditorStyleHandles) {
117
- const handlePath = (0, node_path_1.join)(this.outputDir, (0, node_path_1.relative)(emitDir, handleSrc));
118
- writer.call("add_editor_style", [(0, shared_1.leadingSlashIt)(handlePath)]);
119
- }
113
+ const editorSettings = new expressions_1.Var("editor_settings");
114
+ writer.filter("block_editor_settings_all", writer => {
115
+ for (const [handle, data] of sortedEditorStyleHandles) {
116
+ const contents = data.assetContents;
117
+ if (contents) {
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));
119
+ }
120
+ }
121
+ writer.return(editorSettings);
122
+ }, { functionArgParameters: [editorSettings], accountForAlreadyDoing: false });
120
123
  }
121
124
  const lazyLoadedHandles = Object.values(handleLists)
122
125
  .flatMap(handleList => handleList.map(handle => [handle.data.lazyLoader, handle]))
@@ -300,7 +303,7 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
300
303
  const { dependencies = [], module_dependencies = undefined } = isScript === entrypointChunkIsScript ? assetData : {};
301
304
  const { lazyLoader, locations } = this.dest;
302
305
  const { flags } = (0, path_query_and_related_helpers_1.unpackEnqueuingControlFlagsFromPathQueryParameters)(typeof locations.registerScriptArgs === 'object' ? locations.registerScriptArgs : { strategy: locations.registerScriptArgs }, file, "registerScriptArgs");
303
- 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));
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));
304
307
  const completeScriptArgsObject = module_dependencies?.length ? { ...scriptArgsObject, module_dependencies } : scriptArgsObject;
305
308
  const rest = isScript && completeScriptArgsObject !== undefined ? [dependencies, assetData.version, completeScriptArgsObject] : [dependencies, assetData.version];
306
309
  const destPath = (0, node_path_1.join)(compilation.outputOptions.path, file);
@@ -311,7 +314,7 @@ class PlainEntrypointsConfigFileGeneratorPlugin extends AbstractBiPhasicGroupAnd
311
314
  locations,
312
315
  handleName: useHandleName ? locations.handle : undefined,
313
316
  lazyLoader,
314
- inlinedAsset
317
+ ...assetMeta
315
318
  });
316
319
  }
317
320
  myAssetHandles.push({ handles, handlePrefix: this.config.targetHandlePrefix });
package/dist/shared.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { PHPWriter } from "@plaudit/php-writer";
2
+ import { HereOrNowDoc } from "@plaudit/php-writer/expressions";
2
3
  import type { Options as PostcssFunctionsOptions } from "postcss-functions";
3
4
  import { type AssetInfo, type Compilation, type Configuration, type Entrypoint, WebpackError, type Compiler } from "webpack";
4
5
  import { SourceType } from "./utils/entrypoint-resolution-logic";
@@ -14,22 +15,29 @@ export type ParsedAssetsJson = Record<string, {
14
15
  module_dependencies?: (string | WPModuleDependency)[];
15
16
  }>;
16
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
+ };
17
27
  export type ScriptArgsObject = {
18
28
  strategy?: 'defer' | 'async';
19
29
  in_footer?: boolean;
20
30
  fetchpriority?: 'auto' | 'low' | 'high';
21
31
  module_dependencies?: (string | WPModuleDependency)[];
22
32
  };
23
- type BaseRestType = [/* dependencies: */ string[], /* version: */ string];
24
33
  export type InlinedAsset = {
25
- contents: string;
26
34
  position?: 'before' | 'after';
27
35
  };
28
- export type HandleData = {
29
- src: string;
30
- rest: BaseRestType | [...BaseRestType, ScriptArgsObject];
31
- inlinedAsset?: InlinedAsset;
32
- };
36
+ export type IAHandleData = BaseHandleData & AssetMetaSegment;
37
+ export type HandleData = BaseHandleData & (AssetMetaSegment | {
38
+ inlinedAsset?: undefined;
39
+ assetContents?: string;
40
+ });
33
41
  export declare const standardLocationNamesMeta: {
34
42
  readonly clientView: {
35
43
  readonly action: "wp_enqueue_scripts";
@@ -253,11 +261,10 @@ export declare function resolveLegacyBlockScriptsInFolder(folder: string): strin
253
261
  * @param writer
254
262
  * @param handle
255
263
  * @param type 'script_module' is NOT supported at this time; however, it is *handled* in this function
256
- * @param inlinedAsset
257
264
  * @param handleData
258
- * @param file something that represents the file that is being inlined (this is purely for error-reporting purposes)
259
265
  */
260
- 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;
267
+ export declare function wrapInlineAssetContents(compilation: Compilation, wrapperIdPrefix: string, handle: string, contents: string): HereOrNowDoc;
261
268
  export declare function synchronousDirIterator(dirPath: string): Generator<import("node:fs").Dirent<string>, void, unknown>;
262
269
  /**
263
270
  * A type-guarded version of `instanceof Error` for Node.js.
package/dist/shared.js CHANGED
@@ -50,6 +50,7 @@ exports.emitPHPWriterAsAsset = emitPHPWriterAsAsset;
50
50
  exports.dedent = dedent;
51
51
  exports.resolveLegacyBlockScriptsInFolder = resolveLegacyBlockScriptsInFolder;
52
52
  exports.appendAddInlineAssetCall = appendAddInlineAssetCall;
53
+ exports.wrapInlineAssetContents = wrapInlineAssetContents;
53
54
  exports.synchronousDirIterator = synchronousDirIterator;
54
55
  exports.instanceOfNodeError = instanceOfNodeError;
55
56
  const node_crypto_1 = require("node:crypto");
@@ -347,30 +348,27 @@ function resolveLegacyBlockScriptsInFolder(folder) {
347
348
  * @param writer
348
349
  * @param handle
349
350
  * @param type 'script_module' is NOT supported at this time; however, it is *handled* in this function
350
- * @param inlinedAsset
351
351
  * @param handleData
352
- * @param file something that represents the file that is being inlined (this is purely for error-reporting purposes)
353
352
  */
354
- function appendAddInlineAssetCall(compilation, writer, handle, type, inlinedAsset, handleData, file) {
353
+ function appendAddInlineAssetCall(compilation, writer, handle, type, handleData) {
355
354
  if (type === 'script_module') {
356
- throw newWebpackErrorForFile("WordPress does not support inlined script modules", file);
355
+ throw newWebpackErrorForFile("WordPress does not support inlined script modules", handleData.src);
357
356
  }
358
357
  if (handleData.rest[0]?.length) { // If there are any dependencies
359
358
  compilation.errors.push(newWebpackErrorForFile("Inlined scripts MUST NOT have dependencies. It WILL cause runtime inconsistencies and potentially cause sever performance issues", handleData.src));
360
359
  }
361
- let contents;
362
- if (compilation.outputOptions.path?.endsWith("-dev")) {
363
- contents = inlinedAsset.contents;
364
- }
365
- else {
366
- contents = inlinedAsset.contents.replaceAll(/\/\*#\s+sourceMappingURL=.*?\*\/|\/\/#\s+sourceMappingURL=[^\r\n]*?([\r\n]|$)/gis, "$1");
367
- }
368
- const args = [handle, new expressions_1.HereOrNowDoc(`plaudit_inlined_${type}_${(0, node_crypto_1.createHash)('md5').update(handle).digest("hex")}`, contents.trim(), false)];
369
- 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') {
370
362
  args.push('before');
371
363
  }
372
364
  writer.call(`wp_add_inline_${type}`, args);
373
365
  }
366
+ function wrapInlineAssetContents(compilation, wrapperIdPrefix, handle, contents) {
367
+ if (!compilation.outputOptions.path?.endsWith("-dev")) {
368
+ contents = contents.replaceAll(/\/\*#\s+sourceMappingURL=.*?\*\/|\/\/#\s+sourceMappingURL=[^\r\n]*?([\r\n]|$)/gis, "$1");
369
+ }
370
+ return new expressions_1.HereOrNowDoc(`${wrapperIdPrefix}_${(0, node_crypto_1.createHash)('md5').update(handle).digest("hex")}`, contents.trim(), false);
371
+ }
374
372
  function* synchronousDirIterator(dirPath) {
375
373
  try {
376
374
  using dir = (0, node_fs_1.opendirSync)(dirPath);
@@ -51,8 +51,15 @@ export declare function unpackEnqueuingControlFlagsFromPathQueryParameters(pathQ
51
51
  * @param compilation
52
52
  * @param file
53
53
  * @param flags
54
+ * @param forceRecordContents
54
55
  */
55
- export declare function convertEnqueuingControlFlagsToScriptArgsObject(compilation: Compilation, file: string, flags: NormalizedEnqueuingControlFlags | undefined): {
56
+ export declare function convertEnqueuingControlFlagsToScriptArgsObject(compilation: Compilation, file: string, flags: NormalizedEnqueuingControlFlags | undefined, forceRecordContents?: boolean): {
56
57
  scriptArgsObject?: ScriptArgsObject;
57
- inlinedAsset?: InlinedAsset;
58
+ assetMeta?: {
59
+ inlinedAsset: InlinedAsset;
60
+ assetContents: string;
61
+ } | {
62
+ inlinedAsset?: undefined;
63
+ assetContents: string | undefined;
64
+ };
58
65
  };
@@ -192,14 +192,19 @@ function unpackEnqueuingControlFlagsFromPathQueryParameters(pathQueryParameters,
192
192
  * @param compilation
193
193
  * @param file
194
194
  * @param flags
195
+ * @param forceRecordContents
195
196
  */
196
- function convertEnqueuingControlFlagsToScriptArgsObject(compilation, file, flags) {
197
+ function convertEnqueuingControlFlagsToScriptArgsObject(compilation, file, flags, forceRecordContents = false) {
197
198
  if (flags === undefined) {
199
+ if (forceRecordContents) {
200
+ return { assetMeta: { assetContents: getAssetFileContents(compilation, file) } };
201
+ }
198
202
  return {};
199
203
  }
200
204
  const { strategy, in_footer, inline, position, fetchpriority } = flags;
201
205
  const scriptArgsObject = {};
202
206
  let inlinedAsset = undefined;
207
+ let assetContents = undefined;
203
208
  switch (strategy) {
204
209
  case 'async':
205
210
  case 'defer':
@@ -230,7 +235,8 @@ function convertEnqueuingControlFlagsToScriptArgsObject(compilation, file, flags
230
235
  scriptArgsObject.in_footer = in_footer;
231
236
  }
232
237
  if (inline) {
233
- inlinedAsset = { contents: getAssetFileContents(compilation, file) };
238
+ inlinedAsset = {};
239
+ assetContents = getAssetFileContents(compilation, file);
234
240
  removeFileAndAssetPHP(compilation, file);
235
241
  if (position !== undefined) {
236
242
  if (!isValidPositionForInlineStrategy(position)) {
@@ -245,16 +251,20 @@ function convertEnqueuingControlFlagsToScriptArgsObject(compilation, file, flags
245
251
  scriptArgsObject.in_footer = true;
246
252
  }
247
253
  }
254
+ else if (forceRecordContents) {
255
+ assetContents = getAssetFileContents(compilation, file);
256
+ }
248
257
  if (fetchpriority !== undefined) {
249
258
  if (!isValidFetchPriority(fetchpriority)) {
250
259
  throw newInvalidFetchPriorityError(fetchpriority, file);
251
260
  }
252
- if (inlinedAsset !== undefined) {
261
+ if (inline) {
253
262
  compilation.warnings.push((0, shared_1.newWebpackErrorForFile)("Fetchpriority has no effect on inlined assets", file));
254
263
  }
255
264
  scriptArgsObject.fetchpriority = fetchpriority;
256
265
  }
257
- 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 };
258
268
  }
259
269
  function removeFileAndAssetPHP(compilation, file) {
260
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.93.1",
3
+ "version": "2.94.1",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "files": [
6
6
  "/dist",
@@ -28,7 +28,7 @@
28
28
  }
29
29
  },
30
30
  "devDependencies": {
31
- "@plaudit/gutenberg-api-extensions": "^2.97.1",
31
+ "@plaudit/gutenberg-api-extensions": "^2.98.0",
32
32
  "@types/browser-sync-webpack-plugin": "^2.2.5",
33
33
  "@types/jsdom": "^28.0.3",
34
34
  "@types/node": "^25.9.5",
@@ -39,7 +39,7 @@
39
39
  "webpack-bundle-analyzer": "^4.10.2"
40
40
  },
41
41
  "dependencies": {
42
- "@plaudit/php-writer": "^1.5.2",
42
+ "@plaudit/php-writer": "^1.5.5",
43
43
  "@plaudit/postcss-color-function": "^5.1.0",
44
44
  "@plaudit/postcss-legacy-shorthand": "^1.0.0",
45
45
  "@plaudit/postcss-silent-extend": "^3.0.0",
@@ -47,7 +47,7 @@
47
47
  "@plaudit/postcss-variables": "^1.1.0",
48
48
  "@wordpress/dependency-extraction-webpack-plugin": "^6.51.0",
49
49
  "@wordpress/scripts": "^32.6.0",
50
- "autoprefixer": "^10.5.3",
50
+ "autoprefixer": "^10.5.4",
51
51
  "browser-sync": "^3.0.4",
52
52
  "copy-webpack-plugin": "10.2.4",
53
53
  "css-minimizer-webpack-plugin": "^6.0.0",
@@ -55,7 +55,7 @@
55
55
  "fork-ts-checker-webpack-plugin": "^9.1.0",
56
56
  "http-proxy-middleware": "^3.0.7",
57
57
  "jsdom": "^29.1.1",
58
- "json2php": "^0.0.12",
58
+ "json2php": "0.0.12",
59
59
  "postcss": "^8.5.19",
60
60
  "postcss-calc": "^9.0.1",
61
61
  "postcss-discard-comments": "^6.0.2",