@tinacms/cli 0.0.0-bf22bf8-20241004045704 → 0.0.0-c72bb45-20241118014046

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/dist/index.js CHANGED
@@ -31,12 +31,12 @@ module.exports = __toCommonJS(src_exports);
31
31
  var import_clipanion8 = require("clipanion");
32
32
 
33
33
  // package.json
34
- var version = "1.6.8";
34
+ var version = "1.6.11";
35
35
 
36
36
  // src/next/commands/dev-command/index.ts
37
37
  var import_clipanion2 = require("clipanion");
38
38
  var import_fs_extra6 = __toESM(require("fs-extra"));
39
- var import_path6 = __toESM(require("path"));
39
+ var import_path5 = __toESM(require("path"));
40
40
  var import_chokidar = __toESM(require("chokidar"));
41
41
  var import_graphql10 = require("@tinacms/graphql");
42
42
 
@@ -612,18 +612,19 @@ var CONFIRMATION_TEXT = import_chalk3.default.dim("enter to confirm");
612
612
  var import_vite3 = require("vite");
613
613
 
614
614
  // src/next/vite/index.ts
615
- var import_path2 = __toESM(require("path"));
615
+ var import_node_path2 = __toESM(require("path"));
616
+ var import_plugin_react = __toESM(require("@vitejs/plugin-react"));
616
617
  var import_fs_extra2 = __toESM(require("fs-extra"));
618
+ var import_normalize_path2 = __toESM(require("normalize-path"));
617
619
  var import_vite = require("vite");
618
- var import_plugin_react = __toESM(require("@vitejs/plugin-react"));
619
620
 
620
621
  // src/next/vite/tailwind.ts
621
- var import_tailwindcss = __toESM(require("tailwindcss"));
622
- var import_defaultTheme = __toESM(require("tailwindcss/defaultTheme.js"));
623
- var import_typography = __toESM(require("@tailwindcss/typography"));
624
- var import_aspect_ratio = __toESM(require("@tailwindcss/aspect-ratio"));
625
622
  var import_node_path = __toESM(require("path"));
623
+ var import_aspect_ratio = __toESM(require("@tailwindcss/aspect-ratio"));
626
624
  var import_container_queries = __toESM(require("@tailwindcss/container-queries"));
625
+ var import_typography = __toESM(require("@tailwindcss/typography"));
626
+ var import_tailwindcss = __toESM(require("tailwindcss"));
627
+ var import_defaultTheme = __toESM(require("tailwindcss/defaultTheme.js"));
627
628
  var tinaTailwind = (spaPath, prebuildFilePath) => {
628
629
  return {
629
630
  name: "vite-plugin-tina",
@@ -886,13 +887,12 @@ var tinaTailwind = (spaPath, prebuildFilePath) => {
886
887
  };
887
888
 
888
889
  // src/next/vite/index.ts
889
- var import_normalize_path2 = __toESM(require("normalize-path"));
890
890
  async function listFilesRecursively({
891
891
  directoryPath,
892
892
  config: config2,
893
893
  roothPath
894
894
  }) {
895
- const fullDirectoryPath = import_path2.default.join(
895
+ const fullDirectoryPath = import_node_path2.default.join(
896
896
  roothPath,
897
897
  config2.publicFolder,
898
898
  directoryPath
@@ -904,23 +904,23 @@ async function listFilesRecursively({
904
904
  const items = await import_fs_extra2.default.readdir(fullDirectoryPath);
905
905
  const staticMediaItems = [];
906
906
  for (const item of items) {
907
- const itemPath = import_path2.default.join(fullDirectoryPath, item);
907
+ const itemPath = import_node_path2.default.join(fullDirectoryPath, item);
908
908
  const stats = await import_fs_extra2.default.promises.lstat(itemPath);
909
909
  const staticMediaItem = {
910
910
  id: item,
911
911
  filename: item,
912
912
  type: stats.isDirectory() ? "dir" : "file",
913
913
  directory: `${directoryPath.replace(config2.mediaRoot, "")}`,
914
- src: `/${import_path2.default.join(directoryPath, item)}`,
914
+ src: `/${import_node_path2.default.join(directoryPath, item)}`,
915
915
  thumbnails: {
916
- "75x75": `/${import_path2.default.join(directoryPath, item)}`,
917
- "400x400": `/${import_path2.default.join(directoryPath, item)}`,
918
- "1000x1000": `/${import_path2.default.join(directoryPath, item)}`
916
+ "75x75": `/${import_node_path2.default.join(directoryPath, item)}`,
917
+ "400x400": `/${import_node_path2.default.join(directoryPath, item)}`,
918
+ "1000x1000": `/${import_node_path2.default.join(directoryPath, item)}`
919
919
  }
920
920
  };
921
921
  if (stats.isDirectory()) {
922
922
  staticMediaItem.children = await listFilesRecursively({
923
- directoryPath: import_path2.default.join(directoryPath, item),
923
+ directoryPath: import_node_path2.default.join(directoryPath, item),
924
924
  config: config2,
925
925
  roothPath
926
926
  });
@@ -963,7 +963,7 @@ var createConfig = async ({
963
963
  }
964
964
  }
965
965
  });
966
- const staticMediaPath = import_path2.default.join(
966
+ const staticMediaPath = import_node_path2.default.join(
967
967
  configManager.generatedFolderPath,
968
968
  "static-media.json"
969
969
  );
@@ -981,13 +981,13 @@ var createConfig = async ({
981
981
  TINA_IMPORT: configManager.prebuildFilePath,
982
982
  SCHEMA_IMPORT: configManager.generatedGraphQLJSONPath,
983
983
  STATIC_MEDIA_IMPORT: staticMediaPath,
984
- crypto: import_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
985
- fs: import_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
986
- os: import_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
987
- path: import_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts")
984
+ crypto: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
985
+ fs: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
986
+ os: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
987
+ path: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts")
988
988
  };
989
989
  if (configManager.shouldSkipSDK()) {
990
- alias["CLIENT_IMPORT"] = import_path2.default.join(
990
+ alias["CLIENT_IMPORT"] = import_node_path2.default.join(
991
991
  configManager.spaRootPath,
992
992
  "src",
993
993
  "dummy-client.ts"
@@ -1059,17 +1059,17 @@ var import_pluginutils = require("@rollup/pluginutils");
1059
1059
  var import_fs = __toESM(require("fs"));
1060
1060
  var import_vite2 = require("vite");
1061
1061
  var import_esbuild = require("esbuild");
1062
- var import_path4 = __toESM(require("path"));
1062
+ var import_path3 = __toESM(require("path"));
1063
1063
  var import_body_parser = __toESM(require("body-parser"));
1064
1064
  var import_cors = __toESM(require("cors"));
1065
1065
  var import_graphql = require("@tinacms/graphql");
1066
1066
 
1067
1067
  // src/next/commands/dev-command/server/media.ts
1068
1068
  var import_fs_extra3 = __toESM(require("fs-extra"));
1069
- var import_path3 = __toESM(require("path"));
1069
+ var import_path2 = __toESM(require("path"));
1070
1070
  var import_busboy = __toESM(require("busboy"));
1071
1071
  var createMediaRouter = (config2) => {
1072
- const mediaFolder = import_path3.default.join(
1072
+ const mediaFolder = import_path2.default.join(
1073
1073
  config2.rootPath,
1074
1074
  config2.publicFolder,
1075
1075
  config2.mediaRoot
@@ -1097,8 +1097,8 @@ var createMediaRouter = (config2) => {
1097
1097
  bb.on("file", async (_name, file, _info) => {
1098
1098
  var _a;
1099
1099
  const fullPath = decodeURI((_a = req.url) == null ? void 0 : _a.slice("/media/upload/".length));
1100
- const saveTo = import_path3.default.join(mediaFolder, ...fullPath.split("/"));
1101
- await import_fs_extra3.default.ensureDir(import_path3.default.dirname(saveTo));
1100
+ const saveTo = import_path2.default.join(mediaFolder, ...fullPath.split("/"));
1101
+ await import_fs_extra3.default.ensureDir(import_path2.default.dirname(saveTo));
1102
1102
  file.pipe(import_fs_extra3.default.createWriteStream(saveTo));
1103
1103
  });
1104
1104
  bb.on("error", (error) => {
@@ -1133,7 +1133,7 @@ var MediaModel = class {
1133
1133
  }
1134
1134
  async listMedia(args) {
1135
1135
  try {
1136
- const folderPath = (0, import_path3.join)(
1136
+ const folderPath = (0, import_path2.join)(
1137
1137
  this.rootPath,
1138
1138
  this.publicFolder,
1139
1139
  this.mediaRoot,
@@ -1148,7 +1148,7 @@ var MediaModel = class {
1148
1148
  }
1149
1149
  const filesStr = await import_fs_extra3.default.readdir(folderPath);
1150
1150
  const filesProm = filesStr.map(async (file) => {
1151
- const filePath = (0, import_path3.join)(folderPath, file);
1151
+ const filePath = (0, import_path2.join)(folderPath, file);
1152
1152
  const stat = await import_fs_extra3.default.stat(filePath);
1153
1153
  let src = `/${file}`;
1154
1154
  const isFile = stat.isFile();
@@ -1205,7 +1205,7 @@ var MediaModel = class {
1205
1205
  }
1206
1206
  async deleteMedia(args) {
1207
1207
  try {
1208
- const file = (0, import_path3.join)(
1208
+ const file = (0, import_path2.join)(
1209
1209
  this.rootPath,
1210
1210
  this.publicFolder,
1211
1211
  this.mediaRoot,
@@ -1270,7 +1270,7 @@ var transformTsxPlugin = ({
1270
1270
  const plug = {
1271
1271
  name: "transform-tsx",
1272
1272
  async transform(code, id) {
1273
- const extName = import_path4.default.extname(id);
1273
+ const extName = import_path3.default.extname(id);
1274
1274
  if (extName.startsWith(".tsx") || extName.startsWith(".ts")) {
1275
1275
  const result = await (0, import_esbuild.transform)(code, { loader: "tsx" });
1276
1276
  return {
@@ -1422,7 +1422,7 @@ var createDevServer = async (configManager, database, searchIndex, apiURL, noWat
1422
1422
 
1423
1423
  // src/next/codegen/index.ts
1424
1424
  var import_fs_extra4 = __toESM(require("fs-extra"));
1425
- var import_path5 = __toESM(require("path"));
1425
+ var import_path4 = __toESM(require("path"));
1426
1426
  var import_graphql6 = require("graphql");
1427
1427
 
1428
1428
  // src/next/codegen/codegen/index.ts
@@ -1668,11 +1668,11 @@ var Codegen = class {
1668
1668
  this.noClientBuildCache = noClientBuildCache;
1669
1669
  }
1670
1670
  async writeConfigFile(fileName, data) {
1671
- const filePath = import_path5.default.join(this.configManager.generatedFolderPath, fileName);
1671
+ const filePath = import_path4.default.join(this.configManager.generatedFolderPath, fileName);
1672
1672
  await import_fs_extra4.default.ensureFile(filePath);
1673
1673
  await import_fs_extra4.default.outputFile(filePath, data);
1674
1674
  if (this.configManager.hasSeparateContentRoot()) {
1675
- const filePath2 = import_path5.default.join(
1675
+ const filePath2 = import_path4.default.join(
1676
1676
  this.configManager.generatedFolderPathContentRepo,
1677
1677
  fileName
1678
1678
  );
@@ -2209,7 +2209,7 @@ var BaseCommand = class extends import_clipanion.Command {
2209
2209
  pathFilter
2210
2210
  });
2211
2211
  const tinaPathUpdates = modified.filter(
2212
- (path13) => path13.startsWith(".tina/__generated__/_schema.json") || path13.startsWith("tina/tina-lock.json")
2212
+ (path14) => path14.startsWith(".tina/__generated__/_schema.json") || path14.startsWith("tina/tina-lock.json")
2213
2213
  );
2214
2214
  if (tinaPathUpdates.length > 0) {
2215
2215
  res = await database.indexContent({
@@ -2324,14 +2324,14 @@ var DevCommand = class extends BaseCommand {
2324
2324
  graphql: graphqlSchemaObject
2325
2325
  });
2326
2326
  import_fs_extra6.default.writeFileSync(
2327
- import_path6.default.join(configManager.tinaFolderPath, tinaLockFilename),
2327
+ import_path5.default.join(configManager.tinaFolderPath, tinaLockFilename),
2328
2328
  tinaLockContent
2329
2329
  );
2330
2330
  if (configManager.hasSeparateContentRoot()) {
2331
2331
  const rootPath = await configManager.getTinaFolderPath(
2332
2332
  configManager.contentRootPath
2333
2333
  );
2334
- const filePath = import_path6.default.join(rootPath, tinaLockFilename);
2334
+ const filePath = import_path5.default.join(rootPath, tinaLockFilename);
2335
2335
  await import_fs_extra6.default.ensureFile(filePath);
2336
2336
  await import_fs_extra6.default.outputFile(filePath, tinaLockContent);
2337
2337
  }
@@ -2478,7 +2478,7 @@ ${dangerText(e.message)}
2478
2478
  watchContentFiles(configManager, database, searchIndexer) {
2479
2479
  const collectionContentFiles = [];
2480
2480
  configManager.config.schema.collections.forEach((collection) => {
2481
- const collectionGlob = `${import_path6.default.join(
2481
+ const collectionGlob = `${import_path5.default.join(
2482
2482
  configManager.contentRootPath,
2483
2483
  collection.path
2484
2484
  )}/**/*.${collection.format || "md"}`;
@@ -2537,6 +2537,8 @@ DevCommand.usage = import_clipanion2.Command.Usage({
2537
2537
  var import_clipanion3 = require("clipanion");
2538
2538
  var import_progress2 = __toESM(require("progress"));
2539
2539
  var import_fs_extra7 = __toESM(require("fs-extra"));
2540
+ var import_crypto = __toESM(require("crypto"));
2541
+ var import_path6 = __toESM(require("path"));
2540
2542
  var import_graphql11 = require("@tinacms/graphql");
2541
2543
 
2542
2544
  // src/next/commands/build-command/server.ts
@@ -2839,6 +2841,13 @@ ${dangerText(e.message)}
2839
2841
  database,
2840
2842
  codegen2.productionUrl
2841
2843
  );
2844
+ await this.checkTinaSchema(
2845
+ configManager,
2846
+ database,
2847
+ codegen2.productionUrl,
2848
+ this.previewName,
2849
+ this.verbose
2850
+ );
2842
2851
  }
2843
2852
  await buildProductionSpa(configManager, database, codegen2.productionUrl);
2844
2853
  await import_fs_extra7.default.outputFile(
@@ -3148,6 +3157,63 @@ Additional info: Branch: ${config2.branch}, Client ID: ${config2.clientId} `;
3148
3157
  }
3149
3158
  }
3150
3159
  }
3160
+ async checkTinaSchema(configManager, database, apiURL, previewName, verbose) {
3161
+ const bar2 = new import_progress2.default(
3162
+ "Checking local Tina Schema matches server. :prog",
3163
+ 1
3164
+ );
3165
+ const { config: config2 } = configManager;
3166
+ const token = config2.token;
3167
+ const { clientId, branch, isLocalClient, host } = (0, import_schema_tools2.parseURL)(apiURL);
3168
+ if (isLocalClient || !host || !clientId || !branch) {
3169
+ if (verbose) {
3170
+ logger.info(logText("Not using Tina Cloud, skipping Tina Schema check"));
3171
+ }
3172
+ return;
3173
+ }
3174
+ const { tinaSchema: remoteTinaSchemaSha } = await fetchSchemaSha({
3175
+ url: `https://${host}/db/${clientId}/${previewName || branch}/schemaSha`,
3176
+ token
3177
+ });
3178
+ if (!remoteTinaSchemaSha) {
3179
+ bar2.tick({
3180
+ prog: "\u274C"
3181
+ });
3182
+ let errorMessage = `The remote Tina schema does not exist. Check indexing for this branch.`;
3183
+ if (config2 == null ? void 0 : config2.branch) {
3184
+ errorMessage += `
3185
+
3186
+ Additional info: Branch: ${config2.branch}, Client ID: ${config2.clientId} `;
3187
+ }
3188
+ throw new Error(errorMessage);
3189
+ }
3190
+ if (!database.bridge) {
3191
+ throw new Error(`No bridge configured`);
3192
+ }
3193
+ const localTinaSchema = JSON.parse(
3194
+ await database.bridge.get(
3195
+ import_path6.default.join(database.tinaDirectory, "__generated__", "_schema.json")
3196
+ )
3197
+ );
3198
+ localTinaSchema.version = void 0;
3199
+ const localTinaSchemaSha = import_crypto.default.createHash("sha256").update(JSON.stringify(localTinaSchema)).digest("hex");
3200
+ if (localTinaSchemaSha === remoteTinaSchemaSha) {
3201
+ bar2.tick({
3202
+ prog: "\u2705"
3203
+ });
3204
+ } else {
3205
+ bar2.tick({
3206
+ prog: "\u274C"
3207
+ });
3208
+ let errorMessage = `The local Tina schema doesn't match the remote Tina schema. Please push up your changes to GitHub to update your remote tina schema.`;
3209
+ if (config2 == null ? void 0 : config2.branch) {
3210
+ errorMessage += `
3211
+
3212
+ Additional info: Branch: ${config2.branch}, Client ID: ${config2.clientId} `;
3213
+ }
3214
+ throw new Error(errorMessage);
3215
+ }
3216
+ }
3151
3217
  };
3152
3218
  BuildCommand.paths = [["build"]];
3153
3219
  BuildCommand.usage = import_clipanion3.Command.Usage({
@@ -3216,6 +3282,21 @@ var fetchRemoteGraphqlSchema = async ({
3216
3282
  const data = await res.json();
3217
3283
  return data == null ? void 0 : data.data;
3218
3284
  };
3285
+ var fetchSchemaSha = async ({
3286
+ url,
3287
+ token
3288
+ }) => {
3289
+ const headers = new Headers();
3290
+ if (token) {
3291
+ headers.append("X-API-KEY", token);
3292
+ }
3293
+ const res = await fetch(url, {
3294
+ method: "GET",
3295
+ headers,
3296
+ cache: "no-cache"
3297
+ });
3298
+ return res.json();
3299
+ };
3219
3300
 
3220
3301
  // src/next/commands/audit-command/index.ts
3221
3302
  var import_clipanion4 = require("clipanion");
@@ -6017,22 +6098,22 @@ var writeGeneratedFile = async ({
6017
6098
  content,
6018
6099
  typescript
6019
6100
  }) => {
6020
- const { exists, path: path13, parentPath } = generatedFile.resolve(typescript);
6101
+ const { exists, path: path14, parentPath } = generatedFile.resolve(typescript);
6021
6102
  if (exists) {
6022
6103
  if (overwrite) {
6023
- logger.info(`Overwriting file at ${path13}... \u2705`);
6024
- import_fs_extra13.default.outputFileSync(path13, content);
6104
+ logger.info(`Overwriting file at ${path14}... \u2705`);
6105
+ import_fs_extra13.default.outputFileSync(path14, content);
6025
6106
  } else {
6026
- logger.info(`Not overwriting file at ${path13}.`);
6107
+ logger.info(`Not overwriting file at ${path14}.`);
6027
6108
  logger.info(
6028
- logText(`Please add the following to ${path13}:
6109
+ logText(`Please add the following to ${path14}:
6029
6110
  ${indentText(content)}}`)
6030
6111
  );
6031
6112
  }
6032
6113
  } else {
6033
- logger.info(`Adding file at ${path13}... \u2705`);
6114
+ logger.info(`Adding file at ${path14}... \u2705`);
6034
6115
  await import_fs_extra13.default.ensureDir(parentPath);
6035
- import_fs_extra13.default.outputFileSync(path13, content);
6116
+ import_fs_extra13.default.outputFileSync(path14, content);
6036
6117
  }
6037
6118
  };
6038
6119
  var addConfigFile = async ({
@@ -28,8 +28,13 @@ export declare class BuildCommand extends BaseCommand {
28
28
  previewName?: string;
29
29
  }): Promise<void>;
30
30
  checkGraphqlSchema(configManager: ConfigManager, database: Database, apiURL: string): Promise<void>;
31
+ checkTinaSchema(configManager: ConfigManager, database: Database, apiURL: string, previewName: string, verbose: boolean): Promise<void>;
31
32
  }
32
33
  export declare const fetchRemoteGraphqlSchema: ({ url, token, }: {
33
34
  url: string;
34
35
  token?: string;
35
36
  }) => Promise<any>;
37
+ export declare const fetchSchemaSha: ({ url, token, }: {
38
+ url: string;
39
+ token?: string;
40
+ }) => Promise<any>;
@@ -1,6 +1,6 @@
1
- import { BuildOptions, InlineConfig, Plugin } from 'vite';
2
- import { Database } from '@tinacms/graphql';
3
- import { ConfigManager } from '../config-manager';
1
+ import type { Database } from '@tinacms/graphql';
2
+ import { type BuildOptions, type InlineConfig, type Plugin } from 'vite';
3
+ import type { ConfigManager } from '../config-manager';
4
4
  /**
5
5
  * This type is duplicated in he `TinaMediaStore`
6
6
  * It represents the files that are available at build time
@@ -1,5 +1,5 @@
1
1
  /**
2
2
 
3
3
  */
4
- import http from 'http';
4
+ import http from 'node:http';
5
5
  export declare const gqlServer: (database: any, verbose: boolean) => Promise<http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tinacms/cli",
3
- "version": "0.0.0-bf22bf8-20241004045704",
3
+ "version": "0.0.0-c72bb45-20241118014046",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
6
6
  "files": [
@@ -26,9 +26,8 @@
26
26
  "@types/cors": "2.8.5",
27
27
  "@types/crypto-js": "^4.2.2",
28
28
  "@types/express": "^4.17.21",
29
- "@types/express-graphql": "^0.9.0",
30
29
  "@types/figlet": "1.2.0",
31
- "@types/fs-extra": "^9.0.13",
30
+ "@types/fs-extra": "^11.0.4",
32
31
  "@types/jest": "26.0.4",
33
32
  "@types/js-yaml": "^4.0.9",
34
33
  "@types/listr": "0.14.2",
@@ -36,20 +35,20 @@
36
35
  "@types/multer": "^1.4.12",
37
36
  "@types/progress": "^2.0.7",
38
37
  "@types/prompts": "^2.4.9",
39
- "@types/yup": "^0.29.14",
38
+ "@types/yup": "^0.32.0",
40
39
  "jest": "^29.7.0",
41
- "@tinacms/scripts": "1.2.3"
40
+ "@tinacms/scripts": "0.0.0-c72bb45-20241118014046"
42
41
  },
43
42
  "dependencies": {
44
43
  "@graphql-codegen/core": "^2.6.8",
45
44
  "@graphql-codegen/plugin-helpers": "latest",
46
- "@graphql-codegen/typescript": "^4.0.9",
47
- "@graphql-codegen/typescript-operations": "^4.2.3",
45
+ "@graphql-codegen/typescript": "^4.1.1",
46
+ "@graphql-codegen/typescript-operations": "^4.3.1",
48
47
  "@graphql-codegen/visitor-plugin-common": "^4.1.2",
49
48
  "@graphql-inspector/core": "^4.2.2",
50
49
  "@graphql-tools/graphql-file-loader": "^7.5.17",
51
50
  "@graphql-tools/load": "^7.8.14",
52
- "@rollup/pluginutils": "^5.1.2",
51
+ "@rollup/pluginutils": "^5.1.3",
53
52
  "@svgr/core": "8.1.0",
54
53
  "@tailwindcss/aspect-ratio": "^0.4.2",
55
54
  "@tailwindcss/container-queries": "^0.1.1",
@@ -79,18 +78,18 @@
79
78
  "progress": "^2.0.3",
80
79
  "prompts": "^2.4.2",
81
80
  "readable-stream": "^4.5.2",
82
- "tailwindcss": "^3.4.13",
81
+ "tailwindcss": "^3.4.15",
83
82
  "typanion": "3.13.0",
84
- "typescript": "^5.6.2",
83
+ "typescript": "^5.6.3",
85
84
  "vite": "^4.5.5",
86
- "yup": "^0.32.11",
85
+ "yup": "^1.4.0",
87
86
  "zod": "^3.23.8",
88
- "@tinacms/app": "0.0.0-bf22bf8-20241004045704",
89
- "@tinacms/metrics": "1.0.7",
90
- "@tinacms/graphql": "0.0.0-bf22bf8-20241004045704",
91
- "@tinacms/schema-tools": "0.0.0-bf22bf8-20241004045704",
92
- "@tinacms/search": "0.0.0-bf22bf8-20241004045704",
93
- "tinacms": "0.0.0-bf22bf8-20241004045704"
87
+ "@tinacms/app": "0.0.0-c72bb45-20241118014046",
88
+ "@tinacms/schema-tools": "0.0.0-c72bb45-20241118014046",
89
+ "@tinacms/search": "0.0.0-c72bb45-20241118014046",
90
+ "tinacms": "0.0.0-c72bb45-20241118014046",
91
+ "@tinacms/graphql": "0.0.0-c72bb45-20241118014046",
92
+ "@tinacms/metrics": "0.0.0-c72bb45-20241118014046"
94
93
  },
95
94
  "publishConfig": {
96
95
  "registry": "https://registry.npmjs.org"
@@ -99,6 +98,9 @@
99
98
  "url": "https://github.com/tinacms/tinacms.git",
100
99
  "directory": "packages/@tinacms/cli"
101
100
  },
101
+ "overrides": {
102
+ "dompurify": "2.5.7"
103
+ },
102
104
  "scripts": {
103
105
  "build": "tinacms-scripts build",
104
106
  "test": "jest --passWithNoTests",