@modern-js/app-tools 2.50.0 → 2.51.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. package/dist/cjs/analyze/getServerRoutes.js +4 -3
  2. package/dist/cjs/commands/deploy.js +1 -0
  3. package/dist/cjs/hooks.js +1 -0
  4. package/dist/cjs/index.js +3 -1
  5. package/dist/cjs/plugins/deploy/dependencies/index.js +217 -0
  6. package/dist/cjs/plugins/deploy/dependencies/utils.js +165 -0
  7. package/dist/cjs/plugins/deploy/index.js +64 -0
  8. package/dist/cjs/plugins/deploy/platforms/netlify.js +136 -0
  9. package/dist/cjs/plugins/deploy/platforms/netlifyEntry.js +60 -0
  10. package/dist/cjs/plugins/deploy/platforms/node.js +90 -0
  11. package/dist/cjs/plugins/deploy/platforms/nodeEntry.js +44 -0
  12. package/dist/cjs/plugins/deploy/platforms/platform.js +16 -0
  13. package/dist/cjs/plugins/deploy/platforms/vercel.js +148 -0
  14. package/dist/cjs/plugins/deploy/platforms/vercelEntry.js +60 -0
  15. package/dist/cjs/plugins/deploy/utils.js +81 -0
  16. package/dist/cjs/utils/routes.js +7 -2
  17. package/dist/esm/analyze/getServerRoutes.js +5 -4
  18. package/dist/esm/commands/deploy.js +7 -1
  19. package/dist/esm/hooks.js +1 -0
  20. package/dist/esm/index.js +3 -1
  21. package/dist/esm/plugins/deploy/dependencies/index.js +580 -0
  22. package/dist/esm/plugins/deploy/dependencies/utils.js +407 -0
  23. package/dist/esm/plugins/deploy/index.js +135 -0
  24. package/dist/esm/plugins/deploy/platforms/netlify.js +291 -0
  25. package/dist/esm/plugins/deploy/platforms/netlifyEntry.js +202 -0
  26. package/dist/esm/plugins/deploy/platforms/node.js +124 -0
  27. package/dist/esm/plugins/deploy/platforms/nodeEntry.js +107 -0
  28. package/dist/esm/plugins/deploy/platforms/platform.js +0 -0
  29. package/dist/esm/plugins/deploy/platforms/vercel.js +225 -0
  30. package/dist/esm/plugins/deploy/platforms/vercelEntry.js +202 -0
  31. package/dist/esm/plugins/deploy/utils.js +47 -0
  32. package/dist/esm/utils/routes.js +6 -2
  33. package/dist/esm-node/analyze/getServerRoutes.js +5 -4
  34. package/dist/esm-node/commands/deploy.js +1 -0
  35. package/dist/esm-node/hooks.js +1 -0
  36. package/dist/esm-node/index.js +3 -1
  37. package/dist/esm-node/plugins/deploy/dependencies/index.js +183 -0
  38. package/dist/esm-node/plugins/deploy/dependencies/utils.js +124 -0
  39. package/dist/esm-node/plugins/deploy/index.js +44 -0
  40. package/dist/esm-node/plugins/deploy/platforms/netlify.js +102 -0
  41. package/dist/esm-node/plugins/deploy/platforms/netlifyEntry.js +68 -0
  42. package/dist/esm-node/plugins/deploy/platforms/node.js +56 -0
  43. package/dist/esm-node/plugins/deploy/platforms/nodeEntry.js +43 -0
  44. package/dist/esm-node/plugins/deploy/platforms/platform.js +0 -0
  45. package/dist/esm-node/plugins/deploy/platforms/vercel.js +114 -0
  46. package/dist/esm-node/plugins/deploy/platforms/vercelEntry.js +68 -0
  47. package/dist/esm-node/plugins/deploy/utils.js +44 -0
  48. package/dist/esm-node/utils/routes.js +6 -2
  49. package/dist/types/defineConfig.d.ts +1 -1
  50. package/dist/types/plugins/deploy/dependencies/index.d.ts +1 -0
  51. package/dist/types/plugins/deploy/dependencies/utils.d.ts +31 -0
  52. package/dist/types/plugins/deploy/index.d.ts +4 -0
  53. package/dist/types/plugins/deploy/platforms/netlify.d.ts +2 -0
  54. package/dist/types/plugins/deploy/platforms/netlifyEntry.d.ts +2 -0
  55. package/dist/types/plugins/deploy/platforms/node.d.ts +2 -0
  56. package/dist/types/plugins/deploy/platforms/nodeEntry.d.ts +1 -0
  57. package/dist/types/plugins/deploy/platforms/platform.d.ts +10 -0
  58. package/dist/types/plugins/deploy/platforms/vercel.d.ts +2 -0
  59. package/dist/types/plugins/deploy/platforms/vercelEntry.d.ts +2 -0
  60. package/dist/types/plugins/deploy/utils.d.ts +20 -0
  61. package/dist/types/types/hooks.d.ts +1 -0
  62. package/dist/types/utils/routes.d.ts +3 -3
  63. package/package.json +26 -22
@@ -0,0 +1,407 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
3
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
4
+ import path from "path";
5
+ import os from "node:os";
6
+ import { fs as fse } from "@modern-js/utils";
7
+ import { parseNodeModulePath } from "mlly";
8
+ import { nodeFileTrace, resolve } from "@vercel/nft";
9
+ function applyPublicCondition(pkg) {
10
+ var _pkg_publishConfig;
11
+ if (pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig = pkg.publishConfig) === null || _pkg_publishConfig === void 0 ? void 0 : _pkg_publishConfig.exports) {
12
+ var _pkg_publishConfig1;
13
+ pkg.exports = pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig1 = pkg.publishConfig) === null || _pkg_publishConfig1 === void 0 ? void 0 : _pkg_publishConfig1.exports;
14
+ }
15
+ }
16
+ var writePackage = function() {
17
+ var _ref = _async_to_generator(function(pkg, version, projectDir, _pkgPath) {
18
+ var pkgPath, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, src, subpath, dest, dirname, subpath1, dest1, dirname1, err, pkgJSON, packageJsonPath;
19
+ return _ts_generator(this, function(_state) {
20
+ switch (_state.label) {
21
+ case 0:
22
+ pkgPath = _pkgPath || pkg.name;
23
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
24
+ _state.label = 1;
25
+ case 1:
26
+ _state.trys.push([
27
+ 1,
28
+ 10,
29
+ 11,
30
+ 12
31
+ ]);
32
+ _iterator = pkg.versions[version].files[Symbol.iterator]();
33
+ _state.label = 2;
34
+ case 2:
35
+ if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done))
36
+ return [
37
+ 3,
38
+ 9
39
+ ];
40
+ src = _step.value;
41
+ if (!src.includes("node_modules"))
42
+ return [
43
+ 3,
44
+ 5
45
+ ];
46
+ subpath = parseNodeModulePath(src).subpath;
47
+ dest = path.join(projectDir, "node_modules", pkgPath, subpath);
48
+ dirname = path.dirname(dest);
49
+ return [
50
+ 4,
51
+ fse.ensureDir(dirname)
52
+ ];
53
+ case 3:
54
+ _state.sent();
55
+ return [
56
+ 4,
57
+ fse.copyFile(src, dest)
58
+ ];
59
+ case 4:
60
+ _state.sent();
61
+ return [
62
+ 3,
63
+ 8
64
+ ];
65
+ case 5:
66
+ subpath1 = path.relative(pkg.versions[version].path, src);
67
+ dest1 = path.join(projectDir, "node_modules", pkgPath, subpath1);
68
+ dirname1 = path.dirname(dest1);
69
+ return [
70
+ 4,
71
+ fse.ensureDir(dirname1)
72
+ ];
73
+ case 6:
74
+ _state.sent();
75
+ return [
76
+ 4,
77
+ fse.copyFile(src, dest1)
78
+ ];
79
+ case 7:
80
+ _state.sent();
81
+ _state.label = 8;
82
+ case 8:
83
+ _iteratorNormalCompletion = true;
84
+ return [
85
+ 3,
86
+ 2
87
+ ];
88
+ case 9:
89
+ return [
90
+ 3,
91
+ 12
92
+ ];
93
+ case 10:
94
+ err = _state.sent();
95
+ _didIteratorError = true;
96
+ _iteratorError = err;
97
+ return [
98
+ 3,
99
+ 12
100
+ ];
101
+ case 11:
102
+ try {
103
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
104
+ _iterator.return();
105
+ }
106
+ } finally {
107
+ if (_didIteratorError) {
108
+ throw _iteratorError;
109
+ }
110
+ }
111
+ return [
112
+ 7
113
+ ];
114
+ case 12:
115
+ pkgJSON = pkg.versions[version].pkgJSON;
116
+ applyPublicCondition(pkgJSON);
117
+ packageJsonPath = path.join(projectDir, "node_modules", pkgPath, "package.json");
118
+ return [
119
+ 4,
120
+ fse.ensureDir(path.dirname(packageJsonPath))
121
+ ];
122
+ case 13:
123
+ _state.sent();
124
+ return [
125
+ 4,
126
+ fse.writeFile(packageJsonPath, JSON.stringify(pkgJSON, null, 2))
127
+ ];
128
+ case 14:
129
+ _state.sent();
130
+ return [
131
+ 2
132
+ ];
133
+ }
134
+ });
135
+ });
136
+ return function writePackage2(pkg, version, projectDir, _pkgPath) {
137
+ return _ref.apply(this, arguments);
138
+ };
139
+ }();
140
+ var isWindows = os.platform() === "win32";
141
+ var linkPackage = function() {
142
+ var _ref = _async_to_generator(function(from, to, projectRootDir) {
143
+ var src, dest, dstStat, exists;
144
+ return _ts_generator(this, function(_state) {
145
+ switch (_state.label) {
146
+ case 0:
147
+ src = path.join(projectRootDir, "node_modules", from);
148
+ dest = path.join(projectRootDir, "node_modules", to);
149
+ return [
150
+ 4,
151
+ fse.lstat(dest).catch(function() {
152
+ return null;
153
+ })
154
+ ];
155
+ case 1:
156
+ dstStat = _state.sent();
157
+ exists = dstStat === null || dstStat === void 0 ? void 0 : dstStat.isSymbolicLink();
158
+ if (exists) {
159
+ return [
160
+ 2
161
+ ];
162
+ }
163
+ return [
164
+ 4,
165
+ fse.mkdir(path.dirname(dest), {
166
+ recursive: true
167
+ })
168
+ ];
169
+ case 2:
170
+ _state.sent();
171
+ return [
172
+ 4,
173
+ fse.symlink(path.relative(path.dirname(dest), src), dest, isWindows ? "junction" : "dir").catch(function(error) {
174
+ console.error("Cannot link", from, "to", to, error);
175
+ })
176
+ ];
177
+ case 3:
178
+ _state.sent();
179
+ return [
180
+ 2
181
+ ];
182
+ }
183
+ });
184
+ });
185
+ return function linkPackage2(from, to, projectRootDir) {
186
+ return _ref.apply(this, arguments);
187
+ };
188
+ }();
189
+ var readDirRecursive = function() {
190
+ var _ref = _async_to_generator(function(dir) {
191
+ var options, filter, files, filesAndDirs;
192
+ var _arguments = arguments;
193
+ return _ts_generator(this, function(_state) {
194
+ switch (_state.label) {
195
+ case 0:
196
+ options = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {};
197
+ filter = options.filter;
198
+ return [
199
+ 4,
200
+ fse.readdir(dir, {
201
+ withFileTypes: true
202
+ })
203
+ ];
204
+ case 1:
205
+ files = _state.sent();
206
+ return [
207
+ 4,
208
+ Promise.all(files.map(function() {
209
+ var _ref2 = _async_to_generator(function(file) {
210
+ var resolvedPath;
211
+ return _ts_generator(this, function(_state2) {
212
+ resolvedPath = path.resolve(dir, file.name);
213
+ if (file.isDirectory()) {
214
+ return [
215
+ 2,
216
+ readDirRecursive(resolvedPath, options)
217
+ ];
218
+ } else {
219
+ return [
220
+ 2,
221
+ filter && !filter(resolvedPath) ? [] : resolvedPath
222
+ ];
223
+ }
224
+ return [
225
+ 2
226
+ ];
227
+ });
228
+ });
229
+ return function(file) {
230
+ return _ref2.apply(this, arguments);
231
+ };
232
+ }()))
233
+ ];
234
+ case 2:
235
+ filesAndDirs = _state.sent();
236
+ return [
237
+ 2,
238
+ filesAndDirs.flat()
239
+ ];
240
+ }
241
+ });
242
+ });
243
+ return function readDirRecursive2(dir) {
244
+ return _ref.apply(this, arguments);
245
+ };
246
+ }();
247
+ var isFile = function() {
248
+ var _ref = _async_to_generator(function(file) {
249
+ var stat, error;
250
+ return _ts_generator(this, function(_state) {
251
+ switch (_state.label) {
252
+ case 0:
253
+ _state.trys.push([
254
+ 0,
255
+ 2,
256
+ ,
257
+ 3
258
+ ]);
259
+ return [
260
+ 4,
261
+ fse.stat(file)
262
+ ];
263
+ case 1:
264
+ stat = _state.sent();
265
+ return [
266
+ 2,
267
+ stat.isFile()
268
+ ];
269
+ case 2:
270
+ error = _state.sent();
271
+ if (error.code === "ENOENT") {
272
+ return [
273
+ 2,
274
+ false
275
+ ];
276
+ }
277
+ throw error;
278
+ case 3:
279
+ return [
280
+ 2
281
+ ];
282
+ }
283
+ });
284
+ });
285
+ return function isFile2(file) {
286
+ return _ref.apply(this, arguments);
287
+ };
288
+ }();
289
+ var findEntryFiles = function() {
290
+ var _ref = _async_to_generator(function(rootDir, entryFilter) {
291
+ var files;
292
+ return _ts_generator(this, function(_state) {
293
+ switch (_state.label) {
294
+ case 0:
295
+ return [
296
+ 4,
297
+ readDirRecursive(rootDir, {
298
+ filter: entryFilter
299
+ })
300
+ ];
301
+ case 1:
302
+ files = _state.sent();
303
+ return [
304
+ 2,
305
+ files.filter(function(file) {
306
+ return file.endsWith(".mjs") || file.endsWith(".cjs") || file.endsWith(".js");
307
+ })
308
+ ];
309
+ }
310
+ });
311
+ });
312
+ return function findEntryFiles2(rootDir, entryFilter) {
313
+ return _ref.apply(this, arguments);
314
+ };
315
+ }();
316
+ var findPackageParents = function(pkg, version, tracedFiles) {
317
+ var versionFiles = pkg.versions[version].files.map(function(path2) {
318
+ return tracedFiles[path2];
319
+ });
320
+ var parentPkgs = _to_consumable_array(new Set(versionFiles.flatMap(function(file) {
321
+ return file.parents.map(function(parentPath) {
322
+ var parentFile = tracedFiles[parentPath];
323
+ if (!parentFile || parentFile.pkgName === pkg.name) {
324
+ return null;
325
+ }
326
+ return "".concat(parentFile.pkgName, "@").concat(parentFile.pkgVersion);
327
+ }).filter(Boolean);
328
+ })));
329
+ return parentPkgs;
330
+ };
331
+ var traceFiles = function() {
332
+ var _ref = _async_to_generator(function(entryFiles, serverRootDir) {
333
+ var base;
334
+ var _arguments = arguments;
335
+ return _ts_generator(this, function(_state) {
336
+ switch (_state.label) {
337
+ case 0:
338
+ base = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : "/";
339
+ return [
340
+ 4,
341
+ nodeFileTrace(entryFiles, {
342
+ base,
343
+ processCwd: serverRootDir,
344
+ resolve: function() {
345
+ var _ref2 = _async_to_generator(function(id, parent, job, isCjs) {
346
+ return _ts_generator(this, function(_state2) {
347
+ if (id.startsWith("@modern-js/prod-server")) {
348
+ return [
349
+ 2,
350
+ require.resolve(id, {
351
+ paths: [
352
+ require.resolve("@modern-js/app-tools")
353
+ ]
354
+ })
355
+ ];
356
+ } else {
357
+ return [
358
+ 2,
359
+ resolve(id, parent, job, isCjs)
360
+ ];
361
+ }
362
+ return [
363
+ 2
364
+ ];
365
+ });
366
+ });
367
+ return function(id, parent, job, isCjs) {
368
+ return _ref2.apply(this, arguments);
369
+ };
370
+ }()
371
+ })
372
+ ];
373
+ case 1:
374
+ return [
375
+ 2,
376
+ _state.sent()
377
+ ];
378
+ }
379
+ });
380
+ });
381
+ return function traceFiles2(entryFiles, serverRootDir) {
382
+ return _ref.apply(this, arguments);
383
+ };
384
+ }();
385
+ var resolveTracedPath = function() {
386
+ var _ref = _async_to_generator(function(base, p) {
387
+ return _ts_generator(this, function(_state) {
388
+ return [
389
+ 2,
390
+ fse.realpath(path.resolve(base, p))
391
+ ];
392
+ });
393
+ });
394
+ return function resolveTracedPath2(base, p) {
395
+ return _ref.apply(this, arguments);
396
+ };
397
+ }();
398
+ export {
399
+ findEntryFiles,
400
+ findPackageParents,
401
+ isFile,
402
+ linkPackage,
403
+ readDirRecursive,
404
+ resolveTracedPath,
405
+ traceFiles,
406
+ writePackage
407
+ };
@@ -0,0 +1,135 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
+ import { provider } from "std-env";
4
+ import { getProjectUsage } from "./utils";
5
+ import { createNodePreset } from "./platforms/node";
6
+ import { createVercelPreset } from "./platforms/vercel";
7
+ import { createNetlifyPreset } from "./platforms/netlify";
8
+ var deployPresets = {
9
+ node: createNodePreset,
10
+ vercel: createVercelPreset,
11
+ netlify: createNetlifyPreset
12
+ };
13
+ function getDeployPreset(appContext, modernConfig, deployTarget) {
14
+ return _getDeployPreset.apply(this, arguments);
15
+ }
16
+ function _getDeployPreset() {
17
+ _getDeployPreset = _async_to_generator(function(appContext, modernConfig, deployTarget) {
18
+ var appDirectory, distDirectory, _getProjectUsage, useSSR, useAPI, useWebServer, needModernServer, createPreset;
19
+ return _ts_generator(this, function(_state) {
20
+ appDirectory = appContext.appDirectory, distDirectory = appContext.distDirectory;
21
+ _getProjectUsage = getProjectUsage(appDirectory, distDirectory), useSSR = _getProjectUsage.useSSR, useAPI = _getProjectUsage.useAPI, useWebServer = _getProjectUsage.useWebServer;
22
+ needModernServer = useSSR || useAPI || useWebServer;
23
+ createPreset = deployPresets[deployTarget];
24
+ if (!createPreset) {
25
+ throw new Error("Unknown deploy target: '".concat(deployTarget, "'. MODERNJS_DEPLOY should be 'node', 'vercel', or 'netlify'."));
26
+ }
27
+ return [
28
+ 2,
29
+ createPreset(appContext, modernConfig, needModernServer)
30
+ ];
31
+ });
32
+ });
33
+ return _getDeployPreset.apply(this, arguments);
34
+ }
35
+ function deploy_default() {
36
+ return {
37
+ name: "@modern-js/plugin-deploy",
38
+ setup: function(api) {
39
+ var deployTarget = process.env.MODERNJS_DEPLOY || provider || "node";
40
+ return {
41
+ deploy: function deploy() {
42
+ return _async_to_generator(function() {
43
+ var appContext, metaName, modernConfig, deployPreset, _tmp, _tmp1, _tmp2, _tmp3;
44
+ return _ts_generator(this, function(_state) {
45
+ switch (_state.label) {
46
+ case 0:
47
+ appContext = api.useAppContext();
48
+ metaName = appContext.metaName;
49
+ if (metaName !== "modern-js" && !process.env.MODERNJS_DEPLOY) {
50
+ return [
51
+ 2
52
+ ];
53
+ }
54
+ modernConfig = api.useResolvedConfigContext();
55
+ return [
56
+ 4,
57
+ getDeployPreset(appContext, modernConfig, deployTarget)
58
+ ];
59
+ case 1:
60
+ deployPreset = _state.sent();
61
+ _tmp = deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.prepare;
62
+ if (!_tmp)
63
+ return [
64
+ 3,
65
+ 3
66
+ ];
67
+ return [
68
+ 4,
69
+ deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.prepare()
70
+ ];
71
+ case 2:
72
+ _tmp = _state.sent();
73
+ _state.label = 3;
74
+ case 3:
75
+ _tmp;
76
+ _tmp1 = deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.writeOutput;
77
+ if (!_tmp1)
78
+ return [
79
+ 3,
80
+ 5
81
+ ];
82
+ return [
83
+ 4,
84
+ deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.writeOutput()
85
+ ];
86
+ case 4:
87
+ _tmp1 = _state.sent();
88
+ _state.label = 5;
89
+ case 5:
90
+ _tmp1;
91
+ _tmp2 = deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.genEntry;
92
+ if (!_tmp2)
93
+ return [
94
+ 3,
95
+ 7
96
+ ];
97
+ return [
98
+ 4,
99
+ deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.genEntry()
100
+ ];
101
+ case 6:
102
+ _tmp2 = _state.sent();
103
+ _state.label = 7;
104
+ case 7:
105
+ _tmp2;
106
+ _tmp3 = deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.end;
107
+ if (!_tmp3)
108
+ return [
109
+ 3,
110
+ 9
111
+ ];
112
+ return [
113
+ 4,
114
+ deployPreset === null || deployPreset === void 0 ? void 0 : deployPreset.end()
115
+ ];
116
+ case 8:
117
+ _tmp3 = _state.sent();
118
+ _state.label = 9;
119
+ case 9:
120
+ _tmp3;
121
+ return [
122
+ 2
123
+ ];
124
+ }
125
+ });
126
+ })();
127
+ }
128
+ };
129
+ }
130
+ };
131
+ }
132
+ ;
133
+ export {
134
+ deploy_default as default
135
+ };