@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/cmds/forestry-migrate/util/index.d.ts +4 -4
- package/dist/index.js +944 -2942
- package/dist/next/commands/dev-command/index.d.ts +4 -2
- package/dist/next/commands/dev-command/server/index.d.ts +1 -1
- package/dist/next/vite/index.d.ts +2 -13
- package/dist/next/vite/plugins.d.ts +2 -1
- package/package.json +8 -10
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
|
-
//
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
//
|
|
81
|
-
var
|
|
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
|
-
//
|
|
121
|
-
var
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
//
|
|
195
|
-
var
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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
|
-
//
|
|
283
|
-
var
|
|
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
|
-
//
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
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
|
-
//
|
|
409
|
-
var
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
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
|
-
//
|
|
433
|
-
var
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
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
|
-
|
|
1528
|
-
|
|
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
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
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
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
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
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
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
|
-
|
|
1656
|
-
|
|
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
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
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
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
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
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
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
|
-
|
|
1739
|
-
|
|
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
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
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
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
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
|
-
|
|
1928
|
-
|
|
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
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
};
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
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
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
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/
|
|
2079
|
-
var
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
var
|
|
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
|
-
//
|
|
2087
|
-
var
|
|
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
|
|
2109
|
-
var
|
|
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
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
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
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
};
|
|
3183
|
-
|
|
3184
|
-
|
|
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
|
|
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
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
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,
|
|
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({
|
|
1450
|
+
devServerEndPointsPlugin({
|
|
1451
|
+
apiURL,
|
|
1452
|
+
configManager,
|
|
1453
|
+
database,
|
|
1454
|
+
searchIndex,
|
|
1455
|
+
databaseLock
|
|
1456
|
+
}),
|
|
3538
1457
|
viteTransformExtension()
|
|
3539
1458
|
];
|
|
3540
|
-
return (0,
|
|
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 (
|
|
3774
|
-
|
|
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
|
-
|
|
3939
|
-
if (!
|
|
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 (
|
|
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
|
-
|
|
4564
|
-
|
|
4565
|
-
|
|
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
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
4639
|
-
|
|
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
|
|
4644
|
-
|
|
4645
|
-
|
|
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
|
|
4650
|
-
|
|
4651
|
-
|
|
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
|
-
|
|
4657
|
-
|
|
4658
|
-
|
|
4659
|
-
|
|
4660
|
-
|
|
4661
|
-
|
|
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
|
|
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,
|
|
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
|
-
|
|
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 (!
|
|
6499
|
-
|
|
6500
|
-
|
|
4481
|
+
if (!_ErrorSingleton.instance) {
|
|
4482
|
+
_ErrorSingleton.instance = new _ErrorSingleton();
|
|
4483
|
+
_ErrorSingleton.instance.collectionNameErrors = [];
|
|
6501
4484
|
}
|
|
6502
|
-
return
|
|
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 (
|
|
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 = {});
|