@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 +4 -0
- package/dist/plugins/EnhancedBlockJSONPlugin.d.ts +5 -3
- package/dist/plugins/EnhancedBlockJSONPlugin.js +17 -8
- package/dist/plugins/PlainEntrypointsConfigFileGeneratorPlugin.js +12 -14
- package/dist/shared.d.ts +15 -10
- package/dist/shared.js +4 -6
- package/dist/utils/path-query-and-related-helpers.d.ts +7 -1
- package/dist/utils/path-query-and-related-helpers.js +9 -3
- package/package.json +1 -1
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
78
|
+
entrypointField, handleGroup: (0, shared_1.getHandleGroup)(entrypointField), scriptArgsObject, ...assetMeta
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
|
-
return { ...metadata, outputPath, assetData, hash: entrypointChunk.hash ?? "", scriptArgsObject,
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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.
|
|
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 {
|
|
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
|
-
|
|
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
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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',
|
|
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,
|
|
353
|
+
function appendAddInlineAssetCall(compilation, writer, handle, type, handleData) {
|
|
356
354
|
if (type === 'script_module') {
|
|
357
|
-
throw newWebpackErrorForFile("WordPress does not support inlined script modules",
|
|
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,
|
|
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
|
-
|
|
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 = {
|
|
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
|
-
|
|
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
|
-
|
|
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);
|