sb-mig 5.6.1-beta.2 → 5.6.2-beta.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.
@@ -28,7 +28,7 @@ interface DiscoverManyByPackageNameRequest {
28
28
  }
29
29
  type DiscoverResult = string[];
30
30
  export type { CompareResult, OneFileElement };
31
- export { normalizeDiscover, compare, filesPattern, } from "../../utils/path-utils.js";
31
+ export { normalizeDiscover, compare, filesPattern, exactFilesPatterns, } from "../../utils/path-utils.js";
32
32
  export declare const discoverManyByPackageName: (request: DiscoverManyByPackageNameRequest) => DiscoverResult;
33
33
  export declare const discoverOneByPackageName: (request: DiscoverOneByPackageNameRequest) => DiscoverResult;
34
34
  export declare const discoverMany: (request: DiscoverManyRequest) => Promise<DiscoverResult>;
@@ -6,7 +6,7 @@ import storyblokConfig, { SCHEMA } from "../../config/config.js";
6
6
  import { buildOnTheFly } from "../../rollup/build-on-the-fly.js";
7
7
  import { getFileContentWithRequire, readFile } from "../../utils/files.js";
8
8
  import { safeGlobSync as globSync } from "../../utils/glob-utils.js";
9
- import { normalizeDiscover, filesPattern, compare, } from "../../utils/path-utils.js";
9
+ import { normalizeDiscover, filesPattern, exactFilesPatterns, compare, } from "../../utils/path-utils.js";
10
10
  export var SCOPE;
11
11
  (function (SCOPE) {
12
12
  SCOPE["local"] = "local";
@@ -20,7 +20,7 @@ export var LOOKUP_TYPE;
20
20
  LOOKUP_TYPE["fileName"] = "fileName";
21
21
  })(LOOKUP_TYPE || (LOOKUP_TYPE = {}));
22
22
  // Re-export functions for backwards compatibility
23
- export { normalizeDiscover, compare, filesPattern, } from "../../utils/path-utils.js";
23
+ export { normalizeDiscover, compare, filesPattern, exactFilesPatterns, } from "../../utils/path-utils.js";
24
24
  export const discoverManyByPackageName = (request) => {
25
25
  const rootDirectory = "./";
26
26
  const directory = path.resolve(process.cwd(), rootDirectory);
@@ -320,21 +320,17 @@ export const discoverStories = (request) => {
320
320
  export const discoverMigrationConfig = (request) => {
321
321
  const rootDirectory = "./";
322
322
  const directory = path.resolve(process.cwd(), rootDirectory);
323
- let pattern;
324
- let listOfFiles = [""];
323
+ let listOfFiles = [];
325
324
  switch (request.scope) {
326
325
  case SCOPE.local:
327
- // ### MANY - LOCAL - fileName ###
328
- // const onlyLocalComponentsDirectories =
329
- // storyblokConfig.componentsDirectories.filter(
330
- // (p: string) => !p.includes("node_modules")
331
- // );
332
- pattern = path.join(`${directory}`, `${normalizeDiscover({
333
- segments: storyblokConfig.componentsDirectories,
334
- })}`, "**", `${normalizeDiscover({ segments: request.fileNames })}.${storyblokConfig.migrationConfigExt}`);
335
- listOfFiles = globSync(pattern.replace(/\\/g, "/"), {
326
+ listOfFiles = exactFilesPatterns({
327
+ mainDirectory: directory,
328
+ componentDirectories: storyblokConfig.componentsDirectories,
329
+ fileNames: request.fileNames,
330
+ ext: storyblokConfig.migrationConfigExt,
331
+ }).flatMap((pattern) => globSync(pattern.replace(/\\/g, "/"), {
336
332
  follow: true,
337
- });
333
+ }));
338
334
  break;
339
335
  default:
340
336
  break;
@@ -384,18 +380,17 @@ export const discoverAllMigrationConfigs = (request) => {
384
380
  export const discoverVersionMapping = (request) => {
385
381
  const rootDirectory = "./";
386
382
  const directory = path.resolve(process.cwd(), rootDirectory);
387
- let pattern;
388
- let listOfFiles = [""];
383
+ let listOfFiles = [];
389
384
  switch (request.scope) {
390
385
  case SCOPE.all:
391
- pattern = path.join(`${directory}`, `${normalizeDiscover({
392
- segments: storyblokConfig.componentsDirectories,
393
- })}`, "**", `${normalizeDiscover({
394
- segments: request.fileNames,
395
- })}.${"sb.migrations.cjs"}`);
396
- listOfFiles = globSync(pattern.replace(/\\/g, "/"), {
386
+ listOfFiles = exactFilesPatterns({
387
+ mainDirectory: directory,
388
+ componentDirectories: storyblokConfig.componentsDirectories,
389
+ fileNames: request.fileNames,
390
+ ext: "sb.migrations.cjs",
391
+ }).flatMap((pattern) => globSync(pattern.replace(/\\/g, "/"), {
397
392
  follow: true,
398
- });
393
+ }));
399
394
  break;
400
395
  default:
401
396
  break;
@@ -13,27 +13,35 @@ export const buildOnTheFly = async ({ files }) => {
13
13
  }
14
14
  const projectDir = process.cwd();
15
15
  const cacheDir = path.join(`${projectDir}`, `${storyblokConfig.cacheDir}`, `sb-mig`);
16
- await Promise.all(files.map(async (filePath) => {
17
- const inputOptions = {
18
- input: filePath,
19
- plugins: [
20
- ts({
21
- transpileOnly: true,
22
- transpiler: "swc",
23
- }),
24
- ],
25
- };
26
- const outputOptionsList = [
27
- {
28
- file: path.join(`${cacheDir}`, `${_extractComponentName(filePath)}.cjs`),
29
- format: "cjs",
30
- },
31
- {
32
- file: path.join(`${cacheDir}`, `${_extractComponentName(filePath)}.js`),
33
- format: "es",
34
- },
35
- ];
36
- await build({ inputOptions, outputOptionsList });
37
- }));
38
- Logger.success("Precompile successfull!.");
16
+ const BATCH_SIZE = 5;
17
+ const total = files.length;
18
+ Logger.log(`Compiling ${total} schema files...`);
19
+ for (let i = 0; i < total; i += BATCH_SIZE) {
20
+ const batch = files.slice(i, i + BATCH_SIZE);
21
+ const batchEnd = Math.min(i + BATCH_SIZE, total);
22
+ Logger.log(`[${i + 1}-${batchEnd}/${total}] Compiling batch...`);
23
+ await Promise.all(batch.map(async (filePath) => {
24
+ const inputOptions = {
25
+ input: filePath,
26
+ plugins: [
27
+ ts({
28
+ transpileOnly: true,
29
+ transpiler: "swc",
30
+ }),
31
+ ],
32
+ };
33
+ const outputOptionsList = [
34
+ {
35
+ file: path.join(`${cacheDir}`, `${_extractComponentName(filePath)}.cjs`),
36
+ format: "cjs",
37
+ },
38
+ {
39
+ file: path.join(`${cacheDir}`, `${_extractComponentName(filePath)}.js`),
40
+ format: "es",
41
+ },
42
+ ];
43
+ await build({ inputOptions, outputOptionsList });
44
+ }));
45
+ }
46
+ Logger.success(`Precompile successful! (${total} files)`);
39
47
  };
@@ -1,20 +1,20 @@
1
1
  import { rollup } from "rollup";
2
2
  export async function build({ inputOptions, outputOptionsList }) {
3
3
  let bundle;
4
- let buildFailed = false;
5
4
  try {
6
5
  bundle = await rollup(inputOptions);
7
6
  await generateOutputs({ bundle, outputOptionsList });
8
7
  return [];
9
8
  }
10
9
  catch (error) {
11
- buildFailed = true;
12
10
  console.error(error);
11
+ throw error;
13
12
  }
14
- if (bundle) {
15
- await bundle.close();
13
+ finally {
14
+ if (bundle) {
15
+ await bundle.close();
16
+ }
16
17
  }
17
- process.exit(buildFailed ? 1 : 0);
18
18
  }
19
19
  async function generateOutputs({ bundle, outputOptionsList }) {
20
20
  for (const outputOptions of outputOptionsList) {
@@ -79,6 +79,17 @@ export declare const filesPattern: ({ mainDirectory, componentDirectories, ext,
79
79
  componentDirectories: string[];
80
80
  ext: string;
81
81
  }) => string;
82
+ /**
83
+ * Builds glob file patterns for discovering exact file names across directories.
84
+ * Uses one pattern per directory/name pair so relative paths like ../../node_modules
85
+ * are preserved and not corrupted by path.join on brace-expanded segments.
86
+ */
87
+ export declare const exactFilesPatterns: ({ mainDirectory, componentDirectories, fileNames, ext, }: {
88
+ mainDirectory: string;
89
+ componentDirectories: string[];
90
+ fileNames: string[];
91
+ ext: string;
92
+ }) => string[];
82
93
  /**
83
94
  * Compares local and external file path arrays.
84
95
  * Splits paths to extract file names, filters out duplicates from external
@@ -70,6 +70,14 @@ export const filesPattern = ({ mainDirectory, componentDirectories, ext, }) => {
70
70
  ? path.join(`${mainDirectory}`, `${componentDirectories[0]}`, "**", `[^_]*.${ext}`)
71
71
  : path.join(`${mainDirectory}`, `{${componentDirectories.join(",")}}`, "**", `[^_]*.${ext}`);
72
72
  };
73
+ /**
74
+ * Builds glob file patterns for discovering exact file names across directories.
75
+ * Uses one pattern per directory/name pair so relative paths like ../../node_modules
76
+ * are preserved and not corrupted by path.join on brace-expanded segments.
77
+ */
78
+ export const exactFilesPatterns = ({ mainDirectory, componentDirectories, fileNames, ext, }) => {
79
+ return componentDirectories.flatMap((componentDirectory) => fileNames.map((fileName) => path.join(`${mainDirectory}`, `${componentDirectory}`, "**", `${fileName}.${ext}`)));
80
+ };
73
81
  /**
74
82
  * Compares local and external file path arrays.
75
83
  * Splits paths to extract file names, filters out duplicates from external
@@ -6,7 +6,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  return (mod && mod.__esModule) ? mod : { "default": mod };
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.compare = exports.filesPattern = exports.normalizeDiscover = exports.extractComponentName = void 0;
9
+ exports.compare = exports.exactFilesPatterns = exports.filesPattern = exports.normalizeDiscover = exports.extractComponentName = void 0;
10
10
  const path_1 = __importDefault(require("path"));
11
11
  /**
12
12
  * Extracts the component name from a file path.
@@ -79,6 +79,15 @@ const filesPattern = ({ mainDirectory, componentDirectories, ext, }) => {
79
79
  : path_1.default.join(`${mainDirectory}`, `{${componentDirectories.join(",")}}`, "**", `[^_]*.${ext}`);
80
80
  };
81
81
  exports.filesPattern = filesPattern;
82
+ /**
83
+ * Builds glob file patterns for discovering exact file names across directories.
84
+ * Uses one pattern per directory/name pair so relative paths like ../../node_modules
85
+ * are preserved and not corrupted by path.join on brace-expanded segments.
86
+ */
87
+ const exactFilesPatterns = ({ mainDirectory, componentDirectories, fileNames, ext, }) => {
88
+ return componentDirectories.flatMap((componentDirectory) => fileNames.map((fileName) => path_1.default.join(`${mainDirectory}`, `${componentDirectory}`, "**", `${fileName}.${ext}`)));
89
+ };
90
+ exports.exactFilesPatterns = exactFilesPatterns;
82
91
  /**
83
92
  * Compares local and external file path arrays.
84
93
  * Splits paths to extract file names, filters out duplicates from external
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sb-mig",
3
- "version": "5.6.1-beta.2",
3
+ "version": "5.6.2-beta.1",
4
4
  "description": "CLI to rule the world. (and handle stuff related to Storyblok CMS)",
5
5
  "author": "Marcin Krawczyk <marckraw@icloud.com>",
6
6
  "license": "MIT",