@mintlify/previewing 3.1.56 → 3.1.58

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.
Files changed (34) hide show
  1. package/LICENSE +93 -0
  2. package/README.md +17 -17
  3. package/dist/constants.d.ts +9 -9
  4. package/dist/constants.js +31 -31
  5. package/dist/downloadImage.d.ts +4 -4
  6. package/dist/downloadImage.js +139 -139
  7. package/dist/index.d.ts +3 -3
  8. package/dist/index.js +3 -3
  9. package/dist/local-preview/helper-commands/installDepsCommand.d.ts +2 -2
  10. package/dist/local-preview/helper-commands/installDepsCommand.js +51 -51
  11. package/dist/local-preview/index.d.ts +3 -3
  12. package/dist/local-preview/index.js +212 -212
  13. package/dist/local-preview/listener/categorize.d.ts +8 -8
  14. package/dist/local-preview/listener/categorize.js +193 -193
  15. package/dist/local-preview/listener/generate.d.ts +1 -1
  16. package/dist/local-preview/listener/generate.js +137 -137
  17. package/dist/local-preview/listener/index.d.ts +2 -2
  18. package/dist/local-preview/listener/index.js +317 -317
  19. package/dist/local-preview/listener/update.d.ts +2 -2
  20. package/dist/local-preview/listener/update.js +79 -79
  21. package/dist/local-preview/listener/utils/createPage.d.ts +10 -10
  22. package/dist/local-preview/listener/utils/createPage.js +210 -210
  23. package/dist/local-preview/listener/utils/getOpenApiContext.d.ts +21 -21
  24. package/dist/local-preview/listener/utils/getOpenApiContext.js +55 -55
  25. package/dist/local-preview/listener/utils/mintConfigFile.d.ts +2 -2
  26. package/dist/local-preview/listener/utils/mintConfigFile.js +74 -74
  27. package/dist/local-preview/listener/utils/types.d.ts +2 -2
  28. package/dist/local-preview/listener/utils/types.js +1 -1
  29. package/dist/local-preview/listener/utils.d.ts +13 -13
  30. package/dist/local-preview/listener/utils.js +112 -112
  31. package/dist/tsconfig.tsbuildinfo +1 -1
  32. package/dist/util.d.ts +4 -4
  33. package/dist/util.js +20 -20
  34. package/package.json +88 -87
@@ -1,317 +1,317 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
- import mintValidation from '@mintlify/validation';
38
- import Chalk from 'chalk';
39
- import chokidar from 'chokidar';
40
- import { promises as _promises } from 'fs';
41
- import fse from 'fs-extra';
42
- import pathUtil from 'path';
43
- import { CLIENT_PATH, CMD_EXEC_PATH } from '../../constants.js';
44
- import { getCategory } from './categorize.js';
45
- import { updateGeneratedNav, updateOpenApiFiles } from './update.js';
46
- import { isFileSizeValid, openApiCheck } from './utils.js';
47
- import createPage from './utils/createPage.js';
48
- var readFile = _promises.readFile;
49
- var listener = function () {
50
- chokidar
51
- .watch(CMD_EXEC_PATH, {
52
- ignoreInitial: true,
53
- ignored: ['node_modules', '.git', '.idea'],
54
- cwd: CMD_EXEC_PATH,
55
- })
56
- .on('add', function (filename) { return __awaiter(void 0, void 0, void 0, function () {
57
- var category, error_1;
58
- return __generator(this, function (_a) {
59
- switch (_a.label) {
60
- case 0:
61
- _a.trys.push([0, 2, , 3]);
62
- return [4 /*yield*/, onUpdateEvent(filename)];
63
- case 1:
64
- category = _a.sent();
65
- switch (category) {
66
- case 'page':
67
- console.log('New page detected: ', filename);
68
- break;
69
- case 'snippet':
70
- console.log('New snippet detected: ', filename);
71
- break;
72
- case 'mintConfig':
73
- console.log('Config added');
74
- break;
75
- case 'openApi':
76
- console.log('OpenApi spec added: ', filename);
77
- break;
78
- case 'staticFile':
79
- console.log('Static file added: ', filename);
80
- break;
81
- }
82
- return [3 /*break*/, 3];
83
- case 2:
84
- error_1 = _a.sent();
85
- console.error(error_1.message);
86
- return [3 /*break*/, 3];
87
- case 3: return [2 /*return*/];
88
- }
89
- });
90
- }); })
91
- .on('change', function (filename) { return __awaiter(void 0, void 0, void 0, function () {
92
- var category, error_2;
93
- return __generator(this, function (_a) {
94
- switch (_a.label) {
95
- case 0:
96
- _a.trys.push([0, 2, , 3]);
97
- return [4 /*yield*/, onUpdateEvent(filename)];
98
- case 1:
99
- category = _a.sent();
100
- switch (category) {
101
- case 'page':
102
- console.log('Page edited: ', filename);
103
- break;
104
- case 'snippet':
105
- console.log('Snippet edited: ', filename);
106
- break;
107
- case 'mintConfig':
108
- console.log('Config edited');
109
- break;
110
- case 'openApi':
111
- console.log('OpenApi spec edited: ', filename);
112
- break;
113
- case 'staticFile':
114
- console.log('Static file edited: ', filename);
115
- break;
116
- }
117
- return [3 /*break*/, 3];
118
- case 2:
119
- error_2 = _a.sent();
120
- console.error(error_2.message);
121
- return [3 /*break*/, 3];
122
- case 3: return [2 /*return*/];
123
- }
124
- });
125
- }); })
126
- .on('unlink', function (filename) { return __awaiter(void 0, void 0, void 0, function () {
127
- var potentialCategory, targetPath, _a, error_3;
128
- return __generator(this, function (_b) {
129
- switch (_b.label) {
130
- case 0:
131
- _b.trys.push([0, 11, , 12]);
132
- potentialCategory = getCategory(filename);
133
- targetPath = getTargetPath(potentialCategory, filename);
134
- if (!(potentialCategory === 'page' ||
135
- potentialCategory === 'snippet' ||
136
- potentialCategory === 'mintConfig' ||
137
- potentialCategory === 'staticFile')) return [3 /*break*/, 2];
138
- return [4 /*yield*/, fse.remove(targetPath)];
139
- case 1:
140
- _b.sent();
141
- _b.label = 2;
142
- case 2:
143
- _a = potentialCategory;
144
- switch (_a) {
145
- case 'page': return [3 /*break*/, 3];
146
- case 'snippet': return [3 /*break*/, 4];
147
- case 'mintConfig': return [3 /*break*/, 5];
148
- case 'potentialJsonOpenApiSpec': return [3 /*break*/, 6];
149
- case 'potentialYamlOpenApiSpec': return [3 /*break*/, 6];
150
- case 'staticFile': return [3 /*break*/, 9];
151
- }
152
- return [3 /*break*/, 10];
153
- case 3:
154
- console.log("Page deleted: ".concat(filename));
155
- return [3 /*break*/, 10];
156
- case 4:
157
- console.log("Snippet deleted: ".concat(filename));
158
- return [3 /*break*/, 10];
159
- case 5:
160
- console.log('⚠️ mint.json deleted. Please create a new mint.json file as it is mandatory.');
161
- process.exit(1);
162
- _b.label = 6;
163
- case 6: return [4 /*yield*/, updateOpenApiFiles()];
164
- case 7:
165
- _b.sent();
166
- return [4 /*yield*/, updateGeneratedNav()];
167
- case 8:
168
- _b.sent();
169
- return [3 /*break*/, 10];
170
- case 9:
171
- console.log('Static file deleted: ', filename);
172
- return [3 /*break*/, 10];
173
- case 10: return [3 /*break*/, 12];
174
- case 11:
175
- error_3 = _b.sent();
176
- console.error(error_3.message);
177
- return [3 /*break*/, 12];
178
- case 12: return [2 /*return*/];
179
- }
180
- });
181
- }); });
182
- };
183
- var getTargetPath = function (potentialCategory, filePath) {
184
- switch (potentialCategory) {
185
- case 'page':
186
- case 'snippet':
187
- return pathUtil.join(CLIENT_PATH, 'src', '_props', filePath);
188
- case 'mintConfig':
189
- return pathUtil.join(CLIENT_PATH, 'src', '_props', 'mint.json');
190
- case 'potentialYamlOpenApiSpec':
191
- case 'potentialJsonOpenApiSpec':
192
- return pathUtil.join(CLIENT_PATH, 'src', '_props', 'openApiFiles.json');
193
- case 'staticFile':
194
- return pathUtil.join(CLIENT_PATH, 'public', filePath);
195
- default:
196
- throw new Error('Invalid category');
197
- }
198
- };
199
- /**
200
- * This function is called when a file is added or changed
201
- * @param filename
202
- * @returns FileCategory
203
- */
204
- var onUpdateEvent = function (filename) { return __awaiter(void 0, void 0, void 0, function () {
205
- var filePath, potentialCategory, targetPath, regenerateNav, category, _a, contentStr, pageContent, mintJsonFileContent, mintConfig, _b, status_1, errors, warnings, e_1, error, isOpenApi, openApiInfo;
206
- return __generator(this, function (_c) {
207
- switch (_c.label) {
208
- case 0:
209
- filePath = pathUtil.join(CMD_EXEC_PATH, filename);
210
- potentialCategory = getCategory(filename);
211
- targetPath = getTargetPath(potentialCategory, filename);
212
- regenerateNav = false;
213
- category = potentialCategory === 'potentialYamlOpenApiSpec' ||
214
- potentialCategory === 'potentialJsonOpenApiSpec'
215
- ? 'staticFile'
216
- : potentialCategory;
217
- _a = potentialCategory;
218
- switch (_a) {
219
- case 'page': return [3 /*break*/, 1];
220
- case 'snippet': return [3 /*break*/, 5];
221
- case 'mintConfig': return [3 /*break*/, 7];
222
- case 'potentialYamlOpenApiSpec': return [3 /*break*/, 14];
223
- case 'potentialJsonOpenApiSpec': return [3 /*break*/, 14];
224
- case 'staticFile': return [3 /*break*/, 18];
225
- }
226
- return [3 /*break*/, 23];
227
- case 1:
228
- regenerateNav = true;
229
- return [4 /*yield*/, readFile(filePath)];
230
- case 2:
231
- contentStr = (_c.sent()).toString();
232
- return [4 /*yield*/, createPage(filename, contentStr, CMD_EXEC_PATH, [])];
233
- case 3:
234
- pageContent = (_c.sent()).pageContent;
235
- return [4 /*yield*/, fse.outputFile(targetPath, pageContent, {
236
- flag: 'w',
237
- })];
238
- case 4:
239
- _c.sent();
240
- return [3 /*break*/, 23];
241
- case 5: return [4 /*yield*/, fse.copy(filePath, targetPath)];
242
- case 6:
243
- _c.sent();
244
- return [3 /*break*/, 23];
245
- case 7:
246
- regenerateNav = true;
247
- return [4 /*yield*/, readFile(filePath)];
248
- case 8:
249
- mintJsonFileContent = (_c.sent()).toString();
250
- _c.label = 9;
251
- case 9:
252
- _c.trys.push([9, 12, , 13]);
253
- mintConfig = JSON.parse(mintJsonFileContent);
254
- _b = mintValidation.validateMintConfig(mintConfig), status_1 = _b.status, errors = _b.errors, warnings = _b.warnings;
255
- errors.forEach(function (error) {
256
- console.error("\uD83D\uDEA8 ".concat(Chalk.red(error)));
257
- });
258
- warnings.forEach(function (warning) {
259
- console.warn("\u26A0\uFE0F ".concat(Chalk.yellow(warning)));
260
- });
261
- if (!(status_1 === 'success')) return [3 /*break*/, 11];
262
- return [4 /*yield*/, fse.copy(filePath, targetPath)];
263
- case 10:
264
- _c.sent();
265
- _c.label = 11;
266
- case 11: return [3 /*break*/, 13];
267
- case 12:
268
- e_1 = _c.sent();
269
- error = e_1;
270
- if (error.name === 'SyntaxError') {
271
- console.error("\uD83D\uDEA8 ".concat(Chalk.red('mint.json has invalid JSON. You are likely missing a comma or a bracket. You can paste your mint.json file into https://jsonlint.com/ to get a more specific error message.')));
272
- }
273
- else {
274
- console.error("\uD83D\uDEA8 ".concat(Chalk.red(error.message)));
275
- }
276
- return [3 /*break*/, 13];
277
- case 13: return [3 /*break*/, 23];
278
- case 14:
279
- isOpenApi = false;
280
- return [4 /*yield*/, openApiCheck(filePath)];
281
- case 15:
282
- openApiInfo = _c.sent();
283
- isOpenApi = openApiInfo.isOpenApi;
284
- if (!isOpenApi) return [3 /*break*/, 17];
285
- // TODO: Instead of re-generating all openApi files, optimize by just updating the specific file that changed.
286
- return [4 /*yield*/, updateOpenApiFiles()];
287
- case 16:
288
- // TODO: Instead of re-generating all openApi files, optimize by just updating the specific file that changed.
289
- _c.sent();
290
- regenerateNav = true;
291
- category = 'openApi';
292
- _c.label = 17;
293
- case 17: return [3 /*break*/, 23];
294
- case 18: return [4 /*yield*/, isFileSizeValid(filePath, 5)];
295
- case 19:
296
- if (!_c.sent()) return [3 /*break*/, 21];
297
- return [4 /*yield*/, fse.copy(filePath, targetPath)];
298
- case 20:
299
- _c.sent();
300
- return [3 /*break*/, 22];
301
- case 21:
302
- console.error(Chalk.red("\uD83D\uDEA8 The file at ".concat(filename, " is too big. The maximum file size is 5 mb.")));
303
- _c.label = 22;
304
- case 22: return [3 /*break*/, 23];
305
- case 23:
306
- if (!regenerateNav) return [3 /*break*/, 25];
307
- // TODO: Instead of re-generating the entire nav, optimize by just updating the specific page that changed.
308
- return [4 /*yield*/, updateGeneratedNav()];
309
- case 24:
310
- // TODO: Instead of re-generating the entire nav, optimize by just updating the specific page that changed.
311
- _c.sent();
312
- _c.label = 25;
313
- case 25: return [2 /*return*/, category];
314
- }
315
- });
316
- }); };
317
- export default listener;
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import mintValidation from '@mintlify/validation';
38
+ import Chalk from 'chalk';
39
+ import chokidar from 'chokidar';
40
+ import { promises as _promises } from 'fs';
41
+ import fse from 'fs-extra';
42
+ import pathUtil from 'path';
43
+ import { CLIENT_PATH, CMD_EXEC_PATH } from '../../constants.js';
44
+ import { getCategory } from './categorize.js';
45
+ import { updateGeneratedNav, updateOpenApiFiles } from './update.js';
46
+ import { isFileSizeValid, openApiCheck } from './utils.js';
47
+ import createPage from './utils/createPage.js';
48
+ var readFile = _promises.readFile;
49
+ var listener = function () {
50
+ chokidar
51
+ .watch(CMD_EXEC_PATH, {
52
+ ignoreInitial: true,
53
+ ignored: ['node_modules', '.git', '.idea'],
54
+ cwd: CMD_EXEC_PATH,
55
+ })
56
+ .on('add', function (filename) { return __awaiter(void 0, void 0, void 0, function () {
57
+ var category, error_1;
58
+ return __generator(this, function (_a) {
59
+ switch (_a.label) {
60
+ case 0:
61
+ _a.trys.push([0, 2, , 3]);
62
+ return [4 /*yield*/, onUpdateEvent(filename)];
63
+ case 1:
64
+ category = _a.sent();
65
+ switch (category) {
66
+ case 'page':
67
+ console.log('New page detected: ', filename);
68
+ break;
69
+ case 'snippet':
70
+ console.log('New snippet detected: ', filename);
71
+ break;
72
+ case 'mintConfig':
73
+ console.log('Config added');
74
+ break;
75
+ case 'openApi':
76
+ console.log('OpenApi spec added: ', filename);
77
+ break;
78
+ case 'staticFile':
79
+ console.log('Static file added: ', filename);
80
+ break;
81
+ }
82
+ return [3 /*break*/, 3];
83
+ case 2:
84
+ error_1 = _a.sent();
85
+ console.error(error_1.message);
86
+ return [3 /*break*/, 3];
87
+ case 3: return [2 /*return*/];
88
+ }
89
+ });
90
+ }); })
91
+ .on('change', function (filename) { return __awaiter(void 0, void 0, void 0, function () {
92
+ var category, error_2;
93
+ return __generator(this, function (_a) {
94
+ switch (_a.label) {
95
+ case 0:
96
+ _a.trys.push([0, 2, , 3]);
97
+ return [4 /*yield*/, onUpdateEvent(filename)];
98
+ case 1:
99
+ category = _a.sent();
100
+ switch (category) {
101
+ case 'page':
102
+ console.log('Page edited: ', filename);
103
+ break;
104
+ case 'snippet':
105
+ console.log('Snippet edited: ', filename);
106
+ break;
107
+ case 'mintConfig':
108
+ console.log('Config edited');
109
+ break;
110
+ case 'openApi':
111
+ console.log('OpenApi spec edited: ', filename);
112
+ break;
113
+ case 'staticFile':
114
+ console.log('Static file edited: ', filename);
115
+ break;
116
+ }
117
+ return [3 /*break*/, 3];
118
+ case 2:
119
+ error_2 = _a.sent();
120
+ console.error(error_2.message);
121
+ return [3 /*break*/, 3];
122
+ case 3: return [2 /*return*/];
123
+ }
124
+ });
125
+ }); })
126
+ .on('unlink', function (filename) { return __awaiter(void 0, void 0, void 0, function () {
127
+ var potentialCategory, targetPath, _a, error_3;
128
+ return __generator(this, function (_b) {
129
+ switch (_b.label) {
130
+ case 0:
131
+ _b.trys.push([0, 11, , 12]);
132
+ potentialCategory = getCategory(filename);
133
+ targetPath = getTargetPath(potentialCategory, filename);
134
+ if (!(potentialCategory === 'page' ||
135
+ potentialCategory === 'snippet' ||
136
+ potentialCategory === 'mintConfig' ||
137
+ potentialCategory === 'staticFile')) return [3 /*break*/, 2];
138
+ return [4 /*yield*/, fse.remove(targetPath)];
139
+ case 1:
140
+ _b.sent();
141
+ _b.label = 2;
142
+ case 2:
143
+ _a = potentialCategory;
144
+ switch (_a) {
145
+ case 'page': return [3 /*break*/, 3];
146
+ case 'snippet': return [3 /*break*/, 4];
147
+ case 'mintConfig': return [3 /*break*/, 5];
148
+ case 'potentialJsonOpenApiSpec': return [3 /*break*/, 6];
149
+ case 'potentialYamlOpenApiSpec': return [3 /*break*/, 6];
150
+ case 'staticFile': return [3 /*break*/, 9];
151
+ }
152
+ return [3 /*break*/, 10];
153
+ case 3:
154
+ console.log("Page deleted: ".concat(filename));
155
+ return [3 /*break*/, 10];
156
+ case 4:
157
+ console.log("Snippet deleted: ".concat(filename));
158
+ return [3 /*break*/, 10];
159
+ case 5:
160
+ console.log('⚠️ mint.json deleted. Please create a new mint.json file as it is mandatory.');
161
+ process.exit(1);
162
+ _b.label = 6;
163
+ case 6: return [4 /*yield*/, updateOpenApiFiles()];
164
+ case 7:
165
+ _b.sent();
166
+ return [4 /*yield*/, updateGeneratedNav()];
167
+ case 8:
168
+ _b.sent();
169
+ return [3 /*break*/, 10];
170
+ case 9:
171
+ console.log('Static file deleted: ', filename);
172
+ return [3 /*break*/, 10];
173
+ case 10: return [3 /*break*/, 12];
174
+ case 11:
175
+ error_3 = _b.sent();
176
+ console.error(error_3.message);
177
+ return [3 /*break*/, 12];
178
+ case 12: return [2 /*return*/];
179
+ }
180
+ });
181
+ }); });
182
+ };
183
+ var getTargetPath = function (potentialCategory, filePath) {
184
+ switch (potentialCategory) {
185
+ case 'page':
186
+ case 'snippet':
187
+ return pathUtil.join(CLIENT_PATH, 'src', '_props', filePath);
188
+ case 'mintConfig':
189
+ return pathUtil.join(CLIENT_PATH, 'src', '_props', 'mint.json');
190
+ case 'potentialYamlOpenApiSpec':
191
+ case 'potentialJsonOpenApiSpec':
192
+ return pathUtil.join(CLIENT_PATH, 'src', '_props', 'openApiFiles.json');
193
+ case 'staticFile':
194
+ return pathUtil.join(CLIENT_PATH, 'public', filePath);
195
+ default:
196
+ throw new Error('Invalid category');
197
+ }
198
+ };
199
+ /**
200
+ * This function is called when a file is added or changed
201
+ * @param filename
202
+ * @returns FileCategory
203
+ */
204
+ var onUpdateEvent = function (filename) { return __awaiter(void 0, void 0, void 0, function () {
205
+ var filePath, potentialCategory, targetPath, regenerateNav, category, _a, contentStr, pageContent, mintJsonFileContent, mintConfig, _b, status_1, errors, warnings, e_1, error, isOpenApi, openApiInfo;
206
+ return __generator(this, function (_c) {
207
+ switch (_c.label) {
208
+ case 0:
209
+ filePath = pathUtil.join(CMD_EXEC_PATH, filename);
210
+ potentialCategory = getCategory(filename);
211
+ targetPath = getTargetPath(potentialCategory, filename);
212
+ regenerateNav = false;
213
+ category = potentialCategory === 'potentialYamlOpenApiSpec' ||
214
+ potentialCategory === 'potentialJsonOpenApiSpec'
215
+ ? 'staticFile'
216
+ : potentialCategory;
217
+ _a = potentialCategory;
218
+ switch (_a) {
219
+ case 'page': return [3 /*break*/, 1];
220
+ case 'snippet': return [3 /*break*/, 5];
221
+ case 'mintConfig': return [3 /*break*/, 7];
222
+ case 'potentialYamlOpenApiSpec': return [3 /*break*/, 14];
223
+ case 'potentialJsonOpenApiSpec': return [3 /*break*/, 14];
224
+ case 'staticFile': return [3 /*break*/, 18];
225
+ }
226
+ return [3 /*break*/, 23];
227
+ case 1:
228
+ regenerateNav = true;
229
+ return [4 /*yield*/, readFile(filePath)];
230
+ case 2:
231
+ contentStr = (_c.sent()).toString();
232
+ return [4 /*yield*/, createPage(filename, contentStr, CMD_EXEC_PATH, [])];
233
+ case 3:
234
+ pageContent = (_c.sent()).pageContent;
235
+ return [4 /*yield*/, fse.outputFile(targetPath, pageContent, {
236
+ flag: 'w',
237
+ })];
238
+ case 4:
239
+ _c.sent();
240
+ return [3 /*break*/, 23];
241
+ case 5: return [4 /*yield*/, fse.copy(filePath, targetPath)];
242
+ case 6:
243
+ _c.sent();
244
+ return [3 /*break*/, 23];
245
+ case 7:
246
+ regenerateNav = true;
247
+ return [4 /*yield*/, readFile(filePath)];
248
+ case 8:
249
+ mintJsonFileContent = (_c.sent()).toString();
250
+ _c.label = 9;
251
+ case 9:
252
+ _c.trys.push([9, 12, , 13]);
253
+ mintConfig = JSON.parse(mintJsonFileContent);
254
+ _b = mintValidation.validateMintConfig(mintConfig), status_1 = _b.status, errors = _b.errors, warnings = _b.warnings;
255
+ errors.forEach(function (error) {
256
+ console.error("\uD83D\uDEA8 ".concat(Chalk.red(error)));
257
+ });
258
+ warnings.forEach(function (warning) {
259
+ console.warn("\u26A0\uFE0F ".concat(Chalk.yellow(warning)));
260
+ });
261
+ if (!(status_1 === 'success')) return [3 /*break*/, 11];
262
+ return [4 /*yield*/, fse.copy(filePath, targetPath)];
263
+ case 10:
264
+ _c.sent();
265
+ _c.label = 11;
266
+ case 11: return [3 /*break*/, 13];
267
+ case 12:
268
+ e_1 = _c.sent();
269
+ error = e_1;
270
+ if (error.name === 'SyntaxError') {
271
+ console.error("\uD83D\uDEA8 ".concat(Chalk.red('mint.json has invalid JSON. You are likely missing a comma or a bracket. You can paste your mint.json file into https://jsonlint.com/ to get a more specific error message.')));
272
+ }
273
+ else {
274
+ console.error("\uD83D\uDEA8 ".concat(Chalk.red(error.message)));
275
+ }
276
+ return [3 /*break*/, 13];
277
+ case 13: return [3 /*break*/, 23];
278
+ case 14:
279
+ isOpenApi = false;
280
+ return [4 /*yield*/, openApiCheck(filePath)];
281
+ case 15:
282
+ openApiInfo = _c.sent();
283
+ isOpenApi = openApiInfo.isOpenApi;
284
+ if (!isOpenApi) return [3 /*break*/, 17];
285
+ // TODO: Instead of re-generating all openApi files, optimize by just updating the specific file that changed.
286
+ return [4 /*yield*/, updateOpenApiFiles()];
287
+ case 16:
288
+ // TODO: Instead of re-generating all openApi files, optimize by just updating the specific file that changed.
289
+ _c.sent();
290
+ regenerateNav = true;
291
+ category = 'openApi';
292
+ _c.label = 17;
293
+ case 17: return [3 /*break*/, 23];
294
+ case 18: return [4 /*yield*/, isFileSizeValid(filePath, 5)];
295
+ case 19:
296
+ if (!_c.sent()) return [3 /*break*/, 21];
297
+ return [4 /*yield*/, fse.copy(filePath, targetPath)];
298
+ case 20:
299
+ _c.sent();
300
+ return [3 /*break*/, 22];
301
+ case 21:
302
+ console.error(Chalk.red("\uD83D\uDEA8 The file at ".concat(filename, " is too big. The maximum file size is 5 mb.")));
303
+ _c.label = 22;
304
+ case 22: return [3 /*break*/, 23];
305
+ case 23:
306
+ if (!regenerateNav) return [3 /*break*/, 25];
307
+ // TODO: Instead of re-generating the entire nav, optimize by just updating the specific page that changed.
308
+ return [4 /*yield*/, updateGeneratedNav()];
309
+ case 24:
310
+ // TODO: Instead of re-generating the entire nav, optimize by just updating the specific page that changed.
311
+ _c.sent();
312
+ _c.label = 25;
313
+ case 25: return [2 /*return*/, category];
314
+ }
315
+ });
316
+ }); };
317
+ export default listener;
@@ -1,2 +1,2 @@
1
- export declare const updateGeneratedNav: () => Promise<void>;
2
- export declare const updateOpenApiFiles: () => Promise<void>;
1
+ export declare const updateGeneratedNav: () => Promise<void>;
2
+ export declare const updateOpenApiFiles: () => Promise<void>;