@mintlify/previewing 4.0.10 → 4.0.11

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