@plasmicapp/cli 0.1.340 → 0.1.342

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.
@@ -434,6 +434,10 @@
434
434
  "description": "Project ID",
435
435
  "type": "string"
436
436
  },
437
+ "projectModuleFilePath": {
438
+ "description": "File location for the project-wide plasmic.ts file. Relative to srcDir",
439
+ "type": "string"
440
+ },
437
441
  "projectName": {
438
442
  "description": "Project name synced down from Studio",
439
443
  "type": "string"
@@ -442,6 +446,10 @@
442
446
  "description": "File location for the project-wide splits provider. Relative to srcDir",
443
447
  "type": "string"
444
448
  },
449
+ "styleTokensProviderFilePath": {
450
+ "description": "File location for the project-wide style tokens provider. Relative to srcDir",
451
+ "type": "string"
452
+ },
445
453
  "version": {
446
454
  "description": "A version range for syncing this project. Can be:\n* \"latest\" - always syncs down whatever has been saved in the project.\n* \">0\" - always syncs down the latest published version of the project.\n* any other semver string you'd like",
447
455
  "type": "string"
@@ -455,8 +463,10 @@
455
463
  "images",
456
464
  "indirect",
457
465
  "projectId",
466
+ "projectModuleFilePath",
458
467
  "projectName",
459
468
  "splitsProviderFilePath",
469
+ "styleTokensProviderFilePath",
460
470
  "version"
461
471
  ],
462
472
  "type": "object"
@@ -144,6 +144,10 @@ export interface ProjectConfig {
144
144
  globalContextsFilePath: string;
145
145
  /** File location for the project-wide splits provider. Relative to srcDir */
146
146
  splitsProviderFilePath: string;
147
+ /** File location for the project-wide style tokens provider. Relative to srcDir */
148
+ styleTokensProviderFilePath: string;
149
+ /** File location for the project-wide plasmic.ts file. Relative to srcDir */
150
+ projectModuleFilePath: string;
147
151
  jsBundleThemes?: JsBundleThemeConfig[];
148
152
  codeComponents?: CodeComponentConfig[];
149
153
  customFunctions?: CustomFunctionConfig[];
@@ -260,7 +264,7 @@ export interface GlobalVariantGroupConfig {
260
264
  contextFilePath: string;
261
265
  }
262
266
  export interface FileLock {
263
- type: "renderModule" | "cssRules" | "icon" | "image" | "projectCss" | "globalVariant" | "globalContexts" | "splitsProvider";
267
+ type: "renderModule" | "cssRules" | "icon" | "image" | "projectCss" | "globalVariant" | "globalContexts" | "splitsProvider" | "styleTokensProvider" | "projectModule";
264
268
  checksum: string;
265
269
  assetId: string;
266
270
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plasmicapp/cli",
3
- "version": "0.1.340",
3
+ "version": "0.1.342",
4
4
  "description": "plasmic cli for syncing local code with Plasmic designs",
5
5
  "engines": {
6
6
  "node": ">=12"
@@ -83,5 +83,5 @@
83
83
  "wrap-ansi": "^7.0.0",
84
84
  "yargs": "^15.4.1"
85
85
  },
86
- "gitHead": "bad3fc74b8f3d964ec7e08f06bd8b1e5bfe18494"
86
+ "gitHead": "354b30e84489d6a01d96855a04c844aa4fa80f3a"
87
87
  }
@@ -193,7 +193,6 @@ function genProjectMetaBundle(projectId: string): ProjectMetaBundle {
193
193
  projectName: projectId,
194
194
  cssFileName: genFilename(projectId, "css"),
195
195
  cssRules: `theClass {color: green;}`,
196
- jsBundleThemes: [],
197
196
  };
198
197
  }
199
198
 
@@ -356,6 +355,8 @@ class PlasmicApi {
356
355
  projectCssChecksum: "",
357
356
  globalContextsChecksum: "",
358
357
  splitsProviderChecksum: "",
358
+ styleTokensProviderChecksum: "",
359
+ projectModuleChecksum: "",
359
360
  } as ChecksumBundle,
360
361
  usedNpmPackages: [],
361
362
  externalCssImports: [],
@@ -10,17 +10,19 @@ import {
10
10
  } from "../utils/code-utils";
11
11
  import {
12
12
  CodeConfig,
13
- findConfigFile,
14
13
  I18NConfig,
15
14
  ImagesConfig,
16
15
  PlasmicConfig,
17
16
  StyleConfig,
17
+ findConfigFile,
18
18
  } from "../utils/config-utils";
19
19
  import { getContext, getCurrentOrDefaultAuth } from "../utils/get-context";
20
20
  import { tuple } from "../utils/lang-utils";
21
21
  import { DEFAULT_GLOBAL_CONTEXTS_NAME } from "./sync-global-contexts";
22
22
  import { ensureImageAssetContents } from "./sync-images";
23
+ import { DEFAULT_PROJECT_MODULE_NAME } from "./sync-project-module";
23
24
  import { DEFAULT_SPLITS_PROVIDER_NAME } from "./sync-splits-provider";
25
+ import { DEFAULT_STYLE_TOKENS_PROVIDER_NAME } from "./sync-style-tokens-provider";
24
26
 
25
27
  export interface ExportArgs extends CommonArgs {
26
28
  projects: readonly string[];
@@ -138,6 +140,20 @@ export async function exportProjectsCli(opts: ExportArgs): Promise<void> {
138
140
  );
139
141
  }
140
142
 
143
+ if (bundle.projectConfig.styleTokensProviderBundle) {
144
+ writeFile(
145
+ `${DEFAULT_STYLE_TOKENS_PROVIDER_NAME}.${extx}`,
146
+ bundle.projectConfig.styleTokensProviderBundle.module
147
+ );
148
+ }
149
+
150
+ if (bundle.projectConfig.projectModuleBundle) {
151
+ writeFile(
152
+ `${DEFAULT_PROJECT_MODULE_NAME}.${extx}`,
153
+ bundle.projectConfig.projectModuleBundle.module
154
+ );
155
+ }
156
+
141
157
  if (bundle.projectConfig.reactWebExportedFiles) {
142
158
  for (const file of bundle.projectConfig.reactWebExportedFiles) {
143
159
  writeFile(file.fileName, file.content);
@@ -196,6 +212,13 @@ export async function exportProjectsCli(opts: ExportArgs): Promise<void> {
196
212
  splitsProviderFilePath: bundle.projectConfig.splitsProviderBundle
197
213
  ? `${projectName}/${DEFAULT_SPLITS_PROVIDER_NAME}.${extx}`
198
214
  : "",
215
+ styleTokensProviderFilePath: bundle.projectConfig
216
+ .styleTokensProviderBundle
217
+ ? `${projectName}/${DEFAULT_STYLE_TOKENS_PROVIDER_NAME}.${extx}`
218
+ : "",
219
+ projectModuleFilePath: bundle.projectConfig.projectModuleBundle
220
+ ? `${projectName}/${DEFAULT_PROJECT_MODULE_NAME}.${extx}`
221
+ : "",
199
222
  components: bundle.components.map((comp) => ({
200
223
  id: comp.id,
201
224
  name: comp.componentName,
@@ -351,6 +374,22 @@ async function exportProjects(api: PlasmicApi, opts: ExportOpts) {
351
374
  );
352
375
  proj.projectConfig.splitsProviderBundle.module = res[1];
353
376
  }
377
+ if (proj.projectConfig.styleTokensProviderBundle) {
378
+ const res = maybeConvertTsxToJsx(
379
+ `${DEFAULT_STYLE_TOKENS_PROVIDER_NAME}.tsx`,
380
+ proj.projectConfig.styleTokensProviderBundle.module,
381
+ "."
382
+ );
383
+ proj.projectConfig.styleTokensProviderBundle.module = res[1];
384
+ }
385
+ if (proj.projectConfig.projectModuleBundle) {
386
+ const res = maybeConvertTsxToJsx(
387
+ `${DEFAULT_PROJECT_MODULE_NAME}.tsx`,
388
+ proj.projectConfig.projectModuleBundle.module,
389
+ "."
390
+ );
391
+ proj.projectConfig.projectModuleBundle.module = res[1];
392
+ }
354
393
  }
355
394
  }
356
395
 
@@ -0,0 +1,88 @@
1
+ import L from "lodash";
2
+ import { ChecksumBundle, ProjectMetaBundle } from "../api";
3
+ import { logger } from "../deps";
4
+ import { formatScript, tsxToJsx } from "../utils/code-utils";
5
+ import {
6
+ PlasmicContext,
7
+ ProjectConfig,
8
+ ProjectLock,
9
+ } from "../utils/config-utils";
10
+ import {
11
+ defaultResourcePath,
12
+ deleteFile,
13
+ fileExists,
14
+ writeFileContent,
15
+ } from "../utils/file-utils";
16
+
17
+ const MODULE_NAME = "plasmic";
18
+ export const DEFAULT_PROJECT_MODULE_NAME = MODULE_NAME;
19
+
20
+ export async function syncProjectModule(
21
+ context: PlasmicContext,
22
+ projectMeta: ProjectMetaBundle,
23
+ projectConfig: ProjectConfig,
24
+ projectLock: ProjectLock,
25
+ checksums: ChecksumBundle,
26
+ baseDir: string
27
+ ) {
28
+ const resourcePath = getProjectModuleResourcePath(context, projectConfig);
29
+ if (checksums.projectModuleChecksum && projectMeta.projectModuleBundle) {
30
+ if (context.cliArgs.quiet !== true) {
31
+ logger.info(
32
+ `Syncing module: ${MODULE_NAME}@${projectLock.version}\t['${projectConfig.projectName}' ${projectConfig.projectId} ${projectConfig.version}]`
33
+ );
34
+ }
35
+ if (context.config.code.lang === "js") {
36
+ projectMeta.projectModuleBundle.module = formatScript(
37
+ tsxToJsx(projectMeta.projectModuleBundle.module),
38
+ baseDir
39
+ );
40
+ }
41
+ writeFileContent(
42
+ context,
43
+ resourcePath,
44
+ projectMeta.projectModuleBundle.module,
45
+ { force: true }
46
+ );
47
+ projectConfig.projectModuleFilePath = resourcePath;
48
+ const fl = projectLock.fileLocks.find(
49
+ (fl) =>
50
+ fl.assetId === projectConfig.projectId && fl.type === "projectModule"
51
+ );
52
+ if (fl) {
53
+ fl.checksum = checksums.projectModuleChecksum || "";
54
+ } else {
55
+ projectLock.fileLocks.push({
56
+ assetId: projectConfig.projectId,
57
+ checksum: checksums.projectModuleChecksum || "",
58
+ type: "projectModule",
59
+ });
60
+ }
61
+ } else if (
62
+ !checksums.projectModuleChecksum &&
63
+ !projectMeta.projectModuleBundle
64
+ ) {
65
+ if (fileExists(context, resourcePath)) {
66
+ deleteFile(context, resourcePath);
67
+ }
68
+ projectConfig.projectModuleFilePath = "";
69
+ L.remove(
70
+ projectLock.fileLocks,
71
+ (fl) =>
72
+ fl.assetId === projectConfig.projectId && fl.type === "projectModule"
73
+ );
74
+ }
75
+ }
76
+
77
+ export function getProjectModuleResourcePath(
78
+ context: PlasmicContext,
79
+ projectConfig: ProjectConfig
80
+ ) {
81
+ return projectConfig.projectModuleFilePath !== ""
82
+ ? projectConfig.projectModuleFilePath
83
+ : defaultResourcePath(
84
+ context,
85
+ projectConfig.projectName,
86
+ `${MODULE_NAME}.${context.config.code.lang === "ts" ? "tsx" : "jsx"}`
87
+ );
88
+ }
@@ -0,0 +1,96 @@
1
+ import L from "lodash";
2
+ import { ChecksumBundle, ProjectMetaBundle } from "../api";
3
+ import { logger } from "../deps";
4
+ import { formatScript, tsxToJsx } from "../utils/code-utils";
5
+ import {
6
+ PlasmicContext,
7
+ ProjectConfig,
8
+ ProjectLock,
9
+ } from "../utils/config-utils";
10
+ import {
11
+ defaultResourcePath,
12
+ deleteFile,
13
+ fileExists,
14
+ writeFileContent,
15
+ } from "../utils/file-utils";
16
+
17
+ const MODULE_NAME = "PlasmicStyleTokensProvider";
18
+ export const DEFAULT_STYLE_TOKENS_PROVIDER_NAME = MODULE_NAME;
19
+
20
+ export async function syncStyleTokensProvider(
21
+ context: PlasmicContext,
22
+ projectMeta: ProjectMetaBundle,
23
+ projectConfig: ProjectConfig,
24
+ projectLock: ProjectLock,
25
+ checksums: ChecksumBundle,
26
+ baseDir: string
27
+ ) {
28
+ const resourcePath = getStyleTokensProviderResourcePath(
29
+ context,
30
+ projectConfig
31
+ );
32
+ if (
33
+ checksums.styleTokensProviderChecksum &&
34
+ projectMeta.styleTokensProviderBundle
35
+ ) {
36
+ if (context.cliArgs.quiet !== true) {
37
+ logger.info(
38
+ `Syncing module: ${MODULE_NAME}@${projectLock.version}\t['${projectConfig.projectName}' ${projectConfig.projectId} ${projectConfig.version}]`
39
+ );
40
+ }
41
+ if (context.config.code.lang === "js") {
42
+ projectMeta.styleTokensProviderBundle.module = formatScript(
43
+ tsxToJsx(projectMeta.styleTokensProviderBundle.module),
44
+ baseDir
45
+ );
46
+ }
47
+ writeFileContent(
48
+ context,
49
+ resourcePath,
50
+ projectMeta.styleTokensProviderBundle.module,
51
+ { force: true }
52
+ );
53
+ projectConfig.styleTokensProviderFilePath = resourcePath;
54
+ const fl = projectLock.fileLocks.find(
55
+ (fl) =>
56
+ fl.assetId === projectConfig.projectId &&
57
+ fl.type === "styleTokensProvider"
58
+ );
59
+ if (fl) {
60
+ fl.checksum = checksums.styleTokensProviderChecksum || "";
61
+ } else {
62
+ projectLock.fileLocks.push({
63
+ assetId: projectConfig.projectId,
64
+ checksum: checksums.styleTokensProviderChecksum || "",
65
+ type: "styleTokensProvider",
66
+ });
67
+ }
68
+ } else if (
69
+ !checksums.styleTokensProviderChecksum &&
70
+ !projectMeta.styleTokensProviderBundle
71
+ ) {
72
+ if (fileExists(context, resourcePath)) {
73
+ deleteFile(context, resourcePath);
74
+ }
75
+ projectConfig.styleTokensProviderFilePath = "";
76
+ L.remove(
77
+ projectLock.fileLocks,
78
+ (fl) =>
79
+ fl.assetId === projectConfig.projectId &&
80
+ fl.type === "styleTokensProvider"
81
+ );
82
+ }
83
+ }
84
+
85
+ export function getStyleTokensProviderResourcePath(
86
+ context: PlasmicContext,
87
+ projectConfig: ProjectConfig
88
+ ) {
89
+ return projectConfig.styleTokensProviderFilePath !== ""
90
+ ? projectConfig.styleTokensProviderFilePath
91
+ : defaultResourcePath(
92
+ context,
93
+ projectConfig.projectName,
94
+ `${MODULE_NAME}.${context.config.code.lang === "ts" ? "tsx" : "jsx"}`
95
+ );
96
+ }
@@ -56,7 +56,9 @@ import { syncGlobalContexts } from "./sync-global-contexts";
56
56
  import { syncGlobalVariants } from "./sync-global-variants";
57
57
  import { syncProjectIconAssets } from "./sync-icons";
58
58
  import { syncProjectImageAssets } from "./sync-images";
59
+ import { syncProjectModule } from "./sync-project-module";
59
60
  import { syncSplitsProvider } from "./sync-splits-provider";
61
+ import { syncStyleTokensProvider } from "./sync-style-tokens-provider";
60
62
  import { upsertStyleTokens } from "./sync-styles";
61
63
 
62
64
  export interface SyncArgs extends CommonArgs {
@@ -605,13 +607,6 @@ async function syncProject(
605
607
  opts.baseDir
606
608
  );
607
609
  });
608
- (projectBundle.projectConfig.jsBundleThemes || []).forEach((theme) => {
609
- [theme.themeFileName, theme.themeModule] = maybeConvertTsxToJsx(
610
- theme.themeFileName,
611
- theme.themeModule,
612
- opts.baseDir
613
- );
614
- });
615
610
  }
616
611
  await syncGlobalVariants(
617
612
  context,
@@ -766,37 +761,7 @@ async function syncProjectConfig(
766
761
  checksum: checksums.projectCssChecksum,
767
762
  });
768
763
 
769
- /*
770
- for (const theme of projectBundle.jsBundleThemes) {
771
- if (!projectConfig.jsBundleThemes) {
772
- projectConfig.jsBundleThemes = [];
773
- }
774
- let themeConfig = projectConfig.jsBundleThemes.find(
775
- (c) => c.bundleName === theme.bundleName
776
- );
777
- if (!themeConfig) {
778
- const themeFilePath = defaultResourcePath(
779
- context,
780
- projectConfig,
781
- theme.themeFileName
782
- );
783
- themeConfig = { themeFilePath, bundleName: theme.bundleName };
784
- projectConfig.jsBundleThemes.push(themeConfig);
785
- }
786
- const formatted = formatAsLocal(
787
- theme.themeModule,
788
- themeConfig.themeFilePath
789
- );
790
- await writeFileContent(context, themeConfig.themeFilePath, formatted, {
791
- force: true,
792
- });
793
- }
794
- */
795
-
796
- if (
797
- projectConfig.jsBundleThemes &&
798
- projectConfig.jsBundleThemes.length === 0
799
- ) {
764
+ if (projectConfig.jsBundleThemes?.length === 0) {
800
765
  delete projectConfig.jsBundleThemes;
801
766
  }
802
767
 
@@ -818,6 +783,24 @@ async function syncProjectConfig(
818
783
  baseDir
819
784
  );
820
785
 
786
+ await syncProjectModule(
787
+ context,
788
+ projectBundle,
789
+ projectConfig,
790
+ projectLock,
791
+ checksums,
792
+ baseDir
793
+ );
794
+
795
+ await syncStyleTokensProvider(
796
+ context,
797
+ projectBundle,
798
+ projectConfig,
799
+ projectLock,
800
+ checksums,
801
+ baseDir
802
+ );
803
+
821
804
  // Write out components
822
805
  await syncProjectComponents(
823
806
  context,
package/src/api.ts CHANGED
@@ -65,6 +65,16 @@ export interface SplitsProviderBundle {
65
65
  module: string;
66
66
  }
67
67
 
68
+ export interface StyleTokensProviderBundle {
69
+ id: string;
70
+ module: string;
71
+ }
72
+
73
+ export interface ProjectModuleBundle {
74
+ id: string;
75
+ module: string;
76
+ }
77
+
68
78
  export interface JsBundleTheme {
69
79
  themeFileName: string;
70
80
  themeModule: string;
@@ -76,9 +86,10 @@ export interface ProjectMetaBundle {
76
86
  projectName: string;
77
87
  cssFileName: string;
78
88
  cssRules: string;
79
- jsBundleThemes?: JsBundleTheme[];
80
89
  globalContextBundle?: GlobalContextBundle;
81
90
  splitsProviderBundle?: SplitsProviderBundle;
91
+ styleTokensProviderBundle?: StyleTokensProviderBundle;
92
+ projectModuleBundle?: ProjectModuleBundle;
82
93
  // A list of files that are exported from the project and *can* be used by the user
83
94
  reactWebExportedFiles?: Array<{
84
95
  fileName: string;
@@ -190,6 +201,10 @@ export interface ChecksumBundle {
190
201
  globalContextsChecksum: string;
191
202
  // Checksum of project splits provider
192
203
  splitsProviderChecksum: string;
204
+ // Checksum of project style tokens provider
205
+ styleTokensProviderChecksum: string;
206
+ // Checksum of project plasmic.ts
207
+ projectModuleChecksum: string;
193
208
  }
194
209
 
195
210
  export interface CodeComponentMeta {
@@ -40,7 +40,6 @@ import { migrateInit } from "./0.1.27-migrateInit";
40
40
  import { tsToTsx } from "./0.1.28-tsToTsx";
41
41
  import { ensureProjectIcons } from "./0.1.31-ensureProjectIcons";
42
42
  import { ensureVersion } from "./0.1.42-ensureVersion";
43
- import { ensureJsBundleThemes } from "./0.1.57-ensureJsBundleThemes";
44
43
  import { ensureImageFiles } from "./0.1.64-imageFiles";
45
44
  import { ensureComponentType } from "./0.1.95-componentType";
46
45
  export interface MigrateContext {
@@ -61,7 +60,6 @@ export const MIGRATIONS: Record<string, MigrateConfigFunc> = {
61
60
  "0.1.28": tsToTsx,
62
61
  "0.1.31": ensureProjectIcons,
63
62
  "0.1.42": ensureVersion,
64
- "0.1.57": ensureJsBundleThemes,
65
63
  "0.1.64": ensureImageFiles,
66
64
  "0.1.95": ensureComponentType,
67
65
  "0.1.146": ensureReactRuntime,
@@ -1,9 +1,9 @@
1
1
  /// <reference types="@types/jest" />
2
2
  import L from "lodash";
3
+ import { MockProject } from "../__mocks__/api";
3
4
  import { SyncArgs } from "../actions/sync";
4
5
  import { PlasmicConfig, ProjectConfig } from "../utils/config-utils";
5
6
  import { TempRepo } from "../utils/test-utils";
6
- import { MockProject } from "../__mocks__/api";
7
7
 
8
8
  jest.mock("../api");
9
9
 
@@ -148,10 +148,11 @@ export const project1Config: ProjectConfig = {
148
148
  ],
149
149
  icons: [],
150
150
  images: [],
151
- jsBundleThemes: [],
152
151
  indirect: false,
153
152
  globalContextsFilePath: "",
154
153
  splitsProviderFilePath: "",
154
+ styleTokensProviderFilePath: "",
155
+ projectModuleFilePath: "",
155
156
  };
156
157
 
157
158
  export function expectProject1PlasmicJson(optional?: {
@@ -33,6 +33,12 @@ function getFilesByFileLockAssetId(
33
33
  splitsProvider: {
34
34
  [projectConfig.projectId]: projectConfig.splitsProviderFilePath,
35
35
  },
36
+ styleTokensProvider: {
37
+ [projectConfig.projectId]: projectConfig.styleTokensProviderFilePath,
38
+ },
39
+ projectModule: {
40
+ [projectConfig.projectId]: projectConfig.projectModuleFilePath,
41
+ },
36
42
  } as const;
37
43
  }
38
44
 
@@ -60,6 +66,8 @@ export function getChecksums(
60
66
  projectCssChecksum: "",
61
67
  globalContextsChecksum: "",
62
68
  splitsProviderChecksum: "",
69
+ styleTokensProviderChecksum: "",
70
+ projectModuleChecksum: "",
63
71
  };
64
72
  }
65
73
 
@@ -161,6 +169,33 @@ export function getChecksums(
161
169
  ? globalContextsChecksums[0].checksum
162
170
  : "";
163
171
 
172
+ const styleTokensProviderChecksums = fileLocks
173
+ .filter(
174
+ (fileLock) =>
175
+ fileLock.type === "styleTokensProvider" &&
176
+ fileLock.assetId === projectId
177
+ )
178
+ .filter((fileLock) =>
179
+ checkFile(fileLocations.styleTokensProvider[fileLock.assetId])
180
+ );
181
+ assert(styleTokensProviderChecksums.length < 2);
182
+ const styleTokensProviderChecksum =
183
+ styleTokensProviderChecksums.length > 0
184
+ ? styleTokensProviderChecksums[0].checksum
185
+ : "";
186
+
187
+ const projectModuleChecksums = fileLocks
188
+ .filter(
189
+ (fileLock) =>
190
+ fileLock.type === "projectModule" && fileLock.assetId === projectId
191
+ )
192
+ .filter((fileLock) =>
193
+ checkFile(fileLocations.projectModule[fileLock.assetId])
194
+ );
195
+ assert(projectModuleChecksums.length < 2);
196
+ const projectModuleChecksum =
197
+ projectModuleChecksums.length > 0 ? projectModuleChecksums[0].checksum : "";
198
+
164
199
  const splitsProviderChecksums = fileLocks
165
200
  .filter(
166
201
  (fileLock) =>
@@ -184,5 +219,7 @@ export function getChecksums(
184
219
  projectCssChecksum,
185
220
  globalContextsChecksum,
186
221
  splitsProviderChecksum,
222
+ styleTokensProviderChecksum,
223
+ projectModuleChecksum,
187
224
  };
188
225
  }