Skip to content

Commit e46b6ad

Browse files
committed
Move common code to helpers
1 parent 2c0a135 commit e46b6ad

File tree

3 files changed

+32
-42
lines changed

3 files changed

+32
-42
lines changed

scripts/build-entries/helpers.mjs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { sort } from './get-dependencies.mjs';
2+
import { proposals } from './entries-definitions.mjs';
3+
4+
export function modulesToStage(stableModules, x) {
5+
return sort([
6+
...stableModules,
7+
...Object.values(proposals).flatMap(({ stage, modules }) => stage >= x ? modules : []),
8+
]);
9+
}
10+
11+
export function expandModules(modules, filter, allModules) {
12+
if (!Array.isArray(modules)) modules = [modules];
13+
modules = modules.flatMap(it => it instanceof RegExp ? allModules.filter(path => it.test(path)) : [it]);
14+
if (filter) modules = modules.filter(it => typeof it != 'string' || filter.has(it));
15+
return modules;
16+
}

scripts/build-entries/index.mjs

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,17 @@
1-
import { getModulesMetadata, sort } from './get-dependencies.mjs';
1+
import { getModulesMetadata } from './get-dependencies.mjs';
22
import { features, proposals } from './entries-definitions.mjs';
33
import { $proposal, $path, wrapEntry } from './templates.mjs';
44
import { modules as AllModules } from '@core-js/compat/src/data.mjs';
5+
import { expandModules, modulesToStage } from './helpers.mjs';
56

67
const { mkdir, writeFile, readJson, writeJson } = fs;
78
const { dirname } = path;
89
const { cyan, green } = chalk;
910

10-
function modulesToStage(x) {
11-
return sort([
12-
...StableModules,
13-
...Object.values(proposals).flatMap(({ stage, modules }) => stage >= x ? modules : []),
14-
]);
15-
}
16-
1711
const ESModules = AllModules.filter(it => it.startsWith('es.'));
1812
const ESWithProposalsModules = AllModules.filter(it => it.startsWith('es'));
1913
const StableModules = AllModules.filter(it => it.match(/^(?:es|web)\./));
20-
const ActualModules = modulesToStage(3);
14+
const ActualModules = modulesToStage(StableModules, 3);
2115

2216
const ESSet = new Set(ESModules);
2317
const ESWithProposalsSet = new Set(ESWithProposalsModules);
@@ -40,13 +34,6 @@ const entriesMap = AllModules.reduce((memo, it) => {
4034
return memo;
4135
}, {});
4236

43-
function expandModules(modules, filter) {
44-
if (!Array.isArray(modules)) modules = [modules];
45-
modules = modules.flatMap(it => it instanceof RegExp ? AllModules.filter(path => it.test(path)) : [it]);
46-
if (filter) modules = modules.filter(it => typeof it != 'string' || filter.has(it));
47-
return modules;
48-
}
49-
5037
async function buildEntry(entry, options) {
5138
let {
5239
entryFromNamespace,
@@ -73,11 +60,11 @@ async function buildEntry(entry, options) {
7360
filter ??= ESWithProposalsSet;
7461
}
7562

76-
if (!enforceEntryCreation && !expandModules(modules[0], filter).length) return;
63+
if (!enforceEntryCreation && !expandModules(modules[0], filter, AllModules).length) return;
7764

7865
const rawModules = modules;
7966

80-
modules = expandModules(modules, filter);
67+
modules = expandModules(modules, filter, AllModules);
8168

8269
const level = entry.split('/').length - 1;
8370

@@ -127,9 +114,9 @@ for (const [name, definition] of Object.entries(proposals)) {
127114
}
128115

129116
await buildEntry('stage/3', { template: $path, modules: ActualModules, subset: 'es-stage' });
130-
await buildEntry('stage/2.7', { template: $path, modules: modulesToStage(2.7), subset: 'es-stage' });
131-
await buildEntry('stage/2', { template: $path, modules: modulesToStage(2), subset: 'es-stage' });
132-
await buildEntry('stage/1', { template: $path, modules: modulesToStage(1), subset: 'es-stage' });
117+
await buildEntry('stage/2.7', { template: $path, modules: modulesToStage(StableModules, 2.7), subset: 'es-stage' });
118+
await buildEntry('stage/2', { template: $path, modules: modulesToStage(StableModules, 2), subset: 'es-stage' });
119+
await buildEntry('stage/1', { template: $path, modules: modulesToStage(StableModules, 1), subset: 'es-stage' });
133120
await buildEntry('stage/0', { template: $path, modules: AllModules, subset: 'es-stage' });
134121

135122
await buildEntry('es/index', { template: $path, modules: ESModules, subset: 'es' });

scripts/build-types/index.mjs

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,16 @@
11
import { features, proposals } from '../build-entries/entries-definitions.mjs';
22
import { $path, $proposal } from '../build-entries/templates.mjs';
33
import { modules as AllModules } from '@core-js/compat/src/data.mjs';
4-
import { getModulesMetadata, sort } from '../build-entries/get-dependencies.mjs';
4+
import { getModulesMetadata } from '../build-entries/get-dependencies.mjs';
55
import config from './config.mjs';
66
import { argv, path, fs } from 'zx';
7+
import { expandModules, modulesToStage } from '../build-entries/helpers.mjs';
78

89
const { copy, outputFile, pathExists, readdir, remove } = fs;
910

1011
const versionArg = argv._.find(item => item.startsWith('version='));
1112
const VERSION = versionArg ? versionArg.slice('version='.length) : undefined;
1213

13-
function modulesToStage(x) {
14-
return sort([
15-
...StableModules,
16-
...Object.values(proposals).flatMap(({ stage, modules }) => stage >= x ? modules : []),
17-
]);
18-
}
19-
20-
function expandModules(modules, filter) {
21-
if (!Array.isArray(modules)) modules = [modules];
22-
modules = modules.flatMap(it => it instanceof RegExp ? AllModules.filter(p => it.test(p)) : [it]);
23-
if (filter) modules = modules.filter(it => typeof it != 'string' || filter.has(it));
24-
return modules;
25-
}
26-
2714
async function buildType(typeFilePath, entry, options) {
2815
let {
2916
entryFromNamespace,
@@ -50,11 +37,11 @@ async function buildType(typeFilePath, entry, options) {
5037
filter ??= ESWithProposalsSet;
5138
}
5239

53-
if (!enforceEntryCreation && !expandModules(modules[0], filter).length) return;
40+
if (!enforceEntryCreation && !expandModules(modules[0], filter, AllModules).length) return;
5441

5542
const rawModules = modules;
5643

57-
modules = expandModules(modules, filter);
44+
modules = expandModules(modules, filter, AllModules);
5845

5946
const level = entry.split('/').length - 1;
6047

@@ -102,7 +89,7 @@ async function addImports(filePath, fromPath) {
10289
const ESModules = AllModules.filter(it => it.startsWith('es.'));
10390
const ESWithProposalsModules = AllModules.filter(it => it.startsWith('es'));
10491
const StableModules = AllModules.filter(it => it.match(/^(?:es|web)\./));
105-
const ActualModules = modulesToStage(3);
92+
const ActualModules = modulesToStage(StableModules, 3);
10693

10794
const ESSet = new Set(ESModules);
10895
const ESWithProposalsSet = new Set(ESWithProposalsModules);
@@ -131,9 +118,9 @@ async function buildTypesForTSVersion(tsVersion) {
131118
}
132119

133120
await buildType(bundlePath, 'stage/3', { template: $path, modules: ActualModules, subset: 'es-stage' });
134-
await buildType(bundlePath, 'stage/2.7', { template: $path, modules: modulesToStage(2.7), subset: 'es-stage' });
135-
await buildType(bundlePath, 'stage/2', { template: $path, modules: modulesToStage(2), subset: 'es-stage' });
136-
await buildType(bundlePath, 'stage/1', { template: $path, modules: modulesToStage(1), subset: 'es-stage' });
121+
await buildType(bundlePath, 'stage/2.7', { template: $path, modules: modulesToStage(StableModules, 2.7), subset: 'es-stage' });
122+
await buildType(bundlePath, 'stage/2', { template: $path, modules: modulesToStage(StableModules, 2), subset: 'es-stage' });
123+
await buildType(bundlePath, 'stage/1', { template: $path, modules: modulesToStage(StableModules, 1), subset: 'es-stage' });
137124
await buildType(bundlePath, 'stage/0', { template: $path, modules: AllModules, subset: 'es-stage' });
138125

139126
await buildType(bundlePath, 'es/index', { template: $path, modules: ESModules, subset: 'es' });

0 commit comments

Comments
 (0)