@atomicsmash/cli 7.0.0-beta.9 → 7.0.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,3 +1,24 @@
1
- export declare const blocksHelpMessage = "\n Atomic Smash CLI - Blocks command.\n\n A command to generate WordPress blocks from a src folder.\n\n Options:\n --in The directory where the WP blocks can be found. Relative to cwd.\n --out The directory where the WP blocks will be output. Relative to cwd.\n --tsConfigPath (optional) The directory where the tsconfig file can be found. Relative to cwd. Defaults to the in folder.\n --postcssConfigPath (optional) The directory where the postcss config file can be found. Relative to cwd. Defaults to the in folder and then searches up the directory tree.\n --watch (optional) Watch the blocks in folder for changes and compile.\n --excludeBlocks (optional) A comma separated list of the folder names of blocks to exclude from compilation. Defaults to \"__TEMPLATE__\".\n --excludeRootFiles (optional) A comma separated list of the root file names to exclude from compilation. Nothing is excluded by default.\n --alwaysCompileRootFiles (optional) By default, we won't compile root files if no blocks are found, this allows you to override that setting. Defaults to false.\n\n Example usage:\n $ smash-cli blocks --watch --in src --out build --tsConfigPath tsconfig.json\n";
2
- export default function blocks(args: string[]): void;
1
+ import type { BlockMetaData } from "@atomicsmash/blocks-helpers";
2
+ import webpack from "webpack";
3
+ export declare const blocksHelpMessage = "\n Atomic Smash CLI - Blocks command.\n\n A command to generate WordPress blocks from a src folder.\n\n Options:\n --in The directory where the WP blocks can be found. Relative to cwd.\n --out The directory where the WP blocks will be output. Relative to cwd.\n --tsConfigPath (optional) The directory where the tsconfig file can be found. Relative to cwd. Defaults to the in folder.\n --postcssConfigPath (optional) The directory where the postcss config file can be found. Relative to cwd. Defaults to the in folder and then searches up the directory tree.\n --watch (optional) Watch the blocks in folder for changes and compile.\n --excludeBlocks (optional) A comma separated list of the folder names of blocks to exclude from compilation. Defaults to \"__TEMPLATE__\".\n --excludeRootFiles (optional) A comma separated list of the root file names to exclude from compilation. Nothing is excluded by default.\n --alwaysCompileRootFiles (optional) By default, we won't compile root files if no blocks are found, this allows you to override that setting. Defaults to false.\n --watch (optional) Run compiler in watch mode. Default to false.\n\n Example usage:\n $ smash-cli blocks --watch --in src --out build --tsConfigPath tsconfig.json\n";
4
+ export default function blocks(args: string[]): Promise<void>;
5
+ export declare function getRootFileJSEntryPoints({ srcFolder, excludeRootFiles, }: {
6
+ srcFolder: string;
7
+ excludeRootFiles: string[];
8
+ }): Promise<webpack.EntryObject>;
9
+ export declare function getAllBlocksJSEntryPoints({ srcFolder, blocks, }: {
10
+ srcFolder: string;
11
+ blocks: Record<string, {
12
+ blockFolder: string;
13
+ blockJson: BlockJson;
14
+ }>;
15
+ }): webpack.EntryObject;
16
+ type BlockJson = BlockMetaData<never, never>;
17
+ export declare function getBlockJsonFiles(srcFolder: string, excludeBlocks: string[]): Promise<Record<string, {
18
+ blockFolder: string;
19
+ blockJson: BlockJson;
20
+ }>>;
21
+ export declare function getBlockJsonScriptFields(blockJson: BlockJson): Partial<Pick<BlockJson, "viewScript" | "script" | "editorScript">> | null;
22
+ export declare function getBlockJsonStyleFields(blockJson: BlockJson): Partial<Pick<BlockJson, "editorStyle" | "style" | "viewStyle">> | null;
23
+ export {};
3
24
  //# sourceMappingURL=blocks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/commands/blocks.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,iBAAiB,gxCAiB7B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAuP5C"}
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/commands/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AA0BjE,OAAO,OAAO,MAAM,SAAS,CAAC;AAM9B,eAAO,MAAM,iBAAiB,u2CAkB7B,CAAC;AAEF,wBAA8B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,iBAyClD;AAoID,wBAAsB,wBAAwB,CAAC,EAC9C,SAAS,EACT,gBAAgB,GAChB,EAAE;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC3B,gCAmCA;AAED,wBAAgB,yBAAyB,CAAC,EACzC,SAAS,EACT,MAAM,GACN,EAAE;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CACb,MAAM,EACN;QACC,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,SAAS,CAAC;KACrB,CACD,CAAC;CACF,uBAkCA;AAED,KAAK,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE7C,wBAAsB,iBAAiB,CACtC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EAAE;iBAUqB,MAAM;eAAa,SAAS;IAmBxE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS,6EAa5D;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,0EAa3D"}
@@ -1,20 +1,19 @@
1
1
  import crypto from "node:crypto";
2
- import { readFileSync, writeFileSync } from "node:fs";
3
- import { readdir } from "node:fs/promises";
4
- import { resolve as resolvePath } from "node:path";
2
+ import { readFileSync } from "node:fs";
3
+ import { readdir, readFile, writeFile } from "node:fs/promises";
4
+ import { basename, dirname, extname, join, resolve as resolvePath, sep as pathSeparator, } from "node:path";
5
5
  import { pathToFileURL } from "node:url";
6
- import DependencyExtractionWebpackPlugin from "@wordpress/dependency-extraction-webpack-plugin";
7
- import defaultConfig from "@wordpress/scripts/config/webpack.config.js";
8
6
  import autoprefixer from "autoprefixer";
9
7
  import CopyWebpackPlugin from "copy-webpack-plugin";
10
8
  import cssnano from "cssnano";
11
- import { deleteAsync } from "del";
12
9
  import glob from "glob-promise";
13
10
  import postcss from "postcss";
14
11
  import postcssLoadConfig from "postcss-load-config";
15
12
  import { compileStringAsync } from "sass";
16
13
  import { TsconfigPathsPlugin } from "tsconfig-paths-webpack-plugin";
14
+ import { tsImport } from "tsx/esm/api";
17
15
  import webpack from "webpack";
16
+ import defaultConfig from "../external/wordpress.webpack.config.cjs";
18
17
  import { hasHelpFlag, interpretFlag, toCamelCase } from "../utils.js";
19
18
  const isProduction = process.env.NODE_ENV === "production";
20
19
  export const blocksHelpMessage = `
@@ -31,11 +30,12 @@ export const blocksHelpMessage = `
31
30
  --excludeBlocks (optional) A comma separated list of the folder names of blocks to exclude from compilation. Defaults to "__TEMPLATE__".
32
31
  --excludeRootFiles (optional) A comma separated list of the root file names to exclude from compilation. Nothing is excluded by default.
33
32
  --alwaysCompileRootFiles (optional) By default, we won't compile root files if no blocks are found, this allows you to override that setting. Defaults to false.
33
+ --watch (optional) Run compiler in watch mode. Default to false.
34
34
 
35
35
  Example usage:
36
36
  $ smash-cli blocks --watch --in src --out build --tsConfigPath tsconfig.json
37
37
  `;
38
- export default function blocks(args) {
38
+ export default async function blocks(args) {
39
39
  if (hasHelpFlag(args)) {
40
40
  console.log(blocksHelpMessage);
41
41
  return;
@@ -56,134 +56,56 @@ export default function blocks(args) {
56
56
  .value ?? ["__TEMPLATE__"];
57
57
  const excludeRootFiles = interpretFlag(args, "--excludeRootFiles", "list").value ?? [];
58
58
  const shouldAlwaysCompileRootFiles = interpretFlag(args, "--alwaysCompileRootFiles", "boolean").value;
59
- const plugins = [
60
- ...(defaultConfig.plugins?.filter((plugin) => {
61
- return ![
62
- "DependencyExtractionWebpackPlugin",
63
- "CopyPlugin", // CopyWebpackPlugin
64
- ].includes(plugin?.constructor.name ?? "");
65
- }) ?? []),
66
- new DependencyExtractionWebpackPlugin({
67
- combineAssets: true,
68
- }),
69
- new CopyWebpackPlugin({
70
- patterns: [
71
- {
72
- from: `${srcFolder}/**/block.json`,
73
- noErrorOnMissing: true,
74
- globOptions: {
75
- ignore: excludeBlocks.map((blockName) => `${srcFolder}/${blockName}/**/*`),
76
- },
77
- },
78
- {
79
- from: `${srcFolder}/**/render.php`,
80
- noErrorOnMissing: true,
81
- globOptions: {
82
- ignore: excludeBlocks.map((blockName) => `${srcFolder}/${blockName}/**/*`),
83
- },
84
- },
85
- ],
86
- }),
87
- {
88
- apply: (compiler) => {
89
- compiler.hooks.afterEmit.tapPromise("Build CSS and copy to test area", async () => {
90
- await glob
91
- .promise(`${srcFolder}/**/*.{css,scss}`, {
92
- ignore: excludeBlocks.map((blockName) => `${srcFolder}/${blockName}/**/*`),
93
- })
94
- .then(async (globMatches) => {
95
- const currentCSSFileNames = [];
96
- for (const match of globMatches) {
97
- const fileNameWithExtension = match.split("/").pop();
98
- if (!fileNameWithExtension) {
99
- console.error(`Failed to get filename of ${match}`);
100
- continue;
101
- }
102
- let css = readFileSync(match, "utf8");
103
- if (fileNameWithExtension.split(".").pop() === "scss") {
104
- css = await compileStringAsync(css, {
105
- importers: [
106
- {
107
- findFileUrl(url) {
108
- if (!url.startsWith("sitecss:"))
109
- return null;
110
- const pathname = url.substring(8);
111
- return pathToFileURL(`${resolvePath(srcFolder, "../css")}${pathname.startsWith("/") ? pathname : `/${pathname}`}`);
112
- },
113
- },
114
- ],
115
- }).then((result) => result.css);
116
- }
117
- let newFileNameWithExtension = fileNameWithExtension;
118
- let newMatch = match.replace(srcFolder, distFolder);
119
- if (isProduction) {
120
- const fileBuffer = readFileSync(match);
121
- const contentHash = crypto.createHash("shake256", {
122
- outputLength: 10,
123
- });
124
- contentHash.update(fileBuffer);
125
- newFileNameWithExtension = `${fileNameWithExtension.split(".")[0]}.${contentHash.digest("hex")}.css`;
126
- newMatch = newMatch.replace(fileNameWithExtension, newFileNameWithExtension);
127
- currentCSSFileNames.push(`!${newMatch}`);
128
- }
129
- const { plugins, options } = await postcssLoadConfig({}, postcssConfigLocation)
130
- .then(({ plugins, options }) => {
131
- options.from = match;
132
- options.to = newMatch;
133
- return { plugins, options };
134
- })
135
- .catch((error) => {
136
- if (error &&
137
- error instanceof Error &&
138
- error.message.startsWith("No PostCSS Config found")) {
139
- const postCSSPlugins = [autoprefixer];
140
- if (isProduction) {
141
- postCSSPlugins.push(cssnano({ preset: "default" }));
142
- }
143
- return {
144
- plugins: postCSSPlugins,
145
- options: {
146
- from: match,
147
- to: newMatch,
148
- },
149
- };
150
- }
151
- throw error;
152
- });
153
- await postcss(plugins)
154
- .process(css, options)
155
- .then((result) => {
156
- writeFileSync(newMatch, result.css);
157
- if (result.map) {
158
- writeFileSync(`${newMatch}.map`, result.map.toString());
159
- }
160
- });
161
- }
162
- deleteAsync([
163
- `${distFolder}/**/*.css`,
164
- ...currentCSSFileNames,
165
- ]).catch((error) => {
166
- console.log(error);
167
- });
168
- })
169
- .catch((error) => {
170
- console.error(error);
171
- throw error;
172
- });
173
- });
174
- },
175
- },
176
- ];
59
+ const isWatch = interpretFlag(args, "--watch", "boolean").value;
60
+ await runCommand({
61
+ srcFolder,
62
+ distFolder,
63
+ tsConfigLocation,
64
+ postcssConfigLocation,
65
+ excludeBlocks,
66
+ excludeRootFiles,
67
+ shouldAlwaysCompileRootFiles,
68
+ isWatch,
69
+ });
70
+ }
71
+ async function runCommand({ srcFolder, distFolder, tsConfigLocation, postcssConfigLocation, excludeBlocks, excludeRootFiles, shouldAlwaysCompileRootFiles, isWatch, }) {
72
+ const blocks = await getBlockJsonFiles(srcFolder, excludeBlocks);
73
+ const isNoBlocks = Object.keys(blocks).length === 0;
177
74
  const compiler = webpack({
178
75
  ...defaultConfig,
179
- entry: () => getAllBlocksJSEntryPoints({
180
- srcFolder,
181
- shouldAlwaysCompileRootFiles,
182
- excludeBlocks,
183
- excludeRootFiles,
184
- }),
76
+ entry: async () => {
77
+ const entryPoints = {
78
+ ...(isNoBlocks && !shouldAlwaysCompileRootFiles
79
+ ? {}
80
+ : await getRootFileJSEntryPoints({ srcFolder, excludeRootFiles })),
81
+ ...getAllBlocksJSEntryPoints({
82
+ srcFolder,
83
+ blocks,
84
+ }),
85
+ };
86
+ // TODO: improve this console output
87
+ // eslint-disable-next-line no-console
88
+ console.log({ entryPoints });
89
+ return entryPoints;
90
+ },
185
91
  context: srcFolder,
186
- plugins: plugins,
92
+ plugins: [
93
+ ...(defaultConfig.plugins?.filter((plugin) => {
94
+ return ![
95
+ "CopyPlugin", // CopyWebpackPlugin
96
+ ].includes(plugin?.constructor.name ?? "");
97
+ }) ?? []),
98
+ new CopyWebpackPlugin({
99
+ patterns: [...getCopyPatternsForBlocks(blocks, distFolder)],
100
+ }),
101
+ new CustomBlocksCSSHandler({
102
+ blocks,
103
+ srcFolder,
104
+ distFolder,
105
+ postcssConfigLocation,
106
+ }),
107
+ new BlockJsonAssetTransformer({ distFolder }),
108
+ ],
187
109
  output: {
188
110
  path: distFolder,
189
111
  clean: true,
@@ -198,7 +120,7 @@ export default function blocks(args) {
198
120
  },
199
121
  mode: isProduction ? "production" : "development",
200
122
  });
201
- if (args.find((value) => value === "--watch")) {
123
+ if (isWatch) {
202
124
  const watching = compiler.watch({
203
125
  // Example
204
126
  aggregateTimeout: 300,
@@ -252,7 +174,7 @@ export default function blocks(args) {
252
174
  });
253
175
  }
254
176
  }
255
- async function getAllBlocksJSEntryPoints({ srcFolder, shouldAlwaysCompileRootFiles, excludeBlocks, excludeRootFiles, }) {
177
+ export async function getRootFileJSEntryPoints({ srcFolder, excludeRootFiles, }) {
256
178
  const entryPoints = {};
257
179
  const rootFiles = await readdir(srcFolder, {
258
180
  withFileTypes: true,
@@ -275,63 +197,263 @@ async function getAllBlocksJSEntryPoints({ srcFolder, shouldAlwaysCompileRootFil
275
197
  continue;
276
198
  }
277
199
  entryPoints[toCamelCase(entryName)] = {
278
- import: `${srcFolder}/${fileNameAndExtension}`,
200
+ import: [srcFolder, fileNameAndExtension].join(pathSeparator),
279
201
  filename: `${entryName}${isProduction ? `.[contenthash]` : ""}.js`,
280
202
  };
281
203
  }
282
- const blockFolders = await readdir(`${srcFolder}`, {
283
- withFileTypes: true,
284
- })
285
- .then((srcDirFiles) => {
286
- return srcDirFiles
287
- .filter((dirent) => dirent.isDirectory())
288
- .map((dirent) => dirent.name);
289
- })
290
- .then((blockFolders) => {
291
- return blockFolders.filter((block) => !excludeBlocks.includes(block));
292
- });
293
- if (blockFolders.length === 0 && !shouldAlwaysCompileRootFiles) {
294
- // If there are no blocks, don't compile root files, unless the flag is present.
295
- console.log({ entryPoints: {} });
296
- return {};
297
- }
298
- for (const block of blockFolders) {
299
- const blockFiles = await readdir(`${srcFolder}/${block}`, {
300
- withFileTypes: true,
301
- }).then((blockDirFiles) => {
302
- return blockDirFiles
303
- .filter((file) => !file.isDirectory())
304
- .map((file) => file.name)
305
- .filter((file) => file.endsWith(".js") ||
306
- file.endsWith(".ts") ||
307
- file.endsWith(".jsx") ||
308
- file.endsWith(".tsx"));
309
- });
310
- for (const blockJSFile of blockFiles) {
311
- let blockBonusScriptNumber = 1;
312
- const [filename] = blockJSFile.split(".");
313
- let entryName;
314
- if (filename === "index") {
315
- entryName = block;
316
- }
317
- else if (filename === "editor") {
318
- entryName = `${block}-editor`;
319
- }
320
- else if (filename === "view") {
321
- entryName = `${block}-view`;
322
- }
323
- else {
324
- entryName = `${block}-bonus${blockBonusScriptNumber}`;
325
- blockBonusScriptNumber++;
204
+ return entryPoints;
205
+ }
206
+ export function getAllBlocksJSEntryPoints({ srcFolder, blocks, }) {
207
+ const entryPoints = {};
208
+ const blocksJsonObjects = Object.values(blocks);
209
+ for (const { blockFolder, blockJson } of blocksJsonObjects) {
210
+ const fields = getBlockJsonScriptFields(blockJson);
211
+ if (!fields) {
212
+ continue;
213
+ }
214
+ for (const value of Object.values(fields).flat()) {
215
+ if ("string" !== typeof value || !value.startsWith("file:")) {
216
+ continue;
326
217
  }
218
+ // Removes the `file:` prefix.
219
+ const filepath = join(blockFolder, value.replace("file:", ""));
220
+ const entryName = filepath
221
+ .replace(srcFolder, "")
222
+ .replace(extname(filepath), "")
223
+ .replace(/\\/g, "/")
224
+ .split("/")
225
+ .filter((string) => string !== "")
226
+ .join("-");
327
227
  entryPoints[toCamelCase(entryName)] = {
328
- import: `${srcFolder}/${block}/${blockJSFile}`,
329
- filename: `${block}/${filename}${isProduction ? `.[contenthash]` : ""}.js`,
228
+ import: filepath,
229
+ filename: `${filepath.replace(`${srcFolder}${pathSeparator}`, "").replace(extname(filepath), "")}${isProduction ? `.[contenthash]` : ""}.js`,
330
230
  };
331
231
  }
332
232
  }
333
- // eslint-disable-next-line no-console
334
- console.log({ entryPoints });
335
233
  return entryPoints;
336
234
  }
235
+ export async function getBlockJsonFiles(srcFolder, excludeBlocks) {
236
+ const blockJsonFiles = await glob
237
+ .promise(`${srcFolder.replaceAll(pathSeparator, "/")}/**/block.json.ts`, {
238
+ ignore: excludeBlocks.map((blockName) => `${srcFolder.replaceAll(pathSeparator, "/")}/**/${blockName}/block.json.ts`),
239
+ })
240
+ .then((paths) => paths.map((path) => path.replaceAll("/", pathSeparator)));
241
+ const blocks = {};
242
+ for (const blockJsonFile of blockJsonFiles) {
243
+ const blockJson = await tsImport(`${blockJsonFile.split(pathSeparator).shift()?.includes(":") ? `file:///` : ""}${blockJsonFile}`, import.meta.url).then((loadedFile) => {
244
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
245
+ return loadedFile.default;
246
+ });
247
+ const blockName = blockJsonFile
248
+ .replace(`${pathSeparator}block.json.ts`, "")
249
+ .split(pathSeparator)
250
+ .pop();
251
+ blocks[blockName] = { blockFolder: dirname(blockJsonFile), blockJson };
252
+ }
253
+ return blocks;
254
+ }
255
+ export function getBlockJsonScriptFields(blockJson) {
256
+ const scriptFields = ["viewScript", "script", "editorScript"];
257
+ let result = null;
258
+ for (const field of scriptFields) {
259
+ if (Object.hasOwn(blockJson, field)) {
260
+ if (result === null) {
261
+ result = {};
262
+ }
263
+ result[field] = blockJson[field];
264
+ }
265
+ }
266
+ return result;
267
+ }
268
+ export function getBlockJsonStyleFields(blockJson) {
269
+ const styleFields = ["viewStyle", "style", "editorStyle"];
270
+ let result = null;
271
+ for (const field of styleFields) {
272
+ if (Object.hasOwn(blockJson, field)) {
273
+ if (result === null) {
274
+ result = {};
275
+ }
276
+ result[field] = blockJson[field];
277
+ }
278
+ }
279
+ return result;
280
+ }
281
+ function getSassOptions(srcFolder) {
282
+ return {
283
+ importers: [
284
+ {
285
+ findFileUrl(url) {
286
+ if (!url.startsWith("sitecss:"))
287
+ return null;
288
+ const pathname = url.substring(8);
289
+ return pathToFileURL(`${resolvePath(srcFolder, "../css")}${pathname.startsWith("/") ? pathname : `/${pathname}`}`);
290
+ },
291
+ },
292
+ ],
293
+ };
294
+ }
295
+ function getCopyPatternsForBlocks(blocks, distFolder) {
296
+ const blocksCopyPatterns = [];
297
+ const blocksEntries = Object.entries(blocks);
298
+ for (const [blockName, { blockFolder, blockJson }] of blocksEntries) {
299
+ // Generate block.json file.
300
+ blocksCopyPatterns.push({
301
+ from: `${blockFolder}/block.json.ts`,
302
+ to: `${distFolder}/${blockName}/block.json`,
303
+ noErrorOnMissing: true,
304
+ transform: {
305
+ transformer() {
306
+ return JSON.stringify(blockJson, null, 2);
307
+ },
308
+ cache: true,
309
+ },
310
+ });
311
+ // Copy render.php file
312
+ blocksCopyPatterns.push({
313
+ from: `${blockFolder}/render.php`,
314
+ to: `${distFolder}/${blockName}/render.php`,
315
+ noErrorOnMissing: true,
316
+ });
317
+ // Copy index.php file
318
+ blocksCopyPatterns.push({
319
+ from: `${blockFolder}/index.php`,
320
+ to: `${distFolder}/${blockName}/index.php`,
321
+ noErrorOnMissing: true,
322
+ });
323
+ }
324
+ return blocksCopyPatterns;
325
+ }
326
+ /**
327
+ * This class handles CSS compilation for blocks.
328
+ */
329
+ class CustomBlocksCSSHandler {
330
+ blocks;
331
+ distFolder;
332
+ srcFolder;
333
+ postcssConfigLocation;
334
+ constructor({ blocks, srcFolder, distFolder, postcssConfigLocation, }) {
335
+ this.blocks = blocks;
336
+ this.srcFolder = srcFolder;
337
+ this.distFolder = distFolder;
338
+ this.postcssConfigLocation = postcssConfigLocation;
339
+ }
340
+ apply(compiler) {
341
+ // RawSource is one of the "sources" classes that should be used
342
+ // to represent asset sources in compilation.
343
+ const { RawSource } = webpack.sources;
344
+ compiler.hooks.thisCompilation.tap({
345
+ name: "CustomBlocksCSSHandler",
346
+ stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL,
347
+ }, (compilation) => {
348
+ compilation.hooks.processAssets.tapPromise("CustomBlocksCSSHandler", async () => {
349
+ const blocksJsonObjects = Object.values(this.blocks);
350
+ for (const { blockFolder, blockJson } of blocksJsonObjects) {
351
+ const fields = getBlockJsonStyleFields(blockJson);
352
+ if (!fields) {
353
+ continue;
354
+ }
355
+ for (const value of Object.values(fields).flat()) {
356
+ if ("string" !== typeof value || !value.startsWith("file:")) {
357
+ continue;
358
+ }
359
+ // Removes the `file:` prefix.
360
+ const filepath = join(blockFolder, value.replace("file:", ""));
361
+ const fileNameWithExtension = basename(filepath);
362
+ let css = readFileSync(filepath, "utf8");
363
+ if (extname(fileNameWithExtension) === ".scss") {
364
+ css = await compileStringAsync(css, getSassOptions(this.srcFolder)).then((result) => result.css);
365
+ }
366
+ let newFileNameWithExtension = fileNameWithExtension;
367
+ let newMatch = filepath.replace(`${this.srcFolder}/`, "");
368
+ if (isProduction) {
369
+ const fileBuffer = readFileSync(filepath);
370
+ const contentHash = crypto.createHash("shake256", {
371
+ outputLength: 10,
372
+ });
373
+ contentHash.update(fileBuffer);
374
+ newFileNameWithExtension = `${fileNameWithExtension.split(".")[0]}.${contentHash.digest("hex")}.css`;
375
+ newMatch = newMatch.replace(fileNameWithExtension, newFileNameWithExtension);
376
+ }
377
+ const { plugins, options } = await postcssLoadConfig({}, this.postcssConfigLocation)
378
+ .then(({ plugins, options }) => {
379
+ options.from = filepath;
380
+ options.to = newMatch;
381
+ return { plugins, options };
382
+ })
383
+ .catch((error) => {
384
+ if (error &&
385
+ error instanceof Error &&
386
+ error.message.startsWith("No PostCSS Config found")) {
387
+ const postCSSPlugins = [autoprefixer];
388
+ if (isProduction) {
389
+ postCSSPlugins.push(cssnano({ preset: "default" }));
390
+ }
391
+ return {
392
+ plugins: postCSSPlugins,
393
+ options: {
394
+ from: filepath,
395
+ to: newMatch,
396
+ },
397
+ };
398
+ }
399
+ throw error;
400
+ });
401
+ const result = await postcss(plugins).process(css, options);
402
+ compilation.emitAsset(newMatch, new RawSource(result.css));
403
+ if (result.map) {
404
+ compilation.emitAsset(`${newMatch}.map`, new RawSource(result.map.toString()));
405
+ }
406
+ }
407
+ }
408
+ });
409
+ });
410
+ }
411
+ }
412
+ class BlockJsonAssetTransformer {
413
+ distFolder;
414
+ constructor({ distFolder }) {
415
+ this.distFolder = distFolder;
416
+ }
417
+ apply(compiler) {
418
+ compiler.hooks.afterEmit.tapPromise("BlockJsonAssetTransformer", async (compilation) => {
419
+ const blockJsonFiles = Object.keys(compilation.assets).filter((asset) => asset.endsWith("block.json"));
420
+ for (const blockJsonFile of blockJsonFiles) {
421
+ await readFile(`${this.distFolder}/${blockJsonFile}`, "utf-8")
422
+ .then((data) => {
423
+ return JSON.parse(data);
424
+ })
425
+ .then((json) => {
426
+ const blockName = blockJsonFile.replace("/block.json", "");
427
+ [
428
+ getBlockJsonScriptFields(json),
429
+ getBlockJsonStyleFields(json),
430
+ ].forEach((fields) => {
431
+ if (fields === null) {
432
+ return;
433
+ }
434
+ Object.entries(fields).forEach(([fieldName, value]) => {
435
+ const values = [value].flat(1);
436
+ json[fieldName] = values.map((srcFilePath) => {
437
+ const fileName = srcFilePath
438
+ .replace("file:./", "")
439
+ .replace(extname(srcFilePath), "");
440
+ const hashedAsset = Object.keys(compilation.assets).find((asset) => {
441
+ return (asset.startsWith(`${blockName}/${fileName}`) &&
442
+ !asset.endsWith(".php"));
443
+ });
444
+ return hashedAsset
445
+ ? `file:./${hashedAsset.replace(`${blockName}/`, "")}`
446
+ : srcFilePath;
447
+ });
448
+ });
449
+ });
450
+ return json;
451
+ })
452
+ .then(async (transformedJson) => {
453
+ await writeFile(`${this.distFolder}/${blockJsonFile}`, JSON.stringify(transformedJson, undefined, 2), "utf-8");
454
+ });
455
+ }
456
+ });
457
+ }
458
+ }
337
459
  //# sourceMappingURL=blocks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/commands/blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/commands/blocks.ts"],"names":[],"mappings":"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"}