Skip to content

Commit

Permalink
feat: auto sync package's optionalDependencies (#399)
Browse files Browse the repository at this point in the history
closes #397
  • Loading branch information
fengmk2 committed Feb 9, 2023
1 parent db8995a commit 07a19cf
Show file tree
Hide file tree
Showing 3 changed files with 280 additions and 2 deletions.
8 changes: 6 additions & 2 deletions app/core/service/PackageSyncerService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -607,10 +607,14 @@ export class PackageSyncerService extends AbstractService {
logs = [];
await rm(localFile, { force: true });
if (!skipDependencies) {
const dependencies = item.dependencies || {};
const dependencies: Record<string, string> = item.dependencies || {};
for (const dependencyName in dependencies) {
dependenciesSet.add(dependencyName);
}
const optionalDependencies: Record<string, string> = item.optionalDependencies || {};
for (const dependencyName in optionalDependencies) {
dependenciesSet.add(dependencyName);
}
}
}
// try to read package entity again after first sync
Expand Down Expand Up @@ -737,7 +741,7 @@ export class PackageSyncerService extends AbstractService {

// 5. add deps sync task
for (const dependencyName of dependenciesSet) {
const existsTask = await this.taskRepository.findTaskByTargetName(fullname, TaskType.SyncPackage, TaskState.Waiting);
const existsTask = await this.taskRepository.findTaskByTargetName(dependencyName, TaskType.SyncPackage, TaskState.Waiting);
if (existsTask) {
logs.push(`[${isoNow()}] 📖 Has dependency "${dependencyName}" sync task: ${existsTask.taskId}, db id: ${existsTask.id}`);
continue;
Expand Down
21 changes: 21 additions & 0 deletions test/core/service/PackageSyncerService/executeTask.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,27 @@ describe('test/core/service/PackageSyncerService/executeTask.test.ts', () => {
app.mockAgent().assertNoPendingInterceptors();
});

it('should sync package optionalDependencies', async () => {
const name = 'resvg-js';
const task = await packageSyncerService.createTask(name);
app.mockHttpclient('https://registry.npmjs.org/resvg-js', 'GET', {
data: await TestUtil.readFixturesFile('registry.npmjs.org/resvg-js.json'),
persist: false,
});
app.mockHttpclient('https://registry.npmjs.org/resvg-js/-/resvg-js-2.4.0.tgz', 'GET', {
data: await TestUtil.readFixturesFile('registry.npmjs.org/foobar/-/foobar-1.0.0.tgz'),
persist: false,
});
assert.equal(task.targetName, name);
await packageSyncerService.executeTask(task);
app.mockAgent().assertNoPendingInterceptors();
const stream = await packageSyncerService.findTaskLog(task);
assert(stream);
const log = await TestUtil.readStreamToLog(stream);
// console.log(log);
assert(log.includes('] 📦 Add dependency "@resvg/resvg-js-win32-x64-msvc" sync task: '));
});

it('should ignore publish error on sync task', async () => {
app.mockHttpclient('https://registry.npmjs.org/cnpmcore-test-sync-deprecated', 'GET', {
data: await TestUtil.readFixturesFile('registry.npmjs.org/cnpmcore-test-sync-deprecated.json'),
Expand Down
Loading

0 comments on commit 07a19cf

Please sign in to comment.