Skip to content

Commit 8eb5e8a

Browse files
committed
Fix resolving dynamic modules if no package.json exists
1 parent af11739 commit 8eb5e8a

File tree

4 files changed

+40
-23
lines changed

4 files changed

+40
-23
lines changed

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

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,13 @@ function getUnpkgUrl(name: string, version: string, forceJsDelivr?: boolean) {
106106
: `https://unpkg.com/${nameWithoutAlias}@${version}`;
107107
}
108108

109-
function getMeta(name: string, packageJSONPath: string, version: string) {
109+
function getMeta(
110+
name: string,
111+
packageJSONPath: string | null,
112+
version: string
113+
) {
110114
const nameWithoutAlias = name.replace(ALIAS_REGEX, '');
111-
const id = `${packageJSONPath}@${version}`;
115+
const id = `${packageJSONPath || name}@${version}`;
112116
if (metas[id]) {
113117
return metas[id];
114118
}
@@ -262,12 +266,22 @@ function resolvePath(
262266
});
263267
}
264268

269+
type DependencyVersionResult =
270+
| {
271+
version: string;
272+
packageJSONPath: string;
273+
}
274+
| {
275+
version: string;
276+
packageJSONPath: null;
277+
};
278+
265279
async function findDependencyVersion(
266280
currentTModule: TranspiledModule,
267281
manager: Manager,
268282
defaultExtensions: Array<string> = ['js', 'jsx', 'json'],
269283
dependencyName: string
270-
) {
284+
): Promise<DependencyVersionResult | null> {
271285
const manifest = manager.manifest;
272286

273287
try {
@@ -330,7 +344,7 @@ export default async function fetchModule(
330344
dependencyName
331345
);
332346

333-
if (!versionInfo) {
347+
if (versionInfo === null) {
334348
throw new DependencyNotFoundError(path);
335349
}
336350

packages/app/src/sandbox/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ requirePolyfills().then(() => {
110110
hasActions: false,
111111
template: x.data.template,
112112
version: 3,
113+
disableDependencyPreprocessing: true,
113114
};
114115

115116
compile(data);

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

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,27 @@ import * as semver from 'semver';
33

44
interface ILambdaResponse {
55
contents: {
6-
[path: string]: string,
6+
[path: string]: string;
77
};
88
dependency: {
9-
name: string,
10-
version: string,
9+
name: string;
10+
version: string;
1111
};
1212
peerDependencies: {
13-
[dep: string]: string,
13+
[dep: string]: string;
1414
};
1515
dependencyDependencies: {
1616
[dep: string]: {
17-
semver: string,
18-
resolved: string,
19-
parents: string[],
20-
entries: string[],
21-
},
17+
semver: string;
18+
resolved: string;
19+
parents: string[];
20+
entries: string[];
21+
};
2222
};
2323
dependencyAliases: {
2424
[dep: string]: {
25-
[dep: string]: string,
26-
},
25+
[dep: string]: string;
26+
};
2727
};
2828
}
2929

@@ -36,10 +36,10 @@ interface IDepDepInfo {
3636

3737
interface IResponse {
3838
contents: { [path: string]: string };
39-
dependencies: Array<{ name: string, version: string }>;
39+
dependencies: Array<{ name: string; version: string }>;
4040
dependencyAliases: { [dep: string]: { [dep: string]: string } };
4141
dependencyDependencies: {
42-
[dep: string]: IDepDepInfo,
42+
[dep: string]: IDepDepInfo;
4343
};
4444
}
4545

@@ -93,6 +93,7 @@ function replaceDependencyInfo(
9393
depDepName: string,
9494
newDepDep: IDepDepInfo
9595
) {
96+
// eslint-disable-next-line
9697
console.log(
9798
'Resolving conflict for ' +
9899
depDepName +
@@ -111,6 +112,7 @@ function replaceDependencyInfo(
111112
r.dependencyDependencies[newPath] = r.dependencyDependencies[depDepName];
112113
delete r.dependencyDependencies[depDepName];
113114

115+
// eslint-disable-next-line
114116
for (const n of Object.keys(r.dependencyDependencies)) {
115117
r.dependencyDependencies[n].parents = r.dependencyDependencies[
116118
n

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ function getLatestVersionForSemver(dep: string, version: string) {
2626

2727
interface IPeerDependencyResult {
2828
[dep: string]: {
29-
semver: string,
30-
resolved: string,
31-
parents: string[],
32-
entries: string[],
29+
semver: string;
30+
resolved: string;
31+
parents: string[];
32+
entries: string[];
3333
};
3434
}
3535

@@ -76,8 +76,8 @@ async function getDependencyDependencies(
7676
interface IResponse {
7777
contents: {};
7878
dependency: {
79-
name: string,
80-
version: string,
79+
name: string;
80+
version: string;
8181
};
8282
peerDependencies: { [name: string]: string };
8383
dependencyDependencies: IPeerDependencyResult;

0 commit comments

Comments
 (0)