@tinacms/cli 0.0.0-e024aec-20250526035050 → 0.0.0-e0bbd2e-20251203224419

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
@@ -1,53 +1,20 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name2 in all)
9
- __defProp(target, name2, { get: all[name2], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
-
29
1
  // src/index.ts
30
- var index_exports = {};
31
- __export(index_exports, {
32
- default: () => index_default
33
- });
34
- module.exports = __toCommonJS(index_exports);
35
- var import_clipanion8 = require("clipanion");
2
+ import { Cli, Builtins } from "clipanion";
36
3
 
37
4
  // package.json
38
- var version = "1.9.7";
5
+ var version = "2.0.0";
39
6
 
40
7
  // src/next/commands/dev-command/index.ts
41
- var import_path5 = __toESM(require("path"));
42
- var import_graphql10 = require("@tinacms/graphql");
43
- var import_search = require("@tinacms/search");
44
- var import_async_lock = __toESM(require("async-lock"));
45
- var import_chokidar = __toESM(require("chokidar"));
46
- var import_clipanion2 = require("clipanion");
47
- var import_fs_extra6 = __toESM(require("fs-extra"));
8
+ import path8 from "path";
9
+ import { FilesystemBridge as FilesystemBridge2, buildSchema } from "@tinacms/graphql";
10
+ import { LocalSearchIndexClient, SearchIndexer } from "@tinacms/search";
11
+ import AsyncLock from "async-lock";
12
+ import chokidar from "chokidar";
13
+ import { Command as Command2, Option as Option2 } from "clipanion";
14
+ import fs7 from "fs-extra";
48
15
 
49
16
  // src/logger/index.ts
50
- var import_chalk = __toESM(require("chalk"));
17
+ import chalk from "chalk";
51
18
 
52
19
  // src/logger/is-unicode-supported.ts
53
20
  function isUnicodeSupported() {
@@ -61,9 +28,9 @@ function isUnicodeSupported() {
61
28
  }
62
29
 
63
30
  // src/logger/index.ts
64
- var import_log4js = __toESM(require("log4js"));
65
- var logger = import_log4js.default.getLogger();
66
- import_log4js.default.configure({
31
+ import log4js from "log4js";
32
+ var logger = log4js.getLogger();
33
+ log4js.configure({
67
34
  appenders: {
68
35
  out: { type: "stdout", layout: { type: "messagePassThrough" } }
69
36
  },
@@ -88,18 +55,18 @@ ${message}
88
55
  return ln.length > sum ? ln.length : sum;
89
56
  }, 0) + 2;
90
57
  const msg = lines.map(
91
- (ln) => `${import_chalk.default.gray(bar)} ${import_chalk.default.white(ln)}${" ".repeat(
58
+ (ln) => `${chalk.gray(bar)} ${chalk.white(ln)}${" ".repeat(
92
59
  len - strip(ln).length
93
- )}${import_chalk.default.gray(bar)}`
60
+ )}${chalk.gray(bar)}`
94
61
  ).join("\n");
95
62
  const underscoreLen = len - title.length - 1 > 0 ? len - title.length - 1 : 0;
96
63
  process.stdout.write(
97
- `${import_chalk.default.gray(bar)}
98
- ${import_chalk.default.green("\u25CB")} ${import_chalk.default.reset(
64
+ `${chalk.gray(bar)}
65
+ ${chalk.green("\u25CB")} ${chalk.reset(
99
66
  title
100
- )} ${import_chalk.default.gray("\u2500".repeat(underscoreLen) + "\u256E")}
67
+ )} ${chalk.gray("\u2500".repeat(underscoreLen) + "\u256E")}
101
68
  ${msg}
102
- ${import_chalk.default.gray(
69
+ ${chalk.gray(
103
70
  "\u251C" + "\u2500".repeat(len + 2) + "\u256F"
104
71
  )}
105
72
  `
@@ -116,11 +83,11 @@ var summary = (content) => {
116
83
  });
117
84
  });
118
85
  content.items.forEach((item) => {
119
- outString.push(`${item.emoji} ${import_chalk.default.cyan(item.heading)}`);
86
+ outString.push(`${item.emoji} ${chalk.cyan(item.heading)}`);
120
87
  item.subItems.forEach((subItem) => {
121
88
  const spaces = longestKey - subItem.key.length + 4;
122
89
  outString.push(
123
- ` ${subItem.key}:${[...Array(spaces)].join(" ")}${import_chalk.default.cyan(
90
+ ` ${subItem.key}:${[...Array(spaces)].join(" ")}${chalk.cyan(
124
91
  subItem.value
125
92
  )}`
126
93
  );
@@ -158,12 +125,12 @@ var S_WARN = s("\u25B2", "!");
158
125
  var S_ERROR = s("\u25A0", "x");
159
126
 
160
127
  // src/utils/spinner.ts
161
- var import_cli_spinner = require("cli-spinner");
128
+ import { Spinner } from "cli-spinner";
162
129
  async function localSpin({
163
130
  waitFor,
164
131
  text
165
132
  }) {
166
- const spinner = new import_cli_spinner.Spinner({
133
+ const spinner = new Spinner({
167
134
  text: `${text} %s`,
168
135
  stream: process.stderr,
169
136
  onTick: function(msg) {
@@ -194,32 +161,32 @@ function spin({
194
161
  }
195
162
 
196
163
  // src/utils/theme.ts
197
- var import_chalk2 = __toESM(require("chalk"));
198
- var successText = import_chalk2.default.bold.green;
199
- var focusText = import_chalk2.default.bold;
200
- var dangerText = import_chalk2.default.bold.red;
201
- var neutralText = import_chalk2.default.bold.cyan;
202
- var linkText = import_chalk2.default.bold.cyan;
203
- var labelText = import_chalk2.default.bold;
204
- var cmdText = import_chalk2.default.inverse;
164
+ import chalk2 from "chalk";
165
+ var successText = chalk2.bold.green;
166
+ var focusText = chalk2.bold;
167
+ var dangerText = chalk2.bold.red;
168
+ var neutralText = chalk2.bold.cyan;
169
+ var linkText = chalk2.bold.cyan;
170
+ var labelText = chalk2.bold;
171
+ var cmdText = chalk2.inverse;
205
172
  var indentedCmd = (str) => {
206
173
  return ` \u2503 ` + str;
207
174
  };
208
175
  var indentText = (str) => {
209
176
  return String(str).split("\n").map((line) => ` ${line}`).join("\n");
210
177
  };
211
- var logText = import_chalk2.default.italic.gray;
212
- var warnText = import_chalk2.default.yellowBright.bgBlack;
213
- var titleText = import_chalk2.default.bgHex("d2f1f8").hex("ec4816");
214
- var CONFIRMATION_TEXT = import_chalk2.default.dim("enter to confirm");
178
+ var logText = chalk2.italic.gray;
179
+ var warnText = chalk2.yellowBright.bgBlack;
180
+ var titleText = chalk2.bgHex("d2f1f8").hex("ec4816");
181
+ var CONFIRMATION_TEXT = chalk2.dim("enter to confirm");
215
182
 
216
183
  // src/next/codegen/index.ts
217
- var import_fs_extra = __toESM(require("fs-extra"));
218
- var import_path = __toESM(require("path"));
219
- var import_graphql5 = require("graphql");
184
+ import fs from "fs-extra";
185
+ import path from "path";
186
+ import { buildASTSchema, printSchema as printSchema2 } from "graphql";
220
187
 
221
188
  // src/next/codegen/codegen/index.ts
222
- var import_graphql4 = require("graphql");
189
+ import { parse, printSchema } from "graphql";
223
190
 
224
191
  // src/next/codegen/codegen/plugin.ts
225
192
  var AddGeneratedClientFunc = (apiURL) => {
@@ -288,37 +255,44 @@ var AddGeneratedClient = (apiURL) => ({
288
255
  });
289
256
 
290
257
  // src/next/codegen/codegen/index.ts
291
- var import_graphql_file_loader = require("@graphql-tools/graphql-file-loader");
292
- var import_core = require("@graphql-codegen/core");
293
- var import_load = require("@graphql-tools/load");
294
- var import_typescript_operations = require("@graphql-codegen/typescript-operations");
295
- var import_typescript = require("@graphql-codegen/typescript");
258
+ import { GraphQLFileLoader } from "@graphql-tools/graphql-file-loader";
259
+ import { codegen } from "@graphql-codegen/core";
260
+ import { loadDocuments } from "@graphql-tools/load";
261
+ import { plugin as typescriptOperationsPlugin } from "@graphql-codegen/typescript-operations";
262
+ import { plugin as typescriptPlugin } from "@graphql-codegen/typescript";
296
263
 
297
264
  // src/next/codegen/codegen/sdkPlugin/index.ts
298
- var import_graphql2 = require("graphql");
299
- var import_graphql3 = require("graphql");
265
+ import { visit } from "graphql";
266
+ import {
267
+ concatAST,
268
+ Kind as Kind2
269
+ } from "graphql";
300
270
 
301
271
  // src/next/codegen/codegen/sdkPlugin/visitor.ts
302
- var import_visitor_plugin_common = require("@graphql-codegen/visitor-plugin-common");
303
- var import_auto_bind = __toESM(require("auto-bind"));
304
- var import_graphql = require("graphql");
305
- var GenericSdkVisitor = class extends import_visitor_plugin_common.ClientSideBaseVisitor {
272
+ import {
273
+ ClientSideBaseVisitor,
274
+ DocumentMode,
275
+ indentMultiline
276
+ } from "@graphql-codegen/visitor-plugin-common";
277
+ import autoBind from "auto-bind";
278
+ import { Kind, print } from "graphql";
279
+ var GenericSdkVisitor = class extends ClientSideBaseVisitor {
280
+ _operationsToInclude = [];
306
281
  constructor(schema, fragments, rawConfig) {
307
282
  super(schema, fragments, rawConfig, {
308
283
  usingObservableFrom: rawConfig.usingObservableFrom
309
284
  });
310
- this._operationsToInclude = [];
311
- (0, import_auto_bind.default)(this);
285
+ autoBind(this);
312
286
  if (this.config.usingObservableFrom) {
313
287
  this._additionalImports.push(this.config.usingObservableFrom);
314
288
  }
315
- if (this.config.documentMode !== import_visitor_plugin_common.DocumentMode.string) {
289
+ if (this.config.documentMode !== DocumentMode.string) {
316
290
  }
317
291
  }
318
292
  buildOperation(node, documentVariableName, operationType, operationResultType, operationVariablesTypes) {
319
293
  if (node.name == null) {
320
294
  throw new Error(
321
- "Plugin 'generic-sdk' cannot generate SDK for unnamed operation.\n\n" + (0, import_graphql.print)(node)
295
+ "Plugin 'generic-sdk' cannot generate SDK for unnamed operation.\n\n" + print(node)
322
296
  );
323
297
  } else {
324
298
  this._operationsToInclude.push({
@@ -336,14 +310,14 @@ var GenericSdkVisitor = class extends import_visitor_plugin_common.ClientSideBas
336
310
  const usingObservable = !!this.config.usingObservableFrom;
337
311
  const allPossibleActions = this._operationsToInclude.map((o) => {
338
312
  const optionalVariables = !o.node.variableDefinitions || o.node.variableDefinitions.length === 0 || o.node.variableDefinitions.every(
339
- (v) => v.type.kind !== import_graphql.Kind.NON_NULL_TYPE || v.defaultValue
313
+ (v) => v.type.kind !== Kind.NON_NULL_TYPE || v.defaultValue
340
314
  );
341
315
  const returnType = usingObservable && o.operationType === "Subscription" ? "Observable" : "Promise";
342
316
  return `${o.node.name.value}(variables${optionalVariables ? "?" : ""}: ${o.operationVariablesTypes}, options?: C): ${returnType}<${o.operationResultType}> {
343
317
  return requester<${o.operationResultType}, ${o.operationVariablesTypes}>(${o.documentVariableName}, variables, options);
344
318
  }`;
345
- }).map((s2) => (0, import_visitor_plugin_common.indentMultiline)(s2, 2));
346
- return `export type Requester<C= {}> = <R, V>(doc: ${this.config.documentMode === import_visitor_plugin_common.DocumentMode.string ? "string" : "DocumentNode"}, vars?: V, options?: C) => ${usingObservable ? "Promise<R> & Observable<R>" : "Promise<R>"}
319
+ }).map((s2) => indentMultiline(s2, 2));
320
+ return `export type Requester<C= {}> = <R, V>(doc: ${this.config.documentMode === DocumentMode.string ? "string" : "DocumentNode"}, vars?: V, options?: C) => ${usingObservable ? "Promise<R> & Observable<R>" : "Promise<R>"}
347
321
  export function getSdk<C>(requester: Requester<C>) {
348
322
  return {
349
323
  ${allPossibleActions.join(",\n")}
@@ -355,14 +329,14 @@ var GenericSdkVisitor = class extends import_visitor_plugin_common.ClientSideBas
355
329
 
356
330
  // src/next/codegen/codegen/sdkPlugin/index.ts
357
331
  var plugin = (schema, documents, config2) => {
358
- const allAst = (0, import_graphql3.concatAST)(
332
+ const allAst = concatAST(
359
333
  documents.reduce((prev, v) => {
360
334
  return [...prev, v.document];
361
335
  }, [])
362
336
  );
363
337
  const allFragments = [
364
338
  ...allAst.definitions.filter(
365
- (d) => d.kind === import_graphql3.Kind.FRAGMENT_DEFINITION
339
+ (d) => d.kind === Kind2.FRAGMENT_DEFINITION
366
340
  ).map((fragmentDef) => ({
367
341
  node: fragmentDef,
368
342
  name: fragmentDef.name.value,
@@ -372,7 +346,7 @@ var plugin = (schema, documents, config2) => {
372
346
  ...config2.externalFragments || []
373
347
  ];
374
348
  const visitor = new GenericSdkVisitor(schema, allFragments, config2);
375
- const visitorResult = (0, import_graphql2.visit)(allAst, { leave: visitor });
349
+ const visitorResult = visit(allAst, { leave: visitor });
376
350
  return {
377
351
  // We will take care of imports
378
352
  // prepend: visitor.getImports(),
@@ -390,10 +364,10 @@ var generateTypes = async (schema, queryPathGlob = process.cwd(), fragDocPath =
390
364
  let fragDocs = [];
391
365
  docs = await loadGraphQLDocuments(queryPathGlob);
392
366
  fragDocs = await loadGraphQLDocuments(fragDocPath);
393
- const res = await (0, import_core.codegen)({
367
+ const res = await codegen({
394
368
  // Filename is not used. This is because the typescript plugin returns a string instead of writing to a file.
395
369
  filename: process.cwd(),
396
- schema: (0, import_graphql4.parse)((0, import_graphql4.printSchema)(schema)),
370
+ schema: parse(printSchema(schema)),
397
371
  documents: [...docs, ...fragDocs],
398
372
  config: {},
399
373
  plugins: [
@@ -406,10 +380,10 @@ var generateTypes = async (schema, queryPathGlob = process.cwd(), fragDocPath =
406
380
  ],
407
381
  pluginMap: {
408
382
  typescript: {
409
- plugin: import_typescript.plugin
383
+ plugin: typescriptPlugin
410
384
  },
411
385
  typescriptOperations: {
412
- plugin: import_typescript_operations.plugin
386
+ plugin: typescriptOperationsPlugin
413
387
  },
414
388
  typescriptSdk: {
415
389
  plugin
@@ -422,8 +396,8 @@ var generateTypes = async (schema, queryPathGlob = process.cwd(), fragDocPath =
422
396
  var loadGraphQLDocuments = async (globPath) => {
423
397
  let result = [];
424
398
  try {
425
- result = await (0, import_load.loadDocuments)(globPath, {
426
- loaders: [new import_graphql_file_loader.GraphQLFileLoader()]
399
+ result = await loadDocuments(globPath, {
400
+ loaders: [new GraphQLFileLoader()]
427
401
  });
428
402
  } catch (e) {
429
403
  if (
@@ -440,11 +414,27 @@ var loadGraphQLDocuments = async (globPath) => {
440
414
  };
441
415
 
442
416
  // src/next/codegen/index.ts
443
- var import_esbuild = require("esbuild");
444
- var import_graphql6 = require("@tinacms/graphql");
445
- var import_normalize_path = __toESM(require("normalize-path"));
417
+ import { transform } from "esbuild";
418
+ import { mapUserFields } from "@tinacms/graphql";
419
+ import normalizePath from "normalize-path";
446
420
  var TINA_HOST = "content.tinajs.io";
447
421
  var Codegen = class {
422
+ configManager;
423
+ port;
424
+ schema;
425
+ queryDoc;
426
+ fragDoc;
427
+ isLocal;
428
+ // The API url used in the client
429
+ apiURL;
430
+ // This is always the local URL.
431
+ localUrl;
432
+ // production url
433
+ productionUrl;
434
+ graphqlSchemaDoc;
435
+ tinaSchema;
436
+ lookup;
437
+ noClientBuildCache;
448
438
  constructor({
449
439
  configManager,
450
440
  port,
@@ -460,7 +450,7 @@ var Codegen = class {
460
450
  this.graphqlSchemaDoc = graphqlSchemaDoc;
461
451
  this.configManager = configManager;
462
452
  this.port = port;
463
- this.schema = (0, import_graphql5.buildASTSchema)(graphqlSchemaDoc);
453
+ this.schema = buildASTSchema(graphqlSchemaDoc);
464
454
  this.tinaSchema = tinaSchema;
465
455
  this.queryDoc = queryDoc;
466
456
  this.fragDoc = fragDoc;
@@ -468,19 +458,19 @@ var Codegen = class {
468
458
  this.noClientBuildCache = noClientBuildCache;
469
459
  }
470
460
  async writeConfigFile(fileName, data) {
471
- const filePath = import_path.default.join(
461
+ const filePath = path.join(
472
462
  this.configManager.generatedFolderPath,
473
463
  fileName
474
464
  );
475
- await import_fs_extra.default.ensureFile(filePath);
476
- await import_fs_extra.default.outputFile(filePath, data);
465
+ await fs.ensureFile(filePath);
466
+ await fs.outputFile(filePath, data);
477
467
  if (this.configManager.hasSeparateContentRoot()) {
478
- const filePath2 = import_path.default.join(
468
+ const filePath2 = path.join(
479
469
  this.configManager.generatedFolderPathContentRepo,
480
470
  fileName
481
471
  );
482
- await import_fs_extra.default.ensureFile(filePath2);
483
- await import_fs_extra.default.outputFile(filePath2, data);
472
+ await fs.ensureFile(filePath2);
473
+ await fs.outputFile(filePath2, data);
484
474
  }
485
475
  }
486
476
  async removeGeneratedFilesIfExists() {
@@ -512,11 +502,11 @@ var Codegen = class {
512
502
  await this.removeGeneratedFilesIfExists();
513
503
  return apiURL;
514
504
  }
515
- await import_fs_extra.default.outputFile(
505
+ await fs.outputFile(
516
506
  this.configManager.generatedQueriesFilePath,
517
507
  this.queryDoc
518
508
  );
519
- await import_fs_extra.default.outputFile(
509
+ await fs.outputFile(
520
510
  this.configManager.generatedFragmentsFilePath,
521
511
  this.fragDoc
522
512
  );
@@ -524,21 +514,21 @@ var Codegen = class {
524
514
  const { clientString } = await this.genClient();
525
515
  const databaseClientString = this.configManager.hasSelfHostedConfig() ? await this.genDatabaseClient() : "";
526
516
  const { codeString, schemaString } = await this.genTypes();
527
- await import_fs_extra.default.outputFile(
517
+ await fs.outputFile(
528
518
  this.configManager.generatedGraphQLGQLPath,
529
519
  schemaString
530
520
  );
531
521
  if (this.configManager.isUsingTs()) {
532
- await import_fs_extra.default.outputFile(
522
+ await fs.outputFile(
533
523
  this.configManager.generatedTypesTSFilePath,
534
524
  codeString
535
525
  );
536
- await import_fs_extra.default.outputFile(
526
+ await fs.outputFile(
537
527
  this.configManager.generatedClientTSFilePath,
538
528
  clientString
539
529
  );
540
530
  if (this.configManager.hasSelfHostedConfig()) {
541
- await import_fs_extra.default.outputFile(
531
+ await fs.outputFile(
542
532
  this.configManager.generatedDatabaseClientTSFilePath,
543
533
  databaseClientString
544
534
  );
@@ -547,35 +537,35 @@ var Codegen = class {
547
537
  await unlinkIfExists(this.configManager.generatedTypesDFilePath);
548
538
  await unlinkIfExists(this.configManager.generatedTypesJSFilePath);
549
539
  } else {
550
- await import_fs_extra.default.outputFile(
540
+ await fs.outputFile(
551
541
  this.configManager.generatedTypesDFilePath,
552
542
  codeString
553
543
  );
554
- const jsTypes = await (0, import_esbuild.transform)(codeString, { loader: "ts" });
555
- await import_fs_extra.default.outputFile(
544
+ const jsTypes = await transform(codeString, { loader: "ts" });
545
+ await fs.outputFile(
556
546
  this.configManager.generatedTypesJSFilePath,
557
547
  jsTypes.code
558
548
  );
559
- await import_fs_extra.default.outputFile(
549
+ await fs.outputFile(
560
550
  this.configManager.generatedClientDFilePath,
561
551
  clientString
562
552
  );
563
- const jsClient = await (0, import_esbuild.transform)(clientString, { loader: "ts" });
564
- await import_fs_extra.default.outputFile(
553
+ const jsClient = await transform(clientString, { loader: "ts" });
554
+ await fs.outputFile(
565
555
  this.configManager.generatedClientJSFilePath,
566
556
  jsClient.code
567
557
  );
568
558
  await unlinkIfExists(this.configManager.generatedTypesTSFilePath);
569
559
  await unlinkIfExists(this.configManager.generatedClientTSFilePath);
570
560
  if (this.configManager.hasSelfHostedConfig()) {
571
- const jsDatabaseClient = await (0, import_esbuild.transform)(databaseClientString, {
561
+ const jsDatabaseClient = await transform(databaseClientString, {
572
562
  loader: "ts"
573
563
  });
574
- await import_fs_extra.default.outputFile(
564
+ await fs.outputFile(
575
565
  this.configManager.generatedDatabaseClientJSFilePath,
576
566
  jsDatabaseClient.code
577
567
  );
578
- await import_fs_extra.default.outputFile(
568
+ await fs.outputFile(
579
569
  this.configManager.generatedDatabaseClientDFilePath,
580
570
  databaseClientString
581
571
  );
@@ -601,7 +591,7 @@ var Codegen = class {
601
591
  throw new Error(
602
592
  `Client not configured properly. Missing ${missing.join(
603
593
  ", "
604
- )}. Please visit https://tina.io/docs/tina-cloud/overview for more information`
594
+ )}. Please visit https://tina.io/docs/r/what-is-tinacloud for more information`
605
595
  );
606
596
  }
607
597
  let localUrl = `http://localhost:${this.port}/graphql`;
@@ -623,7 +613,7 @@ var Codegen = class {
623
613
  const authCollection = this.tinaSchema.getCollections().find((c) => c.isAuthCollection);
624
614
  let authFields = [];
625
615
  if (authCollection) {
626
- const usersFields = (0, import_graphql6.mapUserFields)(authCollection, []);
616
+ const usersFields = mapUserFields(authCollection, []);
627
617
  if (usersFields.length === 0) {
628
618
  throw new Error("No user field found");
629
619
  }
@@ -713,7 +703,7 @@ export default databaseClient;
713
703
  const apiURL = this.getApiURL();
714
704
  const clientString = `import { createClient } from "tinacms/dist/client";
715
705
  import { queries } from "./types";
716
- export const client = createClient({ ${this.noClientBuildCache === false ? `cacheDir: '${(0, import_normalize_path.default)(
706
+ export const client = createClient({ ${this.noClientBuildCache === false ? `cacheDir: '${normalizePath(
717
707
  this.configManager.generatedCachePath
718
708
  )}', ` : ""}url: '${apiURL}', token: '${token}', queries, ${errorPolicy ? `errorPolicy: '${errorPolicy}'` : ""} });
719
709
  export default client;
@@ -739,7 +729,7 @@ export default client;
739
729
  ${typescriptTypes}
740
730
  `;
741
731
  const schemaString = `# DO NOT MODIFY THIS FILE. This file is automatically generated by Tina
742
- ${(0, import_graphql5.printSchema)(this.schema)}
732
+ ${printSchema2(this.schema)}
743
733
  schema {
744
734
  query: Query
745
735
  mutation: Mutation
@@ -751,7 +741,7 @@ schema {
751
741
  var maybeWarnFragmentSize = async (filepath) => {
752
742
  if (
753
743
  // is the file bigger than 100kb?
754
- (await import_fs_extra.default.stat(filepath)).size > // convert to 100 kb to bytes
744
+ (await fs.stat(filepath)).size > // convert to 100 kb to bytes
755
745
  100 * 1024
756
746
  ) {
757
747
  console.warn(
@@ -768,19 +758,34 @@ var maybeWarnFragmentSize = async (filepath) => {
768
758
  }
769
759
  };
770
760
  var unlinkIfExists = async (filepath) => {
771
- if (import_fs_extra.default.existsSync(filepath)) {
772
- import_fs_extra.default.unlinkSync(filepath);
761
+ if (fs.existsSync(filepath)) {
762
+ fs.unlinkSync(filepath);
773
763
  }
774
764
  };
775
765
 
776
766
  // src/next/config-manager.ts
777
- var import_fs_extra2 = __toESM(require("fs-extra"));
778
- var import_path2 = __toESM(require("path"));
779
- var import_os = __toESM(require("os"));
780
- var esbuild = __toESM(require("esbuild"));
781
- var dotenv = __toESM(require("dotenv"));
782
- var import_normalize_path2 = __toESM(require("normalize-path"));
783
- var import_chalk3 = __toESM(require("chalk"));
767
+ import fs2 from "fs-extra";
768
+ import path3 from "path";
769
+ import os from "os";
770
+ import { pathToFileURL } from "url";
771
+ import * as esbuild from "esbuild";
772
+ import * as dotenv from "dotenv";
773
+ import normalizePath2 from "normalize-path";
774
+ import chalk3 from "chalk";
775
+ import { createRequire } from "module";
776
+
777
+ // src/utils/path.ts
778
+ import path2 from "path";
779
+ function stripNativeTrailingSlash(p) {
780
+ const { root } = path2.parse(p);
781
+ let str = p;
782
+ while (str.length > root.length && str.endsWith(path2.sep)) {
783
+ str = str.slice(0, -1);
784
+ }
785
+ return str;
786
+ }
787
+
788
+ // src/next/config-manager.ts
784
789
  var TINA_FOLDER = "tina";
785
790
  var LEGACY_TINA_FOLDER = ".tina";
786
791
  var GENERATED_FOLDER = "__generated__";
@@ -789,17 +794,57 @@ var GRAPHQL_GQL_FILE = "schema.gql";
789
794
  var SCHEMA_JSON_FILE = "_schema.json";
790
795
  var LOOKUP_JSON_FILE = "_lookup.json";
791
796
  var ConfigManager = class {
797
+ config;
798
+ rootPath;
799
+ tinaFolderPath;
800
+ isUsingLegacyFolder;
801
+ tinaConfigFilePath;
802
+ tinaSpaPackagePath;
803
+ contentRootPath;
804
+ envFilePath;
805
+ generatedCachePath;
806
+ generatedFolderPath;
807
+ generatedFolderPathContentRepo;
808
+ generatedGraphQLGQLPath;
809
+ generatedGraphQLJSONPath;
810
+ generatedSchemaJSONPath;
811
+ generatedLookupJSONPath;
812
+ generatedTypesTSFilePath;
813
+ generatedTypesJSFilePath;
814
+ generatedTypesDFilePath;
815
+ generatedClientTSFilePath;
816
+ generatedClientJSFilePath;
817
+ generatedClientDFilePath;
818
+ generatedDatabaseClientJSFilePath;
819
+ generatedDatabaseClientTSFilePath;
820
+ generatedDatabaseClientDFilePath;
821
+ generatedQueriesFilePath;
822
+ generatedFragmentsFilePath;
823
+ generatedQueriesAndFragmentsGlob;
824
+ userQueriesAndFragmentsGlob;
825
+ publicFolderPath;
826
+ outputFolderPath;
827
+ outputHTMLFilePath;
828
+ outputGitignorePath;
829
+ selfHostedDatabaseFilePath;
830
+ prebuildFilePath;
831
+ spaRootPath;
832
+ spaMainPath;
833
+ spaHTMLPath;
834
+ tinaGraphQLVersionFromCLI;
835
+ legacyNoSDK;
836
+ watchList;
792
837
  constructor({
793
838
  rootPath = process.cwd(),
794
839
  tinaGraphQLVersion,
795
840
  legacyNoSDK
796
841
  }) {
797
- this.rootPath = (0, import_normalize_path2.default)(rootPath);
842
+ this.rootPath = normalizePath2(rootPath);
798
843
  this.tinaGraphQLVersionFromCLI = tinaGraphQLVersion;
799
844
  this.legacyNoSDK = legacyNoSDK;
800
845
  }
801
846
  isUsingTs() {
802
- return [".ts", ".tsx"].includes(import_path2.default.extname(this.tinaConfigFilePath));
847
+ return [".ts", ".tsx"].includes(path3.extname(this.tinaConfigFilePath));
803
848
  }
804
849
  hasSelfHostedConfig() {
805
850
  return !!this.selfHostedDatabaseFilePath;
@@ -814,13 +859,14 @@ var ConfigManager = class {
814
859
  return this.config.client?.skip || false;
815
860
  }
816
861
  async processConfig() {
862
+ const require2 = createRequire(import.meta.url);
817
863
  this.tinaFolderPath = await this.getTinaFolderPath(this.rootPath);
818
- this.envFilePath = import_path2.default.resolve(
819
- import_path2.default.join(this.tinaFolderPath, "..", ".env")
864
+ this.envFilePath = path3.resolve(
865
+ path3.join(this.tinaFolderPath, "..", ".env")
820
866
  );
821
867
  dotenv.config({ path: this.envFilePath });
822
868
  this.tinaConfigFilePath = await this.getPathWithExtension(
823
- import_path2.default.join(this.tinaFolderPath, "config")
869
+ path3.join(this.tinaFolderPath, "config")
824
870
  );
825
871
  if (!this.tinaConfigFilePath) {
826
872
  throw new Error(
@@ -828,89 +874,89 @@ var ConfigManager = class {
828
874
  );
829
875
  }
830
876
  this.selfHostedDatabaseFilePath = await this.getPathWithExtension(
831
- import_path2.default.join(this.tinaFolderPath, "database")
877
+ path3.join(this.tinaFolderPath, "database")
832
878
  );
833
- this.generatedFolderPath = import_path2.default.join(this.tinaFolderPath, GENERATED_FOLDER);
834
- this.generatedCachePath = import_path2.default.join(
879
+ this.generatedFolderPath = path3.join(this.tinaFolderPath, GENERATED_FOLDER);
880
+ this.generatedCachePath = path3.join(
835
881
  this.generatedFolderPath,
836
882
  ".cache",
837
883
  String((/* @__PURE__ */ new Date()).getTime())
838
884
  );
839
- this.generatedGraphQLGQLPath = import_path2.default.join(
885
+ this.generatedGraphQLGQLPath = path3.join(
840
886
  this.generatedFolderPath,
841
887
  GRAPHQL_GQL_FILE
842
888
  );
843
- this.generatedGraphQLJSONPath = import_path2.default.join(
889
+ this.generatedGraphQLJSONPath = path3.join(
844
890
  this.generatedFolderPath,
845
891
  GRAPHQL_JSON_FILE
846
892
  );
847
- this.generatedSchemaJSONPath = import_path2.default.join(
893
+ this.generatedSchemaJSONPath = path3.join(
848
894
  this.generatedFolderPath,
849
895
  SCHEMA_JSON_FILE
850
896
  );
851
- this.generatedLookupJSONPath = import_path2.default.join(
897
+ this.generatedLookupJSONPath = path3.join(
852
898
  this.generatedFolderPath,
853
899
  LOOKUP_JSON_FILE
854
900
  );
855
- this.generatedQueriesFilePath = import_path2.default.join(
901
+ this.generatedQueriesFilePath = path3.join(
856
902
  this.generatedFolderPath,
857
903
  "queries.gql"
858
904
  );
859
- this.generatedFragmentsFilePath = import_path2.default.join(
905
+ this.generatedFragmentsFilePath = path3.join(
860
906
  this.generatedFolderPath,
861
907
  "frags.gql"
862
908
  );
863
- this.generatedTypesTSFilePath = import_path2.default.join(
909
+ this.generatedTypesTSFilePath = path3.join(
864
910
  this.generatedFolderPath,
865
911
  "types.ts"
866
912
  );
867
- this.generatedTypesJSFilePath = import_path2.default.join(
913
+ this.generatedTypesJSFilePath = path3.join(
868
914
  this.generatedFolderPath,
869
915
  "types.js"
870
916
  );
871
- this.generatedTypesDFilePath = import_path2.default.join(
917
+ this.generatedTypesDFilePath = path3.join(
872
918
  this.generatedFolderPath,
873
919
  "types.d.ts"
874
920
  );
875
- this.userQueriesAndFragmentsGlob = import_path2.default.join(
921
+ this.userQueriesAndFragmentsGlob = path3.join(
876
922
  this.tinaFolderPath,
877
923
  "queries/**/*.{graphql,gql}"
878
924
  );
879
- this.generatedQueriesAndFragmentsGlob = import_path2.default.join(
925
+ this.generatedQueriesAndFragmentsGlob = path3.join(
880
926
  this.generatedFolderPath,
881
927
  "*.{graphql,gql}"
882
928
  );
883
- this.generatedClientTSFilePath = import_path2.default.join(
929
+ this.generatedClientTSFilePath = path3.join(
884
930
  this.generatedFolderPath,
885
931
  "client.ts"
886
932
  );
887
- this.generatedClientJSFilePath = import_path2.default.join(
933
+ this.generatedClientJSFilePath = path3.join(
888
934
  this.generatedFolderPath,
889
935
  "client.js"
890
936
  );
891
- this.generatedClientDFilePath = import_path2.default.join(
937
+ this.generatedClientDFilePath = path3.join(
892
938
  this.generatedFolderPath,
893
939
  "client.d.ts"
894
940
  );
895
- this.generatedDatabaseClientDFilePath = import_path2.default.join(
941
+ this.generatedDatabaseClientDFilePath = path3.join(
896
942
  this.generatedFolderPath,
897
943
  "databaseClient.d.ts"
898
944
  );
899
- this.generatedDatabaseClientTSFilePath = import_path2.default.join(
945
+ this.generatedDatabaseClientTSFilePath = path3.join(
900
946
  this.generatedFolderPath,
901
947
  "databaseClient.ts"
902
948
  );
903
- this.generatedDatabaseClientJSFilePath = import_path2.default.join(
949
+ this.generatedDatabaseClientJSFilePath = path3.join(
904
950
  this.generatedFolderPath,
905
951
  "databaseClient.js"
906
952
  );
907
- const clientExists = this.isUsingTs() ? await import_fs_extra2.default.pathExists(this.generatedClientTSFilePath) : await import_fs_extra2.default.pathExists(this.generatedClientJSFilePath);
953
+ const clientExists = this.isUsingTs() ? await fs2.pathExists(this.generatedClientTSFilePath) : await fs2.pathExists(this.generatedClientJSFilePath);
908
954
  if (!clientExists) {
909
955
  const file = "export default ()=>({})\nexport const client = ()=>({})";
910
956
  if (this.isUsingTs()) {
911
- await import_fs_extra2.default.outputFile(this.generatedClientTSFilePath, file);
957
+ await fs2.outputFile(this.generatedClientTSFilePath, file);
912
958
  } else {
913
- await import_fs_extra2.default.outputFile(this.generatedClientJSFilePath, file);
959
+ await fs2.outputFile(this.generatedClientJSFilePath, file);
914
960
  }
915
961
  }
916
962
  const { config: config2, prebuildPath, watchList } = await this.loadConfigFile(
@@ -920,30 +966,29 @@ var ConfigManager = class {
920
966
  this.watchList = watchList;
921
967
  this.config = config2;
922
968
  this.prebuildFilePath = prebuildPath;
923
- this.publicFolderPath = import_path2.default.join(
969
+ this.publicFolderPath = path3.join(
924
970
  this.rootPath,
925
971
  this.config.build.publicFolder
926
972
  );
927
- this.outputFolderPath = import_path2.default.join(
973
+ this.outputFolderPath = path3.join(
928
974
  this.publicFolderPath,
929
975
  this.config.build.outputFolder
930
976
  );
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 || ""
977
+ this.outputHTMLFilePath = path3.join(this.outputFolderPath, "index.html");
978
+ this.outputGitignorePath = path3.join(this.outputFolderPath, ".gitignore");
979
+ const fullLocalContentPath = stripNativeTrailingSlash(
980
+ path3.join(this.tinaFolderPath, this.config.localContentPath || "")
936
981
  );
937
982
  if (this.config.localContentPath) {
938
- const localContentPathExists = await import_fs_extra2.default.pathExists(fullLocalContentPath);
983
+ const localContentPathExists = await fs2.pathExists(fullLocalContentPath);
939
984
  if (localContentPathExists) {
940
985
  logger.info(`Using separate content repo at ${fullLocalContentPath}`);
941
986
  this.contentRootPath = fullLocalContentPath;
942
987
  } else {
943
988
  logger.warn(
944
- `${import_chalk3.default.yellow("Warning:")} The localContentPath ${import_chalk3.default.cyan(
989
+ `${chalk3.yellow("Warning:")} The localContentPath ${chalk3.cyan(
945
990
  fullLocalContentPath
946
- )} does not exist. Please create it or remove the localContentPath from your config file at ${import_chalk3.default.cyan(
991
+ )} does not exist. Please create it or remove the localContentPath from your config file at ${chalk3.cyan(
947
992
  this.tinaConfigFilePath
948
993
  )}`
949
994
  );
@@ -952,22 +997,22 @@ var ConfigManager = class {
952
997
  if (!this.contentRootPath) {
953
998
  this.contentRootPath = this.rootPath;
954
999
  }
955
- this.generatedFolderPathContentRepo = import_path2.default.join(
1000
+ this.generatedFolderPathContentRepo = path3.join(
956
1001
  await this.getTinaFolderPath(this.contentRootPath),
957
1002
  GENERATED_FOLDER
958
1003
  );
959
- this.spaMainPath = require.resolve("@tinacms/app");
960
- this.spaRootPath = import_path2.default.join(this.spaMainPath, "..", "..");
1004
+ this.spaMainPath = require2.resolve("@tinacms/app");
1005
+ this.spaRootPath = path3.join(this.spaMainPath, "..", "..");
961
1006
  }
962
1007
  async getTinaFolderPath(rootPath) {
963
- const tinaFolderPath = import_path2.default.join(rootPath, TINA_FOLDER);
964
- const tinaFolderExists = await import_fs_extra2.default.pathExists(tinaFolderPath);
1008
+ const tinaFolderPath = path3.join(rootPath, TINA_FOLDER);
1009
+ const tinaFolderExists = await fs2.pathExists(tinaFolderPath);
965
1010
  if (tinaFolderExists) {
966
1011
  this.isUsingLegacyFolder = false;
967
1012
  return tinaFolderPath;
968
1013
  }
969
- const legacyFolderPath = import_path2.default.join(rootPath, LEGACY_TINA_FOLDER);
970
- const legacyFolderExists = await import_fs_extra2.default.pathExists(legacyFolderPath);
1014
+ const legacyFolderPath = path3.join(rootPath, LEGACY_TINA_FOLDER);
1015
+ const legacyFolderExists = await fs2.pathExists(legacyFolderPath);
971
1016
  if (legacyFolderExists) {
972
1017
  this.isUsingLegacyFolder = true;
973
1018
  return legacyFolderPath;
@@ -986,7 +1031,7 @@ var ConfigManager = class {
986
1031
  patch: version2[2] || "x"
987
1032
  };
988
1033
  }
989
- const generatedSchema = import_fs_extra2.default.readJSONSync(this.generatedSchemaJSONPath);
1034
+ const generatedSchema = fs2.readJSONSync(this.generatedSchemaJSONPath);
990
1035
  if (!generatedSchema || !(typeof generatedSchema?.version !== "undefined")) {
991
1036
  throw new Error(
992
1037
  `Can not find Tina GraphQL version in ${this.generatedSchemaJSONPath}`
@@ -1033,7 +1078,7 @@ var ConfigManager = class {
1033
1078
  return;
1034
1079
  }
1035
1080
  const filepathWithExtension = `${filepath}.${ext}`;
1036
- const exists = import_fs_extra2.default.existsSync(filepathWithExtension);
1081
+ const exists = fs2.existsSync(filepathWithExtension);
1037
1082
  if (exists) {
1038
1083
  result = filepathWithExtension;
1039
1084
  }
@@ -1042,33 +1087,53 @@ var ConfigManager = class {
1042
1087
  return result;
1043
1088
  }
1044
1089
  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");
1090
+ const tmpdir = path3.join(os.tmpdir(), Date.now().toString());
1091
+ const outfile = path3.join(tmpdir, "database.build.mjs");
1047
1092
  await esbuild.build({
1048
1093
  entryPoints: [this.selfHostedDatabaseFilePath],
1049
1094
  bundle: true,
1050
1095
  platform: "node",
1096
+ format: "esm",
1051
1097
  outfile,
1052
- loader: loaders
1098
+ loader: loaders,
1099
+ // Provide a require() polyfill for ESM bundles containing CommonJS packages.
1100
+ // Some bundled packages (e.g., 'scmp' used by 'mongodb-level') use require('crypto').
1101
+ // When esbuild inlines these CommonJS packages, it keeps the require() calls,
1102
+ // but ESM doesn't have a global require. This banner creates one using Node.js's
1103
+ // official createRequire API, allowing the bundled CommonJS code to work in ESM.
1104
+ banner: {
1105
+ js: `import { createRequire } from 'module';const require = createRequire(import.meta.url);`
1106
+ }
1053
1107
  });
1054
- const result = require(outfile);
1055
- import_fs_extra2.default.removeSync(outfile);
1108
+ const result = await import(pathToFileURL(outfile).href);
1109
+ fs2.removeSync(outfile);
1056
1110
  return result.default;
1057
1111
  }
1058
1112
  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(
1113
+ const tmpdir = path3.join(os.tmpdir(), Date.now().toString());
1114
+ const preBuildConfigPath = path3.join(
1061
1115
  this.generatedFolderPath,
1062
1116
  "config.prebuild.jsx"
1063
1117
  );
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");
1067
- import_fs_extra2.default.outputFileSync(tempTSConfigFile, "{}");
1118
+ const nativeNodeModulesPlugin = {
1119
+ name: "native-node-modules",
1120
+ setup(build3) {
1121
+ build3.onResolve({ filter: /^node:.*/ }, (args) => {
1122
+ return {
1123
+ path: args.path,
1124
+ external: true
1125
+ };
1126
+ });
1127
+ }
1128
+ };
1129
+ const outfile = path3.join(tmpdir, "config.build.jsx");
1130
+ const outfile2 = path3.join(tmpdir, "config.build.mjs");
1131
+ const tempTSConfigFile = path3.join(tmpdir, "tsconfig.json");
1132
+ fs2.outputFileSync(tempTSConfigFile, "{}");
1068
1133
  const result2 = await esbuild.build({
1069
1134
  entryPoints: [configFilePath],
1070
1135
  bundle: true,
1071
- target: ["es2020"],
1136
+ target: ["esnext"],
1072
1137
  platform: "browser",
1073
1138
  format: "esm",
1074
1139
  logLevel: "silent",
@@ -1088,9 +1153,10 @@ var ConfigManager = class {
1088
1153
  await esbuild.build({
1089
1154
  entryPoints: [configFilePath],
1090
1155
  bundle: true,
1091
- target: ["es2020"],
1156
+ target: ["esnext"],
1092
1157
  logLevel: "silent",
1093
1158
  platform: "node",
1159
+ format: "esm",
1094
1160
  outfile,
1095
1161
  loader: loaders
1096
1162
  });
@@ -1100,19 +1166,21 @@ var ConfigManager = class {
1100
1166
  // Suppress warning about comparison with -0 from client module
1101
1167
  logLevel: "silent",
1102
1168
  platform: "node",
1169
+ target: ["esnext"],
1170
+ format: "esm",
1103
1171
  outfile: outfile2,
1104
1172
  loader: loaders
1105
1173
  });
1106
1174
  let result;
1107
1175
  try {
1108
- result = require(outfile2);
1176
+ result = await import(pathToFileURL(outfile2).href);
1109
1177
  } catch (e) {
1110
1178
  console.error("Unexpected error loading config");
1111
1179
  console.error(e);
1112
1180
  throw e;
1113
1181
  }
1114
- import_fs_extra2.default.removeSync(outfile);
1115
- import_fs_extra2.default.removeSync(outfile2);
1182
+ fs2.removeSync(outfile);
1183
+ fs2.removeSync(outfile2);
1116
1184
  return {
1117
1185
  config: result.default,
1118
1186
  prebuildPath: preBuildConfigPath,
@@ -1147,20 +1215,24 @@ var loaders = {
1147
1215
  };
1148
1216
 
1149
1217
  // src/next/database.ts
1150
- var import_graphql7 = require("@tinacms/graphql");
1151
- var import_readable_stream = require("readable-stream");
1152
- var import_net = require("net");
1153
- var import_many_level = require("many-level");
1154
- var import_memory_level = require("memory-level");
1218
+ import {
1219
+ createDatabaseInternal,
1220
+ FilesystemBridge,
1221
+ TinaLevelClient
1222
+ } from "@tinacms/graphql";
1223
+ import { pipeline } from "readable-stream";
1224
+ import { createServer } from "net";
1225
+ import { ManyLevelHost } from "many-level";
1226
+ import { MemoryLevel } from "memory-level";
1155
1227
  var createDBServer = (port) => {
1156
- const levelHost = new import_many_level.ManyLevelHost(
1228
+ const levelHost = new ManyLevelHost(
1157
1229
  // @ts-ignore
1158
- new import_memory_level.MemoryLevel({
1230
+ new MemoryLevel({
1159
1231
  valueEncoding: "json"
1160
1232
  })
1161
1233
  );
1162
- const dbServer = (0, import_net.createServer)(function(socket) {
1163
- return (0, import_readable_stream.pipeline)(socket, levelHost.createRpcStream(), socket, () => {
1234
+ const dbServer = createServer(function(socket) {
1235
+ return pipeline(socket, levelHost.createRpcStream(), socket, () => {
1164
1236
  });
1165
1237
  });
1166
1238
  dbServer.once("error", (err) => {
@@ -1174,7 +1246,7 @@ var createDBServer = (port) => {
1174
1246
  };
1175
1247
  async function createAndInitializeDatabase(configManager, datalayerPort, bridgeOverride) {
1176
1248
  let database;
1177
- const bridge = bridgeOverride || new import_graphql7.FilesystemBridge(configManager.rootPath, configManager.contentRootPath);
1249
+ const bridge = bridgeOverride || new FilesystemBridge(configManager.rootPath, configManager.contentRootPath);
1178
1250
  if (configManager.hasSelfHostedConfig() && configManager.config.contentApiUrlOverride) {
1179
1251
  database = await configManager.loadDatabaseFile();
1180
1252
  database.bridge = bridge;
@@ -1186,9 +1258,9 @@ async function createAndInitializeDatabase(configManager, datalayerPort, bridgeO
1186
1258
  )} but there was no "contentApiUrlOverride" set. Falling back to built-in datalayer`
1187
1259
  );
1188
1260
  }
1189
- const level = new import_graphql7.TinaLevelClient(datalayerPort);
1261
+ const level = new TinaLevelClient(datalayerPort);
1190
1262
  level.openConnection();
1191
- database = (0, import_graphql7.createDatabaseInternal)({
1263
+ database = createDatabaseInternal({
1192
1264
  bridge,
1193
1265
  level,
1194
1266
  tinaDirectory: configManager.isUsingLegacyFolder ? LEGACY_TINA_FOLDER : TINA_FOLDER
@@ -1198,17 +1270,17 @@ async function createAndInitializeDatabase(configManager, datalayerPort, bridgeO
1198
1270
  }
1199
1271
 
1200
1272
  // src/next/commands/baseCommands.ts
1201
- var import_clipanion = require("clipanion");
1202
- var import_chalk4 = __toESM(require("chalk"));
1273
+ import { Command, Option } from "clipanion";
1274
+ import chalk4 from "chalk";
1203
1275
 
1204
1276
  // src/utils/start-subprocess.ts
1205
- var import_child_process = __toESM(require("child_process"));
1277
+ import childProcess from "child_process";
1206
1278
  var startSubprocess2 = async ({ command: command2 }) => {
1207
1279
  if (typeof command2 === "string") {
1208
1280
  const commands = command2.split(" ");
1209
1281
  const firstCommand = commands[0];
1210
1282
  const args = commands.slice(1) || [];
1211
- const ps = import_child_process.default.spawn(firstCommand, args, {
1283
+ const ps = childProcess.spawn(firstCommand, args, {
1212
1284
  stdio: "inherit",
1213
1285
  shell: true
1214
1286
  });
@@ -1232,45 +1304,42 @@ stack: ${code.stack || "No stack was provided"}`);
1232
1304
  };
1233
1305
 
1234
1306
  // src/next/commands/baseCommands.ts
1235
- var import_graphql8 = require("@tinacms/graphql");
1236
- var import_fs_extra3 = __toESM(require("fs-extra"));
1237
- var BaseCommand = class extends import_clipanion.Command {
1238
- constructor() {
1239
- super(...arguments);
1240
- this.experimentalDataLayer = import_clipanion.Option.Boolean("--experimentalData", {
1241
- description: "DEPRECATED - Build the server with additional data querying capabilities"
1242
- });
1243
- this.isomorphicGitBridge = import_clipanion.Option.Boolean("--isomorphicGitBridge", {
1244
- description: "DEPRECATED - Enable Isomorphic Git Bridge Implementation"
1245
- });
1246
- this.port = import_clipanion.Option.String("-p,--port", "4001", {
1247
- description: "Specify a port to run the server on. (default 4001)"
1248
- });
1249
- this.datalayerPort = import_clipanion.Option.String("--datalayer-port", "9000", {
1250
- description: "Specify a port to run the datalayer server on. (default 9000)"
1251
- });
1252
- this.subCommand = import_clipanion.Option.String("-c,--command", {
1253
- description: "The sub-command to run"
1254
- });
1255
- this.rootPath = import_clipanion.Option.String("--rootPath", {
1256
- description: "Specify the root directory to run the CLI from (defaults to current working directory)"
1257
- });
1258
- this.verbose = import_clipanion.Option.Boolean("-v,--verbose", false, {
1259
- description: "increase verbosity of logged output"
1260
- });
1261
- this.noSDK = import_clipanion.Option.Boolean("--noSDK", false, {
1262
- description: "DEPRECATED - This should now be set in the config at client.skip = true'. Don't generate the generated client SDK"
1263
- });
1264
- this.noTelemetry = import_clipanion.Option.Boolean("--noTelemetry", false, {
1265
- description: "Disable anonymous telemetry that is collected"
1266
- });
1267
- }
1307
+ import { getChangedFiles, getSha, shaExists } from "@tinacms/graphql";
1308
+ import fs3 from "fs-extra";
1309
+ var BaseCommand = class extends Command {
1310
+ experimentalDataLayer = Option.Boolean("--experimentalData", {
1311
+ description: "DEPRECATED - Build the server with additional data querying capabilities"
1312
+ });
1313
+ isomorphicGitBridge = Option.Boolean("--isomorphicGitBridge", {
1314
+ description: "DEPRECATED - Enable Isomorphic Git Bridge Implementation"
1315
+ });
1316
+ port = Option.String("-p,--port", "4001", {
1317
+ description: "Specify a port to run the server on. (default 4001)"
1318
+ });
1319
+ datalayerPort = Option.String("--datalayer-port", "9000", {
1320
+ description: "Specify a port to run the datalayer server on. (default 9000)"
1321
+ });
1322
+ subCommand = Option.String("-c,--command", {
1323
+ description: "The sub-command to run"
1324
+ });
1325
+ rootPath = Option.String("--rootPath", {
1326
+ description: "Specify the root directory to run the CLI from (defaults to current working directory)"
1327
+ });
1328
+ verbose = Option.Boolean("-v,--verbose", false, {
1329
+ description: "increase verbosity of logged output"
1330
+ });
1331
+ noSDK = Option.Boolean("--noSDK", false, {
1332
+ description: "DEPRECATED - This should now be set in the config at client.skip = true'. Don't generate the generated client SDK"
1333
+ });
1334
+ noTelemetry = Option.Boolean("--noTelemetry", false, {
1335
+ description: "Disable anonymous telemetry that is collected"
1336
+ });
1268
1337
  async startSubCommand() {
1269
1338
  let subProc;
1270
1339
  if (this.subCommand) {
1271
1340
  subProc = await startSubprocess2({ command: this.subCommand });
1272
1341
  logger.info(
1273
- `Running web application with command: ${import_chalk4.default.cyan(this.subCommand)}`
1342
+ `Running web application with command: ${chalk4.cyan(this.subCommand)}`
1274
1343
  );
1275
1344
  }
1276
1345
  function exitHandler(options, exitCode) {
@@ -1318,7 +1387,7 @@ var BaseCommand = class extends import_clipanion.Command {
1318
1387
  const rootPath = configManager.rootPath;
1319
1388
  let sha;
1320
1389
  try {
1321
- sha = await (0, import_graphql8.getSha)({ fs: import_fs_extra3.default, dir: rootPath });
1390
+ sha = await getSha({ fs: fs3, dir: rootPath });
1322
1391
  } catch (e) {
1323
1392
  if (partialReindex) {
1324
1393
  console.error(
@@ -1328,7 +1397,7 @@ var BaseCommand = class extends import_clipanion.Command {
1328
1397
  }
1329
1398
  }
1330
1399
  const lastSha = await database.getMetadata("lastSha");
1331
- const exists = lastSha && await (0, import_graphql8.shaExists)({ fs: import_fs_extra3.default, dir: rootPath, sha: lastSha });
1400
+ const exists = lastSha && await shaExists({ fs: fs3, dir: rootPath, sha: lastSha });
1332
1401
  let res;
1333
1402
  if (partialReindex && lastSha && exists && sha) {
1334
1403
  const pathFilter = {};
@@ -1342,15 +1411,15 @@ var BaseCommand = class extends import_clipanion.Command {
1342
1411
  matches: collection.match?.exclude || collection.match?.include ? tinaSchema.getMatches({ collection }) : void 0
1343
1412
  };
1344
1413
  }
1345
- const { added, modified, deleted } = await (0, import_graphql8.getChangedFiles)({
1346
- fs: import_fs_extra3.default,
1414
+ const { added, modified, deleted } = await getChangedFiles({
1415
+ fs: fs3,
1347
1416
  dir: rootPath,
1348
1417
  from: lastSha,
1349
1418
  to: sha,
1350
1419
  pathFilter
1351
1420
  });
1352
1421
  const tinaPathUpdates = modified.filter(
1353
- (path14) => path14.startsWith(".tina/__generated__/_schema.json") || path14.startsWith("tina/tina-lock.json")
1422
+ (path15) => path15.startsWith(".tina/__generated__/_schema.json") || path15.startsWith("tina/tina-lock.json")
1354
1423
  );
1355
1424
  if (tinaPathUpdates.length > 0) {
1356
1425
  res = await database.indexContent({
@@ -1428,7 +1497,7 @@ var errorHTML = `<style type="text/css">
1428
1497
  the assets for this page.
1429
1498
  </p>
1430
1499
  <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.
1500
+ 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
1501
  </p>
1433
1502
  </div>
1434
1503
  </div>`.trim().replace(/[\r\n\s]+/g, " ");
@@ -1466,34 +1535,38 @@ var devHTML = (port) => `<!DOCTYPE html>
1466
1535
  </html>`;
1467
1536
 
1468
1537
  // src/next/commands/dev-command/server/index.ts
1469
- var import_vite3 = require("vite");
1538
+ import { createServer as createViteServer } from "vite";
1470
1539
 
1471
1540
  // src/next/vite/index.ts
1472
- var import_node_path2 = __toESM(require("node:path"));
1473
- var import_plugin_react = __toESM(require("@vitejs/plugin-react"));
1474
- var import_fs_extra4 = __toESM(require("fs-extra"));
1475
- var import_normalize_path3 = __toESM(require("normalize-path"));
1476
- var import_vite = require("vite");
1541
+ import path5 from "node:path";
1542
+ import react from "@vitejs/plugin-react";
1543
+ import fs4 from "fs-extra";
1544
+ import normalizePath3 from "normalize-path";
1545
+ import {
1546
+ splitVendorChunkPlugin
1547
+ } from "vite";
1477
1548
 
1478
1549
  // src/next/vite/tailwind.ts
1479
- var import_node_path = __toESM(require("node:path"));
1480
- var import_aspect_ratio = __toESM(require("@tailwindcss/aspect-ratio"));
1481
- var import_container_queries = __toESM(require("@tailwindcss/container-queries"));
1482
- var import_typography = __toESM(require("@tailwindcss/typography"));
1483
- var import_tailwindcss = __toESM(require("tailwindcss"));
1484
- var import_defaultTheme = __toESM(require("tailwindcss/defaultTheme.js"));
1550
+ import path4 from "node:path";
1551
+ import aspectRatio from "@tailwindcss/aspect-ratio";
1552
+ import containerQueries from "@tailwindcss/container-queries";
1553
+ import twTypography from "@tailwindcss/typography";
1554
+ import tailwind from "tailwindcss";
1555
+ import defaultTheme from "tailwindcss/defaultTheme.js";
1556
+ import { createRequire as createRequire2 } from "module";
1485
1557
  var tinaTailwind = (spaPath, prebuildFilePath) => {
1486
1558
  return {
1487
1559
  name: "vite-plugin-tina",
1488
1560
  // @ts-ignore
1489
1561
  config: (viteConfig) => {
1562
+ const require2 = createRequire2(import.meta.url);
1490
1563
  const plugins = [];
1491
1564
  const content = [
1492
- import_node_path.default.join(spaPath, "src/**/*.{vue,js,ts,jsx,tsx,svelte}"),
1565
+ path4.join(spaPath, "src/**/*.{vue,js,ts,jsx,tsx,svelte}"),
1493
1566
  prebuildFilePath,
1494
- require.resolve("tinacms")
1567
+ require2.resolve("tinacms")
1495
1568
  ];
1496
- const tw = (0, import_tailwindcss.default)({
1569
+ const tw = tailwind({
1497
1570
  theme: {
1498
1571
  columns: {
1499
1572
  auto: "auto",
@@ -1681,6 +1754,9 @@ var tinaTailwind = (spaPath, prebuildFilePath) => {
1681
1754
  500: "#EC4815",
1682
1755
  600: "#DC4419"
1683
1756
  },
1757
+ "tina-orange": "#EC4815",
1758
+ "tina-orange-dark": "#C2410C",
1759
+ "tina-orange-light": "#FFF7ED",
1684
1760
  background: "#FFFFFF",
1685
1761
  foreground: "#0A0A0A",
1686
1762
  muted: "#F5F5F5",
@@ -1702,7 +1778,7 @@ var tinaTailwind = (spaPath, prebuildFilePath) => {
1702
1778
  ring: "#0A0A0A"
1703
1779
  },
1704
1780
  fontFamily: {
1705
- sans: ["Inter", ...import_defaultTheme.default.fontFamily.sans]
1781
+ sans: ["Inter", ...defaultTheme.fontFamily.sans]
1706
1782
  },
1707
1783
  lineHeight: {
1708
1784
  3: "12px",
@@ -1727,9 +1803,9 @@ var tinaTailwind = (spaPath, prebuildFilePath) => {
1727
1803
  },
1728
1804
  content,
1729
1805
  plugins: [
1730
- (0, import_typography.default)({ className: "tina-prose" }),
1731
- import_aspect_ratio.default,
1732
- import_container_queries.default
1806
+ twTypography({ className: "tina-prose" }),
1807
+ aspectRatio,
1808
+ containerQueries
1733
1809
  ]
1734
1810
  });
1735
1811
  plugins.push(tw);
@@ -1750,35 +1826,35 @@ async function listFilesRecursively({
1750
1826
  config: config2,
1751
1827
  roothPath
1752
1828
  }) {
1753
- const fullDirectoryPath = import_node_path2.default.join(
1829
+ const fullDirectoryPath = path5.join(
1754
1830
  roothPath,
1755
1831
  config2.publicFolder,
1756
1832
  directoryPath
1757
1833
  );
1758
- const exists = await import_fs_extra4.default.pathExists(fullDirectoryPath);
1834
+ const exists = await fs4.pathExists(fullDirectoryPath);
1759
1835
  if (!exists) {
1760
1836
  return { "0": [] };
1761
1837
  }
1762
- const items = await import_fs_extra4.default.readdir(fullDirectoryPath);
1838
+ const items = await fs4.readdir(fullDirectoryPath);
1763
1839
  const staticMediaItems = [];
1764
1840
  for (const item of items) {
1765
- const itemPath = import_node_path2.default.join(fullDirectoryPath, item);
1766
- const stats = await import_fs_extra4.default.promises.lstat(itemPath);
1841
+ const itemPath = path5.join(fullDirectoryPath, item);
1842
+ const stats = await fs4.promises.lstat(itemPath);
1767
1843
  const staticMediaItem = {
1768
1844
  id: item,
1769
1845
  filename: item,
1770
1846
  type: stats.isDirectory() ? "dir" : "file",
1771
1847
  directory: `${directoryPath.replace(config2.mediaRoot, "")}`,
1772
- src: `/${import_node_path2.default.join(directoryPath, item)}`,
1848
+ src: `/${path5.join(directoryPath, item)}`,
1773
1849
  thumbnails: {
1774
- "75x75": `/${import_node_path2.default.join(directoryPath, item)}`,
1775
- "400x400": `/${import_node_path2.default.join(directoryPath, item)}`,
1776
- "1000x1000": `/${import_node_path2.default.join(directoryPath, item)}`
1850
+ "75x75": `/${path5.join(directoryPath, item)}`,
1851
+ "400x400": `/${path5.join(directoryPath, item)}`,
1852
+ "1000x1000": `/${path5.join(directoryPath, item)}`
1777
1853
  }
1778
1854
  };
1779
1855
  if (stats.isDirectory()) {
1780
1856
  staticMediaItem.children = await listFilesRecursively({
1781
- directoryPath: import_node_path2.default.join(directoryPath, item),
1857
+ directoryPath: path5.join(directoryPath, item),
1782
1858
  config: config2,
1783
1859
  roothPath
1784
1860
  });
@@ -1819,7 +1895,7 @@ var createConfig = async ({
1819
1895
  }
1820
1896
  }
1821
1897
  });
1822
- const staticMediaPath = import_node_path2.default.join(
1898
+ const staticMediaPath = path5.join(
1823
1899
  configManager.generatedFolderPath,
1824
1900
  "static-media.json"
1825
1901
  );
@@ -1829,21 +1905,21 @@ var createConfig = async ({
1829
1905
  config: configManager.config.media.tina,
1830
1906
  roothPath: configManager.rootPath
1831
1907
  });
1832
- await import_fs_extra4.default.outputFile(staticMediaPath, JSON.stringify(staticMedia, null, 2));
1908
+ await fs4.outputFile(staticMediaPath, JSON.stringify(staticMedia, null, 2));
1833
1909
  } else {
1834
- await import_fs_extra4.default.outputFile(staticMediaPath, `[]`);
1910
+ await fs4.outputFile(staticMediaPath, `[]`);
1835
1911
  }
1836
1912
  const alias = {
1837
1913
  TINA_IMPORT: configManager.prebuildFilePath,
1838
1914
  SCHEMA_IMPORT: configManager.generatedGraphQLJSONPath,
1839
1915
  STATIC_MEDIA_IMPORT: staticMediaPath,
1840
- crypto: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
1841
- fs: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
1842
- os: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
1843
- path: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts")
1916
+ crypto: path5.join(configManager.spaRootPath, "src", "dummy-client.ts"),
1917
+ fs: path5.join(configManager.spaRootPath, "src", "dummy-client.ts"),
1918
+ os: path5.join(configManager.spaRootPath, "src", "dummy-client.ts"),
1919
+ path: path5.join(configManager.spaRootPath, "src", "dummy-client.ts")
1844
1920
  };
1845
1921
  if (configManager.shouldSkipSDK()) {
1846
- alias["CLIENT_IMPORT"] = import_node_path2.default.join(
1922
+ alias["CLIENT_IMPORT"] = path5.join(
1847
1923
  configManager.spaRootPath,
1848
1924
  "src",
1849
1925
  "dummy-client.ts"
@@ -1859,7 +1935,7 @@ var createConfig = async ({
1859
1935
  const version2 = `${fullVersion.major}.${fullVersion.minor}`;
1860
1936
  const config2 = {
1861
1937
  root: configManager.spaRootPath,
1862
- base: `/${basePath ? `${(0, import_normalize_path3.default)(basePath)}/` : ""}${(0, import_normalize_path3.default)(
1938
+ base: `/${basePath ? `${normalizePath3(basePath)}/` : ""}${normalizePath3(
1863
1939
  configManager.config.build.outputFolder
1864
1940
  )}/`,
1865
1941
  appType: "spa",
@@ -1922,13 +1998,14 @@ var createConfig = async ({
1922
1998
  * `splitVendorChunkPlugin` is needed because `tinacms` is quite large,
1923
1999
  * Vite's chunking strategy chokes on memory issues for smaller machines (ie. on CI).
1924
2000
  */
1925
- (0, import_plugin_react.default)({
2001
+ react({
1926
2002
  babel: {
1927
2003
  // Supresses the warning [NOTE] babel The code generator has deoptimised the styling of
1928
2004
  compact: true
1929
- }
2005
+ },
2006
+ fastRefresh: false
1930
2007
  }),
1931
- (0, import_vite.splitVendorChunkPlugin)(),
2008
+ splitVendorChunkPlugin(),
1932
2009
  tinaTailwind(configManager.spaRootPath, configManager.prebuildFilePath),
1933
2010
  ...plugins
1934
2011
  ]
@@ -1937,21 +2014,21 @@ var createConfig = async ({
1937
2014
  };
1938
2015
 
1939
2016
  // src/next/vite/plugins.ts
1940
- var import_pluginutils = require("@rollup/pluginutils");
1941
- var import_fs = __toESM(require("fs"));
1942
- var import_vite2 = require("vite");
1943
- var import_esbuild2 = require("esbuild");
1944
- var import_path4 = __toESM(require("path"));
1945
- var import_body_parser = __toESM(require("body-parser"));
1946
- var import_cors = __toESM(require("cors"));
1947
- var import_graphql9 = require("@tinacms/graphql");
2017
+ import { createFilter } from "@rollup/pluginutils";
2018
+ import fs6 from "fs";
2019
+ import { transformWithEsbuild } from "vite";
2020
+ import { transform as esbuildTransform } from "esbuild";
2021
+ import path7 from "path";
2022
+ import bodyParser from "body-parser";
2023
+ import cors from "cors";
2024
+ import { resolve as gqlResolve } from "@tinacms/graphql";
1948
2025
 
1949
2026
  // src/next/commands/dev-command/server/media.ts
1950
- var import_fs_extra5 = __toESM(require("fs-extra"));
1951
- var import_path3 = __toESM(require("path"));
1952
- var import_busboy = __toESM(require("busboy"));
2027
+ import fs5 from "fs-extra";
2028
+ import path6, { join } from "path";
2029
+ import busboy from "busboy";
1953
2030
  var createMediaRouter = (config2) => {
1954
- const mediaFolder = import_path3.default.join(
2031
+ const mediaFolder = path6.join(
1955
2032
  config2.rootPath,
1956
2033
  config2.publicFolder,
1957
2034
  config2.mediaRoot
@@ -1975,12 +2052,12 @@ var createMediaRouter = (config2) => {
1975
2052
  res.end(JSON.stringify(didDelete));
1976
2053
  };
1977
2054
  const handlePost = async function(req, res) {
1978
- const bb = (0, import_busboy.default)({ headers: req.headers });
2055
+ const bb = busboy({ headers: req.headers });
1979
2056
  bb.on("file", async (_name, file, _info) => {
1980
2057
  const fullPath = decodeURI(req.url?.slice("/media/upload/".length));
1981
- const saveTo = import_path3.default.join(mediaFolder, ...fullPath.split("/"));
1982
- await import_fs_extra5.default.ensureDir(import_path3.default.dirname(saveTo));
1983
- file.pipe(import_fs_extra5.default.createWriteStream(saveTo));
2058
+ const saveTo = path6.join(mediaFolder, ...fullPath.split("/"));
2059
+ await fs5.ensureDir(path6.dirname(saveTo));
2060
+ file.pipe(fs5.createWriteStream(saveTo));
1984
2061
  });
1985
2062
  bb.on("error", (error) => {
1986
2063
  res.statusCode = 500;
@@ -2006,6 +2083,9 @@ var parseMediaFolder = (str) => {
2006
2083
  return returnString;
2007
2084
  };
2008
2085
  var MediaModel = class {
2086
+ rootPath;
2087
+ publicFolder;
2088
+ mediaRoot;
2009
2089
  constructor({ rootPath, publicFolder, mediaRoot }) {
2010
2090
  this.rootPath = rootPath;
2011
2091
  this.mediaRoot = mediaRoot;
@@ -2013,23 +2093,23 @@ var MediaModel = class {
2013
2093
  }
2014
2094
  async listMedia(args) {
2015
2095
  try {
2016
- const folderPath = (0, import_path3.join)(
2096
+ const folderPath = join(
2017
2097
  this.rootPath,
2018
2098
  this.publicFolder,
2019
2099
  this.mediaRoot,
2020
2100
  decodeURIComponent(args.searchPath)
2021
2101
  );
2022
2102
  const searchPath = parseMediaFolder(args.searchPath);
2023
- if (!await import_fs_extra5.default.pathExists(folderPath)) {
2103
+ if (!await fs5.pathExists(folderPath)) {
2024
2104
  return {
2025
2105
  files: [],
2026
2106
  directories: []
2027
2107
  };
2028
2108
  }
2029
- const filesStr = await import_fs_extra5.default.readdir(folderPath);
2109
+ const filesStr = await fs5.readdir(folderPath);
2030
2110
  const filesProm = filesStr.map(async (file) => {
2031
- const filePath = (0, import_path3.join)(folderPath, file);
2032
- const stat = await import_fs_extra5.default.stat(filePath);
2111
+ const filePath = join(folderPath, file);
2112
+ const stat = await fs5.stat(filePath);
2033
2113
  let src = `/${file}`;
2034
2114
  const isFile = stat.isFile();
2035
2115
  if (!isFile) {
@@ -2085,14 +2165,14 @@ var MediaModel = class {
2085
2165
  }
2086
2166
  async deleteMedia(args) {
2087
2167
  try {
2088
- const file = (0, import_path3.join)(
2168
+ const file = join(
2089
2169
  this.rootPath,
2090
2170
  this.publicFolder,
2091
2171
  this.mediaRoot,
2092
2172
  decodeURIComponent(args.searchPath)
2093
2173
  );
2094
- await import_fs_extra5.default.stat(file);
2095
- await import_fs_extra5.default.remove(file);
2174
+ await fs5.stat(file);
2175
+ await fs5.remove(file);
2096
2176
  return { ok: true };
2097
2177
  } catch (error) {
2098
2178
  console.error(error);
@@ -2150,9 +2230,9 @@ var transformTsxPlugin = ({
2150
2230
  const plug = {
2151
2231
  name: "transform-tsx",
2152
2232
  async transform(code, id) {
2153
- const extName = import_path4.default.extname(id);
2233
+ const extName = path7.extname(id);
2154
2234
  if (extName.startsWith(".tsx") || extName.startsWith(".ts")) {
2155
- const result = await (0, import_esbuild2.transform)(code, { loader: "tsx" });
2235
+ const result = await esbuildTransform(code, { loader: "tsx" });
2156
2236
  return {
2157
2237
  code: result.code
2158
2238
  };
@@ -2171,8 +2251,8 @@ var devServerEndPointsPlugin = ({
2171
2251
  const plug = {
2172
2252
  name: "graphql-endpoints",
2173
2253
  configureServer(server) {
2174
- server.middlewares.use((0, import_cors.default)());
2175
- server.middlewares.use(import_body_parser.default.json({ limit: "5mb" }));
2254
+ server.middlewares.use(cors());
2255
+ server.middlewares.use(bodyParser.json({ limit: "5mb" }));
2176
2256
  server.middlewares.use(async (req, res, next) => {
2177
2257
  const mediaPaths = configManager.config.media?.tina;
2178
2258
  const mediaRouter = createMediaRouter({
@@ -2211,7 +2291,7 @@ var devServerEndPointsPlugin = ({
2211
2291
  const { query, variables } = req.body;
2212
2292
  let result;
2213
2293
  await databaseLock(async () => {
2214
- result = await (0, import_graphql9.resolve)({
2294
+ result = await gqlResolve({
2215
2295
  config: {
2216
2296
  useRelativeMedia: true
2217
2297
  },
@@ -2247,13 +2327,13 @@ function viteTransformExtension({
2247
2327
  include = "**/*.svg",
2248
2328
  exclude
2249
2329
  } = {}) {
2250
- const filter = (0, import_pluginutils.createFilter)(include, exclude);
2330
+ const filter = createFilter(include, exclude);
2251
2331
  return {
2252
2332
  name: "vite-plugin-svgr",
2253
2333
  async transform(code, id) {
2254
2334
  if (filter(id)) {
2255
2335
  const { transform: transform2 } = await import("@svgr/core");
2256
- const svgCode = await import_fs.default.promises.readFile(
2336
+ const svgCode = await fs6.promises.readFile(
2257
2337
  id.replace(/\?.*$/, ""),
2258
2338
  "utf8"
2259
2339
  );
@@ -2263,7 +2343,7 @@ function viteTransformExtension({
2263
2343
  previousExport: exportAsDefault ? null : code
2264
2344
  }
2265
2345
  });
2266
- const res = await (0, import_vite2.transformWithEsbuild)(componentCode, id, {
2346
+ const res = await transformWithEsbuild(componentCode, id, {
2267
2347
  loader: "jsx",
2268
2348
  ...esbuildOptions
2269
2349
  });
@@ -2290,7 +2370,7 @@ var createDevServer = async (configManager, database, searchIndex, apiURL, noWat
2290
2370
  }),
2291
2371
  viteTransformExtension()
2292
2372
  ];
2293
- return (0, import_vite3.createServer)(
2373
+ return createViteServer(
2294
2374
  await createConfig({
2295
2375
  configManager,
2296
2376
  database,
@@ -2320,37 +2400,30 @@ var createDevServer = async (configManager, database, searchIndex, apiURL, noWat
2320
2400
 
2321
2401
  // src/next/commands/dev-command/index.ts
2322
2402
  var DevCommand = class extends BaseCommand {
2323
- constructor() {
2324
- super(...arguments);
2325
- // NOTE: camelCase commands for string options don't work if there's an `=` used https://github.com/arcanis/clipanion/issues/141
2326
- this.watchFolders = import_clipanion2.Option.String("-w,--watchFolders", {
2327
- description: "DEPRECATED - a list of folders (relative to where this is being run) that the cli will watch for changes"
2328
- });
2329
- this.noWatch = import_clipanion2.Option.Boolean("--noWatch", false, {
2330
- description: "Don't regenerate config on file changes"
2331
- });
2332
- this.outputSearchIndexPath = import_clipanion2.Option.String("--outputSearchIndexPath", {
2333
- description: "Path to write the search index to"
2334
- });
2335
- this.noServer = import_clipanion2.Option.Boolean("--no-server", false, {
2336
- description: "Do not start the dev server"
2337
- });
2338
- this.indexingLock = new import_async_lock.default();
2339
- }
2340
- static {
2341
- this.paths = [["dev"], ["server:start"]];
2342
- }
2343
- static {
2344
- // Prevent indexes and reads occurring at once
2345
- this.usage = import_clipanion2.Command.Usage({
2346
- category: `Commands`,
2347
- description: `Builds Tina and starts the dev server`,
2348
- examples: [
2349
- [`A basic example`, `$0 dev`],
2350
- [`A second example`, `$0 dev --rootPath`]
2351
- ]
2352
- });
2353
- }
2403
+ static paths = [["dev"], ["server:start"]];
2404
+ // NOTE: camelCase commands for string options don't work if there's an `=` used https://github.com/arcanis/clipanion/issues/141
2405
+ watchFolders = Option2.String("-w,--watchFolders", {
2406
+ description: "DEPRECATED - a list of folders (relative to where this is being run) that the cli will watch for changes"
2407
+ });
2408
+ noWatch = Option2.Boolean("--noWatch", false, {
2409
+ description: "Don't regenerate config on file changes"
2410
+ });
2411
+ outputSearchIndexPath = Option2.String("--outputSearchIndexPath", {
2412
+ description: "Path to write the search index to"
2413
+ });
2414
+ noServer = Option2.Boolean("--no-server", false, {
2415
+ description: "Do not start the dev server"
2416
+ });
2417
+ indexingLock = new AsyncLock();
2418
+ // Prevent indexes and reads occurring at once
2419
+ static usage = Command2.Usage({
2420
+ category: `Commands`,
2421
+ description: `Builds Tina and starts the dev server`,
2422
+ examples: [
2423
+ [`A basic example`, `$0 dev`],
2424
+ [`A second example`, `$0 dev --rootPath`]
2425
+ ]
2426
+ });
2354
2427
  async catch(error) {
2355
2428
  logger.error("Error occured during tinacms dev");
2356
2429
  console.error(error);
@@ -2387,7 +2460,7 @@ var DevCommand = class extends BaseCommand {
2387
2460
  } else {
2388
2461
  database.clearCache();
2389
2462
  }
2390
- const { tinaSchema: tinaSchema2, graphQLSchema: graphQLSchema2, lookup, queryDoc, fragDoc } = await (0, import_graphql10.buildSchema)(configManager.config);
2463
+ const { tinaSchema: tinaSchema2, graphQLSchema: graphQLSchema2, lookup, queryDoc, fragDoc } = await buildSchema(configManager.config);
2391
2464
  const codegen2 = new Codegen({
2392
2465
  isLocal: true,
2393
2466
  configManager,
@@ -2401,29 +2474,32 @@ var DevCommand = class extends BaseCommand {
2401
2474
  });
2402
2475
  const apiURL2 = await codegen2.execute();
2403
2476
  if (!configManager.isUsingLegacyFolder) {
2404
- delete require.cache[configManager.generatedSchemaJSONPath];
2405
- delete require.cache[configManager.generatedLookupJSONPath];
2406
- delete require.cache[configManager.generatedGraphQLJSONPath];
2407
- const schemaObject = require(configManager.generatedSchemaJSONPath);
2408
- const lookupObject = require(configManager.generatedLookupJSONPath);
2409
- const graphqlSchemaObject = require(configManager.generatedGraphQLJSONPath);
2477
+ const schemaObject = await fs7.readJSON(
2478
+ configManager.generatedSchemaJSONPath
2479
+ );
2480
+ const lookupObject = await fs7.readJSON(
2481
+ configManager.generatedLookupJSONPath
2482
+ );
2483
+ const graphqlSchemaObject = await fs7.readJSON(
2484
+ configManager.generatedGraphQLJSONPath
2485
+ );
2410
2486
  const tinaLockFilename = "tina-lock.json";
2411
2487
  const tinaLockContent = JSON.stringify({
2412
2488
  schema: schemaObject,
2413
2489
  lookup: lookupObject,
2414
2490
  graphql: graphqlSchemaObject
2415
2491
  });
2416
- import_fs_extra6.default.writeFileSync(
2417
- import_path5.default.join(configManager.tinaFolderPath, tinaLockFilename),
2492
+ fs7.writeFileSync(
2493
+ path8.join(configManager.tinaFolderPath, tinaLockFilename),
2418
2494
  tinaLockContent
2419
2495
  );
2420
2496
  if (configManager.hasSeparateContentRoot()) {
2421
2497
  const rootPath = await configManager.getTinaFolderPath(
2422
2498
  configManager.contentRootPath
2423
2499
  );
2424
- const filePath = import_path5.default.join(rootPath, tinaLockFilename);
2425
- await import_fs_extra6.default.ensureFile(filePath);
2426
- await import_fs_extra6.default.outputFile(filePath, tinaLockContent);
2500
+ const filePath = path8.join(rootPath, tinaLockFilename);
2501
+ await fs7.ensureFile(filePath);
2502
+ await fs7.outputFile(filePath, tinaLockContent);
2427
2503
  }
2428
2504
  }
2429
2505
  await this.indexContentWithSpinner({
@@ -2466,19 +2542,19 @@ ${dangerText(e.message)}
2466
2542
  const { apiURL, graphQLSchema, tinaSchema } = await setup({
2467
2543
  firstTime: true
2468
2544
  });
2469
- await import_fs_extra6.default.outputFile(configManager.outputHTMLFilePath, devHTML(this.port));
2470
- await import_fs_extra6.default.outputFile(
2545
+ await fs7.outputFile(configManager.outputHTMLFilePath, devHTML(this.port));
2546
+ await fs7.outputFile(
2471
2547
  configManager.outputGitignorePath,
2472
2548
  "index.html\nassets/"
2473
2549
  );
2474
- const searchIndexClient = new import_search.LocalSearchIndexClient({
2550
+ const searchIndexClient = new LocalSearchIndexClient({
2475
2551
  stopwordLanguages: configManager.config.search?.tina?.stopwordLanguages,
2476
2552
  tokenSplitRegex: configManager.config.search?.tina?.tokenSplitRegex
2477
2553
  });
2478
2554
  await searchIndexClient.onStartIndexing();
2479
- const searchIndexer = new import_search.SearchIndexer({
2555
+ const searchIndexer = new SearchIndexer({
2480
2556
  batchSize: configManager.config.search?.indexBatchSize || 100,
2481
- bridge: new import_graphql10.FilesystemBridge(
2557
+ bridge: new FilesystemBridge2(
2482
2558
  configManager.rootPath,
2483
2559
  configManager.contentRootPath
2484
2560
  ),
@@ -2519,7 +2595,7 @@ ${dangerText(e.message)}
2519
2595
  );
2520
2596
  await server.listen(Number(this.port));
2521
2597
  if (!this.noWatch) {
2522
- import_chokidar.default.watch(configManager.watchList).on("change", async () => {
2598
+ chokidar.watch(configManager.watchList).on("change", async () => {
2523
2599
  await dbLock(async () => {
2524
2600
  logger.info(`Tina config change detected, rebuilding`);
2525
2601
  await setup({ firstTime: false });
@@ -2581,11 +2657,11 @@ ${dangerText(e.message)}
2581
2657
  // subItems: [
2582
2658
  // {
2583
2659
  // key: 'Custom queries',
2584
- // value: 'https://tina.io/querying',
2660
+ // value: 'https://tina.io/docs/r/content-api-overview',
2585
2661
  // },
2586
2662
  // {
2587
2663
  // key: 'Visual editing',
2588
- // value: 'https://tina.io/visual-editing',
2664
+ // value: 'https://tina.io/docs/r/visual-editing-setup',
2589
2665
  // },
2590
2666
  // ],
2591
2667
  // },
@@ -2596,14 +2672,14 @@ ${dangerText(e.message)}
2596
2672
  watchContentFiles(configManager, database, databaseLock, searchIndexer) {
2597
2673
  const collectionContentFiles = [];
2598
2674
  configManager.config.schema.collections.forEach((collection) => {
2599
- const collectionGlob = `${import_path5.default.join(
2675
+ const collectionGlob = `${path8.join(
2600
2676
  configManager.contentRootPath,
2601
2677
  collection.path
2602
2678
  )}/**/*.${collection.format || "md"}`;
2603
2679
  collectionContentFiles.push(collectionGlob);
2604
2680
  });
2605
2681
  let ready = false;
2606
- import_chokidar.default.watch(collectionContentFiles).on("ready", () => {
2682
+ chokidar.watch(collectionContentFiles).on("ready", () => {
2607
2683
  ready = true;
2608
2684
  }).on("add", async (addedFile) => {
2609
2685
  if (!ready) {
@@ -2640,28 +2716,35 @@ ${dangerText(e.message)}
2640
2716
  await callback();
2641
2717
  });
2642
2718
  };
2643
- import_chokidar.default.watch(configManager.userQueriesAndFragmentsGlob).on("add", executeCallback).on("change", executeCallback).on("unlink", executeCallback);
2719
+ chokidar.watch(configManager.userQueriesAndFragmentsGlob).on("add", executeCallback).on("change", executeCallback).on("unlink", executeCallback);
2644
2720
  }
2645
2721
  };
2646
2722
 
2647
2723
  // src/next/commands/build-command/index.ts
2648
- var import_crypto = __toESM(require("crypto"));
2649
- var import_path6 = __toESM(require("path"));
2650
- var import_core3 = require("@graphql-inspector/core");
2651
- var import_graphql11 = require("@tinacms/graphql");
2652
- var import_schema_tools2 = require("@tinacms/schema-tools");
2653
- var import_search2 = require("@tinacms/search");
2654
- var import_clipanion3 = require("clipanion");
2655
- var import_fs_extra7 = __toESM(require("fs-extra"));
2656
- var import_graphql12 = require("graphql");
2657
- var import_progress2 = __toESM(require("progress"));
2724
+ import crypto from "crypto";
2725
+ import path9 from "path";
2726
+ import { diff } from "@graphql-inspector/core";
2727
+ import { FilesystemBridge as FilesystemBridge3, buildSchema as buildSchema2 } from "@tinacms/graphql";
2728
+ import { parseURL as parseURL2 } from "@tinacms/schema-tools";
2729
+ import {
2730
+ SearchIndexer as SearchIndexer2,
2731
+ TinaCMSSearchIndexClient
2732
+ } from "@tinacms/search";
2733
+ import { Command as Command3, Option as Option3 } from "clipanion";
2734
+ import fs8 from "fs-extra";
2735
+ import {
2736
+ buildASTSchema as buildASTSchema2,
2737
+ buildClientSchema,
2738
+ getIntrospectionQuery
2739
+ } from "graphql";
2740
+ import Progress2 from "progress";
2658
2741
 
2659
2742
  // src/utils/index.ts
2660
- var import_core2 = require("@graphql-inspector/core");
2743
+ import { ChangeType } from "@graphql-inspector/core";
2661
2744
  var getFaqLink = (type) => {
2662
2745
  switch (type) {
2663
- case import_core2.ChangeType.FieldRemoved: {
2664
- return "https://tina.io/docs/introduction/faq#how-do-i-resolve-the-local-graphql-schema-doesnt-match-the-remote-graphql-schema-errors";
2746
+ case ChangeType.FieldRemoved: {
2747
+ return "https://tina.io/docs/r/FAQ/#2-how-do-i-resolve-the-local-graphql-schema-doesnt-match-the-remote-graphql-schema-error";
2665
2748
  }
2666
2749
  default:
2667
2750
  return null;
@@ -2682,7 +2765,7 @@ async function sleepAndCallFunc({
2682
2765
  }
2683
2766
 
2684
2767
  // src/next/commands/build-command/server.ts
2685
- var import_vite5 = require("vite");
2768
+ import { build as build2 } from "vite";
2686
2769
  var buildProductionSpa = async (configManager, database, apiURL) => {
2687
2770
  const publicEnv = {};
2688
2771
  Object.keys(process.env).forEach((key) => {
@@ -2716,12 +2799,12 @@ var buildProductionSpa = async (configManager, database, apiURL) => {
2716
2799
  }
2717
2800
  }
2718
2801
  });
2719
- return (0, import_vite5.build)(config2);
2802
+ return build2(config2);
2720
2803
  };
2721
2804
 
2722
2805
  // src/next/commands/build-command/waitForDB.ts
2723
- var import_schema_tools = require("@tinacms/schema-tools");
2724
- var import_progress = __toESM(require("progress"));
2806
+ import { parseURL } from "@tinacms/schema-tools";
2807
+ import Progress from "progress";
2725
2808
  var POLLING_INTERVAL = 5e3;
2726
2809
  var STATUS_INPROGRESS = "inprogress";
2727
2810
  var STATUS_COMPLETE = "complete";
@@ -2734,14 +2817,14 @@ var IndexFailedError = class extends Error {
2734
2817
  };
2735
2818
  var waitForDB = async (config2, apiUrl, previewName, verbose) => {
2736
2819
  const token = config2.token;
2737
- const { clientId, branch, isLocalClient, host } = (0, import_schema_tools.parseURL)(apiUrl);
2820
+ const { clientId, branch, isLocalClient, host } = parseURL(apiUrl);
2738
2821
  if (isLocalClient || !host || !clientId || !branch) {
2739
2822
  if (verbose) {
2740
2823
  logger.info(logText("Not using TinaCloud, skipping DB check"));
2741
2824
  }
2742
2825
  return;
2743
2826
  }
2744
- const bar2 = new import_progress.default(
2827
+ const bar2 = new Progress(
2745
2828
  "Checking indexing process in TinaCloud... :prog",
2746
2829
  1
2747
2830
  );
@@ -2804,51 +2887,44 @@ var waitForDB = async (config2, apiUrl, previewName, verbose) => {
2804
2887
 
2805
2888
  // src/next/commands/build-command/index.ts
2806
2889
  var BuildCommand = class extends BaseCommand {
2807
- constructor() {
2808
- super(...arguments);
2809
- this.localOption = import_clipanion3.Option.Boolean("--local", {
2810
- description: "Starts local Graphql server and builds the local client instead of production client"
2811
- });
2812
- this.skipIndexing = import_clipanion3.Option.Boolean("--skip-indexing", false, {
2813
- description: "Skips indexing the content. This can be used for building the site without indexing the content (defaults to false)"
2814
- });
2815
- this.partialReindex = import_clipanion3.Option.Boolean("--partial-reindex", false, {
2816
- description: "Re-indexes only the content that has changed since the last build (defaults to false). Not currently supported for separate content repos."
2817
- });
2818
- this.tinaGraphQLVersion = import_clipanion3.Option.String("--tina-graphql-version", {
2819
- description: "Specify the version of @tinacms/graphql to use (defaults to latest)"
2820
- });
2821
- /**
2822
- * This option allows the user to skip the TinaCloud checks if they want to. This could be useful for mismatched GraphQL versions or if they want to build only using the local client and never connect to TinaCloud
2823
- */
2824
- this.skipCloudChecks = import_clipanion3.Option.Boolean("--skip-cloud-checks", false, {
2825
- description: "Skips checking the provided cloud config."
2826
- });
2827
- this.skipSearchIndex = import_clipanion3.Option.Boolean("--skip-search-index", false, {
2828
- description: "Skip indexing the site for search"
2829
- });
2830
- this.upstreamBranch = import_clipanion3.Option.String("--upstream-branch", {
2831
- description: "Optional upstream branch with the schema. If not specified, default will be used."
2832
- });
2833
- this.previewBaseBranch = import_clipanion3.Option.String("--preview-base-branch", {
2834
- description: "The base branch for the preview"
2835
- });
2836
- this.previewName = import_clipanion3.Option.String("--preview-name", {
2837
- description: "The name of the preview branch"
2838
- });
2839
- this.noClientBuildCache = import_clipanion3.Option.Boolean("--no-client-build-cache", false, {
2840
- description: "Disables the client build cache"
2841
- });
2842
- }
2843
- static {
2844
- this.paths = [["build"]];
2845
- }
2846
- static {
2847
- this.usage = import_clipanion3.Command.Usage({
2848
- category: `Commands`,
2849
- description: `Build the CMS and autogenerated modules for usage with TinaCloud`
2850
- });
2851
- }
2890
+ static paths = [["build"]];
2891
+ localOption = Option3.Boolean("--local", {
2892
+ description: "Starts local Graphql server and builds the local client instead of production client"
2893
+ });
2894
+ skipIndexing = Option3.Boolean("--skip-indexing", false, {
2895
+ description: "Skips indexing the content. This can be used for building the site without indexing the content (defaults to false)"
2896
+ });
2897
+ partialReindex = Option3.Boolean("--partial-reindex", false, {
2898
+ description: "Re-indexes only the content that has changed since the last build (defaults to false). Not currently supported for separate content repos."
2899
+ });
2900
+ tinaGraphQLVersion = Option3.String("--tina-graphql-version", {
2901
+ description: "Specify the version of @tinacms/graphql to use (defaults to latest)"
2902
+ });
2903
+ /**
2904
+ * This option allows the user to skip the TinaCloud checks if they want to. This could be useful for mismatched GraphQL versions or if they want to build only using the local client and never connect to TinaCloud
2905
+ */
2906
+ skipCloudChecks = Option3.Boolean("--skip-cloud-checks", false, {
2907
+ description: "Skips checking the provided cloud config."
2908
+ });
2909
+ skipSearchIndex = Option3.Boolean("--skip-search-index", false, {
2910
+ description: "Skip indexing the site for search"
2911
+ });
2912
+ upstreamBranch = Option3.String("--upstream-branch", {
2913
+ description: "Optional upstream branch with the schema. If not specified, default will be used."
2914
+ });
2915
+ previewBaseBranch = Option3.String("--preview-base-branch", {
2916
+ description: "The base branch for the preview"
2917
+ });
2918
+ previewName = Option3.String("--preview-name", {
2919
+ description: "The name of the preview branch"
2920
+ });
2921
+ noClientBuildCache = Option3.Boolean("--no-client-build-cache", false, {
2922
+ description: "Disables the client build cache"
2923
+ });
2924
+ static usage = Command3.Usage({
2925
+ category: `Commands`,
2926
+ description: `Build the CMS and autogenerated modules for usage with TinaCloud`
2927
+ });
2852
2928
  async catch(error) {
2853
2929
  console.error(error);
2854
2930
  process.exit(1);
@@ -2893,7 +2969,7 @@ ${dangerText(e.message)}`);
2893
2969
  configManager,
2894
2970
  Number(this.datalayerPort)
2895
2971
  );
2896
- const { queryDoc, fragDoc, graphQLSchema, tinaSchema, lookup } = await (0, import_graphql11.buildSchema)(configManager.config);
2972
+ const { queryDoc, fragDoc, graphQLSchema, tinaSchema, lookup } = await buildSchema2(configManager.config);
2897
2973
  const codegen2 = new Codegen({
2898
2974
  configManager,
2899
2975
  port: this.localOption ? Number(this.port) : void 0,
@@ -3001,7 +3077,7 @@ ${dangerText(e.message)}
3001
3077
  }
3002
3078
  }
3003
3079
  await buildProductionSpa(configManager, database, codegen2.productionUrl);
3004
- await import_fs_extra7.default.outputFile(
3080
+ await fs8.outputFile(
3005
3081
  configManager.outputGitignorePath,
3006
3082
  "index.html\nassets/"
3007
3083
  );
@@ -3033,7 +3109,7 @@ ${dangerText(e.message)}
3033
3109
  "indexerToken not configured in tina search configuration."
3034
3110
  );
3035
3111
  }
3036
- client = new import_search2.TinaCMSSearchIndexClient({
3112
+ client = new TinaCMSSearchIndexClient({
3037
3113
  apiUrl: `${configManager.config.tinaioConfig?.contentApiUrlOverride || "https://content.tinajs.io"}/searchIndex/${configManager.config?.clientId}`,
3038
3114
  branch: configManager.config?.branch,
3039
3115
  indexerToken: configManager.config?.search?.tina?.indexerToken,
@@ -3042,9 +3118,9 @@ ${dangerText(e.message)}
3042
3118
  } else {
3043
3119
  client = configManager.config?.search?.searchClient;
3044
3120
  }
3045
- const searchIndexer = new import_search2.SearchIndexer({
3121
+ const searchIndexer = new SearchIndexer2({
3046
3122
  batchSize: configManager.config.search?.indexBatchSize || 100,
3047
- bridge: new import_graphql11.FilesystemBridge(
3123
+ bridge: new FilesystemBridge3(
3048
3124
  configManager.rootPath,
3049
3125
  configManager.contentRootPath
3050
3126
  ),
@@ -3114,8 +3190,8 @@ ${dangerText(e.message)}
3114
3190
  const MAX_RETRIES = 5;
3115
3191
  const { config: config2 } = configManager;
3116
3192
  const token = config2.token;
3117
- const { clientId, branch, host } = (0, import_schema_tools2.parseURL)(apiURL);
3118
- const bar2 = new import_progress2.default("Checking clientId and token. :prog", 1);
3193
+ const { clientId, branch, host } = parseURL2(apiURL);
3194
+ const bar2 = new Progress2("Checking clientId and token. :prog", 1);
3119
3195
  const getBranchInfo = async () => {
3120
3196
  const url = `https://${host}/db/${clientId}/status/${previewBaseBranch || branch}`;
3121
3197
  const branchInfo2 = {
@@ -3169,7 +3245,7 @@ ${dangerText(e.message)}
3169
3245
  bar2.tick({
3170
3246
  prog: "\u2705"
3171
3247
  });
3172
- const branchBar = new import_progress2.default(
3248
+ const branchBar = new Progress2(
3173
3249
  `Checking branch '${config2.branch}' is on TinaCloud. :prog`,
3174
3250
  1
3175
3251
  );
@@ -3209,7 +3285,7 @@ ${dangerText(e.message)}
3209
3285
  async syncProject(configManager, apiURL, options) {
3210
3286
  const { config: config2 } = configManager;
3211
3287
  const token = config2.token;
3212
- const { clientId, branch, host } = (0, import_schema_tools2.parseURL)(apiURL);
3288
+ const { clientId, branch, host } = parseURL2(apiURL);
3213
3289
  const { previewName, previewBaseBranch, upstreamBranch } = options || {};
3214
3290
  let url = `https://${host}/db/${clientId}/reset/${branch}?refreshSchema=true&skipIfSchemaCurrent=true`;
3215
3291
  if (upstreamBranch && previewBaseBranch && previewName) {
@@ -3219,7 +3295,7 @@ ${dangerText(e.message)}
3219
3295
  } else if (upstreamBranch && !previewBaseBranch && !previewName) {
3220
3296
  url = `https://${host}/db/${clientId}/reset/${branch}?refreshSchema=true&skipIfSchemaCurrent=true&upstreamBranch=${upstreamBranch}`;
3221
3297
  }
3222
- const bar2 = new import_progress2.default("Syncing Project. :prog", 1);
3298
+ const bar2 = new Progress2("Syncing Project. :prog", 1);
3223
3299
  try {
3224
3300
  const res = await request({
3225
3301
  token,
@@ -3260,7 +3336,7 @@ ${dangerText(e.message)}
3260
3336
  }
3261
3337
  }
3262
3338
  async checkGraphqlSchema(configManager, database, apiURL, timestamp) {
3263
- const bar2 = new import_progress2.default(
3339
+ const bar2 = new Progress2(
3264
3340
  "Checking local GraphQL Schema matches server. :prog",
3265
3341
  1
3266
3342
  );
@@ -3282,11 +3358,11 @@ Additional info: Branch: ${config2.branch}, Client ID: ${config2.clientId} `;
3282
3358
  }
3283
3359
  throw new Error(errorMessage);
3284
3360
  }
3285
- const remoteGqlSchema = (0, import_graphql12.buildClientSchema)(remoteSchema);
3361
+ const remoteGqlSchema = buildClientSchema(remoteSchema);
3286
3362
  const localSchemaDocument = await database.getGraphQLSchemaFromBridge();
3287
- const localGraphqlSchema = (0, import_graphql12.buildASTSchema)(localSchemaDocument);
3363
+ const localGraphqlSchema = buildASTSchema2(localSchemaDocument);
3288
3364
  try {
3289
- const diffResult = await (0, import_core3.diff)(remoteGqlSchema, localGraphqlSchema);
3365
+ const diffResult = await diff(remoteGqlSchema, localGraphqlSchema);
3290
3366
  if (diffResult.length === 0) {
3291
3367
  bar2.tick({
3292
3368
  prog: "\u2705"
@@ -3334,13 +3410,13 @@ Additional info:
3334
3410
  }
3335
3411
  }
3336
3412
  async checkTinaSchema(configManager, database, apiURL, previewName, verbose, timestamp) {
3337
- const bar2 = new import_progress2.default(
3413
+ const bar2 = new Progress2(
3338
3414
  "Checking local Tina Schema matches server. :prog",
3339
3415
  1
3340
3416
  );
3341
3417
  const { config: config2 } = configManager;
3342
3418
  const token = config2.token;
3343
- const { clientId, branch, isLocalClient, host } = (0, import_schema_tools2.parseURL)(apiURL);
3419
+ const { clientId, branch, isLocalClient, host } = parseURL2(apiURL);
3344
3420
  if (isLocalClient || !host || !clientId || !branch) {
3345
3421
  if (verbose) {
3346
3422
  logger.info(logText("Not using TinaCloud, skipping Tina Schema check"));
@@ -3368,11 +3444,11 @@ Additional info: Branch: ${config2.branch}, Client ID: ${config2.clientId} `;
3368
3444
  }
3369
3445
  const localTinaSchema = JSON.parse(
3370
3446
  await database.bridge.get(
3371
- import_path6.default.join(database.tinaDirectory, "__generated__", "_schema.json")
3447
+ path9.join(database.tinaDirectory, "__generated__", "_schema.json")
3372
3448
  )
3373
3449
  );
3374
3450
  localTinaSchema.version = void 0;
3375
- const localTinaSchemaSha = import_crypto.default.createHash("sha256").update(JSON.stringify(localTinaSchema)).digest("hex");
3451
+ const localTinaSchemaSha = crypto.createHash("sha256").update(JSON.stringify(localTinaSchema)).digest("hex");
3376
3452
  if (localTinaSchemaSha === remoteTinaSchemaSha) {
3377
3453
  bar2.tick({
3378
3454
  prog: "\u2705"
@@ -3423,12 +3499,12 @@ async function request(args) {
3423
3499
  Message from server: ${json.message}`;
3424
3500
  }
3425
3501
  throw new Error(
3426
- `Server responded with status code ${res.status}, ${res.statusText}. ${additionalInfo ? additionalInfo : ""} Please see our FAQ for more information: https://tina.io/docs/errors/faq/`
3502
+ `Server responded with status code ${res.status}, ${res.statusText}. ${additionalInfo ? additionalInfo : ""} Please see our FAQ for more information: https://tina.io/docs/r/FAQ/`
3427
3503
  );
3428
3504
  }
3429
3505
  if (json.errors) {
3430
3506
  throw new Error(
3431
- `Unable to fetch, please see our FAQ for more information: https://tina.io/docs/errors/faq/
3507
+ `Unable to fetch, please see our FAQ for more information: https://tina.io/docs/r/FAQ/
3432
3508
 
3433
3509
  Errors:
3434
3510
  ${json.errors.map((error) => error.message).join("\n")}`
@@ -3450,7 +3526,7 @@ var fetchRemoteGraphqlSchema = async ({
3450
3526
  headers.append("X-API-KEY", token);
3451
3527
  }
3452
3528
  const body = JSON.stringify({
3453
- query: (0, import_graphql12.getIntrospectionQuery)(),
3529
+ query: getIntrospectionQuery(),
3454
3530
  variables: {}
3455
3531
  });
3456
3532
  headers.append("Content-Type", "application/json");
@@ -3483,14 +3559,14 @@ var fetchSchemaSha = async ({
3483
3559
  };
3484
3560
 
3485
3561
  // src/next/commands/audit-command/index.ts
3486
- var import_clipanion4 = require("clipanion");
3487
- var import_graphql14 = require("@tinacms/graphql");
3562
+ import { Command as Command4, Option as Option4 } from "clipanion";
3563
+ import { buildSchema as buildSchema3 } from "@tinacms/graphql";
3488
3564
 
3489
3565
  // src/next/commands/audit-command/audit.ts
3490
- var import_prompts = __toESM(require("prompts"));
3491
- var import_metrics = require("@tinacms/metrics");
3492
- var import_graphql13 = require("@tinacms/graphql");
3493
- var import_chalk5 = __toESM(require("chalk"));
3566
+ import prompts from "prompts";
3567
+ import { Telemetry } from "@tinacms/metrics";
3568
+ import { resolve } from "@tinacms/graphql";
3569
+ import chalk5 from "chalk";
3494
3570
  var audit = async ({
3495
3571
  database,
3496
3572
  clean,
@@ -3498,7 +3574,7 @@ var audit = async ({
3498
3574
  noTelemetry,
3499
3575
  verbose
3500
3576
  }) => {
3501
- const telemetry = new import_metrics.Telemetry({ disabled: noTelemetry });
3577
+ const telemetry = new Telemetry({ disabled: noTelemetry });
3502
3578
  await telemetry.submitRecord({
3503
3579
  event: {
3504
3580
  name: "tinacms:cli:audit:invoke",
@@ -3508,25 +3584,25 @@ var audit = async ({
3508
3584
  });
3509
3585
  if (clean) {
3510
3586
  logger.info(
3511
- `You are using the \`--clean\` option. This will modify your content as if a user is submitting a form. Before running this you should have a ${import_chalk5.default.bold(
3587
+ `You are using the \`--clean\` option. This will modify your content as if a user is submitting a form. Before running this you should have a ${chalk5.bold(
3512
3588
  "clean git tree"
3513
3589
  )} so unwanted changes can be undone.
3514
3590
 
3515
3591
  `
3516
3592
  );
3517
- const res = await (0, import_prompts.default)({
3593
+ const res = await prompts({
3518
3594
  name: "useClean",
3519
3595
  type: "confirm",
3520
3596
  message: `Do you want to continue?`
3521
3597
  });
3522
3598
  if (!res.useClean) {
3523
- logger.warn(import_chalk5.default.yellowBright("\u26A0\uFE0F Audit not complete"));
3599
+ logger.warn(chalk5.yellowBright("\u26A0\uFE0F Audit not complete"));
3524
3600
  process.exit(0);
3525
3601
  }
3526
3602
  }
3527
3603
  if (useDefaultValues && !clean) {
3528
3604
  logger.warn(
3529
- import_chalk5.default.yellowBright(
3605
+ chalk5.yellowBright(
3530
3606
  "WARNING: using the `--useDefaultValues` without the `--clean` flag has no effect. Please re-run audit and add the `--clean` flag"
3531
3607
  )
3532
3608
  );
@@ -3554,10 +3630,10 @@ var audit = async ({
3554
3630
  }
3555
3631
  if (error) {
3556
3632
  logger.error(
3557
- import_chalk5.default.redBright(`\u203C\uFE0F Audit ${import_chalk5.default.bold("failed")} with errors`)
3633
+ chalk5.redBright(`\u203C\uFE0F Audit ${chalk5.bold("failed")} with errors`)
3558
3634
  );
3559
3635
  } else {
3560
- logger.info(import_chalk5.default.greenBright("\u2705 Audit passed"));
3636
+ logger.info(chalk5.greenBright("\u2705 Audit passed"));
3561
3637
  }
3562
3638
  };
3563
3639
  var auditDocuments = async (args) => {
@@ -3574,7 +3650,7 @@ var auditDocuments = async (args) => {
3574
3650
  }
3575
3651
  }
3576
3652
  }`;
3577
- const docResult = await (0, import_graphql13.resolve)({
3653
+ const docResult = await resolve({
3578
3654
  database,
3579
3655
  query: documentQuery,
3580
3656
  variables: {},
@@ -3585,11 +3661,11 @@ var auditDocuments = async (args) => {
3585
3661
  if (docResult.errors) {
3586
3662
  error = true;
3587
3663
  docResult.errors.forEach((err) => {
3588
- logger.error(import_chalk5.default.red(err.message));
3664
+ logger.error(chalk5.red(err.message));
3589
3665
  if (err.originalError.originalError) {
3590
3666
  logger.error(
3591
3667
  // @ts-ignore FIXME: this doesn't seem right
3592
- import_chalk5.default.red(` ${err.originalError.originalError.message}`)
3668
+ chalk5.red(` ${err.originalError.originalError.message}`)
3593
3669
  );
3594
3670
  }
3595
3671
  });
@@ -3616,7 +3692,7 @@ var auditDocuments = async (args) => {
3616
3692
  params: $params
3617
3693
  ){__typename}
3618
3694
  }`;
3619
- const mutationRes = await (0, import_graphql13.resolve)({
3695
+ const mutationRes = await resolve({
3620
3696
  database,
3621
3697
  query: mutation,
3622
3698
  variables: {
@@ -3631,7 +3707,7 @@ var auditDocuments = async (args) => {
3631
3707
  if (mutationRes.errors) {
3632
3708
  mutationRes.errors.forEach((err) => {
3633
3709
  error = true;
3634
- logger.error(import_chalk5.default.red(err.message));
3710
+ logger.error(chalk5.red(err.message));
3635
3711
  });
3636
3712
  }
3637
3713
  }
@@ -3648,38 +3724,31 @@ function filterObject(obj) {
3648
3724
  }
3649
3725
 
3650
3726
  // src/next/commands/audit-command/index.ts
3651
- var import_graphql15 = require("@tinacms/graphql");
3652
- var AuditCommand = class extends import_clipanion4.Command {
3653
- constructor() {
3654
- super(...arguments);
3655
- this.rootPath = import_clipanion4.Option.String("--rootPath", {
3656
- description: "Specify the root directory to run the CLI from"
3657
- });
3658
- this.verbose = import_clipanion4.Option.Boolean("-v,--verbose", false, {
3659
- description: "increase verbosity of logged output"
3660
- });
3661
- this.clean = import_clipanion4.Option.Boolean("--clean", false, {
3662
- description: "Clean the output"
3663
- });
3664
- this.useDefaultValues = import_clipanion4.Option.Boolean("--useDefaultValues", false, {
3665
- description: "When cleaning the output, use defaults on the config"
3666
- });
3667
- this.noTelemetry = import_clipanion4.Option.Boolean("--noTelemetry", false, {
3668
- description: "Disable anonymous telemetry that is collected"
3669
- });
3670
- this.datalayerPort = import_clipanion4.Option.String("--datalayer-port", "9000", {
3671
- description: "Specify a port to run the datalayer server on. (default 9000)"
3672
- });
3673
- }
3674
- static {
3675
- this.paths = [["audit"]];
3676
- }
3677
- static {
3678
- this.usage = import_clipanion4.Command.Usage({
3679
- category: `Commands`,
3680
- description: `Audit config and content files`
3681
- });
3682
- }
3727
+ import { AuditFileSystemBridge } from "@tinacms/graphql";
3728
+ var AuditCommand = class extends Command4 {
3729
+ static paths = [["audit"]];
3730
+ rootPath = Option4.String("--rootPath", {
3731
+ description: "Specify the root directory to run the CLI from"
3732
+ });
3733
+ verbose = Option4.Boolean("-v,--verbose", false, {
3734
+ description: "increase verbosity of logged output"
3735
+ });
3736
+ clean = Option4.Boolean("--clean", false, {
3737
+ description: "Clean the output"
3738
+ });
3739
+ useDefaultValues = Option4.Boolean("--useDefaultValues", false, {
3740
+ description: "When cleaning the output, use defaults on the config"
3741
+ });
3742
+ noTelemetry = Option4.Boolean("--noTelemetry", false, {
3743
+ description: "Disable anonymous telemetry that is collected"
3744
+ });
3745
+ datalayerPort = Option4.String("--datalayer-port", "9000", {
3746
+ description: "Specify a port to run the datalayer server on. (default 9000)"
3747
+ });
3748
+ static usage = Command4.Usage({
3749
+ category: `Commands`,
3750
+ description: `Audit config and content files`
3751
+ });
3683
3752
  async catch(error) {
3684
3753
  logger.error("Error occured during tinacms audit");
3685
3754
  if (this.verbose) {
@@ -3700,9 +3769,9 @@ var AuditCommand = class extends import_clipanion4.Command {
3700
3769
  const database = await createAndInitializeDatabase(
3701
3770
  configManager,
3702
3771
  Number(this.datalayerPort),
3703
- this.clean ? void 0 : new import_graphql15.AuditFileSystemBridge(configManager.rootPath)
3772
+ this.clean ? void 0 : new AuditFileSystemBridge(configManager.rootPath)
3704
3773
  );
3705
- const { tinaSchema, graphQLSchema, lookup } = await (0, import_graphql14.buildSchema)(
3774
+ const { tinaSchema, graphQLSchema, lookup } = await buildSchema3(
3706
3775
  configManager.config
3707
3776
  );
3708
3777
  const warnings = [];
@@ -3735,29 +3804,29 @@ var AuditCommand = class extends import_clipanion4.Command {
3735
3804
  };
3736
3805
 
3737
3806
  // src/next/commands/init-command/index.ts
3738
- var import_clipanion6 = require("clipanion");
3807
+ import { Command as Command6, Option as Option6 } from "clipanion";
3739
3808
 
3740
3809
  // src/cmds/init/detectEnvironment.ts
3741
- var import_fs_extra8 = __toESM(require("fs-extra"));
3742
- var import_path7 = __toESM(require("path"));
3810
+ import fs9 from "fs-extra";
3811
+ import path10 from "path";
3743
3812
  var checkGitignoreForItem = async ({
3744
3813
  baseDir,
3745
3814
  line
3746
3815
  }) => {
3747
- const gitignoreContent = import_fs_extra8.default.readFileSync(import_path7.default.join(baseDir, ".gitignore")).toString();
3816
+ const gitignoreContent = fs9.readFileSync(path10.join(baseDir, ".gitignore")).toString();
3748
3817
  return gitignoreContent.split("\n").some((item) => item === line);
3749
3818
  };
3750
3819
  var makeGeneratedFile = async (name2, generatedFileType, parentPath, opts) => {
3751
3820
  const result = {
3752
- fullPathTS: import_path7.default.join(
3821
+ fullPathTS: path10.join(
3753
3822
  parentPath,
3754
3823
  `${name2}.${opts?.typescriptSuffix || opts?.extensionOverride || "ts"}`
3755
3824
  ),
3756
- fullPathJS: import_path7.default.join(
3825
+ fullPathJS: path10.join(
3757
3826
  parentPath,
3758
3827
  `${name2}.${opts?.extensionOverride || "js"}`
3759
3828
  ),
3760
- fullPathOverride: opts?.extensionOverride ? import_path7.default.join(parentPath, `${name2}.${opts?.extensionOverride}`) : "",
3829
+ fullPathOverride: opts?.extensionOverride ? path10.join(parentPath, `${name2}.${opts?.extensionOverride}`) : "",
3761
3830
  generatedFileType,
3762
3831
  name: name2,
3763
3832
  parentPath,
@@ -3775,8 +3844,8 @@ var makeGeneratedFile = async (name2, generatedFileType, parentPath, opts) => {
3775
3844
  };
3776
3845
  }
3777
3846
  };
3778
- result.typescriptExists = await import_fs_extra8.default.pathExists(result.fullPathTS);
3779
- result.javascriptExists = await import_fs_extra8.default.pathExists(result.fullPathJS);
3847
+ result.typescriptExists = await fs9.pathExists(result.fullPathTS);
3848
+ result.javascriptExists = await fs9.pathExists(result.fullPathJS);
3780
3849
  return result;
3781
3850
  };
3782
3851
  var detectEnvironment = async ({
@@ -3785,21 +3854,21 @@ var detectEnvironment = async ({
3785
3854
  rootPath,
3786
3855
  debug = false
3787
3856
  }) => {
3788
- const hasForestryConfig = await import_fs_extra8.default.pathExists(
3789
- import_path7.default.join(pathToForestryConfig, ".forestry", "settings.yml")
3857
+ const hasForestryConfig = await fs9.pathExists(
3858
+ path10.join(pathToForestryConfig, ".forestry", "settings.yml")
3790
3859
  );
3791
- const sampleContentPath = import_path7.default.join(
3860
+ const sampleContentPath = path10.join(
3792
3861
  baseDir,
3793
3862
  "content",
3794
3863
  "posts",
3795
3864
  "hello-world.md"
3796
3865
  );
3797
- 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")));
3798
- const tinaFolder = import_path7.default.join(baseDir, "tina");
3866
+ const usingSrc = fs9.pathExistsSync(path10.join(baseDir, "src")) && (fs9.pathExistsSync(path10.join(baseDir, "src", "app")) || fs9.pathExistsSync(path10.join(baseDir, "src", "pages")));
3867
+ const tinaFolder = path10.join(baseDir, "tina");
3799
3868
  const tinaConfigExists = Boolean(
3800
3869
  // Does the tina folder exist?
3801
- await import_fs_extra8.default.pathExists(tinaFolder) && // Does the tina folder contain a config file?
3802
- (await import_fs_extra8.default.readdir(tinaFolder)).find((x) => x.includes("config"))
3870
+ await fs9.pathExists(tinaFolder) && // Does the tina folder contain a config file?
3871
+ (await fs9.readdir(tinaFolder)).find((x) => x.includes("config"))
3803
3872
  );
3804
3873
  const pagesDir = [baseDir, usingSrc ? "src" : false, "pages"].filter(
3805
3874
  Boolean
@@ -3811,12 +3880,12 @@ var detectEnvironment = async ({
3811
3880
  "next-api-handler": await makeGeneratedFile(
3812
3881
  "[...routes]",
3813
3882
  "next-api-handler",
3814
- import_path7.default.join(...pagesDir, "api", "tina")
3883
+ path10.join(...pagesDir, "api", "tina")
3815
3884
  ),
3816
3885
  "reactive-example": await makeGeneratedFile(
3817
3886
  "[filename]",
3818
3887
  "reactive-example",
3819
- import_path7.default.join(...pagesDir, "demo", "blog"),
3888
+ path10.join(...pagesDir, "demo", "blog"),
3820
3889
  {
3821
3890
  typescriptSuffix: "tsx"
3822
3891
  }
@@ -3824,22 +3893,22 @@ var detectEnvironment = async ({
3824
3893
  "users-json": await makeGeneratedFile(
3825
3894
  "index",
3826
3895
  "users-json",
3827
- import_path7.default.join(baseDir, "content", "users"),
3896
+ path10.join(baseDir, "content", "users"),
3828
3897
  { extensionOverride: "json" }
3829
3898
  ),
3830
3899
  "sample-content": await makeGeneratedFile(
3831
3900
  "hello-world",
3832
3901
  "sample-content",
3833
- import_path7.default.join(baseDir, "content", "posts"),
3902
+ path10.join(baseDir, "content", "posts"),
3834
3903
  { extensionOverride: "md" }
3835
3904
  )
3836
3905
  };
3837
- const hasSampleContent = await import_fs_extra8.default.pathExists(sampleContentPath);
3838
- const hasPackageJSON = await import_fs_extra8.default.pathExists("package.json");
3906
+ const hasSampleContent = await fs9.pathExists(sampleContentPath);
3907
+ const hasPackageJSON = await fs9.pathExists("package.json");
3839
3908
  let hasTinaDeps = false;
3840
3909
  if (hasPackageJSON) {
3841
3910
  try {
3842
- const packageJSON = await import_fs_extra8.default.readJSON("package.json");
3911
+ const packageJSON = await fs9.readJSON("package.json");
3843
3912
  const deps = [];
3844
3913
  if (packageJSON?.dependencies) {
3845
3914
  deps.push(...Object.keys(packageJSON.dependencies));
@@ -3856,15 +3925,15 @@ var detectEnvironment = async ({
3856
3925
  );
3857
3926
  }
3858
3927
  }
3859
- const hasGitIgnore = await import_fs_extra8.default.pathExists(import_path7.default.join(".gitignore"));
3928
+ const hasGitIgnore = await fs9.pathExists(path10.join(".gitignore"));
3860
3929
  const hasGitIgnoreNodeModules = hasGitIgnore && await checkGitignoreForItem({ baseDir, line: "node_modules" });
3861
3930
  const hasEnvTina = hasGitIgnore && await checkGitignoreForItem({ baseDir, line: ".env.tina" });
3862
3931
  const hasGitIgnoreEnv = hasGitIgnore && await checkGitignoreForItem({ baseDir, line: ".env" });
3863
3932
  let frontMatterFormat;
3864
3933
  if (hasForestryConfig) {
3865
- const hugoConfigPath = import_path7.default.join(rootPath, "config.toml");
3866
- if (await import_fs_extra8.default.pathExists(hugoConfigPath)) {
3867
- const hugoConfig = await import_fs_extra8.default.readFile(hugoConfigPath, "utf8");
3934
+ const hugoConfigPath = path10.join(rootPath, "config.toml");
3935
+ if (await fs9.pathExists(hugoConfigPath)) {
3936
+ const hugoConfig = await fs9.readFile(hugoConfigPath, "utf8");
3868
3937
  const metaDataFormat = hugoConfig.toString().match(/metaDataFormat = "(.*)"/)?.[1];
3869
3938
  if (metaDataFormat && (metaDataFormat === "yaml" || metaDataFormat === "toml" || metaDataFormat === "json")) {
3870
3939
  frontMatterFormat = metaDataFormat;
@@ -3895,10 +3964,10 @@ var detectEnvironment = async ({
3895
3964
  var detectEnvironment_default = detectEnvironment;
3896
3965
 
3897
3966
  // src/cmds/init/prompts/index.ts
3898
- var import_prompts6 = __toESM(require("prompts"));
3967
+ import prompts6 from "prompts";
3899
3968
 
3900
3969
  // src/cmds/init/prompts/askTinaCloudSetup.ts
3901
- var import_prompts2 = __toESM(require("prompts"));
3970
+ import prompts2 from "prompts";
3902
3971
  var tinaCloudSetupQuestions = [
3903
3972
  {
3904
3973
  name: "clientId",
@@ -3920,7 +3989,7 @@ ${logText(
3920
3989
  }
3921
3990
  ];
3922
3991
  var askTinaCloudSetup = async ({ config: config2 }) => {
3923
- const { clientId, token } = await (0, import_prompts2.default)(tinaCloudSetupQuestions);
3992
+ const { clientId, token } = await prompts2(tinaCloudSetupQuestions);
3924
3993
  config2.envVars.push(
3925
3994
  {
3926
3995
  key: "NEXT_PUBLIC_TINA_CLIENT_ID",
@@ -3934,7 +4003,7 @@ var askTinaCloudSetup = async ({ config: config2 }) => {
3934
4003
  };
3935
4004
 
3936
4005
  // src/cmds/init/prompts/gitProvider.ts
3937
- var import_prompts3 = __toESM(require("prompts"));
4006
+ import prompts3 from "prompts";
3938
4007
  var supportedGitProviders = {
3939
4008
  github: {
3940
4009
  imports: [
@@ -3956,7 +4025,7 @@ var supportedGitProviders = {
3956
4025
  }
3957
4026
  };
3958
4027
  var chooseGitProvider = async ({ config: config2 }) => {
3959
- const result = await (0, import_prompts3.default)([
4028
+ const result = await prompts3([
3960
4029
  {
3961
4030
  name: "githubToken",
3962
4031
  type: "text",
@@ -3964,7 +4033,7 @@ var chooseGitProvider = async ({ config: config2 }) => {
3964
4033
  ${logText(
3965
4034
  "Learn more here: "
3966
4035
  )}${linkText(
3967
- "https://tina.io/docs/self-hosted/existing-site/#github-personal-access-token"
4036
+ "https://tina.io/docs/r/self-hosting-nextjs/#github-personal-access-token"
3968
4037
  )}`,
3969
4038
  initial: process.env.GITHUB_PERSONAL_ACCESS_TOKEN
3970
4039
  },
@@ -4001,7 +4070,7 @@ ${logText(
4001
4070
  };
4002
4071
 
4003
4072
  // src/cmds/init/prompts/databaseAdapter.ts
4004
- var import_prompts4 = __toESM(require("prompts"));
4073
+ import prompts4 from "prompts";
4005
4074
  var supportedDatabaseAdapters = {
4006
4075
  ["upstash-redis"]: {
4007
4076
  databaseAdapterClassText: `new RedisLevel({
@@ -4047,7 +4116,7 @@ var databaseAdapterUpdateConfig = {
4047
4116
  other: async (_args) => {
4048
4117
  },
4049
4118
  mongodb: async ({ config: config2 }) => {
4050
- const result = await (0, import_prompts4.default)([
4119
+ const result = await prompts4([
4051
4120
  {
4052
4121
  name: "mongoDBUri",
4053
4122
  type: "text",
@@ -4062,7 +4131,7 @@ var databaseAdapterUpdateConfig = {
4062
4131
  });
4063
4132
  },
4064
4133
  "upstash-redis": async ({ config: config2 }) => {
4065
- const result = await (0, import_prompts4.default)([
4134
+ const result = await prompts4([
4066
4135
  {
4067
4136
  name: "kvRestApiUrl",
4068
4137
  type: "text",
@@ -4093,7 +4162,7 @@ var chooseDatabaseAdapter = async ({
4093
4162
  framework,
4094
4163
  config: config2
4095
4164
  }) => {
4096
- const answers = await (0, import_prompts4.default)([
4165
+ const answers = await prompts4([
4097
4166
  {
4098
4167
  name: "dataLayerAdapter",
4099
4168
  message: "Select a self-hosted Database Adapter",
@@ -4123,8 +4192,8 @@ var chooseDatabaseAdapter = async ({
4123
4192
  };
4124
4193
 
4125
4194
  // src/cmds/init/prompts/authProvider.ts
4126
- var import_crypto_js = __toESM(require("crypto-js"));
4127
- var import_prompts5 = __toESM(require("prompts"));
4195
+ import crypto2 from "crypto-js";
4196
+ import prompts5 from "prompts";
4128
4197
  var supportedAuthProviders = {
4129
4198
  other: {
4130
4199
  name: "other"
@@ -4173,12 +4242,12 @@ var authProviderUpdateConfig = {
4173
4242
  },
4174
4243
  "tina-cloud": askTinaCloudSetup,
4175
4244
  "next-auth": async ({ config: config2 }) => {
4176
- const result = await (0, import_prompts5.default)([
4245
+ const result = await prompts5([
4177
4246
  {
4178
4247
  name: "nextAuthSecret",
4179
4248
  type: "text",
4180
4249
  message: `What is the NextAuth.js Secret? (Hit enter to use a randomly generated secret)`,
4181
- initial: process.env.NEXTAUTH_SECRET || import_crypto_js.default.lib.WordArray.random(16).toString()
4250
+ initial: process.env.NEXTAUTH_SECRET || crypto2.lib.WordArray.random(16).toString()
4182
4251
  }
4183
4252
  ]);
4184
4253
  config2.envVars.push({
@@ -4203,7 +4272,7 @@ var forestryDisclaimer = logText(
4203
4272
  `Note: This migration will update some of your content to match tina. Please save a backup of your content before doing this migration. (This can be done with git)`
4204
4273
  );
4205
4274
  var askCommonSetUp = async () => {
4206
- const answers = await (0, import_prompts6.default)([
4275
+ const answers = await prompts6([
4207
4276
  {
4208
4277
  name: "framework",
4209
4278
  type: "select",
@@ -4225,7 +4294,8 @@ var askCommonSetUp = async () => {
4225
4294
  choices: [
4226
4295
  { title: "PNPM", value: "pnpm" },
4227
4296
  { title: "Yarn", value: "yarn" },
4228
- { title: "NPM", value: "npm" }
4297
+ { title: "NPM", value: "npm" },
4298
+ { title: "Bun", value: "bun" }
4229
4299
  ]
4230
4300
  }
4231
4301
  ]);
@@ -4266,7 +4336,7 @@ ${forestryDisclaimer}`
4266
4336
  message: `What format are you using in your frontmatter?`
4267
4337
  });
4268
4338
  }
4269
- const answers = await (0, import_prompts6.default)(questions);
4339
+ const answers = await prompts6(questions);
4270
4340
  return answers;
4271
4341
  };
4272
4342
  var askTinaSetupPrompts = async (params) => {
@@ -4286,16 +4356,16 @@ var askTinaSetupPrompts = async (params) => {
4286
4356
  message: `Where are public assets stored? (default: "public")
4287
4357
  ` + logText(
4288
4358
  `Not sure what value to use? Refer to our "Frameworks" doc: ${linkText(
4289
- "https://tina.io/docs/integration/frameworks/#configuring-tina-with-each-framework"
4359
+ "https://tina.io/docs/r/framework-guides-overview"
4290
4360
  )}`
4291
4361
  )
4292
4362
  });
4293
4363
  }
4294
- const answers = await (0, import_prompts6.default)(questions);
4364
+ const answers = await prompts6(questions);
4295
4365
  return answers;
4296
4366
  };
4297
4367
  var askIfUsingSelfHosted = async () => {
4298
- const answers = await (0, import_prompts6.default)([
4368
+ const answers = await prompts6([
4299
4369
  {
4300
4370
  name: "hosting",
4301
4371
  type: "select",
@@ -4328,20 +4398,20 @@ var makeImportString = (imports) => {
4328
4398
  };
4329
4399
 
4330
4400
  // src/cmds/init/prompts/generatedFiles.ts
4331
- var import_prompts7 = __toESM(require("prompts"));
4401
+ import prompts7 from "prompts";
4332
4402
  var askIfOverride = async ({
4333
4403
  generatedFile,
4334
4404
  usingTypescript
4335
4405
  }) => {
4336
4406
  if (usingTypescript) {
4337
- const result = await (0, import_prompts7.default)({
4407
+ const result = await prompts7({
4338
4408
  name: `override`,
4339
4409
  type: "confirm",
4340
4410
  message: `Found existing file at ${generatedFile.fullPathTS}. Would you like to overwrite?`
4341
4411
  });
4342
4412
  return Boolean(result.override);
4343
4413
  } else {
4344
- const result = await (0, import_prompts7.default)({
4414
+ const result = await prompts7({
4345
4415
  name: `override`,
4346
4416
  type: "confirm",
4347
4417
  message: `Found existing file at ${generatedFile.fullPathJS}. Would you like to overwrite?`
@@ -4476,23 +4546,25 @@ var CLICommand = class {
4476
4546
  };
4477
4547
 
4478
4548
  // src/cmds/init/apply.ts
4479
- var import_path11 = __toESM(require("path"));
4549
+ import path14 from "path";
4480
4550
 
4481
4551
  // src/cmds/forestry-migrate/index.ts
4482
- var import_fs_extra10 = __toESM(require("fs-extra"));
4483
- var import_path9 = __toESM(require("path"));
4484
- var import_js_yaml2 = __toESM(require("js-yaml"));
4485
- var import_minimatch = __toESM(require("minimatch"));
4486
- var import_graphql16 = require("@tinacms/graphql");
4552
+ import fs11 from "fs-extra";
4553
+ import path12 from "path";
4554
+ import yaml2 from "js-yaml";
4555
+ import pkg from "minimatch";
4556
+ import { parseFile, stringifyFile } from "@tinacms/graphql";
4557
+ import { CONTENT_FORMATS } from "@tinacms/schema-tools";
4487
4558
 
4488
4559
  // src/cmds/forestry-migrate/util/index.ts
4489
- var import_fs_extra9 = __toESM(require("fs-extra"));
4490
- var import_path8 = __toESM(require("path"));
4491
- var import_js_yaml = __toESM(require("js-yaml"));
4492
- var import_zod = __toESM(require("zod"));
4560
+ import fs10 from "fs-extra";
4561
+ import path11 from "path";
4562
+ import yaml from "js-yaml";
4563
+ import z from "zod";
4493
4564
 
4494
4565
  // src/cmds/forestry-migrate/util/errorSingleton.ts
4495
4566
  var ErrorSingleton = class _ErrorSingleton {
4567
+ static instance;
4496
4568
  /**
4497
4569
  * The Singleton's constructor should always be private to prevent direct
4498
4570
  * construction calls with the `new` operator.
@@ -4512,6 +4584,7 @@ var ErrorSingleton = class _ErrorSingleton {
4512
4584
  }
4513
4585
  return _ErrorSingleton.instance;
4514
4586
  }
4587
+ collectionNameErrors;
4515
4588
  addErrorName(error) {
4516
4589
  this.collectionNameErrors.push(error);
4517
4590
  }
@@ -4534,8 +4607,8 @@ var ErrorSingleton = class _ErrorSingleton {
4534
4607
  };
4535
4608
 
4536
4609
  // src/cmds/forestry-migrate/util/codeTransformer.ts
4537
- var import_prettier = require("prettier");
4538
- var import_parser_typescript = __toESM(require("prettier/parser-typescript"));
4610
+ import { format } from "prettier";
4611
+ import TsParser from "prettier/parser-typescript.js";
4539
4612
  var addVariablesToCode = (codeWithTinaPrefix) => {
4540
4613
  const code = codeWithTinaPrefix.replace(
4541
4614
  /"__TINA_INTERNAL__:::(.*?):::"/g,
@@ -4572,7 +4645,7 @@ var makeTemplateFile = async ({
4572
4645
  `export function ${stringifyLabelWithField(
4573
4646
  template.templateObj.label
4574
4647
  )} (){
4575
- return ${addVariablesToCode(JSON.stringify(template.fields, null, 2)).code} ${usingTypescript ? "as TinaField[]" : ""}
4648
+ return ${addVariablesToCode(JSON.stringify(template.fields, null, 2)).code} ${usingTypescript ? "as TinaField[]" : ""}
4576
4649
  } `
4577
4650
  );
4578
4651
  }
@@ -4580,9 +4653,9 @@ var makeTemplateFile = async ({
4580
4653
  ${usingTypescript ? "import type { TinaField } from 'tinacms'" : ""}
4581
4654
  ${templateCodeText.join("\n")}
4582
4655
  `;
4583
- const formattedCode = (0, import_prettier.format)(templateCode, {
4656
+ const formattedCode = format(templateCode, {
4584
4657
  parser: "typescript",
4585
- plugins: [import_parser_typescript.default]
4658
+ plugins: [TsParser]
4586
4659
  });
4587
4660
  return { importStatements, templateCodeText: formattedCode };
4588
4661
  };
@@ -4614,82 +4687,82 @@ var stringifyTemplateName = (name2, template) => {
4614
4687
  return newName;
4615
4688
  }
4616
4689
  };
4617
- var forestryConfigSchema = import_zod.default.object({
4618
- sections: import_zod.default.array(
4619
- import_zod.default.object({
4620
- type: import_zod.default.union([
4621
- import_zod.default.literal("directory"),
4622
- import_zod.default.literal("document"),
4623
- import_zod.default.literal("heading"),
4624
- import_zod.default.literal("jekyll-pages"),
4625
- import_zod.default.literal("jekyll-posts")
4690
+ var forestryConfigSchema = z.object({
4691
+ sections: z.array(
4692
+ z.object({
4693
+ type: z.union([
4694
+ z.literal("directory"),
4695
+ z.literal("document"),
4696
+ z.literal("heading"),
4697
+ z.literal("jekyll-pages"),
4698
+ z.literal("jekyll-posts")
4626
4699
  ]),
4627
- label: import_zod.default.string(),
4628
- path: import_zod.default.string().optional().nullable(),
4629
- match: import_zod.default.string().optional().nullable(),
4630
- exclude: import_zod.default.string().optional().nullable(),
4631
- create: import_zod.default.union([import_zod.default.literal("all"), import_zod.default.literal("documents"), import_zod.default.literal("none")]).optional(),
4632
- templates: import_zod.default.array(import_zod.default.string()).optional().nullable(),
4633
- new_doc_ext: import_zod.default.string().optional().nullable(),
4634
- read_only: import_zod.default.boolean().optional().nullable()
4700
+ label: z.string(),
4701
+ path: z.string().optional().nullable(),
4702
+ match: z.string().optional().nullable(),
4703
+ exclude: z.string().optional().nullable(),
4704
+ create: z.union([z.literal("all"), z.literal("documents"), z.literal("none")]).optional(),
4705
+ templates: z.array(z.string()).optional().nullable(),
4706
+ new_doc_ext: z.string().optional().nullable(),
4707
+ read_only: z.boolean().optional().nullable()
4635
4708
  })
4636
4709
  )
4637
4710
  });
4638
- var forestryFieldWithoutField = import_zod.default.object({
4711
+ var forestryFieldWithoutField = z.object({
4639
4712
  // TODO: maybe better type this?
4640
- type: import_zod.default.union([
4641
- import_zod.default.literal("text"),
4642
- import_zod.default.literal("datetime"),
4643
- import_zod.default.literal("list"),
4644
- import_zod.default.literal("file"),
4645
- import_zod.default.literal("image_gallery"),
4646
- import_zod.default.literal("textarea"),
4647
- import_zod.default.literal("tag_list"),
4648
- import_zod.default.literal("number"),
4649
- import_zod.default.literal("boolean"),
4650
- import_zod.default.literal("field_group"),
4651
- import_zod.default.literal("field_group_list"),
4652
- import_zod.default.literal("select"),
4653
- import_zod.default.literal("include"),
4654
- import_zod.default.literal("blocks"),
4655
- import_zod.default.literal("color")
4713
+ type: z.union([
4714
+ z.literal("text"),
4715
+ z.literal("datetime"),
4716
+ z.literal("list"),
4717
+ z.literal("file"),
4718
+ z.literal("image_gallery"),
4719
+ z.literal("textarea"),
4720
+ z.literal("tag_list"),
4721
+ z.literal("number"),
4722
+ z.literal("boolean"),
4723
+ z.literal("field_group"),
4724
+ z.literal("field_group_list"),
4725
+ z.literal("select"),
4726
+ z.literal("include"),
4727
+ z.literal("blocks"),
4728
+ z.literal("color")
4656
4729
  ]),
4657
- template_types: import_zod.default.array(import_zod.default.string()).optional().nullable(),
4658
- name: import_zod.default.string(),
4659
- label: import_zod.default.string(),
4660
- default: import_zod.default.any().optional(),
4661
- template: import_zod.default.string().optional(),
4662
- config: import_zod.default.object({
4730
+ template_types: z.array(z.string()).optional().nullable(),
4731
+ name: z.string(),
4732
+ label: z.string(),
4733
+ default: z.any().optional(),
4734
+ template: z.string().optional(),
4735
+ config: z.object({
4663
4736
  // min and max are used for lists
4664
- min: import_zod.default.number().optional().nullable(),
4665
- max: import_zod.default.number().optional().nullable(),
4666
- required: import_zod.default.boolean().optional().nullable(),
4667
- use_select: import_zod.default.boolean().optional().nullable(),
4668
- date_format: import_zod.default.string().optional().nullable(),
4669
- time_format: import_zod.default.string().optional().nullable(),
4670
- options: import_zod.default.array(import_zod.default.string()).optional().nullable(),
4671
- source: import_zod.default.object({
4672
- type: import_zod.default.union([
4673
- import_zod.default.literal("custom"),
4674
- import_zod.default.literal("pages"),
4675
- import_zod.default.literal("documents"),
4676
- import_zod.default.literal("simple"),
4737
+ min: z.number().optional().nullable(),
4738
+ max: z.number().optional().nullable(),
4739
+ required: z.boolean().optional().nullable(),
4740
+ use_select: z.boolean().optional().nullable(),
4741
+ date_format: z.string().optional().nullable(),
4742
+ time_format: z.string().optional().nullable(),
4743
+ options: z.array(z.string()).optional().nullable(),
4744
+ source: z.object({
4745
+ type: z.union([
4746
+ z.literal("custom"),
4747
+ z.literal("pages"),
4748
+ z.literal("documents"),
4749
+ z.literal("simple"),
4677
4750
  // TODO: I want to ignore this key if its invalid
4678
- import_zod.default.string()
4751
+ z.string()
4679
4752
  ]).optional().nullable(),
4680
- section: import_zod.default.string().optional().nullable()
4753
+ section: z.string().optional().nullable()
4681
4754
  }).optional()
4682
4755
  }).optional()
4683
4756
  });
4684
- var forestryField = import_zod.default.lazy(
4757
+ var forestryField = z.lazy(
4685
4758
  () => forestryFieldWithoutField.extend({
4686
- fields: import_zod.default.array(forestryField).optional()
4759
+ fields: z.array(forestryField).optional()
4687
4760
  })
4688
4761
  );
4689
- var FrontmatterTemplateSchema = import_zod.default.object({
4690
- label: import_zod.default.string(),
4691
- hide_body: import_zod.default.boolean().optional(),
4692
- fields: import_zod.default.array(forestryField).optional()
4762
+ var FrontmatterTemplateSchema = z.object({
4763
+ label: z.string(),
4764
+ hide_body: z.boolean().optional(),
4765
+ fields: z.array(forestryField).optional()
4693
4766
  });
4694
4767
  var transformForestryFieldsToTinaFields = ({
4695
4768
  fields,
@@ -4912,7 +4985,7 @@ var transformForestryFieldsToTinaFields = ({
4912
4985
  return tinaFields;
4913
4986
  };
4914
4987
  var getFieldsFromTemplates = ({ tem, pathToForestryConfig, skipBlocks = false }) => {
4915
- const templatePath = import_path8.default.join(
4988
+ const templatePath = path11.join(
4916
4989
  pathToForestryConfig,
4917
4990
  ".forestry",
4918
4991
  "front_matter",
@@ -4921,7 +4994,7 @@ var getFieldsFromTemplates = ({ tem, pathToForestryConfig, skipBlocks = false })
4921
4994
  );
4922
4995
  let templateString = "";
4923
4996
  try {
4924
- templateString = import_fs_extra9.default.readFileSync(templatePath).toString();
4997
+ templateString = fs10.readFileSync(templatePath).toString();
4925
4998
  } catch {
4926
4999
  throw new Error(
4927
5000
  `Could not find template ${tem} at ${templatePath}
@@ -4929,7 +5002,7 @@ var getFieldsFromTemplates = ({ tem, pathToForestryConfig, skipBlocks = false })
4929
5002
  This will require manual migration.`
4930
5003
  );
4931
5004
  }
4932
- const templateObj = import_js_yaml.default.load(templateString);
5005
+ const templateObj = yaml.load(templateString);
4933
5006
  const template = parseTemplates({ val: templateObj });
4934
5007
  const fields = transformForestryFieldsToTinaFields({
4935
5008
  fields: template.fields,
@@ -4949,6 +5022,7 @@ var parseSections = ({ val }) => {
4949
5022
  };
4950
5023
 
4951
5024
  // src/cmds/forestry-migrate/index.ts
5025
+ var { minimatch } = pkg;
4952
5026
  var BODY_FIELD = {
4953
5027
  // This is the body field
4954
5028
  type: "rich-text",
@@ -4977,7 +5051,7 @@ var transformForestryMatchToTinaMatch = (match) => {
4977
5051
  };
4978
5052
  function checkExt(ext) {
4979
5053
  const extReal = ext.replace(".", "");
4980
- if (["mdx", "md", "json", "yaml", "yml", "toml"].includes(extReal)) {
5054
+ if (CONTENT_FORMATS.includes(extReal)) {
4981
5055
  return extReal;
4982
5056
  } else {
4983
5057
  return false;
@@ -4986,9 +5060,9 @@ function checkExt(ext) {
4986
5060
  var generateAllTemplates = async ({
4987
5061
  pathToForestryConfig
4988
5062
  }) => {
4989
- const allTemplates = (await import_fs_extra10.default.readdir(
4990
- import_path9.default.join(pathToForestryConfig, ".forestry", "front_matter", "templates")
4991
- )).map((tem) => import_path9.default.basename(tem, ".yml"));
5063
+ const allTemplates = (await fs11.readdir(
5064
+ path12.join(pathToForestryConfig, ".forestry", "front_matter", "templates")
5065
+ )).map((tem) => path12.basename(tem, ".yml"));
4992
5066
  const templateMap = /* @__PURE__ */ new Map();
4993
5067
  const proms = allTemplates.map(async (tem) => {
4994
5068
  try {
@@ -5063,7 +5137,7 @@ var generateCollectionFromForestrySection = (args) => {
5063
5137
  glob = section.path + "/" + section.match;
5064
5138
  }
5065
5139
  if (pages.some((page) => {
5066
- return (0, import_minimatch.default)(page, glob);
5140
+ return minimatch(page, glob);
5067
5141
  })) {
5068
5142
  forestryTemplates.push(templateKey);
5069
5143
  }
@@ -5133,9 +5207,9 @@ var generateCollectionFromForestrySection = (args) => {
5133
5207
  return c;
5134
5208
  } else if (section.type === "document") {
5135
5209
  const filePath = section.path;
5136
- const extname = import_path9.default.extname(filePath);
5137
- const fileName = import_path9.default.basename(filePath, extname);
5138
- const dir = import_path9.default.dirname(filePath);
5210
+ const extname = path12.extname(filePath);
5211
+ const fileName = path12.basename(filePath, extname);
5212
+ const dir = path12.dirname(filePath);
5139
5213
  const ext = checkExt(extname);
5140
5214
  if (ext) {
5141
5215
  const fields = [];
@@ -5155,7 +5229,7 @@ var generateCollectionFromForestrySection = (args) => {
5155
5229
  name: "dummy",
5156
5230
  label: "Dummy field",
5157
5231
  type: "string",
5158
- 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"
5232
+ 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"
5159
5233
  });
5160
5234
  logger.warn(
5161
5235
  warnText(
@@ -5197,8 +5271,8 @@ var generateCollections = async ({
5197
5271
  templateMap,
5198
5272
  usingTypescript
5199
5273
  });
5200
- const forestryConfig = await import_fs_extra10.default.readFile(
5201
- import_path9.default.join(pathToForestryConfig, ".forestry", "settings.yml")
5274
+ const forestryConfig = await fs11.readFile(
5275
+ path12.join(pathToForestryConfig, ".forestry", "settings.yml")
5202
5276
  );
5203
5277
  rewriteTemplateKeysInDocs({
5204
5278
  templateMap,
@@ -5208,7 +5282,7 @@ var generateCollections = async ({
5208
5282
  }
5209
5283
  });
5210
5284
  const collections = parseSections({
5211
- val: import_js_yaml2.default.load(forestryConfig.toString())
5285
+ val: yaml2.load(forestryConfig.toString())
5212
5286
  }).sections.map(
5213
5287
  (section) => generateCollectionFromForestrySection({
5214
5288
  section,
@@ -5228,13 +5302,13 @@ var rewriteTemplateKeysInDocs = (args) => {
5228
5302
  const { templateObj } = templateMap.get(templateKey);
5229
5303
  templateObj?.pages?.forEach((page) => {
5230
5304
  try {
5231
- const filePath = import_path9.default.join(page);
5232
- if (import_fs_extra10.default.lstatSync(filePath).isDirectory()) {
5305
+ const filePath = path12.join(page);
5306
+ if (fs11.lstatSync(filePath).isDirectory()) {
5233
5307
  return;
5234
5308
  }
5235
- const extname = import_path9.default.extname(filePath);
5236
- const fileContent = import_fs_extra10.default.readFileSync(filePath).toString();
5237
- const content = (0, import_graphql16.parseFile)(
5309
+ const extname = path12.extname(filePath);
5310
+ const fileContent = fs11.readFileSync(filePath).toString();
5311
+ const content = parseFile(
5238
5312
  fileContent,
5239
5313
  extname,
5240
5314
  (yup) => yup.object({}),
@@ -5244,9 +5318,9 @@ var rewriteTemplateKeysInDocs = (args) => {
5244
5318
  _template: stringifyLabel(templateKey),
5245
5319
  ...content
5246
5320
  };
5247
- import_fs_extra10.default.writeFileSync(
5321
+ fs11.writeFileSync(
5248
5322
  filePath,
5249
- (0, import_graphql16.stringifyFile)(newContent, extname, true, markdownParseConfig)
5323
+ stringifyFile(newContent, extname, true, markdownParseConfig)
5250
5324
  );
5251
5325
  } catch (error) {
5252
5326
  console.log(
@@ -5258,32 +5332,25 @@ var rewriteTemplateKeysInDocs = (args) => {
5258
5332
  };
5259
5333
 
5260
5334
  // src/cmds/init/apply.ts
5261
- var import_metrics2 = require("@tinacms/metrics");
5262
- var import_fs_extra13 = __toESM(require("fs-extra"));
5335
+ import { Telemetry as Telemetry2 } from "@tinacms/metrics";
5336
+ import fs14 from "fs-extra";
5263
5337
 
5264
5338
  // src/next/commands/codemod-command/index.ts
5265
- var import_clipanion5 = require("clipanion");
5266
- var import_fs_extra11 = __toESM(require("fs-extra"));
5267
- var import_path10 = __toESM(require("path"));
5268
- var CodemodCommand = class extends import_clipanion5.Command {
5269
- constructor() {
5270
- super(...arguments);
5271
- this.rootPath = import_clipanion5.Option.String("--rootPath", {
5272
- description: "Specify the root directory to run the CLI from"
5273
- });
5274
- this.verbose = import_clipanion5.Option.Boolean("-v,--verbose", false, {
5275
- description: "increase verbosity of logged output"
5276
- });
5277
- }
5278
- static {
5279
- this.paths = [["codemod"], ["codemod", "move-tina-folder"]];
5280
- }
5281
- static {
5282
- this.usage = import_clipanion5.Command.Usage({
5283
- category: `Commands`,
5284
- description: `Use codemods for various Tina tasks`
5285
- });
5286
- }
5339
+ import { Command as Command5, Option as Option5 } from "clipanion";
5340
+ import fs12 from "fs-extra";
5341
+ import path13 from "path";
5342
+ var CodemodCommand = class extends Command5 {
5343
+ static paths = [["codemod"], ["codemod", "move-tina-folder"]];
5344
+ rootPath = Option5.String("--rootPath", {
5345
+ description: "Specify the root directory to run the CLI from"
5346
+ });
5347
+ verbose = Option5.Boolean("-v,--verbose", false, {
5348
+ description: "increase verbosity of logged output"
5349
+ });
5350
+ static usage = Command5.Usage({
5351
+ category: `Commands`,
5352
+ description: `Use codemods for various Tina tasks`
5353
+ });
5287
5354
  async catch(error) {
5288
5355
  console.log(error);
5289
5356
  }
@@ -5312,13 +5379,13 @@ var moveTinaFolder = async (rootPath = process.cwd()) => {
5312
5379
  logger.error(e.message);
5313
5380
  process.exit(1);
5314
5381
  }
5315
- const tinaDestination = import_path10.default.join(configManager.rootPath, "tina");
5316
- if (await import_fs_extra11.default.existsSync(tinaDestination)) {
5382
+ const tinaDestination = path13.join(configManager.rootPath, "tina");
5383
+ if (await fs12.existsSync(tinaDestination)) {
5317
5384
  logger.info(
5318
5385
  `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.`
5319
5386
  );
5320
5387
  } else {
5321
- await import_fs_extra11.default.moveSync(configManager.tinaFolderPath, tinaDestination);
5388
+ await fs12.moveSync(configManager.tinaFolderPath, tinaDestination);
5322
5389
  await writeGitignore(configManager.rootPath);
5323
5390
  logger.info(
5324
5391
  "Move to 'tina' folder complete. Be sure to update any imports of the autogenerated client!"
@@ -5326,8 +5393,8 @@ var moveTinaFolder = async (rootPath = process.cwd()) => {
5326
5393
  }
5327
5394
  };
5328
5395
  var writeGitignore = async (rootPath) => {
5329
- await import_fs_extra11.default.outputFileSync(
5330
- import_path10.default.join(rootPath, "tina", ".gitignore"),
5396
+ await fs12.outputFileSync(
5397
+ path13.join(rootPath, "tina", ".gitignore"),
5331
5398
  "__generated__"
5332
5399
  );
5333
5400
  };
@@ -5380,7 +5447,7 @@ const BlogPage = (props) => {
5380
5447
  <div className='bg-green-100 text-center'>
5381
5448
  Lost and looking for a place to start?
5382
5449
  <a
5383
- href='https://tina.io/guides/tina-cloud/getting-started/overview/'
5450
+ href='https://tina.io/docs/r/beginner-series'
5384
5451
  className='text-blue-500 underline'
5385
5452
  >
5386
5453
  {' '}
@@ -5662,7 +5729,7 @@ import { LocalAuthProvider } from "tinacms";`;
5662
5729
  publicFolder: "${args.publicFolder}",
5663
5730
  },
5664
5731
  },
5665
- // See docs on content modeling for more info on how to setup new content models: https://tina.io/docs/schema/
5732
+ // See docs on content modeling for more info on how to setup new content models: https://tina.io/docs/r/content-modelling-collections/
5666
5733
  schema: {
5667
5734
  collections: ${generateCollectionString(args)},
5668
5735
  },
@@ -5735,7 +5802,7 @@ Suspendisse facilisis, mi ac scelerisque interdum, ligula ex imperdiet felis, a
5735
5802
  `;
5736
5803
 
5737
5804
  // src/cmds/init/apply.ts
5738
- var import_prettier2 = require("prettier");
5805
+ import { format as format2 } from "prettier";
5739
5806
 
5740
5807
  // src/utils/script-helpers.ts
5741
5808
  function generateGqlScript(scriptValue, opts) {
@@ -5758,38 +5825,38 @@ function extendNextScripts(scripts, opts) {
5758
5825
  }
5759
5826
 
5760
5827
  // src/cmds/init/codegen/index.ts
5761
- var import_typescript3 = __toESM(require("typescript"));
5762
- var import_fs_extra12 = __toESM(require("fs-extra"));
5828
+ import ts2 from "typescript";
5829
+ import fs13 from "fs-extra";
5763
5830
 
5764
5831
  // src/cmds/init/codegen/util.ts
5765
- var import_typescript2 = __toESM(require("typescript"));
5766
- var makeTransformer = (makeVisitor) => (ctx) => (node) => import_typescript2.default.visitNode(node, makeVisitor(ctx));
5832
+ import ts from "typescript";
5833
+ var makeTransformer = (makeVisitor) => (ctx) => (node) => ts.visitNode(node, makeVisitor(ctx));
5767
5834
  function parseExpression(expression) {
5768
- const sourceFile = import_typescript2.default.createSourceFile(
5835
+ const sourceFile = ts.createSourceFile(
5769
5836
  "temp.ts",
5770
5837
  expression,
5771
- import_typescript2.default.ScriptTarget.Latest
5838
+ ts.ScriptTarget.Latest
5772
5839
  );
5773
5840
  if (sourceFile.statements.length !== 1) {
5774
5841
  throw new Error("Expected one statement");
5775
5842
  }
5776
5843
  const statement = sourceFile.statements[0];
5777
- if (!import_typescript2.default.isExpressionStatement(statement)) {
5844
+ if (!ts.isExpressionStatement(statement)) {
5778
5845
  throw new Error("Expected an expression statement");
5779
5846
  }
5780
5847
  return [sourceFile, statement.expression];
5781
5848
  }
5782
5849
  function parseVariableStatement(stmt) {
5783
- const sourceFile = import_typescript2.default.createSourceFile(
5850
+ const sourceFile = ts.createSourceFile(
5784
5851
  "temp.ts",
5785
5852
  stmt,
5786
- import_typescript2.default.ScriptTarget.Latest
5853
+ ts.ScriptTarget.Latest
5787
5854
  );
5788
5855
  if (sourceFile.statements.length !== 1) {
5789
5856
  throw new Error("Expected one statement");
5790
5857
  }
5791
5858
  const statement = sourceFile.statements[0];
5792
- if (!import_typescript2.default.isVariableStatement(statement)) {
5859
+ if (!ts.isVariableStatement(statement)) {
5793
5860
  throw new Error("Expected a variable statement");
5794
5861
  }
5795
5862
  return [sourceFile, statement];
@@ -5797,7 +5864,7 @@ function parseVariableStatement(stmt) {
5797
5864
 
5798
5865
  // src/cmds/init/codegen/index.ts
5799
5866
  var makeVariableStatementVisitor = (sourceFile, variableStmtSourceFile, variableStmt) => (ctx) => (node) => {
5800
- if (import_typescript3.default.isSourceFile(node)) {
5867
+ if (ts2.isSourceFile(node)) {
5801
5868
  const newStatements = [...node.statements];
5802
5869
  let encounteredImports = false;
5803
5870
  let firstNonImportStatementIdx = -1;
@@ -5805,7 +5872,7 @@ var makeVariableStatementVisitor = (sourceFile, variableStmtSourceFile, variable
5805
5872
  const [newVarDec] = variableStmt.declarationList.declarations;
5806
5873
  const newVarDecName = newVarDec.name.getText(variableStmtSourceFile);
5807
5874
  for (let i = 0; i < newStatements.length; i++) {
5808
- const isImport = import_typescript3.default.isImportDeclaration(newStatements[i]);
5875
+ const isImport = ts2.isImportDeclaration(newStatements[i]);
5809
5876
  if (isImport && !encounteredImports) {
5810
5877
  encounteredImports = true;
5811
5878
  }
@@ -5813,9 +5880,9 @@ var makeVariableStatementVisitor = (sourceFile, variableStmtSourceFile, variable
5813
5880
  firstNonImportStatementIdx = i;
5814
5881
  }
5815
5882
  const stmt = newStatements[i];
5816
- if (import_typescript3.default.isVariableStatement(stmt)) {
5883
+ if (ts2.isVariableStatement(stmt)) {
5817
5884
  const [dec] = stmt.declarationList.declarations;
5818
- if (dec.name && import_typescript3.default.isIdentifier(dec.name) && dec.name.getText(sourceFile) === newVarDecName) {
5885
+ if (dec.name && ts2.isIdentifier(dec.name) && dec.name.getText(sourceFile) === newVarDecName) {
5819
5886
  existingStatementIdx = i;
5820
5887
  }
5821
5888
  }
@@ -5829,19 +5896,19 @@ var makeVariableStatementVisitor = (sourceFile, variableStmtSourceFile, variable
5829
5896
  if (existingStatementIdx === -1) {
5830
5897
  newStatements.splice(firstNonImportStatementIdx, 0, variableStmt);
5831
5898
  }
5832
- return import_typescript3.default.factory.updateSourceFile(node, newStatements);
5899
+ return ts2.factory.updateSourceFile(node, newStatements);
5833
5900
  }
5834
5901
  };
5835
5902
  var makeImportsVisitor = (sourceFile, importMap) => (ctx) => (node) => {
5836
- if (import_typescript3.default.isSourceFile(node)) {
5903
+ if (ts2.isSourceFile(node)) {
5837
5904
  const newStatements = [...node.statements];
5838
5905
  let changed = false;
5839
5906
  for (const [moduleName, imports] of Object.entries(importMap)) {
5840
5907
  let foundImportStatement = false;
5841
5908
  for (const statement of newStatements) {
5842
- if (import_typescript3.default.isImportDeclaration(statement) && import_typescript3.default.isStringLiteral(statement.moduleSpecifier) && statement.moduleSpecifier.text === moduleName) {
5909
+ if (ts2.isImportDeclaration(statement) && ts2.isStringLiteral(statement.moduleSpecifier) && statement.moduleSpecifier.text === moduleName) {
5843
5910
  foundImportStatement = true;
5844
- const existingImports = statement.importClause?.namedBindings && import_typescript3.default.isNamedImports(statement.importClause.namedBindings) ? statement.importClause.namedBindings.elements.map(
5911
+ const existingImports = statement.importClause?.namedBindings && ts2.isNamedImports(statement.importClause.namedBindings) ? statement.importClause.namedBindings.elements.map(
5845
5912
  (e) => e.name.text
5846
5913
  ) : [];
5847
5914
  const newImports = [
@@ -5852,22 +5919,22 @@ var makeImportsVisitor = (sourceFile, importMap) => (ctx) => (node) => {
5852
5919
  ])
5853
5920
  ];
5854
5921
  const importSpecifiers = newImports.map(
5855
- (i) => import_typescript3.default.factory.createImportSpecifier(
5922
+ (i) => ts2.factory.createImportSpecifier(
5856
5923
  void 0,
5857
- import_typescript3.default.factory.createIdentifier(i),
5858
- import_typescript3.default.factory.createIdentifier(i)
5924
+ ts2.factory.createIdentifier(i),
5925
+ ts2.factory.createIdentifier(i)
5859
5926
  )
5860
5927
  );
5861
- const namedImports = import_typescript3.default.factory.createNamedImports(importSpecifiers);
5862
- const importClause = import_typescript3.default.factory.createImportClause(
5928
+ const namedImports = ts2.factory.createNamedImports(importSpecifiers);
5929
+ const importClause = ts2.factory.createImportClause(
5863
5930
  false,
5864
5931
  void 0,
5865
5932
  namedImports
5866
5933
  );
5867
- const importDec = import_typescript3.default.factory.createImportDeclaration(
5934
+ const importDec = ts2.factory.createImportDeclaration(
5868
5935
  void 0,
5869
5936
  importClause,
5870
- import_typescript3.default.factory.createStringLiteral(moduleName)
5937
+ ts2.factory.createStringLiteral(moduleName)
5871
5938
  );
5872
5939
  newStatements[newStatements.indexOf(statement)] = importDec;
5873
5940
  changed = true;
@@ -5875,45 +5942,45 @@ var makeImportsVisitor = (sourceFile, importMap) => (ctx) => (node) => {
5875
5942
  }
5876
5943
  if (!foundImportStatement) {
5877
5944
  const importSpecifiers = imports.map(
5878
- (i) => import_typescript3.default.factory.createImportSpecifier(
5945
+ (i) => ts2.factory.createImportSpecifier(
5879
5946
  void 0,
5880
- import_typescript3.default.factory.createIdentifier(i),
5881
- import_typescript3.default.factory.createIdentifier(i)
5947
+ ts2.factory.createIdentifier(i),
5948
+ ts2.factory.createIdentifier(i)
5882
5949
  )
5883
5950
  );
5884
- const namedImports = import_typescript3.default.factory.createNamedImports(importSpecifiers);
5885
- const importClause = import_typescript3.default.factory.createImportClause(
5951
+ const namedImports = ts2.factory.createNamedImports(importSpecifiers);
5952
+ const importClause = ts2.factory.createImportClause(
5886
5953
  false,
5887
5954
  void 0,
5888
5955
  namedImports
5889
5956
  );
5890
- const importDec = import_typescript3.default.factory.createImportDeclaration(
5957
+ const importDec = ts2.factory.createImportDeclaration(
5891
5958
  void 0,
5892
5959
  importClause,
5893
- import_typescript3.default.factory.createStringLiteral(moduleName)
5960
+ ts2.factory.createStringLiteral(moduleName)
5894
5961
  );
5895
5962
  newStatements.unshift(importDec);
5896
5963
  changed = true;
5897
5964
  }
5898
5965
  }
5899
5966
  if (changed) {
5900
- return import_typescript3.default.factory.updateSourceFile(node, newStatements);
5967
+ return ts2.factory.updateSourceFile(node, newStatements);
5901
5968
  }
5902
5969
  }
5903
5970
  };
5904
5971
  var makeAddExpressionToSchemaCollectionVisitor = (sourceFile, functionName, newExpressionSourceFile, newExpression) => (ctx) => {
5905
5972
  const visit2 = (node) => {
5906
- if (import_typescript3.default.isCallExpression(node) && import_typescript3.default.isIdentifier(node.expression) && node.expression.text === functionName && node.arguments.length > 0 && import_typescript3.default.isObjectLiteralExpression(node.arguments[0])) {
5973
+ if (ts2.isCallExpression(node) && ts2.isIdentifier(node.expression) && node.expression.text === functionName && node.arguments.length > 0 && ts2.isObjectLiteralExpression(node.arguments[0])) {
5907
5974
  const configObject = node.arguments[0];
5908
5975
  const updateProperties = configObject.properties.map((property) => {
5909
- if (import_typescript3.default.isPropertyAssignment(property)) {
5976
+ if (ts2.isPropertyAssignment(property)) {
5910
5977
  const thisPropertyName = property.name.getText(sourceFile);
5911
- if (thisPropertyName === "schema" && import_typescript3.default.isPropertyAssignment(property) && import_typescript3.default.isObjectLiteralExpression(property.initializer)) {
5978
+ if (thisPropertyName === "schema" && ts2.isPropertyAssignment(property) && ts2.isObjectLiteralExpression(property.initializer)) {
5912
5979
  const schemaObject = property.initializer;
5913
5980
  const collectionsProperty = schemaObject.properties.find(
5914
- (p) => import_typescript3.default.isPropertyAssignment(p) && p.name.getText(sourceFile) === "collections"
5981
+ (p) => ts2.isPropertyAssignment(p) && p.name.getText(sourceFile) === "collections"
5915
5982
  );
5916
- if (collectionsProperty && import_typescript3.default.isPropertyAssignment(collectionsProperty) && import_typescript3.default.isArrayLiteralExpression(collectionsProperty.initializer)) {
5983
+ if (collectionsProperty && ts2.isPropertyAssignment(collectionsProperty) && ts2.isArrayLiteralExpression(collectionsProperty.initializer)) {
5917
5984
  const collectionsArray = collectionsProperty.initializer;
5918
5985
  const collectionItems = collectionsArray.elements.map(
5919
5986
  (e) => e.getText(sourceFile)
@@ -5923,16 +5990,16 @@ var makeAddExpressionToSchemaCollectionVisitor = (sourceFile, functionName, newE
5923
5990
  )) {
5924
5991
  return property;
5925
5992
  }
5926
- return import_typescript3.default.factory.updatePropertyAssignment(
5993
+ return ts2.factory.updatePropertyAssignment(
5927
5994
  property,
5928
5995
  property.name,
5929
- import_typescript3.default.factory.createObjectLiteralExpression(
5996
+ ts2.factory.createObjectLiteralExpression(
5930
5997
  schemaObject.properties.map((subProp) => {
5931
- if (import_typescript3.default.isPropertyAssignment(subProp) && subProp.name.getText(sourceFile) === "collections" && import_typescript3.default.isArrayLiteralExpression(subProp.initializer)) {
5932
- return import_typescript3.default.factory.updatePropertyAssignment(
5998
+ if (ts2.isPropertyAssignment(subProp) && subProp.name.getText(sourceFile) === "collections" && ts2.isArrayLiteralExpression(subProp.initializer)) {
5999
+ return ts2.factory.updatePropertyAssignment(
5933
6000
  subProp,
5934
6001
  subProp.name,
5935
- import_typescript3.default.factory.createArrayLiteralExpression(
6002
+ ts2.factory.createArrayLiteralExpression(
5936
6003
  [newExpression, ...subProp.initializer.elements],
5937
6004
  true
5938
6005
  )
@@ -5948,56 +6015,56 @@ var makeAddExpressionToSchemaCollectionVisitor = (sourceFile, functionName, newE
5948
6015
  }
5949
6016
  return property;
5950
6017
  });
5951
- return import_typescript3.default.factory.createCallExpression(
6018
+ return ts2.factory.createCallExpression(
5952
6019
  node.expression,
5953
6020
  node.typeArguments,
5954
- [import_typescript3.default.factory.createObjectLiteralExpression(updateProperties, true)]
6021
+ [ts2.factory.createObjectLiteralExpression(updateProperties, true)]
5955
6022
  );
5956
6023
  }
5957
- return import_typescript3.default.visitEachChild(node, visit2, ctx);
6024
+ return ts2.visitEachChild(node, visit2, ctx);
5958
6025
  };
5959
6026
  return (sourceFile2) => {
5960
- return import_typescript3.default.visitEachChild(sourceFile2, visit2, ctx);
6027
+ return ts2.visitEachChild(sourceFile2, visit2, ctx);
5961
6028
  };
5962
6029
  };
5963
6030
  var makeUpdateObjectLiteralPropertyVisitor = (sourceFile, functionName, propertyName, propertyValueExpressionSourceFile, propertyValue) => (ctx) => {
5964
6031
  const visitor = (node) => {
5965
- if (import_typescript3.default.isCallExpression(node) && import_typescript3.default.isIdentifier(node.expression) && node.expression.text === functionName && node.arguments.length > 0 && import_typescript3.default.isObjectLiteralExpression(node.arguments[0])) {
6032
+ if (ts2.isCallExpression(node) && ts2.isIdentifier(node.expression) && node.expression.text === functionName && node.arguments.length > 0 && ts2.isObjectLiteralExpression(node.arguments[0])) {
5966
6033
  let foundProperty = false;
5967
6034
  const configObject = node.arguments[0];
5968
6035
  const updateProperties = configObject.properties.map((property) => {
5969
- if (import_typescript3.default.isPropertyAssignment(property) || import_typescript3.default.isShorthandPropertyAssignment(property)) {
6036
+ if (ts2.isPropertyAssignment(property) || ts2.isShorthandPropertyAssignment(property)) {
5970
6037
  const name2 = property.name.getText(sourceFile);
5971
6038
  if (name2 === propertyName) {
5972
6039
  foundProperty = true;
5973
- return import_typescript3.default.factory.createPropertyAssignment(name2, propertyValue);
6040
+ return ts2.factory.createPropertyAssignment(name2, propertyValue);
5974
6041
  }
5975
6042
  }
5976
6043
  return property;
5977
6044
  });
5978
6045
  if (!foundProperty) {
5979
6046
  updateProperties.unshift(
5980
- import_typescript3.default.factory.createPropertyAssignment(propertyName, propertyValue)
6047
+ ts2.factory.createPropertyAssignment(propertyName, propertyValue)
5981
6048
  );
5982
6049
  }
5983
- return import_typescript3.default.factory.createCallExpression(
6050
+ return ts2.factory.createCallExpression(
5984
6051
  node.expression,
5985
6052
  node.typeArguments,
5986
- [import_typescript3.default.factory.createObjectLiteralExpression(updateProperties, true)]
6053
+ [ts2.factory.createObjectLiteralExpression(updateProperties, true)]
5987
6054
  );
5988
6055
  }
5989
- return import_typescript3.default.visitEachChild(node, visitor, ctx);
6056
+ return ts2.visitEachChild(node, visitor, ctx);
5990
6057
  };
5991
6058
  return (sourceFile2) => {
5992
- return import_typescript3.default.visitNode(sourceFile2, visitor);
6059
+ return ts2.visitNode(sourceFile2, visitor);
5993
6060
  };
5994
6061
  };
5995
6062
  var addSelfHostedTinaAuthToConfig = async (config2, configFile) => {
5996
6063
  const pathToConfig = configFile.resolve(config2.typescript).path;
5997
- const sourceFile = import_typescript3.default.createSourceFile(
6064
+ const sourceFile = ts2.createSourceFile(
5998
6065
  pathToConfig,
5999
- import_fs_extra12.default.readFileSync(pathToConfig, "utf8"),
6000
- config2.typescript ? import_typescript3.default.ScriptTarget.Latest : import_typescript3.default.ScriptTarget.ESNext
6066
+ fs13.readFileSync(pathToConfig, "utf8"),
6067
+ config2.typescript ? ts2.ScriptTarget.Latest : ts2.ScriptTarget.ESNext
6001
6068
  );
6002
6069
  const { configImports, configAuthProviderClass, extraTinaCollections } = config2.authProvider;
6003
6070
  const importMap = {
@@ -6010,7 +6077,7 @@ var addSelfHostedTinaAuthToConfig = async (config2, configFile) => {
6010
6077
  {}
6011
6078
  )
6012
6079
  };
6013
- const transformedSourceFileResult = import_typescript3.default.transform(
6080
+ const transformedSourceFileResult = ts2.transform(
6014
6081
  sourceFile,
6015
6082
  [
6016
6083
  makeImportsVisitor(sourceFile, {
@@ -6046,13 +6113,14 @@ var addSelfHostedTinaAuthToConfig = async (config2, configFile) => {
6046
6113
  )
6047
6114
  ].map((visitor) => makeTransformer(visitor))
6048
6115
  );
6049
- return import_fs_extra12.default.writeFile(
6116
+ return fs13.writeFile(
6050
6117
  pathToConfig,
6051
- import_typescript3.default.createPrinter({ omitTrailingSemicolon: true }).printFile(transformedSourceFileResult.transformed[0])
6118
+ ts2.createPrinter({ omitTrailingSemicolon: true }).printFile(transformedSourceFileResult.transformed[0])
6052
6119
  );
6053
6120
  };
6054
6121
 
6055
6122
  // src/cmds/init/apply.ts
6123
+ import { exec } from "child_process";
6056
6124
  async function apply({
6057
6125
  env,
6058
6126
  params,
@@ -6163,8 +6231,8 @@ async function apply({
6163
6231
  await addConfigFile({
6164
6232
  configArgs: {
6165
6233
  config: config2,
6166
- publicFolder: import_path11.default.join(
6167
- import_path11.default.relative(process.cwd(), pathToForestryConfig),
6234
+ publicFolder: path14.join(
6235
+ path14.relative(process.cwd(), pathToForestryConfig),
6168
6236
  config2.publicFolder
6169
6237
  ),
6170
6238
  collections,
@@ -6221,7 +6289,7 @@ var reportTelemetry = async ({
6221
6289
  if (noTelemetry) {
6222
6290
  logger.info(logText("Telemetry disabled"));
6223
6291
  }
6224
- const telemetry = new import_metrics2.Telemetry({ disabled: noTelemetry });
6292
+ const telemetry = new Telemetry2({ disabled: noTelemetry });
6225
6293
  const schemaFileType = usingTypescript ? "ts" : "js";
6226
6294
  await telemetry.submitRecord({
6227
6295
  event: {
@@ -6237,18 +6305,18 @@ var createPackageJSON = async () => {
6237
6305
  };
6238
6306
  var createGitignore = async ({ baseDir }) => {
6239
6307
  logger.info(logText("No .gitignore found, creating one"));
6240
- import_fs_extra13.default.outputFileSync(import_path11.default.join(baseDir, ".gitignore"), "node_modules");
6308
+ fs14.outputFileSync(path14.join(baseDir, ".gitignore"), "node_modules");
6241
6309
  };
6242
6310
  var updateGitIgnore = async ({
6243
6311
  baseDir,
6244
6312
  items
6245
6313
  }) => {
6246
6314
  logger.info(logText(`Adding ${items.join(",")} to .gitignore`));
6247
- const gitignoreContent = import_fs_extra13.default.readFileSync(import_path11.default.join(baseDir, ".gitignore")).toString();
6315
+ const gitignoreContent = fs14.readFileSync(path14.join(baseDir, ".gitignore")).toString();
6248
6316
  const newGitignoreContent = [...gitignoreContent.split("\n"), ...items].join(
6249
6317
  "\n"
6250
6318
  );
6251
- await import_fs_extra13.default.writeFile(import_path11.default.join(baseDir, ".gitignore"), newGitignoreContent);
6319
+ await fs14.writeFile(path14.join(baseDir, ".gitignore"), newGitignoreContent);
6252
6320
  };
6253
6321
  var addDependencies = async (config2, env, params) => {
6254
6322
  const { packageManager } = config2;
@@ -6289,7 +6357,8 @@ var addDependencies = async (config2, env, params) => {
6289
6357
  let packageManagers = {
6290
6358
  pnpm: process.env.USE_WORKSPACE ? `pnpm add ${deps.join(" ")} --workspace` : `pnpm add ${deps.join(" ")}`,
6291
6359
  npm: `npm install ${deps.join(" ")}`,
6292
- yarn: `yarn add ${deps.join(" ")}`
6360
+ yarn: `yarn add ${deps.join(" ")}`,
6361
+ bun: `bun add ${deps.join(" ")}`
6293
6362
  };
6294
6363
  if (packageManagers[packageManager] && deps.length > 0) {
6295
6364
  logger.info(logText("Adding dependencies, this might take a moment..."));
@@ -6300,7 +6369,8 @@ var addDependencies = async (config2, env, params) => {
6300
6369
  packageManagers = {
6301
6370
  pnpm: process.env.USE_WORKSPACE ? `pnpm add -D ${devDeps.join(" ")} --workspace` : `pnpm add -D ${devDeps.join(" ")}`,
6302
6371
  npm: `npm install -D ${devDeps.join(" ")}`,
6303
- yarn: `yarn add -D ${devDeps.join(" ")}`
6372
+ yarn: `yarn add -D ${devDeps.join(" ")}`,
6373
+ bun: `bun add -D ${devDeps.join(" ")}`
6304
6374
  };
6305
6375
  if (packageManagers[packageManager]) {
6306
6376
  logger.info(
@@ -6317,22 +6387,22 @@ var writeGeneratedFile = async ({
6317
6387
  content,
6318
6388
  typescript
6319
6389
  }) => {
6320
- const { exists, path: path14, parentPath } = generatedFile.resolve(typescript);
6390
+ const { exists, path: path15, parentPath } = generatedFile.resolve(typescript);
6321
6391
  if (exists) {
6322
6392
  if (overwrite) {
6323
- logger.info(`Overwriting file at ${path14}... \u2705`);
6324
- import_fs_extra13.default.outputFileSync(path14, content);
6393
+ logger.info(`Overwriting file at ${path15}... \u2705`);
6394
+ fs14.outputFileSync(path15, content);
6325
6395
  } else {
6326
- logger.info(`Not overwriting file at ${path14}.`);
6396
+ logger.info(`Not overwriting file at ${path15}.`);
6327
6397
  logger.info(
6328
- logText(`Please add the following to ${path14}:
6398
+ logText(`Please add the following to ${path15}:
6329
6399
  ${indentText(content)}}`)
6330
6400
  );
6331
6401
  }
6332
6402
  } else {
6333
- logger.info(`Adding file at ${path14}... \u2705`);
6334
- await import_fs_extra13.default.ensureDir(parentPath);
6335
- import_fs_extra13.default.outputFileSync(path14, content);
6403
+ logger.info(`Adding file at ${path15}... \u2705`);
6404
+ await fs14.ensureDir(parentPath);
6405
+ fs14.outputFileSync(path15, content);
6336
6406
  }
6337
6407
  };
6338
6408
  var addConfigFile = async ({
@@ -6341,7 +6411,7 @@ var addConfigFile = async ({
6341
6411
  generatedFile,
6342
6412
  config: config2
6343
6413
  }) => {
6344
- const content = (0, import_prettier2.format)(generateConfig(configArgs), {
6414
+ const content = format2(generateConfig(configArgs), {
6345
6415
  parser: "babel"
6346
6416
  });
6347
6417
  await writeGeneratedFile({
@@ -6371,7 +6441,7 @@ var addNextApiRoute = async ({
6371
6441
  generatedFile,
6372
6442
  env
6373
6443
  }) => {
6374
- const content = (0, import_prettier2.format)(nextApiRouteTemplate({ config: config2, env }), {
6444
+ const content = format2(nextApiRouteTemplate({ config: config2, env }), {
6375
6445
  parser: "babel"
6376
6446
  });
6377
6447
  await writeGeneratedFile({
@@ -6410,7 +6480,7 @@ var addContentFile = async ({
6410
6480
  return () => ({
6411
6481
  exists: env.sampleContentExists,
6412
6482
  path: env.sampleContentPath,
6413
- parentPath: import_path11.default.dirname(env.sampleContentPath)
6483
+ parentPath: path14.dirname(env.sampleContentPath)
6414
6484
  });
6415
6485
  }
6416
6486
  },
@@ -6433,10 +6503,10 @@ ${titleText(" TinaCMS ")} backend initialized!`));
6433
6503
  return `${x.key}=${x.value || "***"}`;
6434
6504
  }).join("\n") + `
6435
6505
  TINA_PUBLIC_IS_LOCAL=true`;
6436
- const envFile = import_path11.default.join(process.cwd(), ".env");
6437
- if (!import_fs_extra13.default.existsSync(envFile)) {
6506
+ const envFile = path14.join(process.cwd(), ".env");
6507
+ if (!fs14.existsSync(envFile)) {
6438
6508
  logger.info(`Adding .env file to your project... \u2705`);
6439
- import_fs_extra13.default.writeFileSync(envFile, envFileText);
6509
+ fs14.writeFileSync(envFile, envFileText);
6440
6510
  } else {
6441
6511
  logger.info(
6442
6512
  "Please add the following environment variables to your .env file"
@@ -6479,7 +6549,8 @@ var other = ({ packageManager }) => {
6479
6549
  pnpm: `pnpm`,
6480
6550
  npm: `npx`,
6481
6551
  // npx is the way to run executables that aren't in your "scripts"
6482
- yarn: `yarn`
6552
+ yarn: `yarn`,
6553
+ bun: `bun run`
6483
6554
  };
6484
6555
  return `${packageManagers[packageManager]} tinacms dev -c "<your dev command>"`;
6485
6556
  };
@@ -6492,7 +6563,8 @@ var frameworkDevCmds = {
6492
6563
  pnpm: `pnpm`,
6493
6564
  npm: `npm run`,
6494
6565
  // npx is the way to run executables that aren't in your "scripts"
6495
- yarn: `yarn`
6566
+ yarn: `yarn`,
6567
+ bun: `bun run`
6496
6568
  };
6497
6569
  return `${packageManagers[packageManager]} dev`;
6498
6570
  }
@@ -6505,7 +6577,7 @@ var addReactiveFile = {
6505
6577
  baseDir,
6506
6578
  dataLayer
6507
6579
  }) => {
6508
- const packageJsonPath = import_path11.default.join(baseDir, "package.json");
6580
+ const packageJsonPath = path14.join(baseDir, "package.json");
6509
6581
  await writeGeneratedFile({
6510
6582
  generatedFile,
6511
6583
  typescript: config2.typescript,
@@ -6518,7 +6590,7 @@ var addReactiveFile = {
6518
6590
  })
6519
6591
  });
6520
6592
  logger.info("Adding a nextjs example... \u2705");
6521
- const packageJson = JSON.parse(import_fs_extra13.default.readFileSync(packageJsonPath).toString());
6593
+ const packageJson = JSON.parse(fs14.readFileSync(packageJsonPath).toString());
6522
6594
  const scripts = packageJson.scripts || {};
6523
6595
  const updatedPackageJson = JSON.stringify(
6524
6596
  {
@@ -6531,11 +6603,10 @@ var addReactiveFile = {
6531
6603
  null,
6532
6604
  2
6533
6605
  );
6534
- import_fs_extra13.default.writeFileSync(packageJsonPath, updatedPackageJson);
6606
+ fs14.writeFileSync(packageJsonPath, updatedPackageJson);
6535
6607
  }
6536
6608
  };
6537
6609
  function execShellCommand(cmd) {
6538
- const exec = require("child_process").exec;
6539
6610
  return new Promise((resolve2, reject) => {
6540
6611
  exec(cmd, (error, stdout, stderr) => {
6541
6612
  if (error) {
@@ -6581,34 +6652,27 @@ var command = new CLICommand({
6581
6652
  });
6582
6653
 
6583
6654
  // src/next/commands/init-command/index.ts
6584
- var InitCommand = class extends import_clipanion6.Command {
6585
- constructor() {
6586
- super(...arguments);
6587
- this.pathToForestryConfig = import_clipanion6.Option.String("--forestryPath", {
6588
- description: "Specify the relative path to the .forestry directory, if importing an existing forestry site."
6589
- });
6590
- this.rootPath = import_clipanion6.Option.String("--rootPath", {
6591
- description: "Specify the root directory to run the CLI from (defaults to current working directory)"
6592
- });
6593
- this.debug = import_clipanion6.Option.Boolean("--debug", false, {
6594
- description: "Enable debug logging"
6595
- });
6596
- this.noTelemetry = import_clipanion6.Option.Boolean("--noTelemetry", false, {
6597
- description: "Disable anonymous telemetry that is collected"
6598
- });
6599
- this.tinaVersion = import_clipanion6.Option.String("--tinaVersion", {
6600
- description: "Specify a version for tina dependencies"
6601
- });
6602
- }
6603
- static {
6604
- this.paths = [["init"], ["init", "backend"]];
6605
- }
6606
- static {
6607
- this.usage = import_clipanion6.Command.Usage({
6608
- category: `Commands`,
6609
- description: `Add Tina to an existing project`
6610
- });
6611
- }
6655
+ var InitCommand = class extends Command6 {
6656
+ static paths = [["init"], ["init", "backend"]];
6657
+ pathToForestryConfig = Option6.String("--forestryPath", {
6658
+ description: "Specify the relative path to the .forestry directory, if importing an existing forestry site."
6659
+ });
6660
+ rootPath = Option6.String("--rootPath", {
6661
+ description: "Specify the root directory to run the CLI from (defaults to current working directory)"
6662
+ });
6663
+ debug = Option6.Boolean("--debug", false, {
6664
+ description: "Enable debug logging"
6665
+ });
6666
+ noTelemetry = Option6.Boolean("--noTelemetry", false, {
6667
+ description: "Disable anonymous telemetry that is collected"
6668
+ });
6669
+ tinaVersion = Option6.String("--tinaVersion", {
6670
+ description: "Specify a version for tina dependencies"
6671
+ });
6672
+ static usage = Command6.Usage({
6673
+ category: `Commands`,
6674
+ description: `Add Tina to an existing project`
6675
+ });
6612
6676
  async catch(error) {
6613
6677
  logger.error("Error occured during tinacms init");
6614
6678
  console.error(error);
@@ -6630,28 +6694,24 @@ var InitCommand = class extends import_clipanion6.Command {
6630
6694
  };
6631
6695
 
6632
6696
  // src/next/commands/searchindex-command/index.ts
6633
- var import_clipanion7 = require("clipanion");
6634
- var import_graphql17 = require("@tinacms/graphql");
6635
- var import_search3 = require("@tinacms/search");
6636
- var SearchIndexCommand = class extends import_clipanion7.Command {
6637
- constructor() {
6638
- super(...arguments);
6639
- this.rootPath = import_clipanion7.Option.String("--rootPath", {
6640
- description: "Specify the root directory to run the CLI from (defaults to current working directory)"
6641
- });
6642
- this.verbose = import_clipanion7.Option.Boolean("-v,--verbose", false, {
6643
- description: "increase verbosity of logged output"
6644
- });
6645
- }
6646
- static {
6647
- this.paths = [["search-index"]];
6648
- }
6649
- static {
6650
- this.usage = import_clipanion7.Command.Usage({
6651
- category: `Commands`,
6652
- description: `Index the site for search`
6653
- });
6654
- }
6697
+ import { Command as Command7, Option as Option7 } from "clipanion";
6698
+ import { createSchema, FilesystemBridge as FilesystemBridge4 } from "@tinacms/graphql";
6699
+ import {
6700
+ SearchIndexer as SearchIndexer3,
6701
+ TinaCMSSearchIndexClient as TinaCMSSearchIndexClient2
6702
+ } from "@tinacms/search";
6703
+ var SearchIndexCommand = class extends Command7 {
6704
+ static paths = [["search-index"]];
6705
+ rootPath = Option7.String("--rootPath", {
6706
+ description: "Specify the root directory to run the CLI from (defaults to current working directory)"
6707
+ });
6708
+ verbose = Option7.Boolean("-v,--verbose", false, {
6709
+ description: "increase verbosity of logged output"
6710
+ });
6711
+ static usage = Command7.Usage({
6712
+ category: `Commands`,
6713
+ description: `Index the site for search`
6714
+ });
6655
6715
  async catch(error) {
6656
6716
  logger.error("Error occured during tinacms search-index");
6657
6717
  console.error(error);
@@ -6673,7 +6733,7 @@ var SearchIndexCommand = class extends import_clipanion7.Command {
6673
6733
  process.exit(1);
6674
6734
  }
6675
6735
  const { schema } = configManager.config;
6676
- const tinaSchema = await (0, import_graphql17.createSchema)({
6736
+ const tinaSchema = await createSchema({
6677
6737
  schema: { ...schema, config: configManager.config }
6678
6738
  });
6679
6739
  let client;
@@ -6701,7 +6761,7 @@ var SearchIndexCommand = class extends import_clipanion7.Command {
6701
6761
  "indexerToken not configured in tina search configuration."
6702
6762
  );
6703
6763
  }
6704
- client = new import_search3.TinaCMSSearchIndexClient({
6764
+ client = new TinaCMSSearchIndexClient2({
6705
6765
  apiUrl: `${configManager.config.tinaioConfig?.contentApiUrlOverride || "https://content.tinajs.io"}/searchIndex/${configManager.config?.clientId}`,
6706
6766
  branch: configManager.config?.branch,
6707
6767
  indexerToken: configManager.config?.search?.tina?.indexerToken,
@@ -6710,9 +6770,9 @@ var SearchIndexCommand = class extends import_clipanion7.Command {
6710
6770
  } else {
6711
6771
  client = configManager.config?.search?.searchClient;
6712
6772
  }
6713
- const searchIndexer = new import_search3.SearchIndexer({
6773
+ const searchIndexer = new SearchIndexer3({
6714
6774
  batchSize: configManager.config.search?.indexBatchSize || 100,
6715
- bridge: new import_graphql17.FilesystemBridge(
6775
+ bridge: new FilesystemBridge4(
6716
6776
  configManager.rootPath,
6717
6777
  configManager.contentRootPath
6718
6778
  ),
@@ -6740,7 +6800,7 @@ var SearchIndexCommand = class extends import_clipanion7.Command {
6740
6800
  };
6741
6801
 
6742
6802
  // src/index.ts
6743
- var cli = new import_clipanion8.Cli({
6803
+ var cli = new Cli({
6744
6804
  binaryName: `tinacms`,
6745
6805
  binaryLabel: `TinaCMS`,
6746
6806
  binaryVersion: version
@@ -6751,7 +6811,10 @@ cli.register(AuditCommand);
6751
6811
  cli.register(InitCommand);
6752
6812
  cli.register(CodemodCommand);
6753
6813
  cli.register(SearchIndexCommand);
6754
- cli.register(import_clipanion8.Builtins.DefinitionsCommand);
6755
- cli.register(import_clipanion8.Builtins.HelpCommand);
6756
- cli.register(import_clipanion8.Builtins.VersionCommand);
6814
+ cli.register(Builtins.DefinitionsCommand);
6815
+ cli.register(Builtins.HelpCommand);
6816
+ cli.register(Builtins.VersionCommand);
6757
6817
  var index_default = cli;
6818
+ export {
6819
+ index_default as default
6820
+ };