@modern-js/app-tools 2.50.0 → 2.51.0

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 (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
+ };