@tinacms/cli 0.0.0-ce96a8d-20250829163200 → 0.0.0-ced9076-20250922063813

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.
@@ -8,7 +8,7 @@ export * from './databaseAdapter';
8
8
  export * from './authProvider';
9
9
  export declare const askCommonSetUp: () => Promise<{
10
10
  framework: Framework;
11
- packageManager: "pnpm" | "yarn" | "npm";
11
+ packageManager: "pnpm" | "yarn" | "npm" | "bun";
12
12
  }>;
13
13
  export declare const askForestryMigrate: ({ framework, env, }: {
14
14
  framework: Framework;
@@ -4,7 +4,7 @@ export type Config = {
4
4
  typescript: boolean;
5
5
  publicFolder?: string;
6
6
  framework: Framework;
7
- packageManager: 'pnpm' | 'yarn' | 'npm';
7
+ packageManager: 'pnpm' | 'yarn' | 'npm' | 'bun';
8
8
  forestryMigrate: boolean;
9
9
  frontMatterFormat?: ContentFrontmatterFormat;
10
10
  hosting?: 'tina-cloud' | 'self-host';
package/dist/index.js CHANGED
@@ -35,10 +35,10 @@ module.exports = __toCommonJS(index_exports);
35
35
  var import_clipanion8 = require("clipanion");
36
36
 
37
37
  // package.json
38
- var version = "1.10.2";
38
+ var version = "1.10.3";
39
39
 
40
40
  // src/next/commands/dev-command/index.ts
41
- var import_path5 = __toESM(require("path"));
41
+ var import_path7 = __toESM(require("path"));
42
42
  var import_graphql10 = require("@tinacms/graphql");
43
43
  var import_search = require("@tinacms/search");
44
44
  var import_async_lock = __toESM(require("async-lock"));
@@ -601,7 +601,7 @@ var Codegen = class {
601
601
  throw new Error(
602
602
  `Client not configured properly. Missing ${missing.join(
603
603
  ", "
604
- )}. Please visit https://tina.io/docs/tina-cloud/overview for more information`
604
+ )}. Please visit https://tina.io/docs/r/what-is-tinacloud for more information`
605
605
  );
606
606
  }
607
607
  let localUrl = `http://localhost:${this.port}/graphql`;
@@ -775,12 +775,25 @@ var unlinkIfExists = async (filepath) => {
775
775
 
776
776
  // src/next/config-manager.ts
777
777
  var import_fs_extra2 = __toESM(require("fs-extra"));
778
- var import_path2 = __toESM(require("path"));
778
+ var import_path3 = __toESM(require("path"));
779
779
  var import_os = __toESM(require("os"));
780
780
  var esbuild = __toESM(require("esbuild"));
781
781
  var dotenv = __toESM(require("dotenv"));
782
782
  var import_normalize_path2 = __toESM(require("normalize-path"));
783
783
  var import_chalk3 = __toESM(require("chalk"));
784
+
785
+ // src/utils/path.ts
786
+ var import_path2 = __toESM(require("path"));
787
+ function stripNativeTrailingSlash(p) {
788
+ const { root } = import_path2.default.parse(p);
789
+ let str = p;
790
+ while (str.length > root.length && str.endsWith(import_path2.default.sep)) {
791
+ str = str.slice(0, -1);
792
+ }
793
+ return str;
794
+ }
795
+
796
+ // src/next/config-manager.ts
784
797
  var TINA_FOLDER = "tina";
785
798
  var LEGACY_TINA_FOLDER = ".tina";
786
799
  var GENERATED_FOLDER = "__generated__";
@@ -799,7 +812,7 @@ var ConfigManager = class {
799
812
  this.legacyNoSDK = legacyNoSDK;
800
813
  }
801
814
  isUsingTs() {
802
- return [".ts", ".tsx"].includes(import_path2.default.extname(this.tinaConfigFilePath));
815
+ return [".ts", ".tsx"].includes(import_path3.default.extname(this.tinaConfigFilePath));
803
816
  }
804
817
  hasSelfHostedConfig() {
805
818
  return !!this.selfHostedDatabaseFilePath;
@@ -815,12 +828,12 @@ var ConfigManager = class {
815
828
  }
816
829
  async processConfig() {
817
830
  this.tinaFolderPath = await this.getTinaFolderPath(this.rootPath);
818
- this.envFilePath = import_path2.default.resolve(
819
- import_path2.default.join(this.tinaFolderPath, "..", ".env")
831
+ this.envFilePath = import_path3.default.resolve(
832
+ import_path3.default.join(this.tinaFolderPath, "..", ".env")
820
833
  );
821
834
  dotenv.config({ path: this.envFilePath });
822
835
  this.tinaConfigFilePath = await this.getPathWithExtension(
823
- import_path2.default.join(this.tinaFolderPath, "config")
836
+ import_path3.default.join(this.tinaFolderPath, "config")
824
837
  );
825
838
  if (!this.tinaConfigFilePath) {
826
839
  throw new Error(
@@ -828,79 +841,79 @@ var ConfigManager = class {
828
841
  );
829
842
  }
830
843
  this.selfHostedDatabaseFilePath = await this.getPathWithExtension(
831
- import_path2.default.join(this.tinaFolderPath, "database")
844
+ import_path3.default.join(this.tinaFolderPath, "database")
832
845
  );
833
- this.generatedFolderPath = import_path2.default.join(this.tinaFolderPath, GENERATED_FOLDER);
834
- this.generatedCachePath = import_path2.default.join(
846
+ this.generatedFolderPath = import_path3.default.join(this.tinaFolderPath, GENERATED_FOLDER);
847
+ this.generatedCachePath = import_path3.default.join(
835
848
  this.generatedFolderPath,
836
849
  ".cache",
837
850
  String((/* @__PURE__ */ new Date()).getTime())
838
851
  );
839
- this.generatedGraphQLGQLPath = import_path2.default.join(
852
+ this.generatedGraphQLGQLPath = import_path3.default.join(
840
853
  this.generatedFolderPath,
841
854
  GRAPHQL_GQL_FILE
842
855
  );
843
- this.generatedGraphQLJSONPath = import_path2.default.join(
856
+ this.generatedGraphQLJSONPath = import_path3.default.join(
844
857
  this.generatedFolderPath,
845
858
  GRAPHQL_JSON_FILE
846
859
  );
847
- this.generatedSchemaJSONPath = import_path2.default.join(
860
+ this.generatedSchemaJSONPath = import_path3.default.join(
848
861
  this.generatedFolderPath,
849
862
  SCHEMA_JSON_FILE
850
863
  );
851
- this.generatedLookupJSONPath = import_path2.default.join(
864
+ this.generatedLookupJSONPath = import_path3.default.join(
852
865
  this.generatedFolderPath,
853
866
  LOOKUP_JSON_FILE
854
867
  );
855
- this.generatedQueriesFilePath = import_path2.default.join(
868
+ this.generatedQueriesFilePath = import_path3.default.join(
856
869
  this.generatedFolderPath,
857
870
  "queries.gql"
858
871
  );
859
- this.generatedFragmentsFilePath = import_path2.default.join(
872
+ this.generatedFragmentsFilePath = import_path3.default.join(
860
873
  this.generatedFolderPath,
861
874
  "frags.gql"
862
875
  );
863
- this.generatedTypesTSFilePath = import_path2.default.join(
876
+ this.generatedTypesTSFilePath = import_path3.default.join(
864
877
  this.generatedFolderPath,
865
878
  "types.ts"
866
879
  );
867
- this.generatedTypesJSFilePath = import_path2.default.join(
880
+ this.generatedTypesJSFilePath = import_path3.default.join(
868
881
  this.generatedFolderPath,
869
882
  "types.js"
870
883
  );
871
- this.generatedTypesDFilePath = import_path2.default.join(
884
+ this.generatedTypesDFilePath = import_path3.default.join(
872
885
  this.generatedFolderPath,
873
886
  "types.d.ts"
874
887
  );
875
- this.userQueriesAndFragmentsGlob = import_path2.default.join(
888
+ this.userQueriesAndFragmentsGlob = import_path3.default.join(
876
889
  this.tinaFolderPath,
877
890
  "queries/**/*.{graphql,gql}"
878
891
  );
879
- this.generatedQueriesAndFragmentsGlob = import_path2.default.join(
892
+ this.generatedQueriesAndFragmentsGlob = import_path3.default.join(
880
893
  this.generatedFolderPath,
881
894
  "*.{graphql,gql}"
882
895
  );
883
- this.generatedClientTSFilePath = import_path2.default.join(
896
+ this.generatedClientTSFilePath = import_path3.default.join(
884
897
  this.generatedFolderPath,
885
898
  "client.ts"
886
899
  );
887
- this.generatedClientJSFilePath = import_path2.default.join(
900
+ this.generatedClientJSFilePath = import_path3.default.join(
888
901
  this.generatedFolderPath,
889
902
  "client.js"
890
903
  );
891
- this.generatedClientDFilePath = import_path2.default.join(
904
+ this.generatedClientDFilePath = import_path3.default.join(
892
905
  this.generatedFolderPath,
893
906
  "client.d.ts"
894
907
  );
895
- this.generatedDatabaseClientDFilePath = import_path2.default.join(
908
+ this.generatedDatabaseClientDFilePath = import_path3.default.join(
896
909
  this.generatedFolderPath,
897
910
  "databaseClient.d.ts"
898
911
  );
899
- this.generatedDatabaseClientTSFilePath = import_path2.default.join(
912
+ this.generatedDatabaseClientTSFilePath = import_path3.default.join(
900
913
  this.generatedFolderPath,
901
914
  "databaseClient.ts"
902
915
  );
903
- this.generatedDatabaseClientJSFilePath = import_path2.default.join(
916
+ this.generatedDatabaseClientJSFilePath = import_path3.default.join(
904
917
  this.generatedFolderPath,
905
918
  "databaseClient.js"
906
919
  );
@@ -920,19 +933,18 @@ var ConfigManager = class {
920
933
  this.watchList = watchList;
921
934
  this.config = config2;
922
935
  this.prebuildFilePath = prebuildPath;
923
- this.publicFolderPath = import_path2.default.join(
936
+ this.publicFolderPath = import_path3.default.join(
924
937
  this.rootPath,
925
938
  this.config.build.publicFolder
926
939
  );
927
- this.outputFolderPath = import_path2.default.join(
940
+ this.outputFolderPath = import_path3.default.join(
928
941
  this.publicFolderPath,
929
942
  this.config.build.outputFolder
930
943
  );
931
- this.outputHTMLFilePath = import_path2.default.join(this.outputFolderPath, "index.html");
932
- this.outputGitignorePath = import_path2.default.join(this.outputFolderPath, ".gitignore");
933
- const fullLocalContentPath = import_path2.default.join(
934
- this.tinaFolderPath,
935
- this.config.localContentPath || ""
944
+ this.outputHTMLFilePath = import_path3.default.join(this.outputFolderPath, "index.html");
945
+ this.outputGitignorePath = import_path3.default.join(this.outputFolderPath, ".gitignore");
946
+ const fullLocalContentPath = stripNativeTrailingSlash(
947
+ import_path3.default.join(this.tinaFolderPath, this.config.localContentPath || "")
936
948
  );
937
949
  if (this.config.localContentPath) {
938
950
  const localContentPathExists = await import_fs_extra2.default.pathExists(fullLocalContentPath);
@@ -952,21 +964,21 @@ var ConfigManager = class {
952
964
  if (!this.contentRootPath) {
953
965
  this.contentRootPath = this.rootPath;
954
966
  }
955
- this.generatedFolderPathContentRepo = import_path2.default.join(
967
+ this.generatedFolderPathContentRepo = import_path3.default.join(
956
968
  await this.getTinaFolderPath(this.contentRootPath),
957
969
  GENERATED_FOLDER
958
970
  );
959
971
  this.spaMainPath = require.resolve("@tinacms/app");
960
- this.spaRootPath = import_path2.default.join(this.spaMainPath, "..", "..");
972
+ this.spaRootPath = import_path3.default.join(this.spaMainPath, "..", "..");
961
973
  }
962
974
  async getTinaFolderPath(rootPath) {
963
- const tinaFolderPath = import_path2.default.join(rootPath, TINA_FOLDER);
975
+ const tinaFolderPath = import_path3.default.join(rootPath, TINA_FOLDER);
964
976
  const tinaFolderExists = await import_fs_extra2.default.pathExists(tinaFolderPath);
965
977
  if (tinaFolderExists) {
966
978
  this.isUsingLegacyFolder = false;
967
979
  return tinaFolderPath;
968
980
  }
969
- const legacyFolderPath = import_path2.default.join(rootPath, LEGACY_TINA_FOLDER);
981
+ const legacyFolderPath = import_path3.default.join(rootPath, LEGACY_TINA_FOLDER);
970
982
  const legacyFolderExists = await import_fs_extra2.default.pathExists(legacyFolderPath);
971
983
  if (legacyFolderExists) {
972
984
  this.isUsingLegacyFolder = true;
@@ -1042,8 +1054,8 @@ var ConfigManager = class {
1042
1054
  return result;
1043
1055
  }
1044
1056
  async loadDatabaseFile() {
1045
- const tmpdir = import_path2.default.join(import_os.default.tmpdir(), Date.now().toString());
1046
- const outfile = import_path2.default.join(tmpdir, "database.build.js");
1057
+ const tmpdir = import_path3.default.join(import_os.default.tmpdir(), Date.now().toString());
1058
+ const outfile = import_path3.default.join(tmpdir, "database.build.js");
1047
1059
  await esbuild.build({
1048
1060
  entryPoints: [this.selfHostedDatabaseFilePath],
1049
1061
  bundle: true,
@@ -1056,14 +1068,14 @@ var ConfigManager = class {
1056
1068
  return result.default;
1057
1069
  }
1058
1070
  async loadConfigFile(generatedFolderPath, configFilePath) {
1059
- const tmpdir = import_path2.default.join(import_os.default.tmpdir(), Date.now().toString());
1060
- const preBuildConfigPath = import_path2.default.join(
1071
+ const tmpdir = import_path3.default.join(import_os.default.tmpdir(), Date.now().toString());
1072
+ const preBuildConfigPath = import_path3.default.join(
1061
1073
  this.generatedFolderPath,
1062
1074
  "config.prebuild.jsx"
1063
1075
  );
1064
- const outfile = import_path2.default.join(tmpdir, "config.build.jsx");
1065
- const outfile2 = import_path2.default.join(tmpdir, "config.build.js");
1066
- const tempTSConfigFile = import_path2.default.join(tmpdir, "tsconfig.json");
1076
+ const outfile = import_path3.default.join(tmpdir, "config.build.jsx");
1077
+ const outfile2 = import_path3.default.join(tmpdir, "config.build.js");
1078
+ const tempTSConfigFile = import_path3.default.join(tmpdir, "tsconfig.json");
1067
1079
  import_fs_extra2.default.outputFileSync(tempTSConfigFile, "{}");
1068
1080
  const result2 = await esbuild.build({
1069
1081
  entryPoints: [configFilePath],
@@ -1350,7 +1362,7 @@ var BaseCommand = class extends import_clipanion.Command {
1350
1362
  pathFilter
1351
1363
  });
1352
1364
  const tinaPathUpdates = modified.filter(
1353
- (path14) => path14.startsWith(".tina/__generated__/_schema.json") || path14.startsWith("tina/tina-lock.json")
1365
+ (path15) => path15.startsWith(".tina/__generated__/_schema.json") || path15.startsWith("tina/tina-lock.json")
1354
1366
  );
1355
1367
  if (tinaPathUpdates.length > 0) {
1356
1368
  res = await database.indexContent({
@@ -1428,7 +1440,7 @@ var errorHTML = `<style type="text/css">
1428
1440
  the assets for this page.
1429
1441
  </p>
1430
1442
  <p>
1431
- Please visit <a href="https://tina.io/docs/tina-cloud/faq/#how-do-i-resolve-failed-loading-tinacms-assets-error">this doc</a> for help.
1443
+ Please visit <a href="https://tina.io/docs/r/FAQ/#13-how-do-i-resolve-failed-loading-tinacms-assets-error">this doc</a> for help.
1432
1444
  </p>
1433
1445
  </div>
1434
1446
  </div>`.trim().replace(/[\r\n\s]+/g, " ");
@@ -1942,17 +1954,17 @@ var import_pluginutils = require("@rollup/pluginutils");
1942
1954
  var import_fs = __toESM(require("fs"));
1943
1955
  var import_vite2 = require("vite");
1944
1956
  var import_esbuild2 = require("esbuild");
1945
- var import_path4 = __toESM(require("path"));
1957
+ var import_path6 = __toESM(require("path"));
1946
1958
  var import_body_parser = __toESM(require("body-parser"));
1947
1959
  var import_cors = __toESM(require("cors"));
1948
1960
  var import_graphql9 = require("@tinacms/graphql");
1949
1961
 
1950
1962
  // src/next/commands/dev-command/server/media.ts
1951
1963
  var import_fs_extra5 = __toESM(require("fs-extra"));
1952
- var import_path3 = __toESM(require("path"));
1964
+ var import_path5 = __toESM(require("path"));
1953
1965
  var import_busboy = __toESM(require("busboy"));
1954
1966
  var createMediaRouter = (config2) => {
1955
- const mediaFolder = import_path3.default.join(
1967
+ const mediaFolder = import_path5.default.join(
1956
1968
  config2.rootPath,
1957
1969
  config2.publicFolder,
1958
1970
  config2.mediaRoot
@@ -1979,8 +1991,8 @@ var createMediaRouter = (config2) => {
1979
1991
  const bb = (0, import_busboy.default)({ headers: req.headers });
1980
1992
  bb.on("file", async (_name, file, _info) => {
1981
1993
  const fullPath = decodeURI(req.url?.slice("/media/upload/".length));
1982
- const saveTo = import_path3.default.join(mediaFolder, ...fullPath.split("/"));
1983
- await import_fs_extra5.default.ensureDir(import_path3.default.dirname(saveTo));
1994
+ const saveTo = import_path5.default.join(mediaFolder, ...fullPath.split("/"));
1995
+ await import_fs_extra5.default.ensureDir(import_path5.default.dirname(saveTo));
1984
1996
  file.pipe(import_fs_extra5.default.createWriteStream(saveTo));
1985
1997
  });
1986
1998
  bb.on("error", (error) => {
@@ -2014,7 +2026,7 @@ var MediaModel = class {
2014
2026
  }
2015
2027
  async listMedia(args) {
2016
2028
  try {
2017
- const folderPath = (0, import_path3.join)(
2029
+ const folderPath = (0, import_path5.join)(
2018
2030
  this.rootPath,
2019
2031
  this.publicFolder,
2020
2032
  this.mediaRoot,
@@ -2029,7 +2041,7 @@ var MediaModel = class {
2029
2041
  }
2030
2042
  const filesStr = await import_fs_extra5.default.readdir(folderPath);
2031
2043
  const filesProm = filesStr.map(async (file) => {
2032
- const filePath = (0, import_path3.join)(folderPath, file);
2044
+ const filePath = (0, import_path5.join)(folderPath, file);
2033
2045
  const stat = await import_fs_extra5.default.stat(filePath);
2034
2046
  let src = `/${file}`;
2035
2047
  const isFile = stat.isFile();
@@ -2086,7 +2098,7 @@ var MediaModel = class {
2086
2098
  }
2087
2099
  async deleteMedia(args) {
2088
2100
  try {
2089
- const file = (0, import_path3.join)(
2101
+ const file = (0, import_path5.join)(
2090
2102
  this.rootPath,
2091
2103
  this.publicFolder,
2092
2104
  this.mediaRoot,
@@ -2151,7 +2163,7 @@ var transformTsxPlugin = ({
2151
2163
  const plug = {
2152
2164
  name: "transform-tsx",
2153
2165
  async transform(code, id) {
2154
- const extName = import_path4.default.extname(id);
2166
+ const extName = import_path6.default.extname(id);
2155
2167
  if (extName.startsWith(".tsx") || extName.startsWith(".ts")) {
2156
2168
  const result = await (0, import_esbuild2.transform)(code, { loader: "tsx" });
2157
2169
  return {
@@ -2415,14 +2427,14 @@ var DevCommand = class extends BaseCommand {
2415
2427
  graphql: graphqlSchemaObject
2416
2428
  });
2417
2429
  import_fs_extra6.default.writeFileSync(
2418
- import_path5.default.join(configManager.tinaFolderPath, tinaLockFilename),
2430
+ import_path7.default.join(configManager.tinaFolderPath, tinaLockFilename),
2419
2431
  tinaLockContent
2420
2432
  );
2421
2433
  if (configManager.hasSeparateContentRoot()) {
2422
2434
  const rootPath = await configManager.getTinaFolderPath(
2423
2435
  configManager.contentRootPath
2424
2436
  );
2425
- const filePath = import_path5.default.join(rootPath, tinaLockFilename);
2437
+ const filePath = import_path7.default.join(rootPath, tinaLockFilename);
2426
2438
  await import_fs_extra6.default.ensureFile(filePath);
2427
2439
  await import_fs_extra6.default.outputFile(filePath, tinaLockContent);
2428
2440
  }
@@ -2582,11 +2594,11 @@ ${dangerText(e.message)}
2582
2594
  // subItems: [
2583
2595
  // {
2584
2596
  // key: 'Custom queries',
2585
- // value: 'https://tina.io/querying',
2597
+ // value: 'https://tina.io/docs/r/content-api-overview',
2586
2598
  // },
2587
2599
  // {
2588
2600
  // key: 'Visual editing',
2589
- // value: 'https://tina.io/visual-editing',
2601
+ // value: 'https://tina.io/docs/r/visual-editing-setup',
2590
2602
  // },
2591
2603
  // ],
2592
2604
  // },
@@ -2597,7 +2609,7 @@ ${dangerText(e.message)}
2597
2609
  watchContentFiles(configManager, database, databaseLock, searchIndexer) {
2598
2610
  const collectionContentFiles = [];
2599
2611
  configManager.config.schema.collections.forEach((collection) => {
2600
- const collectionGlob = `${import_path5.default.join(
2612
+ const collectionGlob = `${import_path7.default.join(
2601
2613
  configManager.contentRootPath,
2602
2614
  collection.path
2603
2615
  )}/**/*.${collection.format || "md"}`;
@@ -2647,7 +2659,7 @@ ${dangerText(e.message)}
2647
2659
 
2648
2660
  // src/next/commands/build-command/index.ts
2649
2661
  var import_crypto = __toESM(require("crypto"));
2650
- var import_path6 = __toESM(require("path"));
2662
+ var import_path8 = __toESM(require("path"));
2651
2663
  var import_core3 = require("@graphql-inspector/core");
2652
2664
  var import_graphql11 = require("@tinacms/graphql");
2653
2665
  var import_schema_tools2 = require("@tinacms/schema-tools");
@@ -2662,7 +2674,7 @@ var import_core2 = require("@graphql-inspector/core");
2662
2674
  var getFaqLink = (type) => {
2663
2675
  switch (type) {
2664
2676
  case import_core2.ChangeType.FieldRemoved: {
2665
- return "https://tina.io/docs/introduction/faq#how-do-i-resolve-the-local-graphql-schema-doesnt-match-the-remote-graphql-schema-errors";
2677
+ return "https://tina.io/docs/r/FAQ/#2-how-do-i-resolve-the-local-graphql-schema-doesnt-match-the-remote-graphql-schema-error";
2666
2678
  }
2667
2679
  default:
2668
2680
  return null;
@@ -3369,7 +3381,7 @@ Additional info: Branch: ${config2.branch}, Client ID: ${config2.clientId} `;
3369
3381
  }
3370
3382
  const localTinaSchema = JSON.parse(
3371
3383
  await database.bridge.get(
3372
- import_path6.default.join(database.tinaDirectory, "__generated__", "_schema.json")
3384
+ import_path8.default.join(database.tinaDirectory, "__generated__", "_schema.json")
3373
3385
  )
3374
3386
  );
3375
3387
  localTinaSchema.version = void 0;
@@ -3424,12 +3436,12 @@ async function request(args) {
3424
3436
  Message from server: ${json.message}`;
3425
3437
  }
3426
3438
  throw new Error(
3427
- `Server responded with status code ${res.status}, ${res.statusText}. ${additionalInfo ? additionalInfo : ""} Please see our FAQ for more information: https://tina.io/docs/errors/faq/`
3439
+ `Server responded with status code ${res.status}, ${res.statusText}. ${additionalInfo ? additionalInfo : ""} Please see our FAQ for more information: https://tina.io/docs/r/FAQ/`
3428
3440
  );
3429
3441
  }
3430
3442
  if (json.errors) {
3431
3443
  throw new Error(
3432
- `Unable to fetch, please see our FAQ for more information: https://tina.io/docs/errors/faq/
3444
+ `Unable to fetch, please see our FAQ for more information: https://tina.io/docs/r/FAQ/
3433
3445
 
3434
3446
  Errors:
3435
3447
  ${json.errors.map((error) => error.message).join("\n")}`
@@ -3740,25 +3752,25 @@ var import_clipanion6 = require("clipanion");
3740
3752
 
3741
3753
  // src/cmds/init/detectEnvironment.ts
3742
3754
  var import_fs_extra8 = __toESM(require("fs-extra"));
3743
- var import_path7 = __toESM(require("path"));
3755
+ var import_path9 = __toESM(require("path"));
3744
3756
  var checkGitignoreForItem = async ({
3745
3757
  baseDir,
3746
3758
  line
3747
3759
  }) => {
3748
- const gitignoreContent = import_fs_extra8.default.readFileSync(import_path7.default.join(baseDir, ".gitignore")).toString();
3760
+ const gitignoreContent = import_fs_extra8.default.readFileSync(import_path9.default.join(baseDir, ".gitignore")).toString();
3749
3761
  return gitignoreContent.split("\n").some((item) => item === line);
3750
3762
  };
3751
3763
  var makeGeneratedFile = async (name2, generatedFileType, parentPath, opts) => {
3752
3764
  const result = {
3753
- fullPathTS: import_path7.default.join(
3765
+ fullPathTS: import_path9.default.join(
3754
3766
  parentPath,
3755
3767
  `${name2}.${opts?.typescriptSuffix || opts?.extensionOverride || "ts"}`
3756
3768
  ),
3757
- fullPathJS: import_path7.default.join(
3769
+ fullPathJS: import_path9.default.join(
3758
3770
  parentPath,
3759
3771
  `${name2}.${opts?.extensionOverride || "js"}`
3760
3772
  ),
3761
- fullPathOverride: opts?.extensionOverride ? import_path7.default.join(parentPath, `${name2}.${opts?.extensionOverride}`) : "",
3773
+ fullPathOverride: opts?.extensionOverride ? import_path9.default.join(parentPath, `${name2}.${opts?.extensionOverride}`) : "",
3762
3774
  generatedFileType,
3763
3775
  name: name2,
3764
3776
  parentPath,
@@ -3787,16 +3799,16 @@ var detectEnvironment = async ({
3787
3799
  debug = false
3788
3800
  }) => {
3789
3801
  const hasForestryConfig = await import_fs_extra8.default.pathExists(
3790
- import_path7.default.join(pathToForestryConfig, ".forestry", "settings.yml")
3802
+ import_path9.default.join(pathToForestryConfig, ".forestry", "settings.yml")
3791
3803
  );
3792
- const sampleContentPath = import_path7.default.join(
3804
+ const sampleContentPath = import_path9.default.join(
3793
3805
  baseDir,
3794
3806
  "content",
3795
3807
  "posts",
3796
3808
  "hello-world.md"
3797
3809
  );
3798
- const usingSrc = import_fs_extra8.default.pathExistsSync(import_path7.default.join(baseDir, "src")) && (import_fs_extra8.default.pathExistsSync(import_path7.default.join(baseDir, "src", "app")) || import_fs_extra8.default.pathExistsSync(import_path7.default.join(baseDir, "src", "pages")));
3799
- const tinaFolder = import_path7.default.join(baseDir, "tina");
3810
+ const usingSrc = import_fs_extra8.default.pathExistsSync(import_path9.default.join(baseDir, "src")) && (import_fs_extra8.default.pathExistsSync(import_path9.default.join(baseDir, "src", "app")) || import_fs_extra8.default.pathExistsSync(import_path9.default.join(baseDir, "src", "pages")));
3811
+ const tinaFolder = import_path9.default.join(baseDir, "tina");
3800
3812
  const tinaConfigExists = Boolean(
3801
3813
  // Does the tina folder exist?
3802
3814
  await import_fs_extra8.default.pathExists(tinaFolder) && // Does the tina folder contain a config file?
@@ -3812,12 +3824,12 @@ var detectEnvironment = async ({
3812
3824
  "next-api-handler": await makeGeneratedFile(
3813
3825
  "[...routes]",
3814
3826
  "next-api-handler",
3815
- import_path7.default.join(...pagesDir, "api", "tina")
3827
+ import_path9.default.join(...pagesDir, "api", "tina")
3816
3828
  ),
3817
3829
  "reactive-example": await makeGeneratedFile(
3818
3830
  "[filename]",
3819
3831
  "reactive-example",
3820
- import_path7.default.join(...pagesDir, "demo", "blog"),
3832
+ import_path9.default.join(...pagesDir, "demo", "blog"),
3821
3833
  {
3822
3834
  typescriptSuffix: "tsx"
3823
3835
  }
@@ -3825,13 +3837,13 @@ var detectEnvironment = async ({
3825
3837
  "users-json": await makeGeneratedFile(
3826
3838
  "index",
3827
3839
  "users-json",
3828
- import_path7.default.join(baseDir, "content", "users"),
3840
+ import_path9.default.join(baseDir, "content", "users"),
3829
3841
  { extensionOverride: "json" }
3830
3842
  ),
3831
3843
  "sample-content": await makeGeneratedFile(
3832
3844
  "hello-world",
3833
3845
  "sample-content",
3834
- import_path7.default.join(baseDir, "content", "posts"),
3846
+ import_path9.default.join(baseDir, "content", "posts"),
3835
3847
  { extensionOverride: "md" }
3836
3848
  )
3837
3849
  };
@@ -3857,13 +3869,13 @@ var detectEnvironment = async ({
3857
3869
  );
3858
3870
  }
3859
3871
  }
3860
- const hasGitIgnore = await import_fs_extra8.default.pathExists(import_path7.default.join(".gitignore"));
3872
+ const hasGitIgnore = await import_fs_extra8.default.pathExists(import_path9.default.join(".gitignore"));
3861
3873
  const hasGitIgnoreNodeModules = hasGitIgnore && await checkGitignoreForItem({ baseDir, line: "node_modules" });
3862
3874
  const hasEnvTina = hasGitIgnore && await checkGitignoreForItem({ baseDir, line: ".env.tina" });
3863
3875
  const hasGitIgnoreEnv = hasGitIgnore && await checkGitignoreForItem({ baseDir, line: ".env" });
3864
3876
  let frontMatterFormat;
3865
3877
  if (hasForestryConfig) {
3866
- const hugoConfigPath = import_path7.default.join(rootPath, "config.toml");
3878
+ const hugoConfigPath = import_path9.default.join(rootPath, "config.toml");
3867
3879
  if (await import_fs_extra8.default.pathExists(hugoConfigPath)) {
3868
3880
  const hugoConfig = await import_fs_extra8.default.readFile(hugoConfigPath, "utf8");
3869
3881
  const metaDataFormat = hugoConfig.toString().match(/metaDataFormat = "(.*)"/)?.[1];
@@ -3965,7 +3977,7 @@ var chooseGitProvider = async ({ config: config2 }) => {
3965
3977
  ${logText(
3966
3978
  "Learn more here: "
3967
3979
  )}${linkText(
3968
- "https://tina.io/docs/self-hosted/existing-site/#github-personal-access-token"
3980
+ "https://tina.io/docs/r/self-hosting-nextjs/#github-personal-access-token"
3969
3981
  )}`,
3970
3982
  initial: process.env.GITHUB_PERSONAL_ACCESS_TOKEN
3971
3983
  },
@@ -4226,7 +4238,8 @@ var askCommonSetUp = async () => {
4226
4238
  choices: [
4227
4239
  { title: "PNPM", value: "pnpm" },
4228
4240
  { title: "Yarn", value: "yarn" },
4229
- { title: "NPM", value: "npm" }
4241
+ { title: "NPM", value: "npm" },
4242
+ { title: "Bun", value: "bun" }
4230
4243
  ]
4231
4244
  }
4232
4245
  ]);
@@ -4287,7 +4300,7 @@ var askTinaSetupPrompts = async (params) => {
4287
4300
  message: `Where are public assets stored? (default: "public")
4288
4301
  ` + logText(
4289
4302
  `Not sure what value to use? Refer to our "Frameworks" doc: ${linkText(
4290
- "https://tina.io/docs/integration/frameworks/#configuring-tina-with-each-framework"
4303
+ "https://tina.io/docs/r/framework-guides-overview"
4291
4304
  )}`
4292
4305
  )
4293
4306
  });
@@ -4477,11 +4490,11 @@ var CLICommand = class {
4477
4490
  };
4478
4491
 
4479
4492
  // src/cmds/init/apply.ts
4480
- var import_path11 = __toESM(require("path"));
4493
+ var import_path13 = __toESM(require("path"));
4481
4494
 
4482
4495
  // src/cmds/forestry-migrate/index.ts
4483
4496
  var import_fs_extra10 = __toESM(require("fs-extra"));
4484
- var import_path9 = __toESM(require("path"));
4497
+ var import_path11 = __toESM(require("path"));
4485
4498
  var import_js_yaml2 = __toESM(require("js-yaml"));
4486
4499
  var import_minimatch = __toESM(require("minimatch"));
4487
4500
  var import_graphql16 = require("@tinacms/graphql");
@@ -4489,7 +4502,7 @@ var import_schema_tools3 = require("@tinacms/schema-tools");
4489
4502
 
4490
4503
  // src/cmds/forestry-migrate/util/index.ts
4491
4504
  var import_fs_extra9 = __toESM(require("fs-extra"));
4492
- var import_path8 = __toESM(require("path"));
4505
+ var import_path10 = __toESM(require("path"));
4493
4506
  var import_js_yaml = __toESM(require("js-yaml"));
4494
4507
  var import_zod = __toESM(require("zod"));
4495
4508
 
@@ -4914,7 +4927,7 @@ var transformForestryFieldsToTinaFields = ({
4914
4927
  return tinaFields;
4915
4928
  };
4916
4929
  var getFieldsFromTemplates = ({ tem, pathToForestryConfig, skipBlocks = false }) => {
4917
- const templatePath = import_path8.default.join(
4930
+ const templatePath = import_path10.default.join(
4918
4931
  pathToForestryConfig,
4919
4932
  ".forestry",
4920
4933
  "front_matter",
@@ -4989,8 +5002,8 @@ var generateAllTemplates = async ({
4989
5002
  pathToForestryConfig
4990
5003
  }) => {
4991
5004
  const allTemplates = (await import_fs_extra10.default.readdir(
4992
- import_path9.default.join(pathToForestryConfig, ".forestry", "front_matter", "templates")
4993
- )).map((tem) => import_path9.default.basename(tem, ".yml"));
5005
+ import_path11.default.join(pathToForestryConfig, ".forestry", "front_matter", "templates")
5006
+ )).map((tem) => import_path11.default.basename(tem, ".yml"));
4994
5007
  const templateMap = /* @__PURE__ */ new Map();
4995
5008
  const proms = allTemplates.map(async (tem) => {
4996
5009
  try {
@@ -5135,9 +5148,9 @@ var generateCollectionFromForestrySection = (args) => {
5135
5148
  return c;
5136
5149
  } else if (section.type === "document") {
5137
5150
  const filePath = section.path;
5138
- const extname = import_path9.default.extname(filePath);
5139
- const fileName = import_path9.default.basename(filePath, extname);
5140
- const dir = import_path9.default.dirname(filePath);
5151
+ const extname = import_path11.default.extname(filePath);
5152
+ const fileName = import_path11.default.basename(filePath, extname);
5153
+ const dir = import_path11.default.dirname(filePath);
5141
5154
  const ext = checkExt(extname);
5142
5155
  if (ext) {
5143
5156
  const fields = [];
@@ -5157,7 +5170,7 @@ var generateCollectionFromForestrySection = (args) => {
5157
5170
  name: "dummy",
5158
5171
  label: "Dummy field",
5159
5172
  type: "string",
5160
- description: "This is a dummy field, please replace it with the fields you want to edit. See https://tina.io/docs/schema/ for more info"
5173
+ description: "This is a dummy field, please replace it with the fields you want to edit. See https://tina.io/docs/r/content-modelling-collections/ for more info"
5161
5174
  });
5162
5175
  logger.warn(
5163
5176
  warnText(
@@ -5200,7 +5213,7 @@ var generateCollections = async ({
5200
5213
  usingTypescript
5201
5214
  });
5202
5215
  const forestryConfig = await import_fs_extra10.default.readFile(
5203
- import_path9.default.join(pathToForestryConfig, ".forestry", "settings.yml")
5216
+ import_path11.default.join(pathToForestryConfig, ".forestry", "settings.yml")
5204
5217
  );
5205
5218
  rewriteTemplateKeysInDocs({
5206
5219
  templateMap,
@@ -5230,11 +5243,11 @@ var rewriteTemplateKeysInDocs = (args) => {
5230
5243
  const { templateObj } = templateMap.get(templateKey);
5231
5244
  templateObj?.pages?.forEach((page) => {
5232
5245
  try {
5233
- const filePath = import_path9.default.join(page);
5246
+ const filePath = import_path11.default.join(page);
5234
5247
  if (import_fs_extra10.default.lstatSync(filePath).isDirectory()) {
5235
5248
  return;
5236
5249
  }
5237
- const extname = import_path9.default.extname(filePath);
5250
+ const extname = import_path11.default.extname(filePath);
5238
5251
  const fileContent = import_fs_extra10.default.readFileSync(filePath).toString();
5239
5252
  const content = (0, import_graphql16.parseFile)(
5240
5253
  fileContent,
@@ -5266,7 +5279,7 @@ var import_fs_extra13 = __toESM(require("fs-extra"));
5266
5279
  // src/next/commands/codemod-command/index.ts
5267
5280
  var import_clipanion5 = require("clipanion");
5268
5281
  var import_fs_extra11 = __toESM(require("fs-extra"));
5269
- var import_path10 = __toESM(require("path"));
5282
+ var import_path12 = __toESM(require("path"));
5270
5283
  var CodemodCommand = class extends import_clipanion5.Command {
5271
5284
  constructor() {
5272
5285
  super(...arguments);
@@ -5314,7 +5327,7 @@ var moveTinaFolder = async (rootPath = process.cwd()) => {
5314
5327
  logger.error(e.message);
5315
5328
  process.exit(1);
5316
5329
  }
5317
- const tinaDestination = import_path10.default.join(configManager.rootPath, "tina");
5330
+ const tinaDestination = import_path12.default.join(configManager.rootPath, "tina");
5318
5331
  if (await import_fs_extra11.default.existsSync(tinaDestination)) {
5319
5332
  logger.info(
5320
5333
  `Folder already exists at ${tinaDestination}. Either delete this folder to complete the codemod, or ensure you have properly copied your config from the ".tina" folder.`
@@ -5329,7 +5342,7 @@ var moveTinaFolder = async (rootPath = process.cwd()) => {
5329
5342
  };
5330
5343
  var writeGitignore = async (rootPath) => {
5331
5344
  await import_fs_extra11.default.outputFileSync(
5332
- import_path10.default.join(rootPath, "tina", ".gitignore"),
5345
+ import_path12.default.join(rootPath, "tina", ".gitignore"),
5333
5346
  "__generated__"
5334
5347
  );
5335
5348
  };
@@ -5382,7 +5395,7 @@ const BlogPage = (props) => {
5382
5395
  <div className='bg-green-100 text-center'>
5383
5396
  Lost and looking for a place to start?
5384
5397
  <a
5385
- href='https://tina.io/guides/tina-cloud/getting-started/overview/'
5398
+ href='https://tina.io/docs/r/beginner-series'
5386
5399
  className='text-blue-500 underline'
5387
5400
  >
5388
5401
  {' '}
@@ -5664,7 +5677,7 @@ import { LocalAuthProvider } from "tinacms";`;
5664
5677
  publicFolder: "${args.publicFolder}",
5665
5678
  },
5666
5679
  },
5667
- // See docs on content modeling for more info on how to setup new content models: https://tina.io/docs/schema/
5680
+ // See docs on content modeling for more info on how to setup new content models: https://tina.io/docs/r/content-modelling-collections/
5668
5681
  schema: {
5669
5682
  collections: ${generateCollectionString(args)},
5670
5683
  },
@@ -6165,8 +6178,8 @@ async function apply({
6165
6178
  await addConfigFile({
6166
6179
  configArgs: {
6167
6180
  config: config2,
6168
- publicFolder: import_path11.default.join(
6169
- import_path11.default.relative(process.cwd(), pathToForestryConfig),
6181
+ publicFolder: import_path13.default.join(
6182
+ import_path13.default.relative(process.cwd(), pathToForestryConfig),
6170
6183
  config2.publicFolder
6171
6184
  ),
6172
6185
  collections,
@@ -6239,18 +6252,18 @@ var createPackageJSON = async () => {
6239
6252
  };
6240
6253
  var createGitignore = async ({ baseDir }) => {
6241
6254
  logger.info(logText("No .gitignore found, creating one"));
6242
- import_fs_extra13.default.outputFileSync(import_path11.default.join(baseDir, ".gitignore"), "node_modules");
6255
+ import_fs_extra13.default.outputFileSync(import_path13.default.join(baseDir, ".gitignore"), "node_modules");
6243
6256
  };
6244
6257
  var updateGitIgnore = async ({
6245
6258
  baseDir,
6246
6259
  items
6247
6260
  }) => {
6248
6261
  logger.info(logText(`Adding ${items.join(",")} to .gitignore`));
6249
- const gitignoreContent = import_fs_extra13.default.readFileSync(import_path11.default.join(baseDir, ".gitignore")).toString();
6262
+ const gitignoreContent = import_fs_extra13.default.readFileSync(import_path13.default.join(baseDir, ".gitignore")).toString();
6250
6263
  const newGitignoreContent = [...gitignoreContent.split("\n"), ...items].join(
6251
6264
  "\n"
6252
6265
  );
6253
- await import_fs_extra13.default.writeFile(import_path11.default.join(baseDir, ".gitignore"), newGitignoreContent);
6266
+ await import_fs_extra13.default.writeFile(import_path13.default.join(baseDir, ".gitignore"), newGitignoreContent);
6254
6267
  };
6255
6268
  var addDependencies = async (config2, env, params) => {
6256
6269
  const { packageManager } = config2;
@@ -6291,7 +6304,8 @@ var addDependencies = async (config2, env, params) => {
6291
6304
  let packageManagers = {
6292
6305
  pnpm: process.env.USE_WORKSPACE ? `pnpm add ${deps.join(" ")} --workspace` : `pnpm add ${deps.join(" ")}`,
6293
6306
  npm: `npm install ${deps.join(" ")}`,
6294
- yarn: `yarn add ${deps.join(" ")}`
6307
+ yarn: `yarn add ${deps.join(" ")}`,
6308
+ bun: `bun add ${deps.join(" ")}`
6295
6309
  };
6296
6310
  if (packageManagers[packageManager] && deps.length > 0) {
6297
6311
  logger.info(logText("Adding dependencies, this might take a moment..."));
@@ -6302,7 +6316,8 @@ var addDependencies = async (config2, env, params) => {
6302
6316
  packageManagers = {
6303
6317
  pnpm: process.env.USE_WORKSPACE ? `pnpm add -D ${devDeps.join(" ")} --workspace` : `pnpm add -D ${devDeps.join(" ")}`,
6304
6318
  npm: `npm install -D ${devDeps.join(" ")}`,
6305
- yarn: `yarn add -D ${devDeps.join(" ")}`
6319
+ yarn: `yarn add -D ${devDeps.join(" ")}`,
6320
+ bun: `bun add -D ${devDeps.join(" ")}`
6306
6321
  };
6307
6322
  if (packageManagers[packageManager]) {
6308
6323
  logger.info(
@@ -6319,22 +6334,22 @@ var writeGeneratedFile = async ({
6319
6334
  content,
6320
6335
  typescript
6321
6336
  }) => {
6322
- const { exists, path: path14, parentPath } = generatedFile.resolve(typescript);
6337
+ const { exists, path: path15, parentPath } = generatedFile.resolve(typescript);
6323
6338
  if (exists) {
6324
6339
  if (overwrite) {
6325
- logger.info(`Overwriting file at ${path14}... \u2705`);
6326
- import_fs_extra13.default.outputFileSync(path14, content);
6340
+ logger.info(`Overwriting file at ${path15}... \u2705`);
6341
+ import_fs_extra13.default.outputFileSync(path15, content);
6327
6342
  } else {
6328
- logger.info(`Not overwriting file at ${path14}.`);
6343
+ logger.info(`Not overwriting file at ${path15}.`);
6329
6344
  logger.info(
6330
- logText(`Please add the following to ${path14}:
6345
+ logText(`Please add the following to ${path15}:
6331
6346
  ${indentText(content)}}`)
6332
6347
  );
6333
6348
  }
6334
6349
  } else {
6335
- logger.info(`Adding file at ${path14}... \u2705`);
6350
+ logger.info(`Adding file at ${path15}... \u2705`);
6336
6351
  await import_fs_extra13.default.ensureDir(parentPath);
6337
- import_fs_extra13.default.outputFileSync(path14, content);
6352
+ import_fs_extra13.default.outputFileSync(path15, content);
6338
6353
  }
6339
6354
  };
6340
6355
  var addConfigFile = async ({
@@ -6412,7 +6427,7 @@ var addContentFile = async ({
6412
6427
  return () => ({
6413
6428
  exists: env.sampleContentExists,
6414
6429
  path: env.sampleContentPath,
6415
- parentPath: import_path11.default.dirname(env.sampleContentPath)
6430
+ parentPath: import_path13.default.dirname(env.sampleContentPath)
6416
6431
  });
6417
6432
  }
6418
6433
  },
@@ -6435,7 +6450,7 @@ ${titleText(" TinaCMS ")} backend initialized!`));
6435
6450
  return `${x.key}=${x.value || "***"}`;
6436
6451
  }).join("\n") + `
6437
6452
  TINA_PUBLIC_IS_LOCAL=true`;
6438
- const envFile = import_path11.default.join(process.cwd(), ".env");
6453
+ const envFile = import_path13.default.join(process.cwd(), ".env");
6439
6454
  if (!import_fs_extra13.default.existsSync(envFile)) {
6440
6455
  logger.info(`Adding .env file to your project... \u2705`);
6441
6456
  import_fs_extra13.default.writeFileSync(envFile, envFileText);
@@ -6481,7 +6496,8 @@ var other = ({ packageManager }) => {
6481
6496
  pnpm: `pnpm`,
6482
6497
  npm: `npx`,
6483
6498
  // npx is the way to run executables that aren't in your "scripts"
6484
- yarn: `yarn`
6499
+ yarn: `yarn`,
6500
+ bun: `bun run`
6485
6501
  };
6486
6502
  return `${packageManagers[packageManager]} tinacms dev -c "<your dev command>"`;
6487
6503
  };
@@ -6494,7 +6510,8 @@ var frameworkDevCmds = {
6494
6510
  pnpm: `pnpm`,
6495
6511
  npm: `npm run`,
6496
6512
  // npx is the way to run executables that aren't in your "scripts"
6497
- yarn: `yarn`
6513
+ yarn: `yarn`,
6514
+ bun: `bun run`
6498
6515
  };
6499
6516
  return `${packageManagers[packageManager]} dev`;
6500
6517
  }
@@ -6507,7 +6524,7 @@ var addReactiveFile = {
6507
6524
  baseDir,
6508
6525
  dataLayer
6509
6526
  }) => {
6510
- const packageJsonPath = import_path11.default.join(baseDir, "package.json");
6527
+ const packageJsonPath = import_path13.default.join(baseDir, "package.json");
6511
6528
  await writeGeneratedFile({
6512
6529
  generatedFile,
6513
6530
  typescript: config2.typescript,
@@ -2,4 +2,4 @@
2
2
 
3
3
  */
4
4
  import http from 'node:http';
5
- export declare const gqlServer: (database: any, verbose: boolean) => Promise<http.Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>>;
5
+ export declare const gqlServer: (database: any, verbose: boolean) => Promise<http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>>;
@@ -0,0 +1,3 @@
1
+ /** Removes trailing slash from path. Separator to remove is chosen based on
2
+ * operating system. */
3
+ export declare function stripNativeTrailingSlash(p: string): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tinacms/cli",
3
- "version": "0.0.0-ce96a8d-20250829163200",
3
+ "version": "0.0.0-ced9076-20250922063813",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
6
6
  "files": [
@@ -37,6 +37,7 @@
37
37
  "@types/listr": "0.14.2",
38
38
  "@types/log4js": "^2.3.5",
39
39
  "@types/multer": "^1.4.12",
40
+ "@types/node": "^22.13.1",
40
41
  "@types/progress": "^2.0.7",
41
42
  "@types/prompts": "^2.4.9",
42
43
  "@types/yup": "^0.32.0",
@@ -89,12 +90,12 @@
89
90
  "vite": "^4.5.9",
90
91
  "yup": "^1.6.1",
91
92
  "zod": "^3.24.2",
92
- "@tinacms/app": "0.0.0-ce96a8d-20250829163200",
93
- "@tinacms/metrics": "1.1.0",
93
+ "@tinacms/app": "0.0.0-ced9076-20250922063813",
94
94
  "@tinacms/graphql": "1.6.1",
95
+ "@tinacms/metrics": "1.1.0",
95
96
  "@tinacms/schema-tools": "1.9.1",
96
97
  "@tinacms/search": "1.1.1",
97
- "tinacms": "0.0.0-ce96a8d-20250829163200"
98
+ "tinacms": "0.0.0-ced9076-20250922063813"
98
99
  },
99
100
  "publishConfig": {
100
101
  "registry": "https://registry.npmjs.org"