sb-mig 5.1.4-beta.1 → 5.2.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,4 +1,5 @@
1
1
  import chalk from "chalk";
2
+ import storyblokConfig from "../../config/config.js";
2
3
  import Logger from "../../utils/logger.js";
3
4
  import { isObjectEmpty } from "../../utils/main.js";
4
5
  import { getDatasource } from "./datasources.js";
@@ -66,6 +67,11 @@ export const createDatasourceEntries = (args, config) => {
66
67
  const _createDatasourceEntry = (args, config) => {
67
68
  const { currentDatasource, finalDatasource_entry } = args;
68
69
  const { spaceId, sbApi } = config;
70
+ if (storyblokConfig.debug) {
71
+ console.log("############# Entity to Create: ");
72
+ console.log(finalDatasource_entry);
73
+ console.log("################################");
74
+ }
69
75
  return sbApi
70
76
  .post(`spaces/${spaceId}/datasource_entries/`, {
71
77
  datasource_entry: finalDatasource_entry,
@@ -75,7 +81,11 @@ const _createDatasourceEntry = (args, config) => {
75
81
  return data;
76
82
  })
77
83
  .catch((err) => {
78
- Logger.error(err);
84
+ if (storyblokConfig.debug) {
85
+ console.log("Full Create error: ");
86
+ console.log(err);
87
+ }
88
+ Logger.error(`Unable to create datasource entry in ${currentDatasource.datasource.name} datasource.`);
79
89
  });
80
90
  };
81
91
  export const createDatasourceEntry = (args, config) => {
@@ -112,7 +122,11 @@ const _updateDatasourceEntry = (args, config) => {
112
122
  return true;
113
123
  })
114
124
  .catch((err) => {
115
- Logger.error(err);
125
+ if (storyblokConfig.debug) {
126
+ console.log("Full update error: ");
127
+ console.log(err);
128
+ }
129
+ Logger.error(`Unable to update datasource entry in ${currentDatasource.datasource.name} datasource.`);
116
130
  });
117
131
  };
118
132
  export const updateDatasourceEntry = (args, config) => {
@@ -1,5 +1,5 @@
1
1
  import Logger from "../../utils/logger.js";
2
- import { getFilesContentWithRequire } from "../../utils/main.js";
2
+ import { getFileContentWithRequire, } from "../../utils/main.js";
3
3
  import { getAllItemsWithPagination } from "../utils/request.js";
4
4
  import { createDatasourceEntries, getDatasourceEntries, } from "./datasource-entries.js";
5
5
  // GET
@@ -108,16 +108,16 @@ export const updateDatasource = (args, config) => {
108
108
  export const syncDatasources = async (args, config) => {
109
109
  const { providedDatasources } = args;
110
110
  Logger.log(`Trying to sync provided datasources: `);
111
- const providedDatasourcesContent = getFilesContentWithRequire({
112
- files: providedDatasources,
113
- });
111
+ const providedDatasourcesContent = await Promise.all(providedDatasources.map((datasource) => {
112
+ return getFileContentWithRequire({ file: datasource.p });
113
+ }));
114
114
  const remoteDatasources = await getAllDatasources(config);
115
115
  Promise.all(providedDatasourcesContent.map((datasource) => {
116
116
  const datasourceToBeUpdated = remoteDatasources.find((remoteDatasource) => datasource.name === remoteDatasource.name);
117
117
  if (datasourceToBeUpdated) {
118
- return updateDatasource({ datasource, datasourceToBeUpdated }, config);
118
+ return updateDatasource({ datasource: datasource, datasourceToBeUpdated }, config);
119
119
  }
120
- return createDatasource({ datasource }, config);
120
+ return createDatasource({ datasource: datasource }, config);
121
121
  }))
122
122
  .then((res) => {
123
123
  // After create or after update datasource
@@ -1,3 +1,4 @@
1
+ import type { OneFileElement } from "../../cli/utils/discover.js";
1
2
  import type { RequestBaseConfig } from "../utils/request.js";
2
3
  export type GetAllDatasources = (config: RequestBaseConfig) => Promise<any>;
3
4
  export type GetDatasource = (args: {
@@ -11,7 +12,7 @@ export type UpdateDatasource = (args: {
11
12
  datasourceToBeUpdated: any;
12
13
  }, config: RequestBaseConfig) => Promise<any>;
13
14
  export type SyncDatasources = (args: {
14
- providedDatasources: string[];
15
+ providedDatasources: OneFileElement[];
15
16
  }, config: RequestBaseConfig) => Promise<any>;
16
17
  export type SyncProvidedDatasources = (args: {
17
18
  datasources: string[];
@@ -1,7 +1,7 @@
1
1
  import type { RequestBaseConfig } from "./utils/request.js";
2
2
  import type { SyncDirection } from "../cli/sync.types.js";
3
- import type { OneComponent } from "../cli/utils/discover.js";
4
- export type SyncComponents = (specifiedComponents: OneComponent[], presets: boolean, config: RequestBaseConfig) => Promise<any>;
3
+ import type { OneFileElement } from "../cli/utils/discover.js";
4
+ export type SyncComponents = (specifiedComponents: OneFileElement[], presets: boolean, config: RequestBaseConfig) => Promise<any>;
5
5
  export type SyncAllComponents = (presets: boolean, config: RequestBaseConfig) => Promise<any>;
6
6
  export type SyncProvidedComponents = (presets: boolean, components: string[], packageName: boolean, config: RequestBaseConfig) => Promise<any>;
7
7
  export type SyncStories = ({ transmission, stories, toSpaceId, }: {
@@ -1,11 +1,11 @@
1
- import type { OneComponent } from "../../cli/utils/discover.js";
1
+ import type { OneFileElement } from "../../cli/utils/discover.js";
2
2
  import type { RequestBaseConfig } from "../utils/request.js";
3
3
  export type GetRole = (roleName: string | undefined, config: RequestBaseConfig) => Promise<void>;
4
4
  export type GetAllRoles = (config: RequestBaseConfig) => Promise<any>;
5
5
  export type CreateRole = (role: any, config: RequestBaseConfig) => void;
6
6
  export type UpdateRole = (role: any, config: RequestBaseConfig) => void;
7
7
  export type SyncRoles = ({ specifiedRoles }: {
8
- specifiedRoles: OneComponent[];
8
+ specifiedRoles: OneFileElement[];
9
9
  }, config: RequestBaseConfig) => Promise<void>;
10
10
  export type SyncAllRoles = (config: RequestBaseConfig) => Promise<void>;
11
11
  export type SyncProvidedRoles = ({ roles }: {
@@ -1,5 +1,5 @@
1
1
  import { managementApi } from "../../api/managementApi.js";
2
- import { discoverDatasources, discoverManyDatasources, LOOKUP_TYPE, SCOPE, } from "../utils/discover.js";
2
+ import { compare, discoverDatasources, discoverManyDatasources, LOOKUP_TYPE, SCOPE, } from "../utils/discover.js";
3
3
  export const syncProvidedDatasources = async (args, config) => {
4
4
  const { datasources } = args;
5
5
  const allLocalDatasources = await discoverManyDatasources({
@@ -12,26 +12,29 @@ export const syncProvidedDatasources = async (args, config) => {
12
12
  type: LOOKUP_TYPE.fileName,
13
13
  fileNames: datasources,
14
14
  });
15
+ // #3: compare results, prefer local ones (so we have to create final external paths array and local array of things to sync from where)
16
+ const { local, external } = compare({
17
+ local: allLocalDatasources,
18
+ external: allExternalDatasources,
19
+ });
15
20
  managementApi.datasources.syncDatasources({
16
- providedDatasources: [
17
- ...allLocalDatasources,
18
- ...allExternalDatasources,
19
- ],
21
+ providedDatasources: [...local, ...external],
20
22
  }, config);
21
23
  };
22
- export const syncAllDatasources = (config) => {
23
- const allLocalDatasources = discoverDatasources({
24
+ export const syncAllDatasources = async (config) => {
25
+ const allLocalDatasources = await discoverDatasources({
24
26
  scope: SCOPE.local,
25
27
  type: LOOKUP_TYPE.fileName,
26
28
  });
27
- const allExternalDatasources = discoverDatasources({
29
+ const allExternalDatasources = await discoverDatasources({
28
30
  scope: SCOPE.external,
29
31
  type: LOOKUP_TYPE.fileName,
30
32
  });
33
+ const { local, external } = compare({
34
+ local: allLocalDatasources,
35
+ external: allExternalDatasources,
36
+ });
31
37
  managementApi.datasources.syncDatasources({
32
- providedDatasources: [
33
- ...allLocalDatasources,
34
- ...allExternalDatasources,
35
- ],
38
+ providedDatasources: [...local, ...external],
36
39
  }, config);
37
40
  };
@@ -2,12 +2,12 @@ import { managementApi } from "../../api/managementApi.js";
2
2
  import { compare, discoverManyRoles, discoverRoles, LOOKUP_TYPE, SCOPE, } from "../utils/discover.js";
3
3
  export const syncAllRoles = async (config) => {
4
4
  // #1: discover all external .roles.sb.js files
5
- const allLocalSbComponentsSchemaFiles = discoverRoles({
5
+ const allLocalSbComponentsSchemaFiles = await discoverRoles({
6
6
  scope: SCOPE.local,
7
7
  type: LOOKUP_TYPE.fileName,
8
8
  });
9
9
  // #2: discover all local .roles.sb.js files
10
- const allExternalSbComponentsSchemaFiles = discoverRoles({
10
+ const allExternalSbComponentsSchemaFiles = await discoverRoles({
11
11
  scope: SCOPE.external,
12
12
  type: LOOKUP_TYPE.fileName,
13
13
  });
@@ -37,6 +37,7 @@ export const syncProvidedRoles = async ({ roles }, config) => {
37
37
  local: allLocalSbComponentsSchemaFiles,
38
38
  external: allExternalSbComponentsSchemaFiles,
39
39
  });
40
+ console.log({ local, external });
40
41
  // #4: sync - do all stuff already done (groups resolving, and so on)
41
42
  await managementApi.roles.syncRoles({ specifiedRoles: [...local, ...external] }, config);
42
43
  };
@@ -12,11 +12,6 @@ interface DiscoverRequest {
12
12
  scope: SCOPE;
13
13
  type: LOOKUP_TYPE;
14
14
  }
15
- interface DiscoverOneRequest {
16
- fileName: string;
17
- scope: SCOPE;
18
- type: LOOKUP_TYPE;
19
- }
20
15
  interface DiscoverManyRequest {
21
16
  fileNames: string[];
22
17
  scope: SCOPE;
@@ -34,22 +29,19 @@ interface CompareRequest {
34
29
  local: string[];
35
30
  external: string[];
36
31
  }
37
- export interface OneComponent {
32
+ export interface OneFileElement {
38
33
  name: string;
39
34
  p: string;
40
35
  }
41
36
  export interface CompareResult {
42
- local: OneComponent[];
43
- external: OneComponent[];
37
+ local: OneFileElement[];
38
+ external: OneFileElement[];
44
39
  }
45
40
  type DiscoverResult = string[];
46
41
  export declare const normalizeDiscover: ({ segments }: {
47
42
  segments: string[];
48
43
  }) => string | undefined;
49
- export declare const compare: (request: CompareRequest) => {
50
- local: OneComponent[];
51
- external: OneComponent[];
52
- };
44
+ export declare const compare: (request: CompareRequest) => CompareResult;
53
45
  export declare const discoverManyByPackageName: (request: DiscoverManyByPackageNameRequest) => DiscoverResult;
54
46
  export declare const discoverOneByPackageName: (request: DiscoverOneByPackageNameRequest) => DiscoverResult;
55
47
  export declare const discoverMany: (request: DiscoverManyRequest) => Promise<DiscoverResult>;
@@ -57,19 +49,17 @@ export declare const discoverManyDatasources: (request: DiscoverManyRequest) =>
57
49
  export declare const discoverStories: (request: DiscoverManyRequest) => DiscoverResult;
58
50
  export declare const discoverMigrationConfig: (request: DiscoverManyRequest) => DiscoverResult;
59
51
  export declare const discoverVersionMapping: (request: DiscoverManyRequest) => DiscoverResult;
60
- export declare const discoverDatasources: (request: DiscoverRequest) => DiscoverResult;
61
- export declare const discoverOne: (request: DiscoverOneRequest) => DiscoverResult;
52
+ export declare const discoverDatasources: (request: DiscoverRequest) => Promise<DiscoverResult>;
62
53
  export declare const filesPattern: ({ mainDirectory, componentDirectories, ext, }: {
63
54
  mainDirectory: string;
64
55
  componentDirectories: string[];
65
56
  ext: string;
66
57
  }) => string;
67
58
  export declare const discover: (request: DiscoverRequest) => Promise<DiscoverResult>;
68
- export declare const discoverManyStyles: (request: DiscoverManyRequest) => DiscoverResult;
69
- export declare const discoverRoles: (request: DiscoverRequest) => DiscoverResult;
59
+ export declare const discoverRoles: (request: DiscoverRequest) => Promise<DiscoverResult>;
70
60
  export declare const discoverManyRoles: (request: DiscoverManyRequest) => Promise<DiscoverResult>;
71
61
  export declare const discoverAllComponents: () => Promise<{
72
- local: OneComponent[];
73
- external: OneComponent[];
62
+ local: OneFileElement[];
63
+ external: OneFileElement[];
74
64
  }>;
75
65
  export {};
@@ -30,16 +30,15 @@ export const normalizeDiscover = ({ segments }) => {
30
30
  }
31
31
  return `{${segments.join(",")}}`;
32
32
  };
33
- // export const compare = (request: CompareRequest): CompareResult => {
34
33
  export const compare = (request) => {
35
- // TODO: figure out types
36
- const splittedLocal = request.local.map((p) => {
34
+ const { local, external } = request;
35
+ const splittedLocal = local.map((p) => {
37
36
  return {
38
37
  name: p.split(path.sep)[p.split(path.sep).length - 1],
39
38
  p,
40
39
  };
41
40
  });
42
- const splittedExternal = request.external.map((p) => {
41
+ const splittedExternal = external.map((p) => {
43
42
  return {
44
43
  name: p.split(path.sep)[p.split(path.sep).length - 1],
45
44
  p,
@@ -293,7 +292,7 @@ export const discoverManyDatasources = async (request) => {
293
292
  await buildOnTheFly({ files: listOfFilesToCompile });
294
293
  pattern = path.join(directory, ".next", "cache", "sb-mig", "**", `${normalizeDiscover({
295
294
  segments: request.fileNames,
296
- })}.datasource.${storyblokConfig.schemaFileExt}`);
295
+ })}.${storyblokConfig.datasourceExt}`);
297
296
  listOFSchemaTSFilesCompiled = glob.sync(pattern.replace(/\\/g, "/"), {
298
297
  follow: true,
299
298
  });
@@ -302,7 +301,7 @@ export const discoverManyDatasources = async (request) => {
302
301
  segments: onlyLocalComponentsDirectories,
303
302
  })}`, "**", `${normalizeDiscover({
304
303
  segments: request.fileNames,
305
- })}.datasource.${storyblokConfig.datasourceExt}`);
304
+ })}.${storyblokConfig.datasourceExt}`);
306
305
  listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
307
306
  follow: true,
308
307
  });
@@ -398,7 +397,7 @@ export const discoverVersionMapping = (request) => {
398
397
  }
399
398
  return listOfFiles;
400
399
  };
401
- export const discoverDatasources = (request) => {
400
+ export const discoverDatasources = async (request) => {
402
401
  const rootDirectory = "./";
403
402
  const directory = path.resolve(process.cwd(), rootDirectory);
404
403
  let pattern;
@@ -406,22 +405,40 @@ export const discoverDatasources = (request) => {
406
405
  switch (request.scope) {
407
406
  case SCOPE.local:
408
407
  // ### ALL - LOCAL - fileName ###
408
+ let listOFSchemaTSFilesCompiled = [];
409
409
  const onlyLocalComponentsDirectories = storyblokConfig.componentsDirectories.filter((p) => !p.includes("node_modules"));
410
+ if (storyblokConfig.schemaType === SCHEMA.TS) {
411
+ pattern = path.join(`${directory}`, `${normalizeDiscover({
412
+ segments: onlyLocalComponentsDirectories,
413
+ })}`, "**", `[^_]*.sb.datasource.${storyblokConfig.schemaType}`);
414
+ const listOfFilesToCompile = glob.sync(pattern.replace(/\\/g, "/"), {
415
+ follow: true,
416
+ });
417
+ if (storyblokConfig.debug) {
418
+ console.log("############# listOfFileToCompile #############");
419
+ console.log(listOfFilesToCompile);
420
+ console.log("###############################################");
421
+ }
422
+ await buildOnTheFly({ files: listOfFilesToCompile });
423
+ pattern = path.join(directory, ".next", "cache", "sb-mig", "**", `[^_]*.${storyblokConfig.datasourceExt}`);
424
+ listOFSchemaTSFilesCompiled = glob.sync(pattern.replace(/\\/g, "/"), {
425
+ follow: true,
426
+ });
427
+ }
410
428
  pattern = path.join(`${directory}`, `${normalizeDiscover({
411
429
  segments: onlyLocalComponentsDirectories,
412
- })}`, "**", `[^_]*.${storyblokConfig.datasourceExt}` // all files with 'ext' extension, without files beggining with _
413
- );
430
+ })}`, "**", `[^_]*.${storyblokConfig.datasourceExt}`);
414
431
  listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
415
432
  follow: true,
416
433
  });
434
+ listOfFiles = [...listOfFiles, ...listOFSchemaTSFilesCompiled];
417
435
  break;
418
436
  case SCOPE.external:
419
437
  // ### ALL - EXTERNAL - fileName ###
420
438
  const onlyNodeModulesPackagesComponentsDirectories = storyblokConfig.componentsDirectories.filter((p) => p.includes("node_modules"));
421
439
  pattern = path.join(`${directory}`, `${normalizeDiscover({
422
440
  segments: onlyNodeModulesPackagesComponentsDirectories,
423
- })}`, "**", `[^_]*.${storyblokConfig.datasourceExt}` // all files with 'ext' extension, without files beggining with _
424
- );
441
+ })}`, "**", `[^_]*.${storyblokConfig.datasourceExt}`);
425
442
  listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
426
443
  follow: true,
427
444
  });
@@ -430,50 +447,7 @@ export const discoverDatasources = (request) => {
430
447
  // ### ALL - LOCAL - fileName ###
431
448
  pattern = path.join(`${directory}`, `${normalizeDiscover({
432
449
  segments: storyblokConfig.componentsDirectories,
433
- })}`, "**", `[^_]*.${storyblokConfig.datasourceExt}` // all files with 'ext' extension, without files beggining with _
434
- );
435
- listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
436
- follow: true,
437
- });
438
- break;
439
- default:
440
- break;
441
- }
442
- return listOfFiles;
443
- };
444
- export const discoverOne = (request) => {
445
- const rootDirectory = "./";
446
- const directory = path.resolve(process.cwd(), rootDirectory);
447
- let pattern;
448
- let listOfFiles = [""];
449
- switch (request.scope) {
450
- case SCOPE.local:
451
- // ### ONE - LOCAL - fileName ###
452
- const onlyLocalComponentsDirectories = storyblokConfig.componentsDirectories.filter((p) => !p.includes("node_modules"));
453
- pattern = path.join(`${directory}`, `${normalizeDiscover({
454
- segments: onlyLocalComponentsDirectories,
455
- })}`, "**", `${request.fileName}.${storyblokConfig.schemaFileExt}` // all files with 'ext' extension, without files beggining with _
456
- );
457
- listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
458
- follow: true,
459
- });
460
- break;
461
- case SCOPE.external:
462
- // ### ONE - EXTERNAL - fileName ###
463
- const onlyNodeModulesPackagesComponentsDirectories = storyblokConfig.componentsDirectories.filter((p) => p.includes("node_modules"));
464
- pattern = path.join(`${directory}`, `${normalizeDiscover({
465
- segments: onlyNodeModulesPackagesComponentsDirectories,
466
- })}`, "**", `${request.fileName}.${storyblokConfig.schemaFileExt}` // all files with 'ext' extension, without files beggining with _
467
- );
468
- listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
469
- follow: true,
470
- });
471
- break;
472
- case SCOPE.all:
473
- // ### ONE - ALL - fileName ###
474
- pattern = path.join(`${directory}`, `${normalizeDiscover({
475
- segments: storyblokConfig.componentsDirectories,
476
- })}`, "**", `${request.fileName}.${storyblokConfig.schemaFileExt}`);
450
+ })}`, "**", `[^_]*.${storyblokConfig.datasourceExt}`);
477
451
  listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
478
452
  follow: true,
479
453
  });
@@ -484,13 +458,9 @@ export const discoverOne = (request) => {
484
458
  return listOfFiles;
485
459
  };
486
460
  export const filesPattern = ({ mainDirectory, componentDirectories, ext, }) => {
487
- const guyToLookForStuff = path.join(`${mainDirectory}`, `{${componentDirectories.join(",")}}`, "**", `[^_]*.${ext}` // all files with 'ext' extension, without files beggining with _
488
- );
489
461
  return componentDirectories.length === 1
490
- ? path.join(`${mainDirectory}`, `${componentDirectories[0]}`, "**", `[^_]*.${ext}` // all files with 'ext' extension, without files beggining with _
491
- )
492
- : path.join(`${mainDirectory}`, `{${componentDirectories.join(",")}}`, "**", `[^_]*.${ext}` // all files with 'ext' extension, without files beggining with _
493
- );
462
+ ? path.join(`${mainDirectory}`, `${componentDirectories[0]}`, "**", `[^_]*.${ext}`)
463
+ : path.join(`${mainDirectory}`, `{${componentDirectories.join(",")}}`, "**", `[^_]*.${ext}`);
494
464
  };
495
465
  export const discover = async (request) => {
496
466
  const rootDirectory = ".";
@@ -555,47 +525,7 @@ export const discover = async (request) => {
555
525
  }
556
526
  return listOfFiles;
557
527
  };
558
- export const discoverManyStyles = (request) => {
559
- const rootDirectory = "./";
560
- const directory = path.resolve(process.cwd(), rootDirectory);
561
- let pattern;
562
- let listOfFiles = [""];
563
- switch (request.scope) {
564
- case SCOPE.local:
565
- // ### MANY - LOCAL - fileName ###
566
- const onlyLocalComponentsDirectories = storyblokConfig.componentsDirectories.filter((p) => !p.includes("node_modules"));
567
- pattern = path.join(`${directory}`, `${normalizeDiscover({
568
- segments: onlyLocalComponentsDirectories,
569
- })}`, "**", `${normalizeDiscover({ segments: request.fileNames })}.scss`);
570
- listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
571
- follow: true,
572
- });
573
- break;
574
- case SCOPE.external:
575
- // ### MANY - EXTERNAL - fileName ###
576
- const onlyNodeModulesPackagesComponentsDirectories = storyblokConfig.componentsDirectories.filter((p) => p.includes("node_modules"));
577
- pattern = path.join(`${directory}`, `${normalizeDiscover({
578
- segments: onlyNodeModulesPackagesComponentsDirectories,
579
- })}`, "**", `${normalizeDiscover({ segments: request.fileNames })}.scss`);
580
- listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
581
- follow: true,
582
- });
583
- break;
584
- case SCOPE.all:
585
- // ### MANY - ALL - fileName ###
586
- pattern = path.join(`${directory}`, `${normalizeDiscover({
587
- segments: storyblokConfig.componentsDirectories,
588
- })}`, "**", `${normalizeDiscover({ segments: request.fileNames })}.scss`);
589
- listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
590
- follow: true,
591
- });
592
- break;
593
- default:
594
- break;
595
- }
596
- return listOfFiles;
597
- };
598
- export const discoverRoles = (request) => {
528
+ export const discoverRoles = async (request) => {
599
529
  const rootDirectory = ".";
600
530
  const directory = path.resolve(process.cwd(), rootDirectory);
601
531
  let pattern;
@@ -603,22 +533,35 @@ export const discoverRoles = (request) => {
603
533
  switch (request.scope) {
604
534
  case SCOPE.local:
605
535
  // ### ALL - LOCAL - fileName ###
536
+ let listOFSchemaTSFilesCompiled = [];
606
537
  const onlyLocalComponentsDirectories = storyblokConfig.componentsDirectories.filter((p) => !p.includes("node_modules"));
538
+ if (storyblokConfig.schemaType === SCHEMA.TS) {
539
+ pattern = path.join(`${directory}`, `${normalizeDiscover({
540
+ segments: onlyLocalComponentsDirectories,
541
+ })}`, "**", `[^_]*.sb.roles.${storyblokConfig.schemaType}`);
542
+ const listOfFilesToCompile = glob.sync(pattern.replace(/\\/g, "/"), {
543
+ follow: true,
544
+ });
545
+ await buildOnTheFly({ files: listOfFilesToCompile });
546
+ pattern = path.join(directory, ".next", "cache", "sb-mig", "**", `[^_]*.${storyblokConfig.rolesExt}`);
547
+ listOFSchemaTSFilesCompiled = glob.sync(pattern.replace(/\\/g, "/"), {
548
+ follow: true,
549
+ });
550
+ }
607
551
  pattern = path.join(`${directory}`, `${normalizeDiscover({
608
552
  segments: onlyLocalComponentsDirectories,
609
- })}`, "**", `[^_]*.${storyblokConfig.rolesExt}` // all files with 'ext' extension, without files beggining with _
610
- );
553
+ })}`, "**", `[^_]*.${storyblokConfig.rolesExt}`);
611
554
  listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
612
555
  follow: true,
613
556
  });
557
+ listOfFiles = [...listOfFiles, ...listOFSchemaTSFilesCompiled];
614
558
  break;
615
559
  case SCOPE.external:
616
560
  // ### ALL - EXTERNAL - fileName ###
617
561
  const onlyNodeModulesPackagesComponentsDirectories = storyblokConfig.componentsDirectories.filter((p) => p.includes("node_modules"));
618
562
  pattern = path.join(`${directory}`, `${normalizeDiscover({
619
563
  segments: onlyNodeModulesPackagesComponentsDirectories,
620
- })}`, "**", `[^_]*.${storyblokConfig.rolesExt}` // all files with 'ext' extension, without files beggining with _
621
- );
564
+ })}`, "**", `[^_]*.${storyblokConfig.rolesExt}`);
622
565
  listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
623
566
  follow: true,
624
567
  });
@@ -627,8 +570,7 @@ export const discoverRoles = (request) => {
627
570
  // ### ALL - LOCAL - fileName ###
628
571
  pattern = path.join(`${directory}`, `${normalizeDiscover({
629
572
  segments: storyblokConfig.componentsDirectories,
630
- })}`, "**", `[^_]*.${storyblokConfig.rolesExt}` // all files with 'ext' extension, without files beggining with _
631
- );
573
+ })}`, "**", `[^_]*.${storyblokConfig.rolesExt}`);
632
574
  listOfFiles = glob.sync(pattern.replace(/\\/g, "/"), {
633
575
  follow: true,
634
576
  });
@@ -660,7 +602,7 @@ export const discoverManyRoles = async (request) => {
660
602
  await buildOnTheFly({ files: listOfFilesToCompile });
661
603
  pattern = path.join(directory, ".next", "cache", "sb-mig", "**", `${normalizeDiscover({
662
604
  segments: request.fileNames,
663
- })}.roles.${storyblokConfig.schemaFileExt}`);
605
+ })}.${storyblokConfig.rolesExt}`);
664
606
  listOFSchemaTSFilesCompiled = glob.sync(pattern.replace(/\\/g, "/"), {
665
607
  follow: true,
666
608
  });
@@ -8,7 +8,7 @@ export const _extractComponentName = (filePath) => {
8
8
  const separator = "/"; // this guy is like in unix, becasue what glob is returning is always like that... that's why we are NOT using path.sep here...
9
9
  const sP = filePath.split(separator);
10
10
  const lastElement = sP[sP.length - 1];
11
- return lastElement.replaceAll(".ts", "").replaceAll(".sb", "");
11
+ return lastElement.replaceAll(".ts", "");
12
12
  };
13
13
  export const buildOnTheFly = async ({ files }) => {
14
14
  if (storyblokConfig.flushCache) {
@@ -28,11 +28,11 @@ export const buildOnTheFly = async ({ files }) => {
28
28
  };
29
29
  const outputOptionsList = [
30
30
  {
31
- file: path.join(`${cacheDir}`, `${_extractComponentName(filePath)}.sb.cjs`),
31
+ file: path.join(`${cacheDir}`, `${_extractComponentName(filePath)}.cjs`),
32
32
  format: "cjs",
33
33
  },
34
34
  {
35
- file: path.join(`${cacheDir}`, `${_extractComponentName(filePath)}.sb.js`),
35
+ file: path.join(`${cacheDir}`, `${_extractComponentName(filePath)}.js`),
36
36
  format: "es",
37
37
  },
38
38
  ];
@@ -30,8 +30,7 @@ export const getFileContentWithRequire = (data) => {
30
30
  return fileContent;
31
31
  };
32
32
  export const getFilesContentWithRequire = (data) => {
33
- const require = createRequire(import.meta.url);
34
- return data.files.map((file) => require(file));
33
+ return data.files.map((file) => getFileContentWithRequire({ file }));
35
34
  };
36
35
  export const isObjectEmpty = (obj) => {
37
36
  if (obj) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sb-mig",
3
- "version": "5.1.4-beta.1",
3
+ "version": "5.2.0",
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",
@@ -71,6 +71,7 @@
71
71
  "devDependencies": {
72
72
  "@commitlint/cli": "^17.7.1",
73
73
  "@commitlint/config-conventional": "^17.7.0",
74
+ "@rollup/plugin-node-resolve": "^15.2.0",
74
75
  "@ryansonshine/commitizen": "^4.2.8",
75
76
  "@ryansonshine/cz-conventional-changelog": "^3.3.4",
76
77
  "@semantic-release/changelog": "^6.0.3",
@@ -84,19 +85,19 @@
84
85
  "@types/node": "18.16.18",
85
86
  "@types/sinon": "^10.0.16",
86
87
  "@types/uuid": "^9.0.2",
87
- "@typescript-eslint/eslint-plugin": "^6.3.0",
88
- "@typescript-eslint/parser": "^6.3.0",
88
+ "@typescript-eslint/eslint-plugin": "^6.4.1",
89
+ "@typescript-eslint/parser": "^6.4.1",
89
90
  "chai": "^4.3.7",
90
91
  "chokidar-cli": "^3.0.0",
91
92
  "eslint": "^8.47.0",
92
93
  "eslint-config-prettier": "^9.0.0",
93
- "eslint-plugin-import": "^2.28.0",
94
+ "eslint-plugin-import": "^2.28.1",
94
95
  "esm": "^3.2.25",
95
96
  "husky": "^8.0.3",
96
97
  "lint-staged": "^13.2.3",
97
98
  "mocha": "^10.2.0",
98
- "prettier": "^3.0.1",
99
- "semantic-release": "^21.0.7",
99
+ "prettier": "^3.0.2",
100
+ "semantic-release": "^21.0.9",
100
101
  "semantic-release-slack-bot": "^4.0.1",
101
102
  "sinon": "^15.2.0",
102
103
  "tsc-files": "^1.1.4"