Skip to content

Commit bc2acb7

Browse files
committed
Improve dynamic downloading by prefetching package.json
1 parent 5fad91f commit bc2acb7

File tree

4 files changed

+19
-20
lines changed

4 files changed

+19
-20
lines changed

packages/app/src/sandbox/eval/npm/fetch-npm-module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,10 +300,10 @@ async function findDependencyVersion(
300300
const packageJSON =
301301
manager.transpiledModules[foundPackageJSONPath] &&
302302
manager.transpiledModules[foundPackageJSONPath].module.code;
303-
const { version, name } = JSON.parse(packageJSON);
303+
const { version } = JSON.parse(packageJSON);
304304

305305
if (packageJSON !== '//empty.js') {
306-
return { packageJSONPath: foundPackageJSONPath, version, name };
306+
return { packageJSONPath: foundPackageJSONPath, version };
307307
}
308308
} catch (e) {
309309
/* do nothing */

packages/app/src/sandbox/version-resolving/index.js renamed to packages/app/src/sandbox/version-resolving/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { resolveDependencyInfo } from './resolve-dependency';
22
import { mergeDependencies } from './merge-dependency';
33

4-
export async function getDependencyVersions(dependencies) {
4+
export async function getDependencyVersions(dependencies: {
5+
[depName: string]: string;
6+
}) {
57
const depInfos = await Promise.all(
68
Object.keys(dependencies).map(depName =>
79
resolveDependencyInfo(depName, dependencies[depName])

packages/app/src/sandbox/version-resolving/merge-dependency.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { uniq } from 'lodash-es';
22
import * as semver from 'semver';
33

4-
interface ILambdaResponse {
4+
export interface ILambdaResponse {
55
contents: {
6-
[path: string]: string;
6+
[path: string]: { content: string };
77
};
88
dependency: {
99
name: string;
@@ -35,7 +35,7 @@ interface IDepDepInfo {
3535
}
3636

3737
interface IResponse {
38-
contents: { [path: string]: string };
38+
contents: { [path: string]: { content: string } };
3939
dependencies: Array<{ name: string; version: string }>;
4040
dependencyAliases: { [dep: string]: { [dep: string]: string } };
4141
dependencyDependencies: {

packages/app/src/sandbox/version-resolving/resolve-dependency.ts

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Cache from 'lru-cache';
2+
import { ILambdaResponse } from './merge-dependency';
23

34
const packageJSONCache: Cache.Cache<string, Promise<any>> = new Cache({
45
max: 100,
@@ -73,34 +74,30 @@ async function getDependencyDependencies(
7374
return peerDependencyResult;
7475
}
7576

76-
interface IResponse {
77-
contents: {};
78-
dependency: {
79-
name: string;
80-
version: string;
81-
};
82-
peerDependencies: { [name: string]: string };
83-
dependencyDependencies: IPeerDependencyResult;
84-
}
85-
8677
export async function resolveDependencyInfo(dep: string, version: string) {
87-
const response: IResponse = {
78+
const packageJSON = await getPackageJSON(dep, version);
79+
const response: ILambdaResponse = {
8880
contents: {},
8981
dependency: {
9082
name: dep,
91-
version,
83+
version: packageJSON.version,
9284
},
9385
peerDependencies: {},
9486
dependencyDependencies: {},
87+
dependencyAliases: {},
9588
};
9689

97-
const packageJSON = await getPackageJSON(dep, version);
9890
response.peerDependencies = packageJSON.peerDependencies;
99-
10091
response.dependencyDependencies = await getDependencyDependencies(
10192
dep,
10293
version
10394
);
10495

96+
response.contents = {
97+
[`/node_modules/${dep}/package.json`]: {
98+
content: JSON.stringify(packageJSON, null, 2),
99+
},
100+
};
101+
105102
return response;
106103
}

0 commit comments

Comments
 (0)