@tinacms/cli 0.0.0-f5b2d65-20241216014706 → 0.0.0-f6ffae4-20250213230656

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
@@ -4,9 +4,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __commonJS = (cb, mod) => function __require() {
8
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
- };
10
7
  var __export = (target, all) => {
11
8
  for (var name2 in all)
12
9
  __defProp(target, name2, { get: all[name2], enumerable: true });
@@ -20,2093 +17,625 @@ var __copyProps = (to, from, except, desc) => {
20
17
  return to;
21
18
  };
22
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.
23
24
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
25
  mod
25
26
  ));
26
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
28
 
28
- // ../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/filesystem.js
29
- var require_filesystem = __commonJS({
30
- "../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/filesystem.js"(exports) {
31
- "use strict";
32
- Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.removeExtension = exports.fileExistsAsync = exports.readJsonFromDiskAsync = exports.readJsonFromDiskSync = exports.fileExistsSync = void 0;
34
- var fs15 = require("fs");
35
- function fileExistsSync(path14) {
36
- if (!fs15.existsSync(path14)) {
37
- return false;
38
- }
39
- try {
40
- var stats = fs15.statSync(path14);
41
- return stats.isFile();
42
- } catch (err) {
43
- return false;
44
- }
45
- }
46
- exports.fileExistsSync = fileExistsSync;
47
- function readJsonFromDiskSync(packageJsonPath) {
48
- if (!fs15.existsSync(packageJsonPath)) {
49
- return void 0;
50
- }
51
- return require(packageJsonPath);
52
- }
53
- exports.readJsonFromDiskSync = readJsonFromDiskSync;
54
- function readJsonFromDiskAsync(path14, callback) {
55
- fs15.readFile(path14, "utf8", function(err, result) {
56
- if (err || !result) {
57
- return callback();
58
- }
59
- var json = JSON.parse(result);
60
- return callback(void 0, json);
61
- });
62
- }
63
- exports.readJsonFromDiskAsync = readJsonFromDiskAsync;
64
- function fileExistsAsync(path22, callback2) {
65
- fs15.stat(path22, function(err, stats) {
66
- if (err) {
67
- return callback2(void 0, false);
68
- }
69
- callback2(void 0, stats ? stats.isFile() : false);
70
- });
71
- }
72
- exports.fileExistsAsync = fileExistsAsync;
73
- function removeExtension(path14) {
74
- return path14.substring(0, path14.lastIndexOf(".")) || path14;
75
- }
76
- exports.removeExtension = removeExtension;
77
- }
29
+ // src/index.ts
30
+ var src_exports = {};
31
+ __export(src_exports, {
32
+ default: () => src_default
78
33
  });
34
+ module.exports = __toCommonJS(src_exports);
35
+ var import_clipanion8 = require("clipanion");
79
36
 
80
- // ../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/mapping-entry.js
81
- var require_mapping_entry = __commonJS({
82
- "../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/mapping-entry.js"(exports) {
83
- "use strict";
84
- Object.defineProperty(exports, "__esModule", { value: true });
85
- exports.getAbsoluteMappingEntries = void 0;
86
- var path14 = require("path");
87
- function getAbsoluteMappingEntries(absoluteBaseUrl, paths, addMatchAll) {
88
- var sortedKeys = sortByLongestPrefix(Object.keys(paths));
89
- var absolutePaths = [];
90
- for (var _i = 0, sortedKeys_1 = sortedKeys; _i < sortedKeys_1.length; _i++) {
91
- var key = sortedKeys_1[_i];
92
- absolutePaths.push({
93
- pattern: key,
94
- paths: paths[key].map(function(pathToResolve) {
95
- return path14.resolve(absoluteBaseUrl, pathToResolve);
96
- })
97
- });
98
- }
99
- if (!paths["*"] && addMatchAll) {
100
- absolutePaths.push({
101
- pattern: "*",
102
- paths: ["".concat(absoluteBaseUrl.replace(/\/$/, ""), "/*")]
103
- });
104
- }
105
- return absolutePaths;
106
- }
107
- exports.getAbsoluteMappingEntries = getAbsoluteMappingEntries;
108
- function sortByLongestPrefix(arr) {
109
- return arr.concat().sort(function(a, b) {
110
- return getPrefixLength(b) - getPrefixLength(a);
111
- });
112
- }
113
- function getPrefixLength(pattern) {
114
- var prefixLength = pattern.indexOf("*");
115
- return pattern.substr(0, prefixLength).length;
116
- }
117
- }
118
- });
37
+ // package.json
38
+ var version = "1.8.4";
119
39
 
120
- // ../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/try-path.js
121
- var require_try_path = __commonJS({
122
- "../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/try-path.js"(exports) {
123
- "use strict";
124
- Object.defineProperty(exports, "__esModule", { value: true });
125
- exports.exhaustiveTypeException = exports.getStrippedPath = exports.getPathsToTry = void 0;
126
- var path14 = require("path");
127
- var path_1 = require("path");
128
- var filesystem_1 = require_filesystem();
129
- function getPathsToTry(extensions, absolutePathMappings, requestedModule) {
130
- if (!absolutePathMappings || !requestedModule || requestedModule[0] === ".") {
131
- return void 0;
132
- }
133
- var pathsToTry = [];
134
- for (var _i = 0, absolutePathMappings_1 = absolutePathMappings; _i < absolutePathMappings_1.length; _i++) {
135
- var entry = absolutePathMappings_1[_i];
136
- var starMatch = entry.pattern === requestedModule ? "" : matchStar(entry.pattern, requestedModule);
137
- if (starMatch !== void 0) {
138
- var _loop_1 = function(physicalPathPattern2) {
139
- var physicalPath = physicalPathPattern2.replace("*", starMatch);
140
- pathsToTry.push({ type: "file", path: physicalPath });
141
- pathsToTry.push.apply(pathsToTry, extensions.map(function(e) {
142
- return { type: "extension", path: physicalPath + e };
143
- }));
144
- pathsToTry.push({
145
- type: "package",
146
- path: path14.join(physicalPath, "/package.json")
147
- });
148
- var indexPath = path14.join(physicalPath, "/index");
149
- pathsToTry.push.apply(pathsToTry, extensions.map(function(e) {
150
- return { type: "index", path: indexPath + e };
151
- }));
152
- };
153
- for (var _a = 0, _b = entry.paths; _a < _b.length; _a++) {
154
- var physicalPathPattern = _b[_a];
155
- _loop_1(physicalPathPattern);
156
- }
157
- }
158
- }
159
- return pathsToTry.length === 0 ? void 0 : pathsToTry;
160
- }
161
- exports.getPathsToTry = getPathsToTry;
162
- function getStrippedPath(tryPath) {
163
- return tryPath.type === "index" ? (0, path_1.dirname)(tryPath.path) : tryPath.type === "file" ? tryPath.path : tryPath.type === "extension" ? (0, filesystem_1.removeExtension)(tryPath.path) : tryPath.type === "package" ? tryPath.path : exhaustiveTypeException(tryPath.type);
164
- }
165
- exports.getStrippedPath = getStrippedPath;
166
- function exhaustiveTypeException(check) {
167
- throw new Error("Unknown type ".concat(check));
168
- }
169
- exports.exhaustiveTypeException = exhaustiveTypeException;
170
- function matchStar(pattern, search) {
171
- if (search.length < pattern.length) {
172
- return void 0;
173
- }
174
- if (pattern === "*") {
175
- return search;
176
- }
177
- var star = pattern.indexOf("*");
178
- if (star === -1) {
179
- return void 0;
180
- }
181
- var part1 = pattern.substring(0, star);
182
- var part2 = pattern.substring(star + 1);
183
- if (search.substr(0, star) !== part1) {
184
- return void 0;
185
- }
186
- if (search.substr(search.length - part2.length) !== part2) {
187
- return void 0;
188
- }
189
- return search.substr(star, search.length - part2.length);
190
- }
191
- }
192
- });
40
+ // src/next/commands/dev-command/index.ts
41
+ var import_async_lock = __toESM(require("async-lock"));
42
+ var import_clipanion2 = require("clipanion");
43
+ var import_fs_extra6 = __toESM(require("fs-extra"));
44
+ var import_path5 = __toESM(require("path"));
45
+ var import_chokidar = __toESM(require("chokidar"));
46
+ var import_graphql10 = require("@tinacms/graphql");
193
47
 
194
- // ../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/match-path-sync.js
195
- var require_match_path_sync = __commonJS({
196
- "../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/match-path-sync.js"(exports) {
197
- "use strict";
198
- Object.defineProperty(exports, "__esModule", { value: true });
199
- exports.matchFromAbsolutePaths = exports.createMatchPath = void 0;
200
- var path14 = require("path");
201
- var Filesystem = require_filesystem();
202
- var MappingEntry = require_mapping_entry();
203
- var TryPath = require_try_path();
204
- function createMatchPath(absoluteBaseUrl, paths, mainFields, addMatchAll) {
205
- if (mainFields === void 0) {
206
- mainFields = ["main"];
207
- }
208
- if (addMatchAll === void 0) {
209
- addMatchAll = true;
210
- }
211
- var absolutePaths = MappingEntry.getAbsoluteMappingEntries(absoluteBaseUrl, paths, addMatchAll);
212
- return function(requestedModule, readJson, fileExists, extensions) {
213
- return matchFromAbsolutePaths(absolutePaths, requestedModule, readJson, fileExists, extensions, mainFields);
214
- };
215
- }
216
- exports.createMatchPath = createMatchPath;
217
- function matchFromAbsolutePaths(absolutePathMappings, requestedModule, readJson, fileExists, extensions, mainFields) {
218
- if (readJson === void 0) {
219
- readJson = Filesystem.readJsonFromDiskSync;
220
- }
221
- if (fileExists === void 0) {
222
- fileExists = Filesystem.fileExistsSync;
223
- }
224
- if (extensions === void 0) {
225
- extensions = Object.keys(require.extensions);
226
- }
227
- if (mainFields === void 0) {
228
- mainFields = ["main"];
229
- }
230
- var tryPaths = TryPath.getPathsToTry(extensions, absolutePathMappings, requestedModule);
231
- if (!tryPaths) {
232
- return void 0;
233
- }
234
- return findFirstExistingPath(tryPaths, readJson, fileExists, mainFields);
235
- }
236
- exports.matchFromAbsolutePaths = matchFromAbsolutePaths;
237
- function findFirstExistingMainFieldMappedFile(packageJson, mainFields, packageJsonPath, fileExists) {
238
- for (var index = 0; index < mainFields.length; index++) {
239
- var mainFieldSelector = mainFields[index];
240
- var candidateMapping = typeof mainFieldSelector === "string" ? packageJson[mainFieldSelector] : mainFieldSelector.reduce(function(obj, key) {
241
- return obj[key];
242
- }, packageJson);
243
- if (candidateMapping && typeof candidateMapping === "string") {
244
- var candidateFilePath = path14.join(path14.dirname(packageJsonPath), candidateMapping);
245
- if (fileExists(candidateFilePath)) {
246
- return candidateFilePath;
247
- }
248
- }
249
- }
250
- return void 0;
251
- }
252
- function findFirstExistingPath(tryPaths, readJson, fileExists, mainFields) {
253
- if (readJson === void 0) {
254
- readJson = Filesystem.readJsonFromDiskSync;
255
- }
256
- if (mainFields === void 0) {
257
- mainFields = ["main"];
258
- }
259
- for (var _i = 0, tryPaths_1 = tryPaths; _i < tryPaths_1.length; _i++) {
260
- var tryPath = tryPaths_1[_i];
261
- if (tryPath.type === "file" || tryPath.type === "extension" || tryPath.type === "index") {
262
- if (fileExists(tryPath.path)) {
263
- return TryPath.getStrippedPath(tryPath);
264
- }
265
- } else if (tryPath.type === "package") {
266
- var packageJson = readJson(tryPath.path);
267
- if (packageJson) {
268
- var mainFieldMappedFile = findFirstExistingMainFieldMappedFile(packageJson, mainFields, tryPath.path, fileExists);
269
- if (mainFieldMappedFile) {
270
- return mainFieldMappedFile;
271
- }
272
- }
273
- } else {
274
- TryPath.exhaustiveTypeException(tryPath.type);
275
- }
276
- }
277
- return void 0;
278
- }
279
- }
280
- });
48
+ // src/next/config-manager.ts
49
+ var import_fs_extra = __toESM(require("fs-extra"));
50
+ var import_path = __toESM(require("path"));
51
+ var import_os = __toESM(require("os"));
52
+ var esbuild = __toESM(require("esbuild"));
53
+ var dotenv = __toESM(require("dotenv"));
54
+ var import_normalize_path = __toESM(require("normalize-path"));
55
+ var import_chalk2 = __toESM(require("chalk"));
281
56
 
282
- // ../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/match-path-async.js
283
- var require_match_path_async = __commonJS({
284
- "../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/match-path-async.js"(exports) {
285
- "use strict";
286
- Object.defineProperty(exports, "__esModule", { value: true });
287
- exports.matchFromAbsolutePathsAsync = exports.createMatchPathAsync = void 0;
288
- var path14 = require("path");
289
- var TryPath = require_try_path();
290
- var MappingEntry = require_mapping_entry();
291
- var Filesystem = require_filesystem();
292
- function createMatchPathAsync(absoluteBaseUrl, paths, mainFields, addMatchAll) {
293
- if (mainFields === void 0) {
294
- mainFields = ["main"];
295
- }
296
- if (addMatchAll === void 0) {
297
- addMatchAll = true;
298
- }
299
- var absolutePaths = MappingEntry.getAbsoluteMappingEntries(absoluteBaseUrl, paths, addMatchAll);
300
- return function(requestedModule, readJson, fileExists, extensions, callback) {
301
- return matchFromAbsolutePathsAsync(absolutePaths, requestedModule, readJson, fileExists, extensions, callback, mainFields);
302
- };
303
- }
304
- exports.createMatchPathAsync = createMatchPathAsync;
305
- function matchFromAbsolutePathsAsync(absolutePathMappings, requestedModule, readJson, fileExists, extensions, callback, mainFields) {
306
- if (readJson === void 0) {
307
- readJson = Filesystem.readJsonFromDiskAsync;
308
- }
309
- if (fileExists === void 0) {
310
- fileExists = Filesystem.fileExistsAsync;
311
- }
312
- if (extensions === void 0) {
313
- extensions = Object.keys(require.extensions);
314
- }
315
- if (mainFields === void 0) {
316
- mainFields = ["main"];
317
- }
318
- var tryPaths = TryPath.getPathsToTry(extensions, absolutePathMappings, requestedModule);
319
- if (!tryPaths) {
320
- return callback();
321
- }
322
- findFirstExistingPath(tryPaths, readJson, fileExists, callback, 0, mainFields);
323
- }
324
- exports.matchFromAbsolutePathsAsync = matchFromAbsolutePathsAsync;
325
- function findFirstExistingMainFieldMappedFile(packageJson, mainFields, packageJsonPath, fileExistsAsync, doneCallback, index) {
326
- if (index === void 0) {
327
- index = 0;
328
- }
329
- if (index >= mainFields.length) {
330
- return doneCallback(void 0, void 0);
331
- }
332
- var tryNext = function() {
333
- return findFirstExistingMainFieldMappedFile(packageJson, mainFields, packageJsonPath, fileExistsAsync, doneCallback, index + 1);
334
- };
335
- var mainFieldSelector = mainFields[index];
336
- var mainFieldMapping = typeof mainFieldSelector === "string" ? packageJson[mainFieldSelector] : mainFieldSelector.reduce(function(obj, key) {
337
- return obj[key];
338
- }, packageJson);
339
- if (typeof mainFieldMapping !== "string") {
340
- return tryNext();
341
- }
342
- var mappedFilePath = path14.join(path14.dirname(packageJsonPath), mainFieldMapping);
343
- fileExistsAsync(mappedFilePath, function(err, exists) {
344
- if (err) {
345
- return doneCallback(err);
346
- }
347
- if (exists) {
348
- return doneCallback(void 0, mappedFilePath);
349
- }
350
- return tryNext();
351
- });
352
- }
353
- function findFirstExistingPath(tryPaths, readJson, fileExists, doneCallback, index, mainFields) {
354
- if (index === void 0) {
355
- index = 0;
356
- }
357
- if (mainFields === void 0) {
358
- mainFields = ["main"];
359
- }
360
- var tryPath = tryPaths[index];
361
- if (tryPath.type === "file" || tryPath.type === "extension" || tryPath.type === "index") {
362
- fileExists(tryPath.path, function(err, exists) {
363
- if (err) {
364
- return doneCallback(err);
365
- }
366
- if (exists) {
367
- return doneCallback(void 0, TryPath.getStrippedPath(tryPath));
368
- }
369
- if (index === tryPaths.length - 1) {
370
- return doneCallback();
371
- }
372
- return findFirstExistingPath(tryPaths, readJson, fileExists, doneCallback, index + 1, mainFields);
373
- });
374
- } else if (tryPath.type === "package") {
375
- readJson(tryPath.path, function(err, packageJson) {
376
- if (err) {
377
- return doneCallback(err);
378
- }
379
- if (packageJson) {
380
- return findFirstExistingMainFieldMappedFile(packageJson, mainFields, tryPath.path, fileExists, function(mainFieldErr, mainFieldMappedFile) {
381
- if (mainFieldErr) {
382
- return doneCallback(mainFieldErr);
383
- }
384
- if (mainFieldMappedFile) {
385
- return doneCallback(void 0, mainFieldMappedFile);
386
- }
387
- return findFirstExistingPath(tryPaths, readJson, fileExists, doneCallback, index + 1, mainFields);
388
- });
389
- }
390
- return findFirstExistingPath(tryPaths, readJson, fileExists, doneCallback, index + 1, mainFields);
391
- });
392
- } else {
393
- TryPath.exhaustiveTypeException(tryPath.type);
394
- }
395
- }
396
- }
397
- });
57
+ // src/logger/index.ts
58
+ var import_chalk = __toESM(require("chalk"));
398
59
 
399
- // ../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/unicode.js
400
- var require_unicode = __commonJS({
401
- "../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/unicode.js"(exports, module2) {
402
- module2.exports.Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/;
403
- module2.exports.ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;
404
- module2.exports.ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/;
60
+ // src/logger/is-unicode-supported.ts
61
+ function isUnicodeSupported() {
62
+ if (process.platform !== "win32") {
63
+ return process.env.TERM !== "linux";
405
64
  }
406
- });
65
+ return Boolean(process.env.CI) || Boolean(process.env.WT_SESSION) || // Windows Terminal
66
+ Boolean(process.env.TERMINUS_SUBLIME) || // Terminus (<0.2.27)
67
+ process.env.ConEmuTask === "{cmd::Cmder}" || // ConEmu and cmder
68
+ process.env.TERM_PROGRAM === "Terminus-Sublime" || process.env.TERM_PROGRAM === "vscode" || process.env.TERM === "xterm-256color" || process.env.TERM === "alacritty" || process.env.TERMINAL_EMULATOR === "JetBrains-JediTerm";
69
+ }
407
70
 
408
- // ../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/util.js
409
- var require_util = __commonJS({
410
- "../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/util.js"(exports, module2) {
411
- var unicode2 = require_unicode();
412
- module2.exports = {
413
- isSpaceSeparator(c) {
414
- return typeof c === "string" && unicode2.Space_Separator.test(c);
415
- },
416
- isIdStartChar(c) {
417
- return typeof c === "string" && (c >= "a" && c <= "z" || c >= "A" && c <= "Z" || c === "$" || c === "_" || unicode2.ID_Start.test(c));
418
- },
419
- isIdContinueChar(c) {
420
- return typeof c === "string" && (c >= "a" && c <= "z" || c >= "A" && c <= "Z" || c >= "0" && c <= "9" || c === "$" || c === "_" || c === "\u200C" || c === "\u200D" || unicode2.ID_Continue.test(c));
421
- },
422
- isDigit(c) {
423
- return typeof c === "string" && /[0-9]/.test(c);
424
- },
425
- isHexDigit(c) {
426
- return typeof c === "string" && /[0-9A-Fa-f]/.test(c);
71
+ // src/logger/index.ts
72
+ var import_log4js = __toESM(require("log4js"));
73
+ var logger = import_log4js.default.getLogger();
74
+ import_log4js.default.configure({
75
+ appenders: {
76
+ out: { type: "stdout", layout: { type: "messagePassThrough" } }
77
+ },
78
+ categories: { default: { appenders: ["out"], level: "info" } }
79
+ });
80
+ logger.level = "info";
81
+ function ansiRegex() {
82
+ const pattern = [
83
+ "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
84
+ "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"
85
+ ].join("|");
86
+ return new RegExp(pattern, "g");
87
+ }
88
+ var bar = "\u2502";
89
+ var strip = (str) => str.replace(ansiRegex(), "");
90
+ var note = (message = "", title = "") => {
91
+ const lines = `
92
+ ${message}
93
+ `.split("\n");
94
+ const len = lines.reduce((sum, ln) => {
95
+ ln = strip(ln);
96
+ return ln.length > sum ? ln.length : sum;
97
+ }, 0) + 2;
98
+ const msg = lines.map(
99
+ (ln) => `${import_chalk.default.gray(bar)} ${import_chalk.default.white(ln)}${" ".repeat(
100
+ len - strip(ln).length
101
+ )}${import_chalk.default.gray(bar)}`
102
+ ).join("\n");
103
+ const underscoreLen = len - title.length - 1 > 0 ? len - title.length - 1 : 0;
104
+ process.stdout.write(
105
+ `${import_chalk.default.gray(bar)}
106
+ ${import_chalk.default.green("\u25CB")} ${import_chalk.default.reset(
107
+ title
108
+ )} ${import_chalk.default.gray("\u2500".repeat(underscoreLen) + "\u256E")}
109
+ ${msg}
110
+ ${import_chalk.default.gray(
111
+ "\u251C" + "\u2500".repeat(len + 2) + "\u256F"
112
+ )}
113
+ `
114
+ );
115
+ };
116
+ var summary = (content) => {
117
+ const outString = [];
118
+ let longestKey = 0;
119
+ content.items.forEach((item) => {
120
+ item.subItems.forEach((subItem) => {
121
+ if (subItem.key.length > longestKey) {
122
+ longestKey = subItem.key.length;
427
123
  }
428
- };
124
+ });
125
+ });
126
+ content.items.forEach((item) => {
127
+ outString.push(`${item.emoji} ${import_chalk.default.cyan(item.heading)}`);
128
+ item.subItems.forEach((subItem) => {
129
+ const spaces = longestKey - subItem.key.length + 4;
130
+ outString.push(
131
+ ` ${subItem.key}:${[...Array(spaces)].join(" ")}${import_chalk.default.cyan(
132
+ subItem.value
133
+ )}`
134
+ );
135
+ });
136
+ outString.push(``);
137
+ });
138
+ if (process.env.CI) {
139
+ logger.info(JSON.stringify(content, null, 2));
140
+ } else {
141
+ note(outString.join("\n"), content.heading);
429
142
  }
430
- });
143
+ };
144
+ var unicode = isUnicodeSupported();
145
+ var s = (c, fallback) => unicode ? c : fallback;
146
+ var S_STEP_ACTIVE = s("\u25C6", "*");
147
+ var S_STEP_CANCEL = s("\u25A0", "x");
148
+ var S_STEP_ERROR = s("\u25B2", "x");
149
+ var S_STEP_SUBMIT = s("\u25C7", "o");
150
+ var S_BAR_START = s("\u250C", "T");
151
+ var S_BAR = s("\u2502", "|");
152
+ var S_BAR_END = s("\u2514", "\u2014");
153
+ var S_RADIO_ACTIVE = s("\u25CF", ">");
154
+ var S_RADIO_INACTIVE = s("\u25CB", " ");
155
+ var S_CHECKBOX_ACTIVE = s("\u25FB", "[\u2022]");
156
+ var S_CHECKBOX_SELECTED = s("\u25FC", "[+]");
157
+ var S_CHECKBOX_INACTIVE = s("\u25FB", "[ ]");
158
+ var S_PASSWORD_MASK = s("\u25AA", "\u2022");
159
+ var S_BAR_H = s("\u2500", "-");
160
+ var S_CORNER_TOP_RIGHT = s("\u256E", "+");
161
+ var S_CONNECT_LEFT = s("\u251C", "+");
162
+ var S_CORNER_BOTTOM_RIGHT = s("\u256F", "+");
163
+ var S_INFO = s("\u25CF", "\u2022");
164
+ var S_SUCCESS = s("\u25C6", "*");
165
+ var S_WARN = s("\u25B2", "!");
166
+ var S_ERROR = s("\u25A0", "x");
431
167
 
432
- // ../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/parse.js
433
- var require_parse = __commonJS({
434
- "../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/parse.js"(exports, module2) {
435
- var util = require_util();
436
- var source;
437
- var parseState;
438
- var stack;
439
- var pos;
440
- var line;
441
- var column;
442
- var token;
443
- var key;
444
- var root;
445
- module2.exports = function parse2(text, reviver) {
446
- source = String(text);
447
- parseState = "start";
448
- stack = [];
449
- pos = 0;
450
- line = 1;
451
- column = 0;
452
- token = void 0;
453
- key = void 0;
454
- root = void 0;
455
- do {
456
- token = lex();
457
- parseStates[parseState]();
458
- } while (token.type !== "eof");
459
- if (typeof reviver === "function") {
460
- return internalize({ "": root }, "", reviver);
461
- }
462
- return root;
463
- };
464
- function internalize(holder, name2, reviver) {
465
- const value = holder[name2];
466
- if (value != null && typeof value === "object") {
467
- if (Array.isArray(value)) {
468
- for (let i = 0; i < value.length; i++) {
469
- const key2 = String(i);
470
- const replacement = internalize(value, key2, reviver);
471
- if (replacement === void 0) {
472
- delete value[key2];
473
- } else {
474
- Object.defineProperty(value, key2, {
475
- value: replacement,
476
- writable: true,
477
- enumerable: true,
478
- configurable: true
479
- });
480
- }
481
- }
482
- } else {
483
- for (const key2 in value) {
484
- const replacement = internalize(value, key2, reviver);
485
- if (replacement === void 0) {
486
- delete value[key2];
487
- } else {
488
- Object.defineProperty(value, key2, {
489
- value: replacement,
490
- writable: true,
491
- enumerable: true,
492
- configurable: true
493
- });
494
- }
495
- }
496
- }
497
- }
498
- return reviver.call(holder, name2, value);
499
- }
500
- var lexState;
501
- var buffer;
502
- var doubleQuote;
503
- var sign;
504
- var c;
505
- function lex() {
506
- lexState = "default";
507
- buffer = "";
508
- doubleQuote = false;
509
- sign = 1;
510
- for (; ; ) {
511
- c = peek();
512
- const token2 = lexStates[lexState]();
513
- if (token2) {
514
- return token2;
515
- }
516
- }
517
- }
518
- function peek() {
519
- if (source[pos]) {
520
- return String.fromCodePoint(source.codePointAt(pos));
521
- }
522
- }
523
- function read() {
524
- const c2 = peek();
525
- if (c2 === "\n") {
526
- line++;
527
- column = 0;
528
- } else if (c2) {
529
- column += c2.length;
530
- } else {
531
- column++;
532
- }
533
- if (c2) {
534
- pos += c2.length;
535
- }
536
- return c2;
537
- }
538
- var lexStates = {
539
- default() {
540
- switch (c) {
541
- case " ":
542
- case "\v":
543
- case "\f":
544
- case " ":
545
- case "\xA0":
546
- case "\uFEFF":
547
- case "\n":
548
- case "\r":
549
- case "\u2028":
550
- case "\u2029":
551
- read();
552
- return;
553
- case "/":
554
- read();
555
- lexState = "comment";
556
- return;
557
- case void 0:
558
- read();
559
- return newToken("eof");
560
- }
561
- if (util.isSpaceSeparator(c)) {
562
- read();
563
- return;
564
- }
565
- return lexStates[parseState]();
566
- },
567
- comment() {
568
- switch (c) {
569
- case "*":
570
- read();
571
- lexState = "multiLineComment";
572
- return;
573
- case "/":
574
- read();
575
- lexState = "singleLineComment";
576
- return;
577
- }
578
- throw invalidChar(read());
579
- },
580
- multiLineComment() {
581
- switch (c) {
582
- case "*":
583
- read();
584
- lexState = "multiLineCommentAsterisk";
585
- return;
586
- case void 0:
587
- throw invalidChar(read());
588
- }
589
- read();
590
- },
591
- multiLineCommentAsterisk() {
592
- switch (c) {
593
- case "*":
594
- read();
595
- return;
596
- case "/":
597
- read();
598
- lexState = "default";
599
- return;
600
- case void 0:
601
- throw invalidChar(read());
602
- }
603
- read();
604
- lexState = "multiLineComment";
605
- },
606
- singleLineComment() {
607
- switch (c) {
608
- case "\n":
609
- case "\r":
610
- case "\u2028":
611
- case "\u2029":
612
- read();
613
- lexState = "default";
614
- return;
615
- case void 0:
616
- read();
617
- return newToken("eof");
618
- }
619
- read();
620
- },
621
- value() {
622
- switch (c) {
623
- case "{":
624
- case "[":
625
- return newToken("punctuator", read());
626
- case "n":
627
- read();
628
- literal("ull");
629
- return newToken("null", null);
630
- case "t":
631
- read();
632
- literal("rue");
633
- return newToken("boolean", true);
634
- case "f":
635
- read();
636
- literal("alse");
637
- return newToken("boolean", false);
638
- case "-":
639
- case "+":
640
- if (read() === "-") {
641
- sign = -1;
642
- }
643
- lexState = "sign";
644
- return;
645
- case ".":
646
- buffer = read();
647
- lexState = "decimalPointLeading";
648
- return;
649
- case "0":
650
- buffer = read();
651
- lexState = "zero";
652
- return;
653
- case "1":
654
- case "2":
655
- case "3":
656
- case "4":
657
- case "5":
658
- case "6":
659
- case "7":
660
- case "8":
661
- case "9":
662
- buffer = read();
663
- lexState = "decimalInteger";
664
- return;
665
- case "I":
666
- read();
667
- literal("nfinity");
668
- return newToken("numeric", Infinity);
669
- case "N":
670
- read();
671
- literal("aN");
672
- return newToken("numeric", NaN);
673
- case '"':
674
- case "'":
675
- doubleQuote = read() === '"';
676
- buffer = "";
677
- lexState = "string";
678
- return;
679
- }
680
- throw invalidChar(read());
681
- },
682
- identifierNameStartEscape() {
683
- if (c !== "u") {
684
- throw invalidChar(read());
685
- }
686
- read();
687
- const u = unicodeEscape();
688
- switch (u) {
689
- case "$":
690
- case "_":
691
- break;
692
- default:
693
- if (!util.isIdStartChar(u)) {
694
- throw invalidIdentifier();
695
- }
696
- break;
697
- }
698
- buffer += u;
699
- lexState = "identifierName";
700
- },
701
- identifierName() {
702
- switch (c) {
703
- case "$":
704
- case "_":
705
- case "\u200C":
706
- case "\u200D":
707
- buffer += read();
708
- return;
709
- case "\\":
710
- read();
711
- lexState = "identifierNameEscape";
712
- return;
713
- }
714
- if (util.isIdContinueChar(c)) {
715
- buffer += read();
716
- return;
717
- }
718
- return newToken("identifier", buffer);
719
- },
720
- identifierNameEscape() {
721
- if (c !== "u") {
722
- throw invalidChar(read());
723
- }
724
- read();
725
- const u = unicodeEscape();
726
- switch (u) {
727
- case "$":
728
- case "_":
729
- case "\u200C":
730
- case "\u200D":
731
- break;
732
- default:
733
- if (!util.isIdContinueChar(u)) {
734
- throw invalidIdentifier();
735
- }
736
- break;
737
- }
738
- buffer += u;
739
- lexState = "identifierName";
740
- },
741
- sign() {
742
- switch (c) {
743
- case ".":
744
- buffer = read();
745
- lexState = "decimalPointLeading";
746
- return;
747
- case "0":
748
- buffer = read();
749
- lexState = "zero";
750
- return;
751
- case "1":
752
- case "2":
753
- case "3":
754
- case "4":
755
- case "5":
756
- case "6":
757
- case "7":
758
- case "8":
759
- case "9":
760
- buffer = read();
761
- lexState = "decimalInteger";
762
- return;
763
- case "I":
764
- read();
765
- literal("nfinity");
766
- return newToken("numeric", sign * Infinity);
767
- case "N":
768
- read();
769
- literal("aN");
770
- return newToken("numeric", NaN);
771
- }
772
- throw invalidChar(read());
773
- },
774
- zero() {
775
- switch (c) {
776
- case ".":
777
- buffer += read();
778
- lexState = "decimalPoint";
779
- return;
780
- case "e":
781
- case "E":
782
- buffer += read();
783
- lexState = "decimalExponent";
784
- return;
785
- case "x":
786
- case "X":
787
- buffer += read();
788
- lexState = "hexadecimal";
789
- return;
790
- }
791
- return newToken("numeric", sign * 0);
792
- },
793
- decimalInteger() {
794
- switch (c) {
795
- case ".":
796
- buffer += read();
797
- lexState = "decimalPoint";
798
- return;
799
- case "e":
800
- case "E":
801
- buffer += read();
802
- lexState = "decimalExponent";
803
- return;
804
- }
805
- if (util.isDigit(c)) {
806
- buffer += read();
807
- return;
808
- }
809
- return newToken("numeric", sign * Number(buffer));
810
- },
811
- decimalPointLeading() {
812
- if (util.isDigit(c)) {
813
- buffer += read();
814
- lexState = "decimalFraction";
815
- return;
816
- }
817
- throw invalidChar(read());
818
- },
819
- decimalPoint() {
820
- switch (c) {
821
- case "e":
822
- case "E":
823
- buffer += read();
824
- lexState = "decimalExponent";
825
- return;
826
- }
827
- if (util.isDigit(c)) {
828
- buffer += read();
829
- lexState = "decimalFraction";
830
- return;
831
- }
832
- return newToken("numeric", sign * Number(buffer));
833
- },
834
- decimalFraction() {
835
- switch (c) {
836
- case "e":
837
- case "E":
838
- buffer += read();
839
- lexState = "decimalExponent";
840
- return;
841
- }
842
- if (util.isDigit(c)) {
843
- buffer += read();
844
- return;
845
- }
846
- return newToken("numeric", sign * Number(buffer));
847
- },
848
- decimalExponent() {
849
- switch (c) {
850
- case "+":
851
- case "-":
852
- buffer += read();
853
- lexState = "decimalExponentSign";
854
- return;
855
- }
856
- if (util.isDigit(c)) {
857
- buffer += read();
858
- lexState = "decimalExponentInteger";
859
- return;
860
- }
861
- throw invalidChar(read());
862
- },
863
- decimalExponentSign() {
864
- if (util.isDigit(c)) {
865
- buffer += read();
866
- lexState = "decimalExponentInteger";
867
- return;
868
- }
869
- throw invalidChar(read());
870
- },
871
- decimalExponentInteger() {
872
- if (util.isDigit(c)) {
873
- buffer += read();
874
- return;
875
- }
876
- return newToken("numeric", sign * Number(buffer));
877
- },
878
- hexadecimal() {
879
- if (util.isHexDigit(c)) {
880
- buffer += read();
881
- lexState = "hexadecimalInteger";
882
- return;
883
- }
884
- throw invalidChar(read());
885
- },
886
- hexadecimalInteger() {
887
- if (util.isHexDigit(c)) {
888
- buffer += read();
889
- return;
890
- }
891
- return newToken("numeric", sign * Number(buffer));
892
- },
893
- string() {
894
- switch (c) {
895
- case "\\":
896
- read();
897
- buffer += escape();
898
- return;
899
- case '"':
900
- if (doubleQuote) {
901
- read();
902
- return newToken("string", buffer);
903
- }
904
- buffer += read();
905
- return;
906
- case "'":
907
- if (!doubleQuote) {
908
- read();
909
- return newToken("string", buffer);
910
- }
911
- buffer += read();
912
- return;
913
- case "\n":
914
- case "\r":
915
- throw invalidChar(read());
916
- case "\u2028":
917
- case "\u2029":
918
- separatorChar(c);
919
- break;
920
- case void 0:
921
- throw invalidChar(read());
922
- }
923
- buffer += read();
924
- },
925
- start() {
926
- switch (c) {
927
- case "{":
928
- case "[":
929
- return newToken("punctuator", read());
930
- }
931
- lexState = "value";
932
- },
933
- beforePropertyName() {
934
- switch (c) {
935
- case "$":
936
- case "_":
937
- buffer = read();
938
- lexState = "identifierName";
939
- return;
940
- case "\\":
941
- read();
942
- lexState = "identifierNameStartEscape";
943
- return;
944
- case "}":
945
- return newToken("punctuator", read());
946
- case '"':
947
- case "'":
948
- doubleQuote = read() === '"';
949
- lexState = "string";
950
- return;
951
- }
952
- if (util.isIdStartChar(c)) {
953
- buffer += read();
954
- lexState = "identifierName";
955
- return;
956
- }
957
- throw invalidChar(read());
958
- },
959
- afterPropertyName() {
960
- if (c === ":") {
961
- return newToken("punctuator", read());
962
- }
963
- throw invalidChar(read());
964
- },
965
- beforePropertyValue() {
966
- lexState = "value";
967
- },
968
- afterPropertyValue() {
969
- switch (c) {
970
- case ",":
971
- case "}":
972
- return newToken("punctuator", read());
973
- }
974
- throw invalidChar(read());
975
- },
976
- beforeArrayValue() {
977
- if (c === "]") {
978
- return newToken("punctuator", read());
979
- }
980
- lexState = "value";
981
- },
982
- afterArrayValue() {
983
- switch (c) {
984
- case ",":
985
- case "]":
986
- return newToken("punctuator", read());
987
- }
988
- throw invalidChar(read());
989
- },
990
- end() {
991
- throw invalidChar(read());
992
- }
993
- };
994
- function newToken(type, value) {
995
- return {
996
- type,
997
- value,
998
- line,
999
- column
1000
- };
1001
- }
1002
- function literal(s2) {
1003
- for (const c2 of s2) {
1004
- const p = peek();
1005
- if (p !== c2) {
1006
- throw invalidChar(read());
1007
- }
1008
- read();
1009
- }
1010
- }
1011
- function escape() {
1012
- const c2 = peek();
1013
- switch (c2) {
1014
- case "b":
1015
- read();
1016
- return "\b";
1017
- case "f":
1018
- read();
1019
- return "\f";
1020
- case "n":
1021
- read();
1022
- return "\n";
1023
- case "r":
1024
- read();
1025
- return "\r";
1026
- case "t":
1027
- read();
1028
- return " ";
1029
- case "v":
1030
- read();
1031
- return "\v";
1032
- case "0":
1033
- read();
1034
- if (util.isDigit(peek())) {
1035
- throw invalidChar(read());
1036
- }
1037
- return "\0";
1038
- case "x":
1039
- read();
1040
- return hexEscape();
1041
- case "u":
1042
- read();
1043
- return unicodeEscape();
1044
- case "\n":
1045
- case "\u2028":
1046
- case "\u2029":
1047
- read();
1048
- return "";
1049
- case "\r":
1050
- read();
1051
- if (peek() === "\n") {
1052
- read();
1053
- }
1054
- return "";
1055
- case "1":
1056
- case "2":
1057
- case "3":
1058
- case "4":
1059
- case "5":
1060
- case "6":
1061
- case "7":
1062
- case "8":
1063
- case "9":
1064
- throw invalidChar(read());
1065
- case void 0:
1066
- throw invalidChar(read());
1067
- }
1068
- return read();
1069
- }
1070
- function hexEscape() {
1071
- let buffer2 = "";
1072
- let c2 = peek();
1073
- if (!util.isHexDigit(c2)) {
1074
- throw invalidChar(read());
1075
- }
1076
- buffer2 += read();
1077
- c2 = peek();
1078
- if (!util.isHexDigit(c2)) {
1079
- throw invalidChar(read());
1080
- }
1081
- buffer2 += read();
1082
- return String.fromCodePoint(parseInt(buffer2, 16));
1083
- }
1084
- function unicodeEscape() {
1085
- let buffer2 = "";
1086
- let count = 4;
1087
- while (count-- > 0) {
1088
- const c2 = peek();
1089
- if (!util.isHexDigit(c2)) {
1090
- throw invalidChar(read());
1091
- }
1092
- buffer2 += read();
1093
- }
1094
- return String.fromCodePoint(parseInt(buffer2, 16));
1095
- }
1096
- var parseStates = {
1097
- start() {
1098
- if (token.type === "eof") {
1099
- throw invalidEOF();
1100
- }
1101
- push();
1102
- },
1103
- beforePropertyName() {
1104
- switch (token.type) {
1105
- case "identifier":
1106
- case "string":
1107
- key = token.value;
1108
- parseState = "afterPropertyName";
1109
- return;
1110
- case "punctuator":
1111
- pop();
1112
- return;
1113
- case "eof":
1114
- throw invalidEOF();
1115
- }
1116
- },
1117
- afterPropertyName() {
1118
- if (token.type === "eof") {
1119
- throw invalidEOF();
1120
- }
1121
- parseState = "beforePropertyValue";
1122
- },
1123
- beforePropertyValue() {
1124
- if (token.type === "eof") {
1125
- throw invalidEOF();
1126
- }
1127
- push();
1128
- },
1129
- beforeArrayValue() {
1130
- if (token.type === "eof") {
1131
- throw invalidEOF();
1132
- }
1133
- if (token.type === "punctuator" && token.value === "]") {
1134
- pop();
1135
- return;
1136
- }
1137
- push();
1138
- },
1139
- afterPropertyValue() {
1140
- if (token.type === "eof") {
1141
- throw invalidEOF();
1142
- }
1143
- switch (token.value) {
1144
- case ",":
1145
- parseState = "beforePropertyName";
1146
- return;
1147
- case "}":
1148
- pop();
1149
- }
1150
- },
1151
- afterArrayValue() {
1152
- if (token.type === "eof") {
1153
- throw invalidEOF();
1154
- }
1155
- switch (token.value) {
1156
- case ",":
1157
- parseState = "beforeArrayValue";
1158
- return;
1159
- case "]":
1160
- pop();
1161
- }
1162
- },
1163
- end() {
1164
- }
1165
- };
1166
- function push() {
1167
- let value;
1168
- switch (token.type) {
1169
- case "punctuator":
1170
- switch (token.value) {
1171
- case "{":
1172
- value = {};
1173
- break;
1174
- case "[":
1175
- value = [];
1176
- break;
1177
- }
1178
- break;
1179
- case "null":
1180
- case "boolean":
1181
- case "numeric":
1182
- case "string":
1183
- value = token.value;
1184
- break;
1185
- }
1186
- if (root === void 0) {
1187
- root = value;
1188
- } else {
1189
- const parent = stack[stack.length - 1];
1190
- if (Array.isArray(parent)) {
1191
- parent.push(value);
1192
- } else {
1193
- Object.defineProperty(parent, key, {
1194
- value,
1195
- writable: true,
1196
- enumerable: true,
1197
- configurable: true
1198
- });
1199
- }
1200
- }
1201
- if (value !== null && typeof value === "object") {
1202
- stack.push(value);
1203
- if (Array.isArray(value)) {
1204
- parseState = "beforeArrayValue";
1205
- } else {
1206
- parseState = "beforePropertyName";
1207
- }
1208
- } else {
1209
- const current = stack[stack.length - 1];
1210
- if (current == null) {
1211
- parseState = "end";
1212
- } else if (Array.isArray(current)) {
1213
- parseState = "afterArrayValue";
1214
- } else {
1215
- parseState = "afterPropertyValue";
1216
- }
1217
- }
1218
- }
1219
- function pop() {
1220
- stack.pop();
1221
- const current = stack[stack.length - 1];
1222
- if (current == null) {
1223
- parseState = "end";
1224
- } else if (Array.isArray(current)) {
1225
- parseState = "afterArrayValue";
1226
- } else {
1227
- parseState = "afterPropertyValue";
1228
- }
1229
- }
1230
- function invalidChar(c2) {
1231
- if (c2 === void 0) {
1232
- return syntaxError(`JSON5: invalid end of input at ${line}:${column}`);
1233
- }
1234
- return syntaxError(`JSON5: invalid character '${formatChar(c2)}' at ${line}:${column}`);
1235
- }
1236
- function invalidEOF() {
1237
- return syntaxError(`JSON5: invalid end of input at ${line}:${column}`);
1238
- }
1239
- function invalidIdentifier() {
1240
- column -= 5;
1241
- return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`);
1242
- }
1243
- function separatorChar(c2) {
1244
- console.warn(`JSON5: '${formatChar(c2)}' in strings is not valid ECMAScript; consider escaping`);
1245
- }
1246
- function formatChar(c2) {
1247
- const replacements = {
1248
- "'": "\\'",
1249
- '"': '\\"',
1250
- "\\": "\\\\",
1251
- "\b": "\\b",
1252
- "\f": "\\f",
1253
- "\n": "\\n",
1254
- "\r": "\\r",
1255
- " ": "\\t",
1256
- "\v": "\\v",
1257
- "\0": "\\0",
1258
- "\u2028": "\\u2028",
1259
- "\u2029": "\\u2029"
1260
- };
1261
- if (replacements[c2]) {
1262
- return replacements[c2];
1263
- }
1264
- if (c2 < " ") {
1265
- const hexString = c2.charCodeAt(0).toString(16);
1266
- return "\\x" + ("00" + hexString).substring(hexString.length);
1267
- }
1268
- return c2;
1269
- }
1270
- function syntaxError(message) {
1271
- const err = new SyntaxError(message);
1272
- err.lineNumber = line;
1273
- err.columnNumber = column;
1274
- return err;
1275
- }
168
+ // src/next/config-manager.ts
169
+ var TINA_FOLDER = "tina";
170
+ var LEGACY_TINA_FOLDER = ".tina";
171
+ var GENERATED_FOLDER = "__generated__";
172
+ var GRAPHQL_JSON_FILE = "_graphql.json";
173
+ var GRAPHQL_GQL_FILE = "schema.gql";
174
+ var SCHEMA_JSON_FILE = "_schema.json";
175
+ var LOOKUP_JSON_FILE = "_lookup.json";
176
+ var ConfigManager = class {
177
+ constructor({
178
+ rootPath = process.cwd(),
179
+ tinaGraphQLVersion,
180
+ legacyNoSDK
181
+ }) {
182
+ this.rootPath = (0, import_normalize_path.default)(rootPath);
183
+ this.tinaGraphQLVersionFromCLI = tinaGraphQLVersion;
184
+ this.legacyNoSDK = legacyNoSDK;
1276
185
  }
1277
- });
1278
-
1279
- // ../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/stringify.js
1280
- var require_stringify = __commonJS({
1281
- "../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/stringify.js"(exports, module2) {
1282
- var util = require_util();
1283
- module2.exports = function stringify(value, replacer, space) {
1284
- const stack = [];
1285
- let indent = "";
1286
- let propertyList;
1287
- let replacerFunc;
1288
- let gap = "";
1289
- let quote;
1290
- if (replacer != null && typeof replacer === "object" && !Array.isArray(replacer)) {
1291
- space = replacer.space;
1292
- quote = replacer.quote;
1293
- replacer = replacer.replacer;
1294
- }
1295
- if (typeof replacer === "function") {
1296
- replacerFunc = replacer;
1297
- } else if (Array.isArray(replacer)) {
1298
- propertyList = [];
1299
- for (const v of replacer) {
1300
- let item;
1301
- if (typeof v === "string") {
1302
- item = v;
1303
- } else if (typeof v === "number" || v instanceof String || v instanceof Number) {
1304
- item = String(v);
1305
- }
1306
- if (item !== void 0 && propertyList.indexOf(item) < 0) {
1307
- propertyList.push(item);
1308
- }
1309
- }
1310
- }
1311
- if (space instanceof Number) {
1312
- space = Number(space);
1313
- } else if (space instanceof String) {
1314
- space = String(space);
1315
- }
1316
- if (typeof space === "number") {
1317
- if (space > 0) {
1318
- space = Math.min(10, Math.floor(space));
1319
- gap = " ".substr(0, space);
1320
- }
1321
- } else if (typeof space === "string") {
1322
- gap = space.substr(0, 10);
1323
- }
1324
- return serializeProperty("", { "": value });
1325
- function serializeProperty(key, holder) {
1326
- let value2 = holder[key];
1327
- if (value2 != null) {
1328
- if (typeof value2.toJSON5 === "function") {
1329
- value2 = value2.toJSON5(key);
1330
- } else if (typeof value2.toJSON === "function") {
1331
- value2 = value2.toJSON(key);
1332
- }
1333
- }
1334
- if (replacerFunc) {
1335
- value2 = replacerFunc.call(holder, key, value2);
1336
- }
1337
- if (value2 instanceof Number) {
1338
- value2 = Number(value2);
1339
- } else if (value2 instanceof String) {
1340
- value2 = String(value2);
1341
- } else if (value2 instanceof Boolean) {
1342
- value2 = value2.valueOf();
1343
- }
1344
- switch (value2) {
1345
- case null:
1346
- return "null";
1347
- case true:
1348
- return "true";
1349
- case false:
1350
- return "false";
1351
- }
1352
- if (typeof value2 === "string") {
1353
- return quoteString(value2, false);
1354
- }
1355
- if (typeof value2 === "number") {
1356
- return String(value2);
1357
- }
1358
- if (typeof value2 === "object") {
1359
- return Array.isArray(value2) ? serializeArray(value2) : serializeObject(value2);
1360
- }
1361
- return void 0;
1362
- }
1363
- function quoteString(value2) {
1364
- const quotes = {
1365
- "'": 0.1,
1366
- '"': 0.2
1367
- };
1368
- const replacements = {
1369
- "'": "\\'",
1370
- '"': '\\"',
1371
- "\\": "\\\\",
1372
- "\b": "\\b",
1373
- "\f": "\\f",
1374
- "\n": "\\n",
1375
- "\r": "\\r",
1376
- " ": "\\t",
1377
- "\v": "\\v",
1378
- "\0": "\\0",
1379
- "\u2028": "\\u2028",
1380
- "\u2029": "\\u2029"
1381
- };
1382
- let product = "";
1383
- for (let i = 0; i < value2.length; i++) {
1384
- const c = value2[i];
1385
- switch (c) {
1386
- case "'":
1387
- case '"':
1388
- quotes[c]++;
1389
- product += c;
1390
- continue;
1391
- case "\0":
1392
- if (util.isDigit(value2[i + 1])) {
1393
- product += "\\x00";
1394
- continue;
1395
- }
1396
- }
1397
- if (replacements[c]) {
1398
- product += replacements[c];
1399
- continue;
1400
- }
1401
- if (c < " ") {
1402
- let hexString = c.charCodeAt(0).toString(16);
1403
- product += "\\x" + ("00" + hexString).substring(hexString.length);
1404
- continue;
1405
- }
1406
- product += c;
1407
- }
1408
- const quoteChar = quote || Object.keys(quotes).reduce((a, b) => quotes[a] < quotes[b] ? a : b);
1409
- product = product.replace(new RegExp(quoteChar, "g"), replacements[quoteChar]);
1410
- return quoteChar + product + quoteChar;
1411
- }
1412
- function serializeObject(value2) {
1413
- if (stack.indexOf(value2) >= 0) {
1414
- throw TypeError("Converting circular structure to JSON5");
1415
- }
1416
- stack.push(value2);
1417
- let stepback = indent;
1418
- indent = indent + gap;
1419
- let keys = propertyList || Object.keys(value2);
1420
- let partial = [];
1421
- for (const key of keys) {
1422
- const propertyString = serializeProperty(key, value2);
1423
- if (propertyString !== void 0) {
1424
- let member = serializeKey(key) + ":";
1425
- if (gap !== "") {
1426
- member += " ";
1427
- }
1428
- member += propertyString;
1429
- partial.push(member);
1430
- }
1431
- }
1432
- let final;
1433
- if (partial.length === 0) {
1434
- final = "{}";
1435
- } else {
1436
- let properties;
1437
- if (gap === "") {
1438
- properties = partial.join(",");
1439
- final = "{" + properties + "}";
1440
- } else {
1441
- let separator = ",\n" + indent;
1442
- properties = partial.join(separator);
1443
- final = "{\n" + indent + properties + ",\n" + stepback + "}";
1444
- }
1445
- }
1446
- stack.pop();
1447
- indent = stepback;
1448
- return final;
1449
- }
1450
- function serializeKey(key) {
1451
- if (key.length === 0) {
1452
- return quoteString(key, true);
1453
- }
1454
- const firstChar = String.fromCodePoint(key.codePointAt(0));
1455
- if (!util.isIdStartChar(firstChar)) {
1456
- return quoteString(key, true);
1457
- }
1458
- for (let i = firstChar.length; i < key.length; i++) {
1459
- if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {
1460
- return quoteString(key, true);
1461
- }
1462
- }
1463
- return key;
1464
- }
1465
- function serializeArray(value2) {
1466
- if (stack.indexOf(value2) >= 0) {
1467
- throw TypeError("Converting circular structure to JSON5");
1468
- }
1469
- stack.push(value2);
1470
- let stepback = indent;
1471
- indent = indent + gap;
1472
- let partial = [];
1473
- for (let i = 0; i < value2.length; i++) {
1474
- const propertyString = serializeProperty(String(i), value2);
1475
- partial.push(propertyString !== void 0 ? propertyString : "null");
1476
- }
1477
- let final;
1478
- if (partial.length === 0) {
1479
- final = "[]";
1480
- } else {
1481
- if (gap === "") {
1482
- let properties = partial.join(",");
1483
- final = "[" + properties + "]";
1484
- } else {
1485
- let separator = ",\n" + indent;
1486
- let properties = partial.join(separator);
1487
- final = "[\n" + indent + properties + ",\n" + stepback + "]";
1488
- }
1489
- }
1490
- stack.pop();
1491
- indent = stepback;
1492
- return final;
1493
- }
1494
- };
186
+ isUsingTs() {
187
+ return [".ts", ".tsx"].includes(import_path.default.extname(this.tinaConfigFilePath));
1495
188
  }
1496
- });
1497
-
1498
- // ../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/index.js
1499
- var require_lib = __commonJS({
1500
- "../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/lib/index.js"(exports, module2) {
1501
- var parse2 = require_parse();
1502
- var stringify = require_stringify();
1503
- var JSON5 = {
1504
- parse: parse2,
1505
- stringify
1506
- };
1507
- module2.exports = JSON5;
189
+ hasSelfHostedConfig() {
190
+ return !!this.selfHostedDatabaseFilePath;
1508
191
  }
1509
- });
1510
-
1511
- // ../../../node_modules/.pnpm/strip-bom@3.0.0/node_modules/strip-bom/index.js
1512
- var require_strip_bom = __commonJS({
1513
- "../../../node_modules/.pnpm/strip-bom@3.0.0/node_modules/strip-bom/index.js"(exports, module2) {
1514
- "use strict";
1515
- module2.exports = (x) => {
1516
- if (typeof x !== "string") {
1517
- throw new TypeError("Expected a string, got " + typeof x);
1518
- }
1519
- if (x.charCodeAt(0) === 65279) {
1520
- return x.slice(1);
1521
- }
1522
- return x;
1523
- };
192
+ hasSeparateContentRoot() {
193
+ return this.rootPath !== this.contentRootPath;
1524
194
  }
1525
- });
1526
-
1527
- // ../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/tsconfig-loader.js
1528
- var require_tsconfig_loader = __commonJS({
1529
- "../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/tsconfig-loader.js"(exports) {
1530
- "use strict";
1531
- var __assign = exports && exports.__assign || function() {
1532
- __assign = Object.assign || function(t) {
1533
- for (var s2, i = 1, n = arguments.length; i < n; i++) {
1534
- s2 = arguments[i];
1535
- for (var p in s2)
1536
- if (Object.prototype.hasOwnProperty.call(s2, p))
1537
- t[p] = s2[p];
1538
- }
1539
- return t;
1540
- };
1541
- return __assign.apply(this, arguments);
1542
- };
1543
- Object.defineProperty(exports, "__esModule", { value: true });
1544
- exports.loadTsconfig = exports.walkForTsConfig = exports.tsConfigLoader = void 0;
1545
- var path14 = require("path");
1546
- var fs15 = require("fs");
1547
- var JSON5 = require_lib();
1548
- var StripBom = require_strip_bom();
1549
- function tsConfigLoader(_a) {
1550
- var getEnv = _a.getEnv, cwd = _a.cwd, _b = _a.loadSync, loadSync = _b === void 0 ? loadSyncDefault : _b;
1551
- var TS_NODE_PROJECT = getEnv("TS_NODE_PROJECT");
1552
- var TS_NODE_BASEURL = getEnv("TS_NODE_BASEURL");
1553
- var loadResult = loadSync(cwd, TS_NODE_PROJECT, TS_NODE_BASEURL);
1554
- return loadResult;
1555
- }
1556
- exports.tsConfigLoader = tsConfigLoader;
1557
- function loadSyncDefault(cwd, filename, baseUrl) {
1558
- var configPath = resolveConfigPath(cwd, filename);
1559
- if (!configPath) {
1560
- return {
1561
- tsConfigPath: void 0,
1562
- baseUrl: void 0,
1563
- paths: void 0
1564
- };
1565
- }
1566
- var config2 = loadTsconfig(configPath);
1567
- return {
1568
- tsConfigPath: configPath,
1569
- baseUrl: baseUrl || config2 && config2.compilerOptions && config2.compilerOptions.baseUrl,
1570
- paths: config2 && config2.compilerOptions && config2.compilerOptions.paths
1571
- };
1572
- }
1573
- function resolveConfigPath(cwd, filename) {
1574
- if (filename) {
1575
- var absolutePath = fs15.lstatSync(filename).isDirectory() ? path14.resolve(filename, "./tsconfig.json") : path14.resolve(cwd, filename);
1576
- return absolutePath;
1577
- }
1578
- if (fs15.statSync(cwd).isFile()) {
1579
- return path14.resolve(cwd);
1580
- }
1581
- var configAbsolutePath = walkForTsConfig(cwd);
1582
- return configAbsolutePath ? path14.resolve(configAbsolutePath) : void 0;
195
+ shouldSkipSDK() {
196
+ var _a;
197
+ if (this.legacyNoSDK) {
198
+ return this.legacyNoSDK;
1583
199
  }
1584
- function walkForTsConfig(directory, readdirSync) {
1585
- if (readdirSync === void 0) {
1586
- readdirSync = fs15.readdirSync;
1587
- }
1588
- var files = readdirSync(directory);
1589
- var filesToCheck = ["tsconfig.json", "jsconfig.json"];
1590
- for (var _i = 0, filesToCheck_1 = filesToCheck; _i < filesToCheck_1.length; _i++) {
1591
- var fileToCheck = filesToCheck_1[_i];
1592
- if (files.indexOf(fileToCheck) !== -1) {
1593
- return path14.join(directory, fileToCheck);
1594
- }
1595
- }
1596
- var parentDirectory = path14.dirname(directory);
1597
- if (directory === parentDirectory) {
1598
- return void 0;
1599
- }
1600
- return walkForTsConfig(parentDirectory, readdirSync);
200
+ return ((_a = this.config.client) == null ? void 0 : _a.skip) || false;
201
+ }
202
+ async processConfig() {
203
+ this.tinaFolderPath = await this.getTinaFolderPath(this.rootPath);
204
+ this.envFilePath = import_path.default.resolve(
205
+ import_path.default.join(this.tinaFolderPath, "..", ".env")
206
+ );
207
+ dotenv.config({ path: this.envFilePath });
208
+ this.tinaConfigFilePath = await this.getPathWithExtension(
209
+ import_path.default.join(this.tinaFolderPath, "config")
210
+ );
211
+ if (!this.tinaConfigFilePath) {
212
+ throw new Error(
213
+ `Unable to find config file in ${this.tinaFolderPath}. Looking for a file named "config.{ts,tsx,js,jsx}"`
214
+ );
1601
215
  }
1602
- exports.walkForTsConfig = walkForTsConfig;
1603
- function loadTsconfig(configFilePath, existsSync, readFileSync) {
1604
- if (existsSync === void 0) {
1605
- existsSync = fs15.existsSync;
1606
- }
1607
- if (readFileSync === void 0) {
1608
- readFileSync = function(filename) {
1609
- return fs15.readFileSync(filename, "utf8");
1610
- };
1611
- }
1612
- if (!existsSync(configFilePath)) {
1613
- return void 0;
1614
- }
1615
- var configString = readFileSync(configFilePath);
1616
- var cleanedJson = StripBom(configString);
1617
- var config2;
1618
- try {
1619
- config2 = JSON5.parse(cleanedJson);
1620
- } catch (e) {
1621
- throw new Error("".concat(configFilePath, " is malformed ").concat(e.message));
1622
- }
1623
- var extendedConfig = config2.extends;
1624
- if (extendedConfig) {
1625
- var base = void 0;
1626
- if (Array.isArray(extendedConfig)) {
1627
- base = extendedConfig.reduce(function(currBase, extendedConfigElement) {
1628
- return mergeTsconfigs(currBase, loadTsconfigFromExtends(configFilePath, extendedConfigElement, existsSync, readFileSync));
1629
- }, {});
1630
- } else {
1631
- base = loadTsconfigFromExtends(configFilePath, extendedConfig, existsSync, readFileSync);
1632
- }
1633
- return mergeTsconfigs(base, config2);
216
+ this.selfHostedDatabaseFilePath = await this.getPathWithExtension(
217
+ import_path.default.join(this.tinaFolderPath, "database")
218
+ );
219
+ this.generatedFolderPath = import_path.default.join(this.tinaFolderPath, GENERATED_FOLDER);
220
+ this.generatedCachePath = import_path.default.join(
221
+ this.generatedFolderPath,
222
+ ".cache",
223
+ String((/* @__PURE__ */ new Date()).getTime())
224
+ );
225
+ this.generatedGraphQLGQLPath = import_path.default.join(
226
+ this.generatedFolderPath,
227
+ GRAPHQL_GQL_FILE
228
+ );
229
+ this.generatedGraphQLJSONPath = import_path.default.join(
230
+ this.generatedFolderPath,
231
+ GRAPHQL_JSON_FILE
232
+ );
233
+ this.generatedSchemaJSONPath = import_path.default.join(
234
+ this.generatedFolderPath,
235
+ SCHEMA_JSON_FILE
236
+ );
237
+ this.generatedLookupJSONPath = import_path.default.join(
238
+ this.generatedFolderPath,
239
+ LOOKUP_JSON_FILE
240
+ );
241
+ this.generatedQueriesFilePath = import_path.default.join(
242
+ this.generatedFolderPath,
243
+ "queries.gql"
244
+ );
245
+ this.generatedFragmentsFilePath = import_path.default.join(
246
+ this.generatedFolderPath,
247
+ "frags.gql"
248
+ );
249
+ this.generatedTypesTSFilePath = import_path.default.join(
250
+ this.generatedFolderPath,
251
+ "types.ts"
252
+ );
253
+ this.generatedTypesJSFilePath = import_path.default.join(
254
+ this.generatedFolderPath,
255
+ "types.js"
256
+ );
257
+ this.generatedTypesDFilePath = import_path.default.join(
258
+ this.generatedFolderPath,
259
+ "types.d.ts"
260
+ );
261
+ this.userQueriesAndFragmentsGlob = import_path.default.join(
262
+ this.tinaFolderPath,
263
+ "queries/**/*.{graphql,gql}"
264
+ );
265
+ this.generatedQueriesAndFragmentsGlob = import_path.default.join(
266
+ this.generatedFolderPath,
267
+ "*.{graphql,gql}"
268
+ );
269
+ this.generatedClientTSFilePath = import_path.default.join(
270
+ this.generatedFolderPath,
271
+ "client.ts"
272
+ );
273
+ this.generatedClientJSFilePath = import_path.default.join(
274
+ this.generatedFolderPath,
275
+ "client.js"
276
+ );
277
+ this.generatedClientDFilePath = import_path.default.join(
278
+ this.generatedFolderPath,
279
+ "client.d.ts"
280
+ );
281
+ this.generatedDatabaseClientDFilePath = import_path.default.join(
282
+ this.generatedFolderPath,
283
+ "databaseClient.d.ts"
284
+ );
285
+ this.generatedDatabaseClientTSFilePath = import_path.default.join(
286
+ this.generatedFolderPath,
287
+ "databaseClient.ts"
288
+ );
289
+ this.generatedDatabaseClientJSFilePath = import_path.default.join(
290
+ this.generatedFolderPath,
291
+ "databaseClient.js"
292
+ );
293
+ const clientExists = this.isUsingTs() ? await import_fs_extra.default.pathExists(this.generatedClientTSFilePath) : await import_fs_extra.default.pathExists(this.generatedClientJSFilePath);
294
+ if (!clientExists) {
295
+ const file = "export default ()=>({})\nexport const client = ()=>({})";
296
+ if (this.isUsingTs()) {
297
+ await import_fs_extra.default.outputFile(this.generatedClientTSFilePath, file);
298
+ } else {
299
+ await import_fs_extra.default.outputFile(this.generatedClientJSFilePath, file);
1634
300
  }
1635
- return config2;
1636
301
  }
1637
- exports.loadTsconfig = loadTsconfig;
1638
- function loadTsconfigFromExtends(configFilePath, extendedConfigValue, existsSync, readFileSync) {
1639
- var _a;
1640
- if (typeof extendedConfigValue === "string" && extendedConfigValue.indexOf(".json") === -1) {
1641
- extendedConfigValue += ".json";
1642
- }
1643
- var currentDir = path14.dirname(configFilePath);
1644
- var extendedConfigPath = path14.join(currentDir, extendedConfigValue);
1645
- if (extendedConfigValue.indexOf("/") !== -1 && extendedConfigValue.indexOf(".") !== -1 && !existsSync(extendedConfigPath)) {
1646
- extendedConfigPath = path14.join(currentDir, "node_modules", extendedConfigValue);
1647
- }
1648
- var config2 = loadTsconfig(extendedConfigPath, existsSync, readFileSync) || {};
1649
- if ((_a = config2.compilerOptions) === null || _a === void 0 ? void 0 : _a.baseUrl) {
1650
- var extendsDir = path14.dirname(extendedConfigValue);
1651
- config2.compilerOptions.baseUrl = path14.join(extendsDir, config2.compilerOptions.baseUrl);
302
+ const { config: config2, prebuildPath, watchList } = await this.loadConfigFile(
303
+ this.generatedFolderPath,
304
+ this.tinaConfigFilePath
305
+ );
306
+ this.watchList = watchList;
307
+ this.config = config2;
308
+ this.prebuildFilePath = prebuildPath;
309
+ this.publicFolderPath = import_path.default.join(
310
+ this.rootPath,
311
+ this.config.build.publicFolder
312
+ );
313
+ this.outputFolderPath = import_path.default.join(
314
+ this.publicFolderPath,
315
+ this.config.build.outputFolder
316
+ );
317
+ this.outputHTMLFilePath = import_path.default.join(this.outputFolderPath, "index.html");
318
+ this.outputGitignorePath = import_path.default.join(this.outputFolderPath, ".gitignore");
319
+ const fullLocalContentPath = import_path.default.join(
320
+ this.tinaFolderPath,
321
+ this.config.localContentPath || ""
322
+ );
323
+ if (this.config.localContentPath) {
324
+ const localContentPathExists = await import_fs_extra.default.pathExists(fullLocalContentPath);
325
+ if (localContentPathExists) {
326
+ logger.info(`Using separate content repo at ${fullLocalContentPath}`);
327
+ this.contentRootPath = fullLocalContentPath;
328
+ } else {
329
+ logger.warn(
330
+ `${import_chalk2.default.yellow("Warning:")} The localContentPath ${import_chalk2.default.cyan(
331
+ fullLocalContentPath
332
+ )} does not exist. Please create it or remove the localContentPath from your config file at ${import_chalk2.default.cyan(
333
+ this.tinaConfigFilePath
334
+ )}`
335
+ );
1652
336
  }
1653
- return config2;
1654
337
  }
1655
- function mergeTsconfigs(base, config2) {
1656
- base = base || {};
1657
- config2 = config2 || {};
1658
- return __assign(__assign(__assign({}, base), config2), { compilerOptions: __assign(__assign({}, base.compilerOptions), config2.compilerOptions) });
338
+ if (!this.contentRootPath) {
339
+ this.contentRootPath = this.rootPath;
1659
340
  }
341
+ this.generatedFolderPathContentRepo = import_path.default.join(
342
+ await this.getTinaFolderPath(this.contentRootPath),
343
+ GENERATED_FOLDER
344
+ );
345
+ this.spaMainPath = require.resolve("@tinacms/app");
346
+ this.spaRootPath = import_path.default.join(this.spaMainPath, "..", "..");
1660
347
  }
1661
- });
1662
-
1663
- // ../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/config-loader.js
1664
- var require_config_loader = __commonJS({
1665
- "../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/config-loader.js"(exports) {
1666
- "use strict";
1667
- Object.defineProperty(exports, "__esModule", { value: true });
1668
- exports.configLoader = exports.loadConfig = void 0;
1669
- var TsConfigLoader2 = require_tsconfig_loader();
1670
- var path14 = require("path");
1671
- function loadConfig2(cwd) {
1672
- if (cwd === void 0) {
1673
- cwd = process.cwd();
1674
- }
1675
- return configLoader({ cwd });
348
+ async getTinaFolderPath(rootPath) {
349
+ const tinaFolderPath = import_path.default.join(rootPath, TINA_FOLDER);
350
+ const tinaFolderExists = await import_fs_extra.default.pathExists(tinaFolderPath);
351
+ if (tinaFolderExists) {
352
+ this.isUsingLegacyFolder = false;
353
+ return tinaFolderPath;
1676
354
  }
1677
- exports.loadConfig = loadConfig2;
1678
- function configLoader(_a) {
1679
- var cwd = _a.cwd, explicitParams = _a.explicitParams, _b = _a.tsConfigLoader, tsConfigLoader = _b === void 0 ? TsConfigLoader2.tsConfigLoader : _b;
1680
- if (explicitParams) {
1681
- var absoluteBaseUrl = path14.isAbsolute(explicitParams.baseUrl) ? explicitParams.baseUrl : path14.join(cwd, explicitParams.baseUrl);
1682
- return {
1683
- resultType: "success",
1684
- configFileAbsolutePath: "",
1685
- baseUrl: explicitParams.baseUrl,
1686
- absoluteBaseUrl,
1687
- paths: explicitParams.paths,
1688
- mainFields: explicitParams.mainFields,
1689
- addMatchAll: explicitParams.addMatchAll
1690
- };
1691
- }
1692
- var loadResult = tsConfigLoader({
1693
- cwd,
1694
- getEnv: function(key) {
1695
- return process.env[key];
1696
- }
1697
- });
1698
- if (!loadResult.tsConfigPath) {
1699
- return {
1700
- resultType: "failed",
1701
- message: "Couldn't find tsconfig.json"
1702
- };
1703
- }
355
+ const legacyFolderPath = import_path.default.join(rootPath, LEGACY_TINA_FOLDER);
356
+ const legacyFolderExists = await import_fs_extra.default.pathExists(legacyFolderPath);
357
+ if (legacyFolderExists) {
358
+ this.isUsingLegacyFolder = true;
359
+ return legacyFolderPath;
360
+ }
361
+ throw new Error(
362
+ `Unable to find Tina folder, if you're working in folder outside of the Tina config be sure to specify --rootPath`
363
+ );
364
+ }
365
+ getTinaGraphQLVersion() {
366
+ if (this.tinaGraphQLVersionFromCLI) {
367
+ const version2 = this.tinaGraphQLVersionFromCLI.split(".");
1704
368
  return {
1705
- resultType: "success",
1706
- configFileAbsolutePath: loadResult.tsConfigPath,
1707
- baseUrl: loadResult.baseUrl,
1708
- absoluteBaseUrl: path14.resolve(path14.dirname(loadResult.tsConfigPath), loadResult.baseUrl || ""),
1709
- paths: loadResult.paths || {},
1710
- addMatchAll: loadResult.baseUrl !== void 0
369
+ fullVersion: this.tinaGraphQLVersionFromCLI,
370
+ major: version2[0] || "x",
371
+ minor: version2[1] || "x",
372
+ patch: version2[2] || "x"
1711
373
  };
1712
374
  }
1713
- exports.configLoader = configLoader;
375
+ const generatedSchema = import_fs_extra.default.readJSONSync(this.generatedSchemaJSONPath);
376
+ if (!generatedSchema || !(typeof (generatedSchema == null ? void 0 : generatedSchema.version) !== "undefined")) {
377
+ throw new Error(
378
+ `Can not find Tina GraphQL version in ${this.generatedSchemaJSONPath}`
379
+ );
380
+ }
381
+ return generatedSchema.version;
1714
382
  }
1715
- });
1716
-
1717
- // ../../../node_modules/.pnpm/minimist@1.2.8/node_modules/minimist/index.js
1718
- var require_minimist = __commonJS({
1719
- "../../../node_modules/.pnpm/minimist@1.2.8/node_modules/minimist/index.js"(exports, module2) {
1720
- "use strict";
1721
- function hasKey(obj, keys) {
1722
- var o = obj;
1723
- keys.slice(0, -1).forEach(function(key2) {
1724
- o = o[key2] || {};
1725
- });
1726
- var key = keys[keys.length - 1];
1727
- return key in o;
383
+ printGeneratedClientFilePath() {
384
+ if (this.isUsingTs()) {
385
+ return this.generatedClientTSFilePath.replace(`${this.rootPath}/`, "");
1728
386
  }
1729
- function isNumber(x) {
1730
- if (typeof x === "number") {
1731
- return true;
1732
- }
1733
- if (/^0x[0-9a-f]+$/i.test(x)) {
1734
- return true;
1735
- }
1736
- return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
387
+ return this.generatedClientJSFilePath.replace(`${this.rootPath}/`, "");
388
+ }
389
+ printGeneratedTypesFilePath() {
390
+ return this.generatedTypesTSFilePath.replace(`${this.rootPath}/`, "");
391
+ }
392
+ printoutputHTMLFilePath() {
393
+ return this.outputHTMLFilePath.replace(`${this.publicFolderPath}/`, "");
394
+ }
395
+ printRelativePath(filename) {
396
+ if (filename) {
397
+ return filename.replace(/\\/g, "/").replace(`${this.rootPath}/`, "");
1737
398
  }
1738
- function isConstructorOrProto(obj, key) {
1739
- return key === "constructor" && typeof obj[key] === "function" || key === "__proto__";
399
+ throw `No path provided to print`;
400
+ }
401
+ printPrebuildFilePath() {
402
+ return this.prebuildFilePath.replace(/\\/g, "/").replace(`${this.rootPath}/${this.tinaFolderPath}/`, "");
403
+ }
404
+ printContentRelativePath(filename) {
405
+ if (filename) {
406
+ return filename.replace(/\\/g, "/").replace(`${this.contentRootPath}/`, "");
1740
407
  }
1741
- module2.exports = function(args, opts) {
1742
- if (!opts) {
1743
- opts = {};
1744
- }
1745
- var flags = {
1746
- bools: {},
1747
- strings: {},
1748
- unknownFn: null
1749
- };
1750
- if (typeof opts.unknown === "function") {
1751
- flags.unknownFn = opts.unknown;
1752
- }
1753
- if (typeof opts.boolean === "boolean" && opts.boolean) {
1754
- flags.allBools = true;
1755
- } else {
1756
- [].concat(opts.boolean).filter(Boolean).forEach(function(key2) {
1757
- flags.bools[key2] = true;
1758
- });
1759
- }
1760
- var aliases = {};
1761
- function aliasIsBoolean(key2) {
1762
- return aliases[key2].some(function(x) {
1763
- return flags.bools[x];
1764
- });
1765
- }
1766
- Object.keys(opts.alias || {}).forEach(function(key2) {
1767
- aliases[key2] = [].concat(opts.alias[key2]);
1768
- aliases[key2].forEach(function(x) {
1769
- aliases[x] = [key2].concat(aliases[key2].filter(function(y) {
1770
- return x !== y;
1771
- }));
1772
- });
1773
- });
1774
- [].concat(opts.string).filter(Boolean).forEach(function(key2) {
1775
- flags.strings[key2] = true;
1776
- if (aliases[key2]) {
1777
- [].concat(aliases[key2]).forEach(function(k) {
1778
- flags.strings[k] = true;
1779
- });
408
+ throw `No path provided to print`;
409
+ }
410
+ /**
411
+ * Given a filepath without an extension, find the first match (eg. tsx, ts, jsx, js)
412
+ */
413
+ async getPathWithExtension(filepath) {
414
+ const extensions = ["tsx", "ts", "jsx", "js"];
415
+ let result;
416
+ await Promise.all(
417
+ extensions.map(async (ext) => {
418
+ if (result) {
419
+ return;
1780
420
  }
1781
- });
1782
- var defaults = opts.default || {};
1783
- var argv = { _: [] };
1784
- function argDefined(key2, arg2) {
1785
- return flags.allBools && /^--[^=]+$/.test(arg2) || flags.strings[key2] || flags.bools[key2] || aliases[key2];
1786
- }
1787
- function setKey(obj, keys, value2) {
1788
- var o = obj;
1789
- for (var i2 = 0; i2 < keys.length - 1; i2++) {
1790
- var key2 = keys[i2];
1791
- if (isConstructorOrProto(o, key2)) {
1792
- return;
1793
- }
1794
- if (o[key2] === void 0) {
1795
- o[key2] = {};
1796
- }
1797
- if (o[key2] === Object.prototype || o[key2] === Number.prototype || o[key2] === String.prototype) {
1798
- o[key2] = {};
1799
- }
1800
- if (o[key2] === Array.prototype) {
1801
- o[key2] = [];
1802
- }
1803
- o = o[key2];
1804
- }
1805
- var lastKey = keys[keys.length - 1];
1806
- if (isConstructorOrProto(o, lastKey)) {
1807
- return;
1808
- }
1809
- if (o === Object.prototype || o === Number.prototype || o === String.prototype) {
1810
- o = {};
1811
- }
1812
- if (o === Array.prototype) {
1813
- o = [];
1814
- }
1815
- if (o[lastKey] === void 0 || flags.bools[lastKey] || typeof o[lastKey] === "boolean") {
1816
- o[lastKey] = value2;
1817
- } else if (Array.isArray(o[lastKey])) {
1818
- o[lastKey].push(value2);
1819
- } else {
1820
- o[lastKey] = [o[lastKey], value2];
1821
- }
1822
- }
1823
- function setArg(key2, val, arg2) {
1824
- if (arg2 && flags.unknownFn && !argDefined(key2, arg2)) {
1825
- if (flags.unknownFn(arg2) === false) {
1826
- return;
1827
- }
1828
- }
1829
- var value2 = !flags.strings[key2] && isNumber(val) ? Number(val) : val;
1830
- setKey(argv, key2.split("."), value2);
1831
- (aliases[key2] || []).forEach(function(x) {
1832
- setKey(argv, x.split("."), value2);
1833
- });
1834
- }
1835
- Object.keys(flags.bools).forEach(function(key2) {
1836
- setArg(key2, defaults[key2] === void 0 ? false : defaults[key2]);
1837
- });
1838
- var notFlags = [];
1839
- if (args.indexOf("--") !== -1) {
1840
- notFlags = args.slice(args.indexOf("--") + 1);
1841
- args = args.slice(0, args.indexOf("--"));
1842
- }
1843
- for (var i = 0; i < args.length; i++) {
1844
- var arg = args[i];
1845
- var key;
1846
- var next;
1847
- if (/^--.+=/.test(arg)) {
1848
- var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
1849
- key = m[1];
1850
- var value = m[2];
1851
- if (flags.bools[key]) {
1852
- value = value !== "false";
1853
- }
1854
- setArg(key, value, arg);
1855
- } else if (/^--no-.+/.test(arg)) {
1856
- key = arg.match(/^--no-(.+)/)[1];
1857
- setArg(key, false, arg);
1858
- } else if (/^--.+/.test(arg)) {
1859
- key = arg.match(/^--(.+)/)[1];
1860
- next = args[i + 1];
1861
- if (next !== void 0 && !/^(-|--)[^-]/.test(next) && !flags.bools[key] && !flags.allBools && (aliases[key] ? !aliasIsBoolean(key) : true)) {
1862
- setArg(key, next, arg);
1863
- i += 1;
1864
- } else if (/^(true|false)$/.test(next)) {
1865
- setArg(key, next === "true", arg);
1866
- i += 1;
1867
- } else {
1868
- setArg(key, flags.strings[key] ? "" : true, arg);
1869
- }
1870
- } else if (/^-[^-]+/.test(arg)) {
1871
- var letters = arg.slice(1, -1).split("");
1872
- var broken = false;
1873
- for (var j = 0; j < letters.length; j++) {
1874
- next = arg.slice(j + 2);
1875
- if (next === "-") {
1876
- setArg(letters[j], next, arg);
1877
- continue;
1878
- }
1879
- if (/[A-Za-z]/.test(letters[j]) && next[0] === "=") {
1880
- setArg(letters[j], next.slice(1), arg);
1881
- broken = true;
1882
- break;
1883
- }
1884
- if (/[A-Za-z]/.test(letters[j]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
1885
- setArg(letters[j], next, arg);
1886
- broken = true;
1887
- break;
1888
- }
1889
- if (letters[j + 1] && letters[j + 1].match(/\W/)) {
1890
- setArg(letters[j], arg.slice(j + 2), arg);
1891
- broken = true;
1892
- break;
1893
- } else {
1894
- setArg(letters[j], flags.strings[letters[j]] ? "" : true, arg);
1895
- }
1896
- }
1897
- key = arg.slice(-1)[0];
1898
- if (!broken && key !== "-") {
1899
- if (args[i + 1] && !/^(-|--)[^-]/.test(args[i + 1]) && !flags.bools[key] && (aliases[key] ? !aliasIsBoolean(key) : true)) {
1900
- setArg(key, args[i + 1], arg);
1901
- i += 1;
1902
- } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) {
1903
- setArg(key, args[i + 1] === "true", arg);
1904
- i += 1;
1905
- } else {
1906
- setArg(key, flags.strings[key] ? "" : true, arg);
1907
- }
1908
- }
1909
- } else {
1910
- if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
1911
- argv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));
1912
- }
1913
- if (opts.stopEarly) {
1914
- argv._.push.apply(argv._, args.slice(i + 1));
1915
- break;
1916
- }
1917
- }
1918
- }
1919
- Object.keys(defaults).forEach(function(k) {
1920
- if (!hasKey(argv, k.split("."))) {
1921
- setKey(argv, k.split("."), defaults[k]);
1922
- (aliases[k] || []).forEach(function(x) {
1923
- setKey(argv, x.split("."), defaults[k]);
1924
- });
421
+ const filepathWithExtension = `${filepath}.${ext}`;
422
+ const exists = import_fs_extra.default.existsSync(filepathWithExtension);
423
+ if (exists) {
424
+ result = filepathWithExtension;
1925
425
  }
1926
- });
1927
- if (opts["--"]) {
1928
- argv["--"] = notFlags.slice();
1929
- } else {
1930
- notFlags.forEach(function(k) {
1931
- argv._.push(k);
1932
- });
1933
- }
1934
- return argv;
1935
- };
426
+ })
427
+ );
428
+ return result;
1936
429
  }
1937
- });
1938
-
1939
- // ../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/register.js
1940
- var require_register = __commonJS({
1941
- "../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/register.js"(exports) {
1942
- "use strict";
1943
- var __spreadArray = exports && exports.__spreadArray || function(to, from, pack) {
1944
- if (pack || arguments.length === 2)
1945
- for (var i = 0, l = from.length, ar; i < l; i++) {
1946
- if (ar || !(i in from)) {
1947
- if (!ar)
1948
- ar = Array.prototype.slice.call(from, 0, i);
1949
- ar[i] = from[i];
1950
- }
1951
- }
1952
- return to.concat(ar || Array.prototype.slice.call(from));
1953
- };
1954
- Object.defineProperty(exports, "__esModule", { value: true });
1955
- exports.register = void 0;
1956
- var match_path_sync_1 = require_match_path_sync();
1957
- var config_loader_1 = require_config_loader();
1958
- var noOp = function() {
1959
- return void 0;
1960
- };
1961
- function getCoreModules(builtinModules) {
1962
- builtinModules = builtinModules || [
1963
- "assert",
1964
- "buffer",
1965
- "child_process",
1966
- "cluster",
1967
- "crypto",
1968
- "dgram",
1969
- "dns",
1970
- "domain",
1971
- "events",
1972
- "fs",
1973
- "http",
1974
- "https",
1975
- "net",
1976
- "os",
1977
- "path",
1978
- "punycode",
1979
- "querystring",
1980
- "readline",
1981
- "stream",
1982
- "string_decoder",
1983
- "tls",
1984
- "tty",
1985
- "url",
1986
- "util",
1987
- "v8",
1988
- "vm",
1989
- "zlib"
1990
- ];
1991
- var coreModules = {};
1992
- for (var _i = 0, builtinModules_1 = builtinModules; _i < builtinModules_1.length; _i++) {
1993
- var module_1 = builtinModules_1[_i];
1994
- coreModules[module_1] = true;
1995
- }
1996
- return coreModules;
1997
- }
1998
- function register(params) {
1999
- var cwd;
2000
- var explicitParams;
2001
- if (params) {
2002
- cwd = params.cwd;
2003
- if (params.baseUrl || params.paths) {
2004
- explicitParams = params;
2005
- }
2006
- } else {
2007
- var minimist = require_minimist();
2008
- var argv = minimist(process.argv.slice(2), {
2009
- string: ["project"],
2010
- alias: {
2011
- project: ["P"]
2012
- }
2013
- });
2014
- cwd = argv.project;
2015
- }
2016
- var configLoaderResult = (0, config_loader_1.configLoader)({
2017
- cwd: cwd !== null && cwd !== void 0 ? cwd : process.cwd(),
2018
- explicitParams
2019
- });
2020
- if (configLoaderResult.resultType === "failed") {
2021
- console.warn("".concat(configLoaderResult.message, ". tsconfig-paths will be skipped"));
2022
- return noOp;
430
+ async loadDatabaseFile() {
431
+ const tmpdir = import_path.default.join(import_os.default.tmpdir(), Date.now().toString());
432
+ const outfile = import_path.default.join(tmpdir, "database.build.js");
433
+ await esbuild.build({
434
+ entryPoints: [this.selfHostedDatabaseFilePath],
435
+ bundle: true,
436
+ platform: "node",
437
+ outfile,
438
+ loader: loaders
439
+ });
440
+ const result = require(outfile);
441
+ import_fs_extra.default.removeSync(outfile);
442
+ return result.default;
443
+ }
444
+ async loadConfigFile(generatedFolderPath, configFilePath) {
445
+ const tmpdir = import_path.default.join(import_os.default.tmpdir(), Date.now().toString());
446
+ const preBuildConfigPath = import_path.default.join(
447
+ this.generatedFolderPath,
448
+ "config.prebuild.jsx"
449
+ );
450
+ const outfile = import_path.default.join(tmpdir, "config.build.jsx");
451
+ const outfile2 = import_path.default.join(tmpdir, "config.build.js");
452
+ const tempTSConfigFile = import_path.default.join(tmpdir, "tsconfig.json");
453
+ import_fs_extra.default.outputFileSync(tempTSConfigFile, "{}");
454
+ const result2 = await esbuild.build({
455
+ entryPoints: [configFilePath],
456
+ bundle: true,
457
+ target: ["es2020"],
458
+ platform: "browser",
459
+ format: "esm",
460
+ logLevel: "silent",
461
+ packages: "external",
462
+ ignoreAnnotations: true,
463
+ outfile: preBuildConfigPath,
464
+ loader: loaders,
465
+ metafile: true
466
+ });
467
+ const flattenedList = [];
468
+ Object.keys(result2.metafile.inputs).forEach((key) => {
469
+ if (key.includes("node_modules") || key.includes("__generated__")) {
470
+ return;
2023
471
  }
2024
- var matchPath = (0, match_path_sync_1.createMatchPath)(configLoaderResult.absoluteBaseUrl, configLoaderResult.paths, configLoaderResult.mainFields, configLoaderResult.addMatchAll);
2025
- var Module = require("module");
2026
- var originalResolveFilename = Module._resolveFilename;
2027
- var coreModules = getCoreModules(Module.builtinModules);
2028
- Module._resolveFilename = function(request2, _parent) {
2029
- var isCoreModule = coreModules.hasOwnProperty(request2);
2030
- if (!isCoreModule) {
2031
- var found = matchPath(request2);
2032
- if (found) {
2033
- var modifiedArguments = __spreadArray([found], [].slice.call(arguments, 1), true);
2034
- return originalResolveFilename.apply(this, modifiedArguments);
2035
- }
2036
- }
2037
- return originalResolveFilename.apply(this, arguments);
2038
- };
2039
- return function() {
2040
- Module._resolveFilename = originalResolveFilename;
2041
- };
472
+ flattenedList.push(key);
473
+ });
474
+ await esbuild.build({
475
+ entryPoints: [configFilePath],
476
+ bundle: true,
477
+ target: ["es2020"],
478
+ logLevel: "silent",
479
+ platform: "node",
480
+ outfile,
481
+ loader: loaders
482
+ });
483
+ await esbuild.build({
484
+ entryPoints: [outfile],
485
+ bundle: true,
486
+ // Suppress warning about comparison with -0 from client module
487
+ logLevel: "silent",
488
+ platform: "node",
489
+ outfile: outfile2,
490
+ loader: loaders
491
+ });
492
+ let result;
493
+ try {
494
+ result = require(outfile2);
495
+ } catch (e) {
496
+ console.error("Unexpected error loading config");
497
+ console.error(e);
498
+ throw e;
2042
499
  }
2043
- exports.register = register;
500
+ import_fs_extra.default.removeSync(outfile);
501
+ import_fs_extra.default.removeSync(outfile2);
502
+ return {
503
+ config: result.default,
504
+ prebuildPath: preBuildConfigPath,
505
+ watchList: flattenedList
506
+ };
2044
507
  }
2045
- });
508
+ };
509
+ var loaders = {
510
+ ".aac": "file",
511
+ ".css": "file",
512
+ ".eot": "file",
513
+ ".flac": "file",
514
+ ".gif": "file",
515
+ ".jpeg": "file",
516
+ ".jpg": "file",
517
+ ".json": "json",
518
+ ".mp3": "file",
519
+ ".mp4": "file",
520
+ ".ogg": "file",
521
+ ".otf": "file",
522
+ ".png": "file",
523
+ ".svg": "file",
524
+ ".ttf": "file",
525
+ ".wav": "file",
526
+ ".webm": "file",
527
+ ".webp": "file",
528
+ ".woff": "file",
529
+ ".woff2": "file",
530
+ ".js": "jsx",
531
+ ".jsx": "jsx",
532
+ ".tsx": "tsx"
533
+ };
534
+
535
+ // src/next/commands/dev-command/html.ts
536
+ var errorHTML = `<style type="text/css">
537
+ #no-assets-placeholder body {
538
+ font-family: sans-serif;
539
+ font-size: 16px;
540
+ line-height: 1.4;
541
+ color: #333;
542
+ background-color: #f5f5f5;
543
+ }
544
+ #no-assets-placeholder {
545
+ max-width: 600px;
546
+ margin: 0 auto;
547
+ padding: 40px;
548
+ text-align: center;
549
+ background-color: #fff;
550
+ box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.1);
551
+ }
552
+ #no-assets-placeholder h1 {
553
+ font-size: 24px;
554
+ margin-bottom: 20px;
555
+ }
556
+ #no-assets-placeholder p {
557
+ margin-bottom: 10px;
558
+ }
559
+ #no-assets-placeholder a {
560
+ color: #0077cc;
561
+ text-decoration: none;
562
+ }
563
+ #no-assets-placeholder a:hover {
564
+ text-decoration: underline;
565
+ }
566
+ </style>
567
+ <div id="no-assets-placeholder">
568
+ <h1>Failed loading TinaCMS assets</h1>
569
+ <p>
570
+ Your TinaCMS configuration may be misconfigured, and we could not load
571
+ the assets for this page.
572
+ </p>
573
+ <p>
574
+ 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.
575
+ </p>
576
+ </div>
577
+ </div>`.trim().replace(/[\r\n\s]+/g, " ");
578
+ var devHTML = (port) => `<!DOCTYPE html>
579
+ <html lang="en">
580
+ <head>
581
+ <meta charset="UTF-8" />
582
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
583
+ <title>TinaCMS</title>
584
+ </head>
2046
585
 
2047
- // ../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/index.js
2048
- var require_lib2 = __commonJS({
2049
- "../../../node_modules/.pnpm/tsconfig-paths@4.2.0/node_modules/tsconfig-paths/lib/index.js"(exports) {
2050
- "use strict";
2051
- Object.defineProperty(exports, "__esModule", { value: true });
2052
- exports.loadConfig = exports.register = exports.matchFromAbsolutePathsAsync = exports.createMatchPathAsync = exports.matchFromAbsolutePaths = exports.createMatchPath = void 0;
2053
- var match_path_sync_1 = require_match_path_sync();
2054
- Object.defineProperty(exports, "createMatchPath", { enumerable: true, get: function() {
2055
- return match_path_sync_1.createMatchPath;
2056
- } });
2057
- Object.defineProperty(exports, "matchFromAbsolutePaths", { enumerable: true, get: function() {
2058
- return match_path_sync_1.matchFromAbsolutePaths;
2059
- } });
2060
- var match_path_async_1 = require_match_path_async();
2061
- Object.defineProperty(exports, "createMatchPathAsync", { enumerable: true, get: function() {
2062
- return match_path_async_1.createMatchPathAsync;
2063
- } });
2064
- Object.defineProperty(exports, "matchFromAbsolutePathsAsync", { enumerable: true, get: function() {
2065
- return match_path_async_1.matchFromAbsolutePathsAsync;
2066
- } });
2067
- var register_1 = require_register();
2068
- Object.defineProperty(exports, "register", { enumerable: true, get: function() {
2069
- return register_1.register;
2070
- } });
2071
- var config_loader_1 = require_config_loader();
2072
- Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function() {
2073
- return config_loader_1.loadConfig;
2074
- } });
586
+ <!-- if development -->
587
+ <script type="module">
588
+ import RefreshRuntime from 'http://localhost:${port}/@react-refresh'
589
+ RefreshRuntime.injectIntoGlobalHook(window)
590
+ window.$RefreshReg$ = () => {}
591
+ window.$RefreshSig$ = () => (type) => type
592
+ window.__vite_plugin_react_preamble_installed__ = true
593
+ </script>
594
+ <script type="module" src="http://localhost:${port}/@vite/client"></script>
595
+ <script>
596
+ function handleLoadError() {
597
+ // Assets have failed to load
598
+ document.getElementById('root').innerHTML = '${errorHTML}';
2075
599
  }
2076
- });
600
+ </script>
601
+ <script
602
+ type="module"
603
+ src="http://localhost:${port}/src/main.tsx"
604
+ onerror="handleLoadError()"
605
+ ></script>
606
+ <body class="tina-tailwind">
607
+ <div id="root"></div>
608
+ </body>
609
+ </html>`;
2077
610
 
2078
- // src/index.ts
2079
- var src_exports = {};
2080
- __export(src_exports, {
2081
- default: () => src_default
2082
- });
2083
- module.exports = __toCommonJS(src_exports);
2084
- var import_clipanion8 = require("clipanion");
611
+ // src/utils/theme.ts
612
+ var import_chalk3 = __toESM(require("chalk"));
613
+ var successText = import_chalk3.default.bold.green;
614
+ var focusText = import_chalk3.default.bold;
615
+ var dangerText = import_chalk3.default.bold.red;
616
+ var neutralText = import_chalk3.default.bold.cyan;
617
+ var linkText = import_chalk3.default.bold.cyan;
618
+ var labelText = import_chalk3.default.bold;
619
+ var cmdText = import_chalk3.default.inverse;
620
+ var indentedCmd = (str) => {
621
+ return ` \u2503 ` + str;
622
+ };
623
+ var indentText = (str) => {
624
+ return String(str).split("\n").map((line) => ` ${line}`).join("\n");
625
+ };
626
+ var logText = import_chalk3.default.italic.gray;
627
+ var warnText = import_chalk3.default.yellowBright.bgBlack;
628
+ var titleText = import_chalk3.default.bgHex("d2f1f8").hex("ec4816");
629
+ var CONFIRMATION_TEXT = import_chalk3.default.dim("enter to confirm");
2085
630
 
2086
- // package.json
2087
- var version = "1.7.0";
2088
-
2089
- // src/next/commands/dev-command/index.ts
2090
- var import_clipanion2 = require("clipanion");
2091
- var import_fs_extra6 = __toESM(require("fs-extra"));
2092
- var import_path5 = __toESM(require("path"));
2093
- var import_chokidar = __toESM(require("chokidar"));
2094
- var import_graphql10 = require("@tinacms/graphql");
2095
-
2096
- // src/next/config-manager.ts
2097
- var import_fs_extra2 = __toESM(require("fs-extra"));
2098
- var import_path = __toESM(require("path"));
2099
- var import_os = __toESM(require("os"));
2100
- var esbuild = __toESM(require("esbuild"));
2101
- var dotenv = __toESM(require("dotenv"));
2102
- var import_normalize_path2 = __toESM(require("normalize-path"));
2103
- var import_chalk2 = __toESM(require("chalk"));
631
+ // src/next/commands/dev-command/server/index.ts
632
+ var import_vite3 = require("vite");
2104
633
 
2105
634
  // src/next/vite/index.ts
2106
635
  var import_node_path2 = __toESM(require("path"));
2107
636
  var import_plugin_react = __toESM(require("@vitejs/plugin-react"));
2108
- var import_fs_extra = __toESM(require("fs-extra"));
2109
- var import_normalize_path = __toESM(require("normalize-path"));
637
+ var import_fs_extra2 = __toESM(require("fs-extra"));
638
+ var import_normalize_path2 = __toESM(require("normalize-path"));
2110
639
  var import_vite = require("vite");
2111
640
 
2112
641
  // src/next/vite/tailwind.ts
@@ -2119,6 +648,7 @@ var import_defaultTheme = __toESM(require("tailwindcss/defaultTheme.js"));
2119
648
  var tinaTailwind = (spaPath, prebuildFilePath) => {
2120
649
  return {
2121
650
  name: "vite-plugin-tina",
651
+ // @ts-ignore
2122
652
  config: (viteConfig) => {
2123
653
  const plugins = [];
2124
654
  const content = [
@@ -2374,827 +904,206 @@ var tinaTailwind = (spaPath, prebuildFilePath) => {
2374
904
  }
2375
905
  };
2376
906
  }
2377
- };
2378
- };
2379
-
2380
- // src/next/vite/index.ts
2381
- async function listFilesRecursively({
2382
- directoryPath,
2383
- config: config2,
2384
- roothPath
2385
- }) {
2386
- const fullDirectoryPath = import_node_path2.default.join(
2387
- roothPath,
2388
- config2.publicFolder,
2389
- directoryPath
2390
- );
2391
- const exists = await import_fs_extra.default.pathExists(fullDirectoryPath);
2392
- if (!exists) {
2393
- return { "0": [] };
2394
- }
2395
- const items = await import_fs_extra.default.readdir(fullDirectoryPath);
2396
- const staticMediaItems = [];
2397
- for (const item of items) {
2398
- const itemPath = import_node_path2.default.join(fullDirectoryPath, item);
2399
- const stats = await import_fs_extra.default.promises.lstat(itemPath);
2400
- const staticMediaItem = {
2401
- id: item,
2402
- filename: item,
2403
- type: stats.isDirectory() ? "dir" : "file",
2404
- directory: `${directoryPath.replace(config2.mediaRoot, "")}`,
2405
- src: `/${import_node_path2.default.join(directoryPath, item)}`,
2406
- thumbnails: {
2407
- "75x75": `/${import_node_path2.default.join(directoryPath, item)}`,
2408
- "400x400": `/${import_node_path2.default.join(directoryPath, item)}`,
2409
- "1000x1000": `/${import_node_path2.default.join(directoryPath, item)}`
2410
- }
2411
- };
2412
- if (stats.isDirectory()) {
2413
- staticMediaItem.children = await listFilesRecursively({
2414
- directoryPath: import_node_path2.default.join(directoryPath, item),
2415
- config: config2,
2416
- roothPath
2417
- });
2418
- }
2419
- staticMediaItems.push(staticMediaItem);
2420
- }
2421
- function chunkArrayIntoObject(array, chunkSize) {
2422
- const result = {};
2423
- for (let i = 0; i < array.length; i += chunkSize) {
2424
- const chunkKey = `${i / chunkSize * 20}`;
2425
- result[chunkKey] = array.slice(i, i + chunkSize);
2426
- }
2427
- return result;
2428
- }
2429
- return chunkArrayIntoObject(staticMediaItems, 20);
2430
- }
2431
- var loadProjectConfig = async ({
2432
- rootPath,
2433
- viteConfigEnv
2434
- }) => {
2435
- if (viteConfigEnv) {
2436
- const configFileJs = import_node_path2.default.join(rootPath, "vite.config.js");
2437
- const configFileTs = import_node_path2.default.join(rootPath, "vite.config.ts");
2438
- if (import_fs_extra.default.existsSync(configFileJs)) {
2439
- return await (0, import_vite.loadConfigFromFile)(viteConfigEnv, configFileJs);
2440
- } else if (import_fs_extra.default.existsSync(configFileTs)) {
2441
- return await (0, import_vite.loadConfigFromFile)(viteConfigEnv, configFileTs);
2442
- }
2443
- }
2444
- return { config: {} };
2445
- };
2446
- var createConfig = async ({
2447
- configManager,
2448
- database,
2449
- apiURL,
2450
- plugins = [],
2451
- noWatch,
2452
- rollupOptions,
2453
- viteConfigEnv
2454
- }) => {
2455
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
2456
- const projectConfig = await loadProjectConfig({
2457
- rootPath: configManager.rootPath,
2458
- viteConfigEnv
2459
- });
2460
- const publicEnv = {};
2461
- Object.keys(process.env).forEach((key) => {
2462
- if (key.startsWith("TINA_PUBLIC_") || key.startsWith("NEXT_PUBLIC_") || key === "NODE_ENV" || key === "HEAD") {
2463
- try {
2464
- if (typeof process.env[key] === "string") {
2465
- publicEnv[key] = process.env[key];
2466
- } else {
2467
- publicEnv[key] = JSON.stringify(process.env[key]);
2468
- }
2469
- } catch (error) {
2470
- console.warn(
2471
- `Could not stringify public env process.env.${key} env variable`
2472
- );
2473
- console.warn(error);
2474
- }
2475
- }
2476
- });
2477
- const staticMediaPath = import_node_path2.default.join(
2478
- configManager.generatedFolderPath,
2479
- "static-media.json"
2480
- );
2481
- if ((_b = (_a = configManager.config.media) == null ? void 0 : _a.tina) == null ? void 0 : _b.static) {
2482
- const staticMedia = await listFilesRecursively({
2483
- directoryPath: ((_c = configManager.config.media.tina) == null ? void 0 : _c.mediaRoot) || "",
2484
- config: configManager.config.media.tina,
2485
- roothPath: configManager.rootPath
2486
- });
2487
- await import_fs_extra.default.outputFile(staticMediaPath, JSON.stringify(staticMedia, null, 2));
2488
- } else {
2489
- await import_fs_extra.default.outputFile(staticMediaPath, `[]`);
2490
- }
2491
- const alias = {
2492
- TINA_IMPORT: configManager.prebuildFilePath,
2493
- SCHEMA_IMPORT: configManager.generatedGraphQLJSONPath,
2494
- STATIC_MEDIA_IMPORT: staticMediaPath,
2495
- crypto: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
2496
- fs: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
2497
- os: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
2498
- path: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts")
2499
- };
2500
- if (configManager.shouldSkipSDK()) {
2501
- alias["CLIENT_IMPORT"] = import_node_path2.default.join(
2502
- configManager.spaRootPath,
2503
- "src",
2504
- "dummy-client.ts"
2505
- );
2506
- } else {
2507
- alias["CLIENT_IMPORT"] = configManager.isUsingTs() ? configManager.generatedTypesTSFilePath : configManager.generatedTypesJSFilePath;
2508
- }
2509
- let basePath;
2510
- if (configManager.config.build.basePath) {
2511
- basePath = configManager.config.build.basePath;
2512
- }
2513
- const fullVersion = configManager.getTinaGraphQLVersion();
2514
- const version2 = `${fullVersion.major}.${fullVersion.minor}`;
2515
- const config2 = {
2516
- root: configManager.spaRootPath,
2517
- base: `/${basePath ? `${(0, import_normalize_path.default)(basePath)}/` : ""}${(0, import_normalize_path.default)(
2518
- configManager.config.build.outputFolder
2519
- )}/`,
2520
- appType: "spa",
2521
- resolve: {
2522
- alias: {
2523
- ...(_d = projectConfig.config.resolve) == null ? void 0 : _d.alias,
2524
- ...alias
2525
- },
2526
- dedupe: ["graphql", "tinacms", "react", "react-dom", "react-router-dom"]
2527
- },
2528
- define: {
2529
- "process.env": `new Object(${JSON.stringify(publicEnv)})`,
2530
- "process.platform": `"${process.platform}"`,
2531
- __API_URL__: `"${apiURL}"`,
2532
- __BASE_PATH__: `"${((_f = (_e = configManager.config) == null ? void 0 : _e.build) == null ? void 0 : _f.basePath) || ""}"`,
2533
- __TINA_GRAPHQL_VERSION__: version2
2534
- },
2535
- logLevel: "error",
2536
- optimizeDeps: {
2537
- force: true,
2538
- include: ["react/jsx-runtime", "react/jsx-dev-runtime"]
2539
- },
2540
- server: {
2541
- host: (_i = (_h = (_g = configManager.config) == null ? void 0 : _g.build) == null ? void 0 : _h.host) != null ? _i : false,
2542
- watch: noWatch ? {
2543
- ignored: ["**/*"]
2544
- } : {
2545
- ignored: [
2546
- `${configManager.tinaFolderPath}/**/!(config.prebuild.jsx|_graphql.json)`
2547
- ]
2548
- },
2549
- fs: {
2550
- strict: false
2551
- }
2552
- },
2553
- build: {
2554
- sourcemap: false,
2555
- outDir: configManager.outputFolderPath,
2556
- emptyOutDir: true,
2557
- rollupOptions
2558
- },
2559
- plugins: [
2560
- (0, import_plugin_react.default)({
2561
- babel: {
2562
- compact: true
2563
- }
2564
- }),
2565
- (0, import_vite.splitVendorChunkPlugin)(),
2566
- tinaTailwind(configManager.spaRootPath, configManager.prebuildFilePath),
2567
- ...plugins
2568
- ]
2569
- };
2570
- return config2;
2571
- };
2572
-
2573
- // src/next/config-manager.ts
2574
- var import_tsconfig_paths = __toESM(require_lib2());
2575
- var import_esbuild_plugin_alias_path = require("esbuild-plugin-alias-path");
2576
-
2577
- // src/logger/index.ts
2578
- var import_chalk = __toESM(require("chalk"));
2579
-
2580
- // src/logger/is-unicode-supported.ts
2581
- function isUnicodeSupported() {
2582
- if (process.platform !== "win32") {
2583
- return process.env.TERM !== "linux";
2584
- }
2585
- return Boolean(process.env.CI) || Boolean(process.env.WT_SESSION) || Boolean(process.env.TERMINUS_SUBLIME) || process.env.ConEmuTask === "{cmd::Cmder}" || process.env.TERM_PROGRAM === "Terminus-Sublime" || process.env.TERM_PROGRAM === "vscode" || process.env.TERM === "xterm-256color" || process.env.TERM === "alacritty" || process.env.TERMINAL_EMULATOR === "JetBrains-JediTerm";
2586
- }
2587
-
2588
- // src/logger/index.ts
2589
- var import_log4js = __toESM(require("log4js"));
2590
- var logger = import_log4js.default.getLogger();
2591
- import_log4js.default.configure({
2592
- appenders: {
2593
- out: { type: "stdout", layout: { type: "messagePassThrough" } }
2594
- },
2595
- categories: { default: { appenders: ["out"], level: "info" } }
2596
- });
2597
- logger.level = "info";
2598
- function ansiRegex() {
2599
- const pattern = [
2600
- "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
2601
- "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"
2602
- ].join("|");
2603
- return new RegExp(pattern, "g");
2604
- }
2605
- var bar = "\u2502";
2606
- var strip = (str) => str.replace(ansiRegex(), "");
2607
- var note = (message = "", title = "") => {
2608
- const lines = `
2609
- ${message}
2610
- `.split("\n");
2611
- const len = lines.reduce((sum, ln) => {
2612
- ln = strip(ln);
2613
- return ln.length > sum ? ln.length : sum;
2614
- }, 0) + 2;
2615
- const msg = lines.map(
2616
- (ln) => `${import_chalk.default.gray(bar)} ${import_chalk.default.white(ln)}${" ".repeat(
2617
- len - strip(ln).length
2618
- )}${import_chalk.default.gray(bar)}`
2619
- ).join("\n");
2620
- const underscoreLen = len - title.length - 1 > 0 ? len - title.length - 1 : 0;
2621
- process.stdout.write(
2622
- `${import_chalk.default.gray(bar)}
2623
- ${import_chalk.default.green("\u25CB")} ${import_chalk.default.reset(
2624
- title
2625
- )} ${import_chalk.default.gray("\u2500".repeat(underscoreLen) + "\u256E")}
2626
- ${msg}
2627
- ${import_chalk.default.gray(
2628
- "\u251C" + "\u2500".repeat(len + 2) + "\u256F"
2629
- )}
2630
- `
2631
- );
2632
- };
2633
- var summary = (content) => {
2634
- const outString = [];
2635
- let longestKey = 0;
2636
- content.items.forEach((item) => {
2637
- item.subItems.forEach((subItem) => {
2638
- if (subItem.key.length > longestKey) {
2639
- longestKey = subItem.key.length;
2640
- }
2641
- });
2642
- });
2643
- content.items.forEach((item) => {
2644
- outString.push(`${item.emoji} ${import_chalk.default.cyan(item.heading)}`);
2645
- item.subItems.forEach((subItem) => {
2646
- const spaces = longestKey - subItem.key.length + 4;
2647
- outString.push(
2648
- ` ${subItem.key}:${[...Array(spaces)].join(" ")}${import_chalk.default.cyan(
2649
- subItem.value
2650
- )}`
2651
- );
2652
- });
2653
- outString.push(``);
2654
- });
2655
- if (process.env.CI) {
2656
- logger.info(JSON.stringify(content, null, 2));
2657
- } else {
2658
- note(outString.join("\n"), content.heading);
2659
- }
2660
- };
2661
- var unicode = isUnicodeSupported();
2662
- var s = (c, fallback) => unicode ? c : fallback;
2663
- var S_STEP_ACTIVE = s("\u25C6", "*");
2664
- var S_STEP_CANCEL = s("\u25A0", "x");
2665
- var S_STEP_ERROR = s("\u25B2", "x");
2666
- var S_STEP_SUBMIT = s("\u25C7", "o");
2667
- var S_BAR_START = s("\u250C", "T");
2668
- var S_BAR = s("\u2502", "|");
2669
- var S_BAR_END = s("\u2514", "\u2014");
2670
- var S_RADIO_ACTIVE = s("\u25CF", ">");
2671
- var S_RADIO_INACTIVE = s("\u25CB", " ");
2672
- var S_CHECKBOX_ACTIVE = s("\u25FB", "[\u2022]");
2673
- var S_CHECKBOX_SELECTED = s("\u25FC", "[+]");
2674
- var S_CHECKBOX_INACTIVE = s("\u25FB", "[ ]");
2675
- var S_PASSWORD_MASK = s("\u25AA", "\u2022");
2676
- var S_BAR_H = s("\u2500", "-");
2677
- var S_CORNER_TOP_RIGHT = s("\u256E", "+");
2678
- var S_CONNECT_LEFT = s("\u251C", "+");
2679
- var S_CORNER_BOTTOM_RIGHT = s("\u256F", "+");
2680
- var S_INFO = s("\u25CF", "\u2022");
2681
- var S_SUCCESS = s("\u25C6", "*");
2682
- var S_WARN = s("\u25B2", "!");
2683
- var S_ERROR = s("\u25A0", "x");
2684
-
2685
- // src/next/config-manager.ts
2686
- var TINA_FOLDER = "tina";
2687
- var LEGACY_TINA_FOLDER = ".tina";
2688
- var GENERATED_FOLDER = "__generated__";
2689
- var GRAPHQL_JSON_FILE = "_graphql.json";
2690
- var GRAPHQL_GQL_FILE = "schema.gql";
2691
- var SCHEMA_JSON_FILE = "_schema.json";
2692
- var LOOKUP_JSON_FILE = "_lookup.json";
2693
- var ConfigManager = class {
2694
- constructor({
2695
- rootPath = process.cwd(),
2696
- tinaGraphQLVersion,
2697
- legacyNoSDK
2698
- }) {
2699
- this.rootPath = (0, import_normalize_path2.default)(rootPath);
2700
- this.tinaGraphQLVersionFromCLI = tinaGraphQLVersion;
2701
- this.legacyNoSDK = legacyNoSDK;
2702
- }
2703
- isUsingTs() {
2704
- return [".ts", ".tsx"].includes(import_path.default.extname(this.tinaConfigFilePath));
2705
- }
2706
- hasSelfHostedConfig() {
2707
- return !!this.selfHostedDatabaseFilePath;
2708
- }
2709
- hasSeparateContentRoot() {
2710
- return this.rootPath !== this.contentRootPath;
2711
- }
2712
- shouldSkipSDK() {
2713
- var _a;
2714
- if (this.legacyNoSDK) {
2715
- return this.legacyNoSDK;
2716
- }
2717
- return ((_a = this.config.client) == null ? void 0 : _a.skip) || false;
2718
- }
2719
- async processConfig() {
2720
- this.tinaFolderPath = await this.getTinaFolderPath(this.rootPath);
2721
- this.envFilePath = import_path.default.resolve(
2722
- import_path.default.join(this.tinaFolderPath, "..", ".env")
2723
- );
2724
- dotenv.config({ path: this.envFilePath });
2725
- this.tinaConfigFilePath = await this.getPathWithExtension(
2726
- import_path.default.join(this.tinaFolderPath, "config")
2727
- );
2728
- if (!this.tinaConfigFilePath) {
2729
- throw new Error(
2730
- `Unable to find config file in ${this.tinaFolderPath}. Looking for a file named "config.{ts,tsx,js,jsx}"`
2731
- );
2732
- }
2733
- this.selfHostedDatabaseFilePath = await this.getPathWithExtension(
2734
- import_path.default.join(this.tinaFolderPath, "database")
2735
- );
2736
- this.generatedFolderPath = import_path.default.join(this.tinaFolderPath, GENERATED_FOLDER);
2737
- this.generatedCachePath = import_path.default.join(
2738
- this.generatedFolderPath,
2739
- ".cache",
2740
- String(new Date().getTime())
2741
- );
2742
- this.generatedGraphQLGQLPath = import_path.default.join(
2743
- this.generatedFolderPath,
2744
- GRAPHQL_GQL_FILE
2745
- );
2746
- this.generatedGraphQLJSONPath = import_path.default.join(
2747
- this.generatedFolderPath,
2748
- GRAPHQL_JSON_FILE
2749
- );
2750
- this.generatedSchemaJSONPath = import_path.default.join(
2751
- this.generatedFolderPath,
2752
- SCHEMA_JSON_FILE
2753
- );
2754
- this.generatedLookupJSONPath = import_path.default.join(
2755
- this.generatedFolderPath,
2756
- LOOKUP_JSON_FILE
2757
- );
2758
- this.generatedQueriesFilePath = import_path.default.join(
2759
- this.generatedFolderPath,
2760
- "queries.gql"
2761
- );
2762
- this.generatedFragmentsFilePath = import_path.default.join(
2763
- this.generatedFolderPath,
2764
- "frags.gql"
2765
- );
2766
- this.generatedTypesTSFilePath = import_path.default.join(
2767
- this.generatedFolderPath,
2768
- "types.ts"
2769
- );
2770
- this.generatedTypesJSFilePath = import_path.default.join(
2771
- this.generatedFolderPath,
2772
- "types.js"
2773
- );
2774
- this.generatedTypesDFilePath = import_path.default.join(
2775
- this.generatedFolderPath,
2776
- "types.d.ts"
2777
- );
2778
- this.userQueriesAndFragmentsGlob = import_path.default.join(
2779
- this.tinaFolderPath,
2780
- "queries/**/*.{graphql,gql}"
2781
- );
2782
- this.generatedQueriesAndFragmentsGlob = import_path.default.join(
2783
- this.generatedFolderPath,
2784
- "*.{graphql,gql}"
2785
- );
2786
- this.generatedClientTSFilePath = import_path.default.join(
2787
- this.generatedFolderPath,
2788
- "client.ts"
2789
- );
2790
- this.generatedClientJSFilePath = import_path.default.join(
2791
- this.generatedFolderPath,
2792
- "client.js"
2793
- );
2794
- this.generatedClientDFilePath = import_path.default.join(
2795
- this.generatedFolderPath,
2796
- "client.d.ts"
2797
- );
2798
- this.generatedDatabaseClientDFilePath = import_path.default.join(
2799
- this.generatedFolderPath,
2800
- "databaseClient.d.ts"
2801
- );
2802
- this.generatedDatabaseClientTSFilePath = import_path.default.join(
2803
- this.generatedFolderPath,
2804
- "databaseClient.ts"
2805
- );
2806
- this.generatedDatabaseClientJSFilePath = import_path.default.join(
2807
- this.generatedFolderPath,
2808
- "databaseClient.js"
2809
- );
2810
- const clientExists = this.isUsingTs() ? await import_fs_extra2.default.pathExists(this.generatedClientTSFilePath) : await import_fs_extra2.default.pathExists(this.generatedClientJSFilePath);
2811
- if (!clientExists) {
2812
- const file = "export default ()=>({})\nexport const client = ()=>({})";
2813
- if (this.isUsingTs()) {
2814
- await import_fs_extra2.default.outputFile(this.generatedClientTSFilePath, file);
2815
- } else {
2816
- await import_fs_extra2.default.outputFile(this.generatedClientJSFilePath, file);
2817
- }
2818
- }
2819
- const { config: config2, prebuildPath, watchList } = await this.loadConfigFile(
2820
- this.generatedFolderPath,
2821
- this.tinaConfigFilePath
2822
- );
2823
- this.watchList = watchList;
2824
- this.config = config2;
2825
- this.prebuildFilePath = prebuildPath;
2826
- this.publicFolderPath = import_path.default.join(
2827
- this.rootPath,
2828
- this.config.build.publicFolder
2829
- );
2830
- this.outputFolderPath = import_path.default.join(
2831
- this.publicFolderPath,
2832
- this.config.build.outputFolder
2833
- );
2834
- this.outputHTMLFilePath = import_path.default.join(this.outputFolderPath, "index.html");
2835
- this.outputGitignorePath = import_path.default.join(this.outputFolderPath, ".gitignore");
2836
- const fullLocalContentPath = import_path.default.join(
2837
- this.tinaFolderPath,
2838
- this.config.localContentPath || ""
2839
- );
2840
- if (this.config.localContentPath) {
2841
- const localContentPathExists = await import_fs_extra2.default.pathExists(fullLocalContentPath);
2842
- if (localContentPathExists) {
2843
- logger.info(`Using separate content repo at ${fullLocalContentPath}`);
2844
- this.contentRootPath = fullLocalContentPath;
2845
- } else {
2846
- logger.warn(
2847
- `${import_chalk2.default.yellow("Warning:")} The localContentPath ${import_chalk2.default.cyan(
2848
- fullLocalContentPath
2849
- )} does not exist. Please create it or remove the localContentPath from your config file at ${import_chalk2.default.cyan(
2850
- this.tinaConfigFilePath
2851
- )}`
2852
- );
2853
- }
2854
- }
2855
- if (!this.contentRootPath) {
2856
- this.contentRootPath = this.rootPath;
2857
- }
2858
- this.generatedFolderPathContentRepo = import_path.default.join(
2859
- await this.getTinaFolderPath(this.contentRootPath),
2860
- GENERATED_FOLDER
2861
- );
2862
- this.spaMainPath = require.resolve("@tinacms/app");
2863
- this.spaRootPath = import_path.default.join(this.spaMainPath, "..", "..");
2864
- }
2865
- async getTinaFolderPath(rootPath) {
2866
- const tinaFolderPath = import_path.default.join(rootPath, TINA_FOLDER);
2867
- const tinaFolderExists = await import_fs_extra2.default.pathExists(tinaFolderPath);
2868
- if (tinaFolderExists) {
2869
- this.isUsingLegacyFolder = false;
2870
- return tinaFolderPath;
2871
- }
2872
- const legacyFolderPath = import_path.default.join(rootPath, LEGACY_TINA_FOLDER);
2873
- const legacyFolderExists = await import_fs_extra2.default.pathExists(legacyFolderPath);
2874
- if (legacyFolderExists) {
2875
- this.isUsingLegacyFolder = true;
2876
- return legacyFolderPath;
2877
- }
2878
- throw new Error(
2879
- `Unable to find Tina folder, if you're working in folder outside of the Tina config be sure to specify --rootPath`
2880
- );
2881
- }
2882
- getTinaGraphQLVersion() {
2883
- if (this.tinaGraphQLVersionFromCLI) {
2884
- const version2 = this.tinaGraphQLVersionFromCLI.split(".");
2885
- return {
2886
- fullVersion: this.tinaGraphQLVersionFromCLI,
2887
- major: version2[0] || "x",
2888
- minor: version2[1] || "x",
2889
- patch: version2[2] || "x"
2890
- };
2891
- }
2892
- const generatedSchema = import_fs_extra2.default.readJSONSync(this.generatedSchemaJSONPath);
2893
- if (!generatedSchema || !(typeof (generatedSchema == null ? void 0 : generatedSchema.version) !== "undefined")) {
2894
- throw new Error(
2895
- `Can not find Tina GraphQL version in ${this.generatedSchemaJSONPath}`
2896
- );
2897
- }
2898
- return generatedSchema.version;
2899
- }
2900
- printGeneratedClientFilePath() {
2901
- if (this.isUsingTs()) {
2902
- return this.generatedClientTSFilePath.replace(`${this.rootPath}/`, "");
2903
- }
2904
- return this.generatedClientJSFilePath.replace(`${this.rootPath}/`, "");
2905
- }
2906
- printGeneratedTypesFilePath() {
2907
- return this.generatedTypesTSFilePath.replace(`${this.rootPath}/`, "");
2908
- }
2909
- printoutputHTMLFilePath() {
2910
- return this.outputHTMLFilePath.replace(`${this.publicFolderPath}/`, "");
2911
- }
2912
- printRelativePath(filename) {
2913
- if (filename) {
2914
- return filename.replace(/\\/g, "/").replace(`${this.rootPath}/`, "");
2915
- }
2916
- throw `No path provided to print`;
2917
- }
2918
- printPrebuildFilePath() {
2919
- return this.prebuildFilePath.replace(/\\/g, "/").replace(`${this.rootPath}/${this.tinaFolderPath}/`, "");
2920
- }
2921
- printContentRelativePath(filename) {
2922
- if (filename) {
2923
- return filename.replace(/\\/g, "/").replace(`${this.contentRootPath}/`, "");
2924
- }
2925
- throw `No path provided to print`;
2926
- }
2927
- async getPathWithExtension(filepath) {
2928
- const extensions = ["tsx", "ts", "jsx", "js"];
2929
- let result;
2930
- await Promise.all(
2931
- extensions.map(async (ext) => {
2932
- if (result) {
2933
- return;
2934
- }
2935
- const filepathWithExtension = `${filepath}.${ext}`;
2936
- const exists = import_fs_extra2.default.existsSync(filepathWithExtension);
2937
- if (exists) {
2938
- result = filepathWithExtension;
2939
- }
2940
- })
2941
- );
2942
- return result;
2943
- }
2944
- async loadDatabaseFile() {
2945
- const tmpdir = import_path.default.join(import_os.default.tmpdir(), Date.now().toString());
2946
- const outfile = import_path.default.join(tmpdir, "database.build.js");
2947
- await esbuild.build({
2948
- entryPoints: [this.selfHostedDatabaseFilePath],
2949
- bundle: true,
2950
- platform: "node",
2951
- outfile,
2952
- loader: loaders
2953
- });
2954
- const result = require(outfile);
2955
- import_fs_extra2.default.removeSync(outfile);
2956
- return result.default;
2957
- }
2958
- async loadConfigFile(generatedFolderPath, configFilePath) {
2959
- var _a;
2960
- console.log("Here is the configFilePath");
2961
- console.dir({ generatedFolderPath, configFilePath }, { depth: Infinity });
2962
- const tmpdir = import_path.default.join(import_os.default.tmpdir(), Date.now().toString());
2963
- const preBuildConfigPath = import_path.default.join(
2964
- this.generatedFolderPath,
2965
- "config.prebuild.jsx"
2966
- );
2967
- const outfile = import_path.default.join(tmpdir, "config.build.jsx");
2968
- const outfile2 = import_path.default.join(tmpdir, "config.build.js");
2969
- const tempTSConfigFile = import_path.default.join(tmpdir, "tsconfig.json");
2970
- const viteConfig = await loadProjectConfig({
2971
- rootPath: this.rootPath,
2972
- viteConfigEnv: {
2973
- command: "build",
2974
- mode: "production"
2975
- }
2976
- });
2977
- const tsconfigPath = import_path.default.join(this.rootPath, "tsconfig.json");
2978
- let dynamicAliases = {};
2979
- if (import_fs_extra2.default.existsSync(tsconfigPath)) {
2980
- console.log("Found tsconfig.json at:", tsconfigPath);
2981
- const tsConfigResult = (0, import_tsconfig_paths.loadConfig)(tsconfigPath);
2982
- if (tsConfigResult.resultType === "success") {
2983
- const { absoluteBaseUrl, paths } = tsConfigResult;
2984
- console.log("Loaded tsconfig:", { absoluteBaseUrl, paths });
2985
- dynamicAliases = Object.entries(paths).reduce(
2986
- (aliases, [aliasKey, aliasPaths]) => {
2987
- const hasWildcard = aliasKey.includes("*");
2988
- const baseAliasKey = hasWildcard ? aliasKey.replace("/*", "") : aliasKey;
2989
- const baseAliasPath = import_path.default.resolve(
2990
- absoluteBaseUrl,
2991
- aliasPaths[0].replace("/*", "")
2992
- );
2993
- if (hasWildcard) {
2994
- aliases[`${baseAliasKey}/*`] = `${baseAliasPath}`;
2995
- } else {
2996
- aliases[baseAliasKey] = baseAliasPath;
2997
- }
2998
- return aliases;
2999
- },
3000
- {}
3001
- );
3002
- console.log("Resolved dynamicAliases:", dynamicAliases);
3003
- } else {
3004
- console.error("Failed to load tsconfig.json:", tsConfigResult.message);
3005
- throw new Error(`Invalid tsconfig.json at ${tsconfigPath}`);
3006
- }
3007
- } else {
3008
- console.warn(
3009
- "Warning: tsconfig.json not found. Alias resolution will not be supported."
3010
- );
3011
- }
3012
- import_fs_extra2.default.outputFileSync(tempTSConfigFile, "{}");
3013
- const result2 = await esbuild.build({
3014
- entryPoints: [configFilePath],
3015
- bundle: true,
3016
- target: ["es2020"],
3017
- platform: "browser",
3018
- format: "esm",
3019
- logLevel: "silent",
3020
- packages: "external",
3021
- ignoreAnnotations: true,
3022
- outfile: preBuildConfigPath,
3023
- loader: loaders,
3024
- metafile: true,
3025
- plugins: Object.keys(dynamicAliases).length ? [(0, import_esbuild_plugin_alias_path.aliasPath)({ alias: dynamicAliases })] : []
3026
- });
3027
- const flattenedList = [];
3028
- Object.keys(result2.metafile.inputs).forEach((key) => {
3029
- if (key.includes("node_modules") || key.includes("__generated__")) {
3030
- return;
3031
- }
3032
- flattenedList.push(key);
3033
- });
3034
- await esbuild.build({
3035
- entryPoints: [configFilePath],
3036
- bundle: true,
3037
- target: ["es2020"],
3038
- logLevel: "silent",
3039
- platform: "node",
3040
- outfile,
3041
- loader: loaders,
3042
- alias: (_a = viteConfig.config.resolve) == null ? void 0 : _a.alias
3043
- });
3044
- await esbuild.build({
3045
- entryPoints: [outfile],
3046
- bundle: true,
3047
- logLevel: "silent",
3048
- platform: "node",
3049
- outfile: outfile2,
3050
- loader: loaders
3051
- });
3052
- let result;
3053
- try {
3054
- result = require(outfile2);
3055
- } catch (e) {
3056
- console.error("Unexpected error loading config");
3057
- console.error(e);
3058
- throw e;
3059
- }
3060
- import_fs_extra2.default.removeSync(outfile);
3061
- import_fs_extra2.default.removeSync(outfile2);
3062
- return {
3063
- config: result.default,
3064
- prebuildPath: preBuildConfigPath,
3065
- watchList: flattenedList
3066
- };
3067
- }
3068
- };
3069
- var loaders = {
3070
- ".aac": "file",
3071
- ".css": "file",
3072
- ".eot": "file",
3073
- ".flac": "file",
3074
- ".gif": "file",
3075
- ".jpeg": "file",
3076
- ".jpg": "file",
3077
- ".json": "json",
3078
- ".mp3": "file",
3079
- ".mp4": "file",
3080
- ".ogg": "file",
3081
- ".otf": "file",
3082
- ".png": "file",
3083
- ".svg": "file",
3084
- ".ttf": "file",
3085
- ".wav": "file",
3086
- ".webm": "file",
3087
- ".webp": "file",
3088
- ".woff": "file",
3089
- ".woff2": "file",
3090
- ".js": "jsx",
3091
- ".jsx": "jsx",
3092
- ".tsx": "tsx"
3093
- };
3094
-
3095
- // src/next/commands/dev-command/html.ts
3096
- var errorHTML = `<style type="text/css">
3097
- #no-assets-placeholder body {
3098
- font-family: sans-serif;
3099
- font-size: 16px;
3100
- line-height: 1.4;
3101
- color: #333;
3102
- background-color: #f5f5f5;
3103
- }
3104
- #no-assets-placeholder {
3105
- max-width: 600px;
3106
- margin: 0 auto;
3107
- padding: 40px;
3108
- text-align: center;
3109
- background-color: #fff;
3110
- box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.1);
3111
- }
3112
- #no-assets-placeholder h1 {
3113
- font-size: 24px;
3114
- margin-bottom: 20px;
3115
- }
3116
- #no-assets-placeholder p {
3117
- margin-bottom: 10px;
3118
- }
3119
- #no-assets-placeholder a {
3120
- color: #0077cc;
3121
- text-decoration: none;
3122
- }
3123
- #no-assets-placeholder a:hover {
3124
- text-decoration: underline;
3125
- }
3126
- </style>
3127
- <div id="no-assets-placeholder">
3128
- <h1>Failed loading TinaCMS assets</h1>
3129
- <p>
3130
- Your TinaCMS configuration may be misconfigured, and we could not load
3131
- the assets for this page.
3132
- </p>
3133
- <p>
3134
- 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.
3135
- </p>
3136
- </div>
3137
- </div>`.trim().replace(/[\r\n\s]+/g, " ");
3138
- var devHTML = (port) => `<!DOCTYPE html>
3139
- <html lang="en">
3140
- <head>
3141
- <meta charset="UTF-8" />
3142
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
3143
- <title>TinaCMS</title>
3144
- </head>
907
+ };
908
+ };
3145
909
 
3146
- <!-- if development -->
3147
- <script type="module">
3148
- import RefreshRuntime from 'http://localhost:${port}/@react-refresh'
3149
- RefreshRuntime.injectIntoGlobalHook(window)
3150
- window.$RefreshReg$ = () => {}
3151
- window.$RefreshSig$ = () => (type) => type
3152
- window.__vite_plugin_react_preamble_installed__ = true
3153
- <\/script>
3154
- <script type="module" src="http://localhost:${port}/@vite/client"><\/script>
3155
- <script>
3156
- function handleLoadError() {
3157
- // Assets have failed to load
3158
- document.getElementById('root').innerHTML = '${errorHTML}';
910
+ // src/next/vite/index.ts
911
+ async function listFilesRecursively({
912
+ directoryPath,
913
+ config: config2,
914
+ roothPath
915
+ }) {
916
+ const fullDirectoryPath = import_node_path2.default.join(
917
+ roothPath,
918
+ config2.publicFolder,
919
+ directoryPath
920
+ );
921
+ const exists = await import_fs_extra2.default.pathExists(fullDirectoryPath);
922
+ if (!exists) {
923
+ return { "0": [] };
3159
924
  }
3160
- <\/script>
3161
- <script
3162
- type="module"
3163
- src="http://localhost:${port}/src/main.tsx"
3164
- onerror="handleLoadError()"
3165
- ><\/script>
3166
- <body class="tina-tailwind">
3167
- <div id="root"></div>
3168
- </body>
3169
- </html>`;
3170
-
3171
- // src/utils/theme.ts
3172
- var import_chalk3 = __toESM(require("chalk"));
3173
- var successText = import_chalk3.default.bold.green;
3174
- var focusText = import_chalk3.default.bold;
3175
- var dangerText = import_chalk3.default.bold.red;
3176
- var neutralText = import_chalk3.default.bold.cyan;
3177
- var linkText = import_chalk3.default.bold.cyan;
3178
- var labelText = import_chalk3.default.bold;
3179
- var cmdText = import_chalk3.default.inverse;
3180
- var indentedCmd = (str) => {
3181
- return ` \u2503 ` + str;
3182
- };
3183
- var indentText = (str) => {
3184
- return String(str).split("\n").map((line) => ` ${line}`).join("\n");
925
+ const items = await import_fs_extra2.default.readdir(fullDirectoryPath);
926
+ const staticMediaItems = [];
927
+ for (const item of items) {
928
+ const itemPath = import_node_path2.default.join(fullDirectoryPath, item);
929
+ const stats = await import_fs_extra2.default.promises.lstat(itemPath);
930
+ const staticMediaItem = {
931
+ id: item,
932
+ filename: item,
933
+ type: stats.isDirectory() ? "dir" : "file",
934
+ directory: `${directoryPath.replace(config2.mediaRoot, "")}`,
935
+ src: `/${import_node_path2.default.join(directoryPath, item)}`,
936
+ thumbnails: {
937
+ "75x75": `/${import_node_path2.default.join(directoryPath, item)}`,
938
+ "400x400": `/${import_node_path2.default.join(directoryPath, item)}`,
939
+ "1000x1000": `/${import_node_path2.default.join(directoryPath, item)}`
940
+ }
941
+ };
942
+ if (stats.isDirectory()) {
943
+ staticMediaItem.children = await listFilesRecursively({
944
+ directoryPath: import_node_path2.default.join(directoryPath, item),
945
+ config: config2,
946
+ roothPath
947
+ });
948
+ }
949
+ staticMediaItems.push(staticMediaItem);
950
+ }
951
+ function chunkArrayIntoObject(array, chunkSize) {
952
+ const result = {};
953
+ for (let i = 0; i < array.length; i += chunkSize) {
954
+ const chunkKey = `${i / chunkSize * 20}`;
955
+ result[chunkKey] = array.slice(i, i + chunkSize);
956
+ }
957
+ return result;
958
+ }
959
+ return chunkArrayIntoObject(staticMediaItems, 20);
960
+ }
961
+ var createConfig = async ({
962
+ configManager,
963
+ apiURL,
964
+ plugins = [],
965
+ noWatch,
966
+ rollupOptions
967
+ }) => {
968
+ var _a, _b, _c, _d, _e, _f, _g, _h;
969
+ const publicEnv = {};
970
+ Object.keys(process.env).forEach((key) => {
971
+ if (key.startsWith("TINA_PUBLIC_") || key.startsWith("NEXT_PUBLIC_") || key === "NODE_ENV" || key === "HEAD") {
972
+ try {
973
+ if (typeof process.env[key] === "string") {
974
+ publicEnv[key] = process.env[key];
975
+ } else {
976
+ publicEnv[key] = JSON.stringify(process.env[key]);
977
+ }
978
+ } catch (error) {
979
+ console.warn(
980
+ `Could not stringify public env process.env.${key} env variable`
981
+ );
982
+ console.warn(error);
983
+ }
984
+ }
985
+ });
986
+ const staticMediaPath = import_node_path2.default.join(
987
+ configManager.generatedFolderPath,
988
+ "static-media.json"
989
+ );
990
+ if ((_b = (_a = configManager.config.media) == null ? void 0 : _a.tina) == null ? void 0 : _b.static) {
991
+ const staticMedia = await listFilesRecursively({
992
+ directoryPath: ((_c = configManager.config.media.tina) == null ? void 0 : _c.mediaRoot) || "",
993
+ config: configManager.config.media.tina,
994
+ roothPath: configManager.rootPath
995
+ });
996
+ await import_fs_extra2.default.outputFile(staticMediaPath, JSON.stringify(staticMedia, null, 2));
997
+ } else {
998
+ await import_fs_extra2.default.outputFile(staticMediaPath, `[]`);
999
+ }
1000
+ const alias = {
1001
+ TINA_IMPORT: configManager.prebuildFilePath,
1002
+ SCHEMA_IMPORT: configManager.generatedGraphQLJSONPath,
1003
+ STATIC_MEDIA_IMPORT: staticMediaPath,
1004
+ crypto: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
1005
+ fs: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
1006
+ os: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts"),
1007
+ path: import_node_path2.default.join(configManager.spaRootPath, "src", "dummy-client.ts")
1008
+ };
1009
+ if (configManager.shouldSkipSDK()) {
1010
+ alias["CLIENT_IMPORT"] = import_node_path2.default.join(
1011
+ configManager.spaRootPath,
1012
+ "src",
1013
+ "dummy-client.ts"
1014
+ );
1015
+ } else {
1016
+ alias["CLIENT_IMPORT"] = configManager.isUsingTs() ? configManager.generatedTypesTSFilePath : configManager.generatedTypesJSFilePath;
1017
+ }
1018
+ let basePath;
1019
+ if (configManager.config.build.basePath) {
1020
+ basePath = configManager.config.build.basePath;
1021
+ }
1022
+ const fullVersion = configManager.getTinaGraphQLVersion();
1023
+ const version2 = `${fullVersion.major}.${fullVersion.minor}`;
1024
+ const config2 = {
1025
+ root: configManager.spaRootPath,
1026
+ base: `/${basePath ? `${(0, import_normalize_path2.default)(basePath)}/` : ""}${(0, import_normalize_path2.default)(
1027
+ configManager.config.build.outputFolder
1028
+ )}/`,
1029
+ appType: "spa",
1030
+ resolve: {
1031
+ alias,
1032
+ dedupe: ["graphql", "tinacms", "react", "react-dom", "react-router-dom"]
1033
+ },
1034
+ define: {
1035
+ /**
1036
+ * Since we prebuild the config.ts, it's possible for modules to be loaded which make
1037
+ * use of `process`. The main scenario where this is an issue is when co-locating schema
1038
+ * definitions with source files, and specifically source files which impor from NextJS.
1039
+ *
1040
+ * Some examples of what NextJS uses for `process.env` are:
1041
+ * - `process.env.__NEXT_TRAILING_SLASH`
1042
+ * - `process.env.__NEXT_CROSS_ORIGIN`
1043
+ * - `process.env.__NEXT_I18N_SUPPORT`
1044
+ *
1045
+ * Also, interestingly some of the advice for handling this doesn't work, references to replacing
1046
+ * `process.env` with `{}` are problematic, because browsers don't understand the `{}.` syntax,
1047
+ * but node does. This was a surprise, but using `new Object()` seems to do the trick.
1048
+ */
1049
+ "process.env": `new Object(${JSON.stringify(publicEnv)})`,
1050
+ // Used by picomatch https://github.com/micromatch/picomatch/blob/master/lib/utils.js#L4
1051
+ "process.platform": `"${process.platform}"`,
1052
+ __API_URL__: `"${apiURL}"`,
1053
+ __BASE_PATH__: `"${((_e = (_d = configManager.config) == null ? void 0 : _d.build) == null ? void 0 : _e.basePath) || ""}"`,
1054
+ __TINA_GRAPHQL_VERSION__: version2
1055
+ },
1056
+ logLevel: "error",
1057
+ // Vite import warnings are noisy
1058
+ optimizeDeps: {
1059
+ force: true,
1060
+ // Not 100% sure why this isn't being picked up automatically, this works from within the monorepo
1061
+ // but breaks externally
1062
+ include: ["react/jsx-runtime", "react/jsx-dev-runtime"]
1063
+ },
1064
+ server: {
1065
+ host: (_h = (_g = (_f = configManager.config) == null ? void 0 : _f.build) == null ? void 0 : _g.host) != null ? _h : false,
1066
+ watch: noWatch ? {
1067
+ ignored: ["**/*"]
1068
+ } : {
1069
+ // Ignore everything except for the alias fields we specified above
1070
+ ignored: [
1071
+ `${configManager.tinaFolderPath}/**/!(config.prebuild.jsx|_graphql.json)`
1072
+ ]
1073
+ },
1074
+ fs: {
1075
+ strict: false
1076
+ }
1077
+ },
1078
+ build: {
1079
+ sourcemap: false,
1080
+ outDir: configManager.outputFolderPath,
1081
+ emptyOutDir: true,
1082
+ rollupOptions
1083
+ },
1084
+ plugins: [
1085
+ /**
1086
+ * `splitVendorChunkPlugin` is needed because `tinacms` is quite large,
1087
+ * Vite's chunking strategy chokes on memory issues for smaller machines (ie. on CI).
1088
+ */
1089
+ (0, import_plugin_react.default)({
1090
+ babel: {
1091
+ // Supresses the warning [NOTE] babel The code generator has deoptimised the styling of
1092
+ compact: true
1093
+ }
1094
+ }),
1095
+ (0, import_vite.splitVendorChunkPlugin)(),
1096
+ tinaTailwind(configManager.spaRootPath, configManager.prebuildFilePath),
1097
+ ...plugins
1098
+ ]
1099
+ };
1100
+ return config2;
3185
1101
  };
3186
- var logText = import_chalk3.default.italic.gray;
3187
- var warnText = import_chalk3.default.yellowBright.bgBlack;
3188
- var titleText = import_chalk3.default.bgHex("d2f1f8").hex("ec4816");
3189
- var CONFIRMATION_TEXT = import_chalk3.default.dim("enter to confirm");
3190
-
3191
- // src/next/commands/dev-command/server/index.ts
3192
- var import_vite4 = require("vite");
3193
1102
 
3194
1103
  // src/next/vite/plugins.ts
3195
1104
  var import_pluginutils = require("@rollup/pluginutils");
3196
1105
  var import_fs = __toESM(require("fs"));
3197
- var import_vite3 = require("vite");
1106
+ var import_vite2 = require("vite");
3198
1107
  var import_esbuild = require("esbuild");
3199
1108
  var import_path3 = __toESM(require("path"));
3200
1109
  var import_body_parser = __toESM(require("body-parser"));
@@ -3256,8 +1165,7 @@ var createMediaRouter = (config2) => {
3256
1165
  };
3257
1166
  var parseMediaFolder = (str) => {
3258
1167
  let returnString = str;
3259
- if (returnString.startsWith("/"))
3260
- returnString = returnString.substr(1);
1168
+ if (returnString.startsWith("/")) returnString = returnString.substr(1);
3261
1169
  if (returnString.endsWith("/"))
3262
1170
  returnString = returnString.substr(0, returnString.length - 1);
3263
1171
  return returnString;
@@ -3422,7 +1330,8 @@ var devServerEndPointsPlugin = ({
3422
1330
  configManager,
3423
1331
  apiURL,
3424
1332
  database,
3425
- searchIndex
1333
+ searchIndex,
1334
+ databaseLock
3426
1335
  }) => {
3427
1336
  const plug = {
3428
1337
  name: "graphql-endpoints",
@@ -3466,14 +1375,17 @@ var devServerEndPointsPlugin = ({
3466
1375
  }
3467
1376
  if (req.url === "/graphql") {
3468
1377
  const { query, variables } = req.body;
3469
- const result = await (0, import_graphql.resolve)({
3470
- config: {
3471
- useRelativeMedia: true
3472
- },
3473
- database,
3474
- query,
3475
- variables,
3476
- verbose: false
1378
+ let result;
1379
+ await databaseLock(async () => {
1380
+ result = await (0, import_graphql.resolve)({
1381
+ config: {
1382
+ useRelativeMedia: true
1383
+ },
1384
+ database,
1385
+ query,
1386
+ variables,
1387
+ verbose: false
1388
+ });
3477
1389
  });
3478
1390
  res.end(JSON.stringify(result));
3479
1391
  return;
@@ -3517,13 +1429,14 @@ function viteTransformExtension({
3517
1429
  previousExport: exportAsDefault ? null : code
3518
1430
  }
3519
1431
  });
3520
- const res = await (0, import_vite3.transformWithEsbuild)(componentCode, id, {
1432
+ const res = await (0, import_vite2.transformWithEsbuild)(componentCode, id, {
3521
1433
  loader: "jsx",
3522
1434
  ...esbuildOptions
3523
1435
  });
3524
1436
  return {
3525
1437
  code: res.code,
3526
1438
  map: null
1439
+ // TODO:
3527
1440
  };
3528
1441
  }
3529
1442
  }
@@ -3531,19 +1444,33 @@ function viteTransformExtension({
3531
1444
  }
3532
1445
 
3533
1446
  // src/next/commands/dev-command/server/index.ts
3534
- var createDevServer = async (configManager, database, searchIndex, apiURL, noWatch) => {
1447
+ var createDevServer = async (configManager, database, searchIndex, apiURL, noWatch, databaseLock) => {
3535
1448
  const plugins = [
3536
1449
  transformTsxPlugin({ configManager }),
3537
- devServerEndPointsPlugin({ apiURL, configManager, database, searchIndex }),
1450
+ devServerEndPointsPlugin({
1451
+ apiURL,
1452
+ configManager,
1453
+ database,
1454
+ searchIndex,
1455
+ databaseLock
1456
+ }),
3538
1457
  viteTransformExtension()
3539
1458
  ];
3540
- return (0, import_vite4.createServer)(
1459
+ return (0, import_vite3.createServer)(
3541
1460
  await createConfig({
3542
1461
  configManager,
3543
1462
  database,
3544
1463
  apiURL,
3545
1464
  plugins,
3546
1465
  noWatch,
1466
+ /**
1467
+ * Ensure Vite's import scan uses the spaMainPath as the input
1468
+ * so it properly finds everything. This is for dev only, and when
1469
+ * running the server outside of this monorepo vite fails to find
1470
+ * and optimize the imports, so you get errors about it not being
1471
+ * able to find an export from a module, and it's always a CJS
1472
+ * module that Vite would usually transform to an ES module.
1473
+ */
3547
1474
  rollupOptions: {
3548
1475
  input: configManager.spaMainPath,
3549
1476
  onwarn(warning, warn) {
@@ -3552,10 +1479,6 @@ var createDevServer = async (configManager, database, searchIndex, apiURL, noWat
3552
1479
  }
3553
1480
  warn(warning);
3554
1481
  }
3555
- },
3556
- viteConfigEnv: {
3557
- command: "serve",
3558
- mode: "development"
3559
1482
  }
3560
1483
  })
3561
1484
  );
@@ -3673,6 +1596,7 @@ var GenericSdkVisitor = class extends import_visitor_plugin_common.ClientSideBas
3673
1596
  node,
3674
1597
  documentVariableName,
3675
1598
  operationType,
1599
+ // This is the only line that is different
3676
1600
  operationResultType: `{data: ${operationResultType}, errors?: { message: string, locations: { line: number, column: number }[], path: string[] }[], variables: ${operationVariablesTypes}, query: string}`,
3677
1601
  operationVariablesTypes
3678
1602
  });
@@ -3721,6 +1645,8 @@ var plugin = (schema, documents, config2) => {
3721
1645
  const visitor = new GenericSdkVisitor(schema, allFragments, config2);
3722
1646
  const visitorResult = (0, import_graphql3.visit)(allAst, { leave: visitor });
3723
1647
  return {
1648
+ // We will take care of imports
1649
+ // prepend: visitor.getImports(),
3724
1650
  content: [
3725
1651
  visitor.fragments,
3726
1652
  ...visitorResult.definitions.filter((t) => typeof t === "string"),
@@ -3736,6 +1662,7 @@ var generateTypes = async (schema, queryPathGlob = process.cwd(), fragDocPath =
3736
1662
  docs = await loadGraphQLDocuments(queryPathGlob);
3737
1663
  fragDocs = await loadGraphQLDocuments(fragDocPath);
3738
1664
  const res = await (0, import_core.codegen)({
1665
+ // Filename is not used. This is because the typescript plugin returns a string instead of writing to a file.
3739
1666
  filename: process.cwd(),
3740
1667
  schema: (0, import_graphql5.parse)((0, import_graphql5.printSchema)(schema)),
3741
1668
  documents: [...docs, ...fragDocs],
@@ -3770,9 +1697,12 @@ var loadGraphQLDocuments = async (globPath) => {
3770
1697
  loaders: [new import_graphql_file_loader.GraphQLFileLoader()]
3771
1698
  });
3772
1699
  } catch (e) {
3773
- if ((e.message || "").includes(
3774
- "Unable to find any GraphQL type definitions for the following pointers:"
3775
- )) {
1700
+ if (
1701
+ // https://www.graphql-tools.com/docs/documents-loading#no-files-found
1702
+ (e.message || "").includes(
1703
+ "Unable to find any GraphQL type definitions for the following pointers:"
1704
+ )
1705
+ ) {
3776
1706
  } else {
3777
1707
  throw e;
3778
1708
  }
@@ -3934,12 +1864,9 @@ var Codegen = class {
3934
1864
  const baseUrl = ((_d = this.configManager.config.tinaioConfig) == null ? void 0 : _d.contentApiUrlOverride) || `https://${TINA_HOST}`;
3935
1865
  if ((!branch || !clientId || !token) && !this.port && !this.configManager.config.contentApiUrlOverride) {
3936
1866
  const missing = [];
3937
- if (!branch)
3938
- missing.push("branch");
3939
- if (!clientId)
3940
- missing.push("clientId");
3941
- if (!token)
3942
- missing.push("token");
1867
+ if (!branch) missing.push("branch");
1868
+ if (!clientId) missing.push("clientId");
1869
+ if (!token) missing.push("token");
3943
1870
  throw new Error(
3944
1871
  `Client not configured properly. Missing ${missing.join(
3945
1872
  ", "
@@ -4093,7 +2020,11 @@ schema {
4093
2020
  }
4094
2021
  };
4095
2022
  var maybeWarnFragmentSize = async (filepath) => {
4096
- if ((await import_fs_extra4.default.stat(filepath)).size > 100 * 1024) {
2023
+ if (
2024
+ // is the file bigger than 100kb?
2025
+ (await import_fs_extra4.default.stat(filepath)).size > // convert to 100 kb to bytes
2026
+ 100 * 1024
2027
+ ) {
4097
2028
  console.warn(
4098
2029
  "Warning: frags.gql is very large (>100kb). Consider setting the reference depth to 1 or 0. See code snippet below."
4099
2030
  );
@@ -4121,6 +2052,7 @@ var import_many_level = require("many-level");
4121
2052
  var import_memory_level = require("memory-level");
4122
2053
  var createDBServer = (port) => {
4123
2054
  const levelHost = new import_many_level.ManyLevelHost(
2055
+ // @ts-ignore
4124
2056
  new import_memory_level.MemoryLevel({
4125
2057
  valueEncoding: "json"
4126
2058
  })
@@ -4395,6 +2327,7 @@ var import_search = require("@tinacms/search");
4395
2327
  var DevCommand = class extends BaseCommand {
4396
2328
  constructor() {
4397
2329
  super(...arguments);
2330
+ // NOTE: camelCase commands for string options don't work if there's an `=` used https://github.com/arcanis/clipanion/issues/141
4398
2331
  this.watchFolders = import_clipanion2.Option.String("-w,--watchFolders", {
4399
2332
  description: "DEPRECATED - a list of folders (relative to where this is being run) that the cli will watch for changes"
4400
2333
  });
@@ -4404,6 +2337,7 @@ var DevCommand = class extends BaseCommand {
4404
2337
  this.outputSearchIndexPath = import_clipanion2.Option.String("--outputSearchIndexPath", {
4405
2338
  description: "Path to write the search index to"
4406
2339
  });
2340
+ this.indexingLock = new import_async_lock.default();
4407
2341
  }
4408
2342
  async catch(error) {
4409
2343
  logger.error("Error occured during tinacms dev");
@@ -4428,6 +2362,9 @@ var DevCommand = class extends BaseCommand {
4428
2362
  this.logDeprecationWarnings();
4429
2363
  createDBServer(Number(this.datalayerPort));
4430
2364
  let database = null;
2365
+ const dbLock = async (fn) => {
2366
+ return this.indexingLock.acquire("Key", fn);
2367
+ };
4431
2368
  const setup = async ({ firstTime }) => {
4432
2369
  try {
4433
2370
  await configManager.processConfig();
@@ -4478,9 +2415,6 @@ var DevCommand = class extends BaseCommand {
4478
2415
  await import_fs_extra6.default.outputFile(filePath, tinaLockContent);
4479
2416
  }
4480
2417
  }
4481
- if (!this.noWatch) {
4482
- this.watchQueries(configManager, async () => await codegen2.execute());
4483
- }
4484
2418
  await this.indexContentWithSpinner({
4485
2419
  database,
4486
2420
  graphQLSchema: graphQLSchema2,
@@ -4490,6 +2424,13 @@ var DevCommand = class extends BaseCommand {
4490
2424
  if (!firstTime) {
4491
2425
  logger.error("Re-index complete");
4492
2426
  }
2427
+ if (!this.noWatch) {
2428
+ this.watchQueries(
2429
+ configManager,
2430
+ dbLock,
2431
+ async () => await codegen2.execute()
2432
+ );
2433
+ }
4493
2434
  return { apiURL: apiURL2, database, graphQLSchema: graphQLSchema2, tinaSchema: tinaSchema2 };
4494
2435
  } catch (e) {
4495
2436
  logger.error(`
@@ -4524,14 +2465,6 @@ ${dangerText(e.message)}
4524
2465
  tokenSplitRegex: (_d = (_c = configManager.config.search) == null ? void 0 : _c.tina) == null ? void 0 : _d.tokenSplitRegex
4525
2466
  });
4526
2467
  await searchIndexClient.onStartIndexing();
4527
- const server = await createDevServer(
4528
- configManager,
4529
- database,
4530
- searchIndexClient.searchIndex,
4531
- apiURL,
4532
- this.noWatch
4533
- );
4534
- await server.listen(Number(this.port));
4535
2468
  const searchIndexer = new import_search.SearchIndexer({
4536
2469
  batchSize: ((_e = configManager.config.search) == null ? void 0 : _e.indexBatchSize) || 100,
4537
2470
  bridge: new import_graphql10.FilesystemBridge(
@@ -4557,12 +2490,26 @@ ${dangerText(e.message)}
4557
2490
  this.watchContentFiles(
4558
2491
  configManager,
4559
2492
  database,
2493
+ dbLock,
4560
2494
  configManager.config.search && searchIndexer
4561
2495
  );
2496
+ }
2497
+ const server = await createDevServer(
2498
+ configManager,
2499
+ database,
2500
+ searchIndexClient.searchIndex,
2501
+ apiURL,
2502
+ this.noWatch,
2503
+ dbLock
2504
+ );
2505
+ await server.listen(Number(this.port));
2506
+ if (!this.noWatch) {
4562
2507
  import_chokidar.default.watch(configManager.watchList).on("change", async () => {
4563
- logger.info(`Tina config change detected, rebuilding`);
4564
- await setup({ firstTime: false });
4565
- server.ws.send({ type: "full-reload", path: "*" });
2508
+ await dbLock(async () => {
2509
+ logger.info(`Tina config change detected, rebuilding`);
2510
+ await setup({ firstTime: false });
2511
+ server.ws.send({ type: "full-reload", path: "*" });
2512
+ });
4566
2513
  });
4567
2514
  }
4568
2515
  const subItems = [];
@@ -4613,11 +2560,25 @@ ${dangerText(e.message)}
4613
2560
  heading: "Tina Dev Server is running...",
4614
2561
  items: [
4615
2562
  ...summaryItems
2563
+ // {
2564
+ // emoji: '📚',
2565
+ // heading: 'Useful links',
2566
+ // subItems: [
2567
+ // {
2568
+ // key: 'Custom queries',
2569
+ // value: 'https://tina.io/querying',
2570
+ // },
2571
+ // {
2572
+ // key: 'Visual editing',
2573
+ // value: 'https://tina.io/visual-editing',
2574
+ // },
2575
+ // ],
2576
+ // },
4616
2577
  ]
4617
2578
  });
4618
2579
  await this.startSubCommand();
4619
2580
  }
4620
- watchContentFiles(configManager, database, searchIndexer) {
2581
+ watchContentFiles(configManager, database, databaseLock, searchIndexer) {
4621
2582
  const collectionContentFiles = [];
4622
2583
  configManager.config.schema.collections.forEach((collection) => {
4623
2584
  const collectionGlob = `${import_path5.default.join(
@@ -4633,39 +2594,42 @@ ${dangerText(e.message)}
4633
2594
  if (!ready) {
4634
2595
  return;
4635
2596
  }
4636
- const pathFromRoot = configManager.printContentRelativePath(addedFile);
4637
- await database.indexContentByPaths([pathFromRoot]).catch(console.error);
4638
- if (searchIndexer) {
4639
- await searchIndexer.indexContentByPaths([pathFromRoot]).catch(console.error);
4640
- }
2597
+ await databaseLock(async () => {
2598
+ const pathFromRoot = configManager.printContentRelativePath(addedFile);
2599
+ await database.indexContentByPaths([pathFromRoot]).catch(console.error);
2600
+ if (searchIndexer) {
2601
+ await searchIndexer.indexContentByPaths([pathFromRoot]).catch(console.error);
2602
+ }
2603
+ });
4641
2604
  }).on("change", async (changedFile) => {
4642
2605
  const pathFromRoot = configManager.printContentRelativePath(changedFile);
4643
- await database.indexContentByPaths([pathFromRoot]).catch(console.error);
4644
- if (searchIndexer) {
4645
- await searchIndexer.indexContentByPaths([pathFromRoot]).catch(console.error);
4646
- }
2606
+ await databaseLock(async () => {
2607
+ await database.indexContentByPaths([pathFromRoot]).catch(console.error);
2608
+ if (searchIndexer) {
2609
+ await searchIndexer.indexContentByPaths([pathFromRoot]).catch(console.error);
2610
+ }
2611
+ });
4647
2612
  }).on("unlink", async (removedFile) => {
4648
2613
  const pathFromRoot = configManager.printContentRelativePath(removedFile);
4649
- await database.deleteContentByPaths([pathFromRoot]).catch(console.error);
4650
- if (searchIndexer) {
4651
- await searchIndexer.deleteIndexContent([pathFromRoot]).catch(console.error);
4652
- }
2614
+ await databaseLock(async () => {
2615
+ await database.deleteContentByPaths([pathFromRoot]).catch(console.error);
2616
+ if (searchIndexer) {
2617
+ await searchIndexer.deleteIndexContent([pathFromRoot]).catch(console.error);
2618
+ }
2619
+ });
4653
2620
  });
4654
2621
  }
4655
- watchQueries(configManager, callback) {
4656
- let ready = false;
4657
- import_chokidar.default.watch(configManager.userQueriesAndFragmentsGlob).on("ready", () => {
4658
- ready = true;
4659
- }).on("add", async (addedFile) => {
4660
- await callback();
4661
- }).on("change", async (changedFile) => {
4662
- await callback();
4663
- }).on("unlink", async (removedFile) => {
4664
- await callback();
4665
- });
2622
+ watchQueries(configManager, databaseLock, callback) {
2623
+ const executeCallback = async (_) => {
2624
+ await databaseLock(async () => {
2625
+ await callback();
2626
+ });
2627
+ };
2628
+ import_chokidar.default.watch(configManager.userQueriesAndFragmentsGlob).on("add", executeCallback).on("change", executeCallback).on("unlink", executeCallback);
4666
2629
  }
4667
2630
  };
4668
2631
  DevCommand.paths = [["dev"], ["server:start"]];
2632
+ // Prevent indexes and reads occurring at once
4669
2633
  DevCommand.usage = import_clipanion2.Command.Usage({
4670
2634
  category: `Commands`,
4671
2635
  description: `Builds Tina and starts the dev server`,
@@ -4684,7 +2648,7 @@ var import_path6 = __toESM(require("path"));
4684
2648
  var import_graphql11 = require("@tinacms/graphql");
4685
2649
 
4686
2650
  // src/next/commands/build-command/server.ts
4687
- var import_vite6 = require("vite");
2651
+ var import_vite5 = require("vite");
4688
2652
  var buildProductionSpa = async (configManager, database, apiURL) => {
4689
2653
  const publicEnv = {};
4690
2654
  Object.keys(process.env).forEach((key) => {
@@ -4716,13 +2680,9 @@ var buildProductionSpa = async (configManager, database, apiURL) => {
4716
2680
  }
4717
2681
  warn(warning);
4718
2682
  }
4719
- },
4720
- viteConfigEnv: {
4721
- command: "build",
4722
- mode: "production"
4723
2683
  }
4724
2684
  });
4725
- return (0, import_vite6.build)(config2);
2685
+ return (0, import_vite5.build)(config2);
4726
2686
  };
4727
2687
 
4728
2688
  // src/next/commands/build-command/index.ts
@@ -4859,6 +2819,9 @@ var BuildCommand = class extends BaseCommand {
4859
2819
  this.tinaGraphQLVersion = import_clipanion3.Option.String("--tina-graphql-version", {
4860
2820
  description: "Specify the version of @tinacms/graphql to use (defaults to latest)"
4861
2821
  });
2822
+ /**
2823
+ * This option allows the user to skip the tina cloud 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 Tina Cloud
2824
+ */
4862
2825
  this.skipCloudChecks = import_clipanion3.Option.Boolean("--skip-cloud-checks", false, {
4863
2826
  description: "Skips checking the provided cloud config."
4864
2827
  });
@@ -4964,7 +2927,8 @@ ${dangerText(e.message)}
4964
2927
  database,
4965
2928
  null,
4966
2929
  apiURL,
4967
- true
2930
+ true,
2931
+ (lockedFn) => lockedFn()
4968
2932
  );
4969
2933
  await server.listen(Number(this.port));
4970
2934
  console.log("server listening on port", this.port);
@@ -5599,6 +3563,7 @@ var auditDocuments = async (args) => {
5599
3563
  logger.error(import_chalk5.default.red(err.message));
5600
3564
  if (err.originalError.originalError) {
5601
3565
  logger.error(
3566
+ // @ts-ignore FIXME: this doesn't seem right
5602
3567
  import_chalk5.default.red(` ${err.originalError.originalError.message}`)
5603
3568
  );
5604
3569
  }
@@ -5804,7 +3769,9 @@ var detectEnvironment = async ({
5804
3769
  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")));
5805
3770
  const tinaFolder = import_path7.default.join(baseDir, "tina");
5806
3771
  const tinaConfigExists = Boolean(
5807
- await import_fs_extra8.default.pathExists(tinaFolder) && (await import_fs_extra8.default.readdir(tinaFolder)).find((x) => x.includes("config"))
3772
+ // Does the tina folder exist?
3773
+ await import_fs_extra8.default.pathExists(tinaFolder) && // Does the tina folder contain a config file?
3774
+ (await import_fs_extra8.default.readdir(tinaFolder)).find((x) => x.includes("config"))
5808
3775
  );
5809
3776
  const pagesDir = [baseDir, usingSrc ? "src" : false, "pages"].filter(
5810
3777
  Boolean
@@ -6039,6 +4006,7 @@ var supportedDatabaseAdapters = {
6039
4006
  {
6040
4007
  from: "mongodb",
6041
4008
  imported: [],
4009
+ // not explicitly imported
6042
4010
  packageName: "mongodb"
6043
4011
  }
6044
4012
  ]
@@ -6111,6 +4079,10 @@ var chooseDatabaseAdapter = async ({
6111
4079
  title: "MongoDB",
6112
4080
  value: "mongodb"
6113
4081
  }
4082
+ // {
4083
+ // title: "I'll create my own database adapter",
4084
+ // value: 'other',
4085
+ // },
6114
4086
  ]
6115
4087
  }
6116
4088
  ]);
@@ -6388,6 +4360,7 @@ async function configure(env, opts) {
6388
4360
  packageManager,
6389
4361
  forestryMigrate: false,
6390
4362
  isLocalEnvVarName: "TINA_PUBLIC_IS_LOCAL",
4363
+ // TODO: give this a better default
6391
4364
  typescript: false
6392
4365
  };
6393
4366
  if (config2.framework.name === "next") {
@@ -6491,15 +4464,25 @@ var import_js_yaml = __toESM(require("js-yaml"));
6491
4464
  var import_zod = __toESM(require("zod"));
6492
4465
 
6493
4466
  // src/cmds/forestry-migrate/util/errorSingleton.ts
6494
- var ErrorSingleton = class {
4467
+ var ErrorSingleton = class _ErrorSingleton {
4468
+ /**
4469
+ * The Singleton's constructor should always be private to prevent direct
4470
+ * construction calls with the `new` operator.
4471
+ */
6495
4472
  constructor() {
6496
4473
  }
4474
+ /**
4475
+ * The static method that controls the access to the singleton instance.
4476
+ *
4477
+ * This implementation let you subclass the Singleton class while keeping
4478
+ * just one instance of each subclass around.
4479
+ */
6497
4480
  static getInstance() {
6498
- if (!ErrorSingleton.instance) {
6499
- ErrorSingleton.instance = new ErrorSingleton();
6500
- ErrorSingleton.instance.collectionNameErrors = [];
4481
+ if (!_ErrorSingleton.instance) {
4482
+ _ErrorSingleton.instance = new _ErrorSingleton();
4483
+ _ErrorSingleton.instance.collectionNameErrors = [];
6501
4484
  }
6502
- return ErrorSingleton.instance;
4485
+ return _ErrorSingleton.instance;
6503
4486
  }
6504
4487
  addErrorName(error) {
6505
4488
  this.collectionNameErrors.push(error);
@@ -6542,8 +4525,7 @@ var makeFieldsWithInternalCode = ({
6542
4525
  if (hasBody) {
6543
4526
  return [bodyField, `__TINA_INTERNAL__:::...${field}():::`];
6544
4527
  } else {
6545
- if (spread)
6546
- return `__TINA_INTERNAL__:::...${field}():::`;
4528
+ if (spread) return `__TINA_INTERNAL__:::...${field}():::`;
6547
4529
  return `__TINA_INTERNAL__:::${field}():::`;
6548
4530
  }
6549
4531
  };
@@ -6627,6 +4609,7 @@ var forestryConfigSchema = import_zod.default.object({
6627
4609
  )
6628
4610
  });
6629
4611
  var forestryFieldWithoutField = import_zod.default.object({
4612
+ // TODO: maybe better type this?
6630
4613
  type: import_zod.default.union([
6631
4614
  import_zod.default.literal("text"),
6632
4615
  import_zod.default.literal("datetime"),
@@ -6650,6 +4633,7 @@ var forestryFieldWithoutField = import_zod.default.object({
6650
4633
  default: import_zod.default.any().optional(),
6651
4634
  template: import_zod.default.string().optional(),
6652
4635
  config: import_zod.default.object({
4636
+ // min and max are used for lists
6653
4637
  min: import_zod.default.number().optional().nullable(),
6654
4638
  max: import_zod.default.number().optional().nullable(),
6655
4639
  required: import_zod.default.boolean().optional().nullable(),
@@ -6663,6 +4647,7 @@ var forestryFieldWithoutField = import_zod.default.object({
6663
4647
  import_zod.default.literal("pages"),
6664
4648
  import_zod.default.literal("documents"),
6665
4649
  import_zod.default.literal("simple"),
4650
+ // TODO: I want to ignore this key if its invalid
6666
4651
  import_zod.default.string()
6667
4652
  ]).optional().nullable(),
6668
4653
  section: import_zod.default.string().optional().nullable()
@@ -6698,6 +4683,7 @@ var transformForestryFieldsToTinaFields = ({
6698
4683
  }
6699
4684
  let field;
6700
4685
  switch (forestryField2.type) {
4686
+ // Single filed types
6701
4687
  case "text":
6702
4688
  field = {
6703
4689
  type: "string",
@@ -6777,6 +4763,7 @@ var transformForestryFieldsToTinaFields = ({
6777
4763
  );
6778
4764
  }
6779
4765
  break;
4766
+ // List Types
6780
4767
  case "list":
6781
4768
  field = {
6782
4769
  type: "string",
@@ -6799,6 +4786,7 @@ var transformForestryFieldsToTinaFields = ({
6799
4786
  }
6800
4787
  };
6801
4788
  break;
4789
+ // Object (Group) types
6802
4790
  case "field_group":
6803
4791
  field = {
6804
4792
  type: "object",
@@ -6839,6 +4827,7 @@ var transformForestryFieldsToTinaFields = ({
6839
4827
  });
6840
4828
  const fieldsString = stringifyLabelWithField(template2.label);
6841
4829
  const t = {
4830
+ // @ts-ignore
6842
4831
  fields: makeFieldsWithInternalCode({
6843
4832
  hasBody: false,
6844
4833
  field: fieldsString
@@ -6876,6 +4865,7 @@ var transformForestryFieldsToTinaFields = ({
6876
4865
  spread: true
6877
4866
  });
6878
4867
  tinaFields.push(
4868
+ // @ts-ignore
6879
4869
  field2
6880
4870
  );
6881
4871
  break;
@@ -6935,6 +4925,7 @@ var parseSections = ({ val }) => {
6935
4925
 
6936
4926
  // src/cmds/forestry-migrate/index.ts
6937
4927
  var BODY_FIELD = {
4928
+ // This is the body field
6938
4929
  type: "rich-text",
6939
4930
  name: "body",
6940
4931
  label: "Body of Document",
@@ -6993,8 +4984,7 @@ var generateAllTemplates = async ({
6993
4984
  };
6994
4985
  var generateCollectionFromForestrySection = (args) => {
6995
4986
  const { section, templateMap } = args;
6996
- if (section.read_only)
6997
- return;
4987
+ if (section.read_only) return;
6998
4988
  let format3 = "md";
6999
4989
  if (section.new_doc_ext) {
7000
4990
  const ext = checkExt(section.new_doc_ext);
@@ -7061,12 +5051,14 @@ var generateCollectionFromForestrySection = (args) => {
7061
5051
  if (((forestryTemplates == null ? void 0 : forestryTemplates.length) || 0) > 1) {
7062
5052
  c = {
7063
5053
  ...baseCollection,
5054
+ // @ts-expect-error
7064
5055
  templates: forestryTemplates.map((tem) => {
7065
5056
  const currentTemplate = templateMap.get(tem);
7066
5057
  const fieldsString = stringifyLabelWithField(
7067
5058
  currentTemplate.templateObj.label
7068
5059
  );
7069
5060
  return {
5061
+ // fields: [BODY_FIELD],
7070
5062
  fields: makeFieldsWithInternalCode({
7071
5063
  hasBody,
7072
5064
  field: fieldsString,
@@ -7084,6 +5076,8 @@ var generateCollectionFromForestrySection = (args) => {
7084
5076
  const fieldsString = stringifyLabelWithField(template.templateObj.label);
7085
5077
  c = {
7086
5078
  ...baseCollection,
5079
+ // fields: [BODY_FIELD],
5080
+ // @ts-expect-error
7087
5081
  fields: makeFieldsWithInternalCode({
7088
5082
  field: fieldsString,
7089
5083
  hasBody,
@@ -7831,6 +5825,7 @@ var makeImportsVisitor = (sourceFile, importMap) => (ctx) => (node) => {
7831
5825
  ) : [];
7832
5826
  const newImports = [
7833
5827
  .../* @__PURE__ */ new Set([
5828
+ // we use Set to remove duplicates
7834
5829
  ...existingImports,
7835
5830
  ...imports
7836
5831
  ])
@@ -7985,6 +5980,7 @@ var addSelfHostedTinaAuthToConfig = async (config2, configFile) => {
7985
5980
  );
7986
5981
  const { configImports, configAuthProviderClass, extraTinaCollections } = config2.authProvider;
7987
5982
  const importMap = {
5983
+ // iterate over configImports and add them to the import map
7988
5984
  ...configImports.reduce((acc, { from, imported }) => {
7989
5985
  acc[from] = imported;
7990
5986
  return acc;
@@ -8159,7 +6155,13 @@ async function apply({
8159
6155
  config: config2
8160
6156
  });
8161
6157
  }
8162
- if (env.tinaConfigExists && params.isBackendInit && config2.hosting === "self-host" && (((_a = config2.authProvider) == null ? void 0 : _a.name) || "") !== "tina-cloud") {
6158
+ if (
6159
+ // if the config was just generated we do not need to update the config file because it will be generated correctly
6160
+ env.tinaConfigExists && // Are we running tinacms init backend
6161
+ params.isBackendInit && // Do the user choose the 'self-host' option
6162
+ config2.hosting === "self-host" && // the user did not choose the 'tina-cloud' auth provider
6163
+ (((_a = config2.authProvider) == null ? void 0 : _a.name) || "") !== "tina-cloud"
6164
+ ) {
8163
6165
  await addSelfHostedTinaAuthToConfig(config2, env.generatedFiles["config"]);
8164
6166
  }
8165
6167
  logNextSteps({
@@ -8452,6 +6454,7 @@ var other = ({ packageManager }) => {
8452
6454
  const packageManagers = {
8453
6455
  pnpm: `pnpm`,
8454
6456
  npm: `npx`,
6457
+ // npx is the way to run executables that aren't in your "scripts"
8455
6458
  yarn: `yarn`
8456
6459
  };
8457
6460
  return `${packageManagers[packageManager]} tinacms dev -c "<your dev command>"`;
@@ -8464,6 +6467,7 @@ var frameworkDevCmds = {
8464
6467
  const packageManagers = {
8465
6468
  pnpm: `pnpm`,
8466
6469
  npm: `npm run`,
6470
+ // npx is the way to run executables that aren't in your "scripts"
8467
6471
  yarn: `yarn`
8468
6472
  };
8469
6473
  return `${packageManagers[packageManager]} dev`;
@@ -8721,5 +6725,3 @@ cli.register(import_clipanion8.Builtins.DefinitionsCommand);
8721
6725
  cli.register(import_clipanion8.Builtins.HelpCommand);
8722
6726
  cli.register(import_clipanion8.Builtins.VersionCommand);
8723
6727
  var src_default = cli;
8724
- // Annotate the CommonJS export names for ESM import in node:
8725
- 0 && (module.exports = {});