Skip to content

Commit 1eebca6

Browse files
committed
feat: improve ts support
1 parent 0edb65d commit 1eebca6

10 files changed

Lines changed: 78 additions & 75 deletions

File tree

cloc.js renamed to cloc.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
const { spawn } = require('child_process');
1+
import { spawn } from 'node:child_process';
22

3-
const exclude_folders = [
3+
const excludeFolders = [
44
'node_modules',
55
'.git',
66
'.idea',
@@ -17,21 +17,21 @@ const exclude_folders = [
1717
'coverage',
1818
'seo_report',
1919
'.storybook',
20-
'test-reports'
20+
'test-reports',
2121
];
2222

23-
const exclude_ext = ['json'];
23+
const excludeExt = ['json'];
2424

25-
const cl = spawn('cloc', [`--exclude-dir=${exclude_folders.join(',')}`, `--exclude-ext=${exclude_ext.join(',')}`, '.']);
25+
const cl = spawn('cloc', [`--exclude-dir=${excludeFolders.join(',')}`, `--exclude-ext=${excludeExt.join(',')}`, '.']);
2626

27-
cl.stdout.on('data', data => {
27+
cl.stdout.on('data', (data: Buffer) => {
2828
console.log(`stdout: ${data}`);
2929
});
3030

31-
cl.stderr.on('data', data => {
31+
cl.stderr.on('data', (data: Buffer) => {
3232
console.log(`stderr: ${data}`);
3333
});
3434

35-
cl.on('close', code => {
35+
cl.on('close', (code: number | null) => {
3636
console.log(`child process exited with code ${code}`);
3737
});

e2e/babel-e2e/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"lint": "npm run lint:ts && npm run lint:code",
1616
"lint:code": "eslint .",
1717
"lint:ts": "tsc --noEmit",
18-
"test": "node scripts.test.cjs"
18+
"test": "tsx scripts.test.ts"
1919
},
2020
"dependencies": {
2121
"@rockpack/babel": "8.0.0",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { tester } = require('@rockpack/tester');
1+
import { tester } from '@rockpack/tester';
22

33
tester(
44
{},

e2e/starter-e2e/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"lint": "npm run lint:ts && npm run lint:code",
1616
"lint:code": "eslint .",
1717
"lint:ts": "tsc --noEmit",
18-
"test": "node --experimental-vm-modules scripts.test.cjs"
18+
"test": "NODE_OPTIONS='--experimental-vm-modules' tsx scripts.test.ts"
1919
},
2020
"dependencies": {
2121
"@rockpack/tester": "8.0.0",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { tester } = require('@rockpack/tester');
1+
import { tester } from '@rockpack/tester';
22

33
tester(
44
{},

package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
"lint": "lerna run lint",
2222
"format": "lerna run format",
2323
"production": "lerna run production",
24-
"test": "lerna run test --stream"
24+
"test": "lerna run test --stream",
25+
"cloc": "tsx cloc.ts",
26+
"updater": "tsx updater.ts",
27+
"version:set": "tsx version.ts"
2528
},
2629
"simple-git-hooks": {
2730
"pre-commit": "npm run lint",

packages/compiler/src/configs/eslintrc.js

Lines changed: 0 additions & 22 deletions
This file was deleted.

packages/tester/src/configs/config-compiler.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import deepExtend from 'deep-extend';
66
import { existsSync } from 'node:fs';
77
import { createRequire } from 'node:module';
88
import path from 'node:path';
9+
import { fileURLToPath } from 'node:url';
910

1011
import type { TesterOptions } from '../default-props.js';
1112

@@ -14,7 +15,7 @@ import { createTestMatch } from '../modules/create-test-match.js';
1415

1516
const _require = createRequire(import.meta.url);
1617

17-
const rootFolder = path.resolve(__dirname, '..');
18+
const rootFolder = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
1819
const currentProjectFolder = getRootRequireDir();
1920
const ext = import.meta.url.endsWith('.mjs') ? '.mjs' : '.cjs';
2021

@@ -67,7 +68,7 @@ export const configCompiler = (
6768
'\\.(css|less|scss|sss|styl)$': `${rootFolder}/modules/identity-obj-proxy${ext}`,
6869
},
6970
setupFiles,
70-
setupFilesAfterEnv: [require.resolve('@rockpack/utils/polyfills/text-encoder.fix'), ...setupFilesAfterEnv],
71+
setupFilesAfterEnv: [_require.resolve('@rockpack/utils/polyfills/text-encoder.fix'), ...setupFilesAfterEnv],
7172
testEnvironment: 'jsdom',
7273
testPathIgnorePatterns: ['<rootDir>/(build|dist|temp|docs|documentation|public|node_modules)/'],
7374
transform: {
@@ -89,7 +90,7 @@ export const configCompiler = (
8990
config['reporters'] = [
9091
'default',
9192
[
92-
require.resolve('jest-html-reporters'),
93+
_require.resolve('jest-html-reporters'),
9394
{
9495
expand: true,
9596
filename: 'jest_reporter.html',

updater.mjs renamed to updater.ts

Lines changed: 38 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,22 @@ import { writeFileSync, readFileSync } from 'node:fs';
44
import { dirname, join } from 'node:path';
55
import sortPackageJson from 'sort-package-json';
66

7-
async function updateAllDeps() {
7+
type PackageJson = {
8+
name: string;
9+
version: string;
10+
dependencies?: Record<string, string>;
11+
devDependencies?: Record<string, string>;
12+
[key: string]: unknown;
13+
};
14+
15+
type VersionEntry = {
16+
name: string;
17+
version: string;
18+
};
19+
20+
type VersionsJson = Record<string, Record<string, Record<string, VersionEntry[]>>>;
21+
22+
async function updateAllDeps(): Promise<void> {
823
const paths = [
924
'./e2e/babel-e2e/package.json',
1025
'./e2e/starter-e2e/package.json',
@@ -46,24 +61,21 @@ async function updateAllDeps() {
4661
'./packages/utils/package.json',
4762
];
4863

49-
const fields = ['dependencies', 'devDependencies'];
64+
const fields: ReadonlyArray<'dependencies' | 'devDependencies'> = ['dependencies', 'devDependencies'];
5065

51-
const pkgs = paths.map((p) => {
52-
const data = readFileSync(p, 'utf8');
53-
return {
54-
data: JSON.parse(data),
55-
path: p,
56-
};
57-
});
66+
const pkgs = paths.map((p) => ({
67+
data: JSON.parse(readFileSync(p, 'utf8')) as PackageJson,
68+
path: p,
69+
}));
5870

5971
for (let i = 0; i < pkgs.length; i++) {
6072
const pkg = pkgs[i].data;
6173
const p = pkgs[i].path;
6274
for (let y = 0; y < fields.length; y++) {
6375
const field = fields[y];
64-
const deps = pkg[field] || {};
76+
const deps = pkg[field] ?? {};
6577
const names = Object.keys(deps);
66-
const forUpdate = {};
78+
const forUpdate: Record<string, string> = {};
6779
for (let j = 0; j < names.length; j++) {
6880
const dep = names[j];
6981
if (dep.indexOf('@rockpack/') !== -1) {
@@ -88,9 +100,7 @@ async function updateAllDeps() {
88100
console.warn(`[${pkg.name}] package.json will be updated`);
89101
const sorted = sortPackageJson({
90102
...pkg,
91-
...{
92-
[field]: { ...deps, ...forUpdate },
93-
},
103+
[field]: { ...deps, ...forUpdate },
94104
});
95105

96106
if (p.indexOf('starter-e2e') > 0) {
@@ -110,7 +120,9 @@ async function updateAllDeps() {
110120

111121
if (indexA >= 0 && indexB >= 0) {
112122
[orderedKeys[indexA], orderedKeys[indexB]] = [orderedKeys[indexB], orderedKeys[indexA]];
113-
sorted.devDependencies = Object.fromEntries(orderedKeys.map((key) => [key, sorted.devDependencies[key]]));
123+
sorted.devDependencies = Object.fromEntries(
124+
orderedKeys.map((key) => [key, (sorted.devDependencies as Record<string, string>)[key]]),
125+
);
114126
}
115127
}
116128
}
@@ -122,29 +134,30 @@ async function updateAllDeps() {
122134
}
123135
}
124136

125-
async function updateStarterDeps() {
137+
async function updateStarterDeps(): Promise<void> {
126138
const pth = './packages/starter/src/versions.json';
127139

128-
const data = JSON.parse(readFileSync(pth, 'utf8'));
140+
const data = JSON.parse(readFileSync(pth, 'utf8')) as VersionsJson;
129141
let wasUpdated = false;
130142

131143
console.log('---');
132144
console.log('Dependencies checking in @rockpack/starter');
133145
console.log('---');
134146

135-
for (let type in data) {
136-
for (let variations in data[type]) {
137-
for (let depType in data[type][variations]) {
147+
for (const type in data) {
148+
for (const variations in data[type]) {
149+
for (const depType in data[type][variations]) {
138150
const dependencies = data[type][variations][depType];
139151

140-
for (let dependency of dependencies) {
152+
for (const dependency of dependencies) {
141153
const { name, version } = dependency;
142154
const newVersion = await latestVersion(name);
143-
const { major } = parse(newVersion);
155+
const parsed = parse(newVersion);
156+
const major = parsed?.major ?? 0;
144157

145-
if (major > version) {
158+
if (major > Number(version)) {
146159
console.log(`[${name}] will be updated from ${version} to ${major}`);
147-
const index = dependencies.findIndex(({ name }) => name === dependency.name);
160+
const index = dependencies.findIndex(({ name: n }) => n === dependency.name);
148161
dependencies[index] = { name, version: `${major}` };
149162
wasUpdated = true;
150163
}
@@ -158,7 +171,7 @@ async function updateStarterDeps() {
158171
}
159172
}
160173

161-
async function bootstrap() {
174+
async function bootstrap(): Promise<void> {
162175
await updateAllDeps();
163176
await updateStarterDeps();
164177
}

version.js renamed to version.ts

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
1-
const yargs = require('yargs');
2-
const { hideBin } = require('yargs/helpers');
3-
const { join } = require('path');
4-
const { writeFileSync } = require('fs');
5-
const { EOL } = require('os');
1+
import yargs from 'yargs';
2+
import { hideBin } from 'yargs/helpers';
3+
import { join } from 'node:path';
4+
import { writeFileSync, readFileSync } from 'node:fs';
5+
import { EOL } from 'node:os';
66

7-
const argv = yargs(hideBin(process.argv)).parse();
7+
type PackageJson = {
8+
name?: string;
9+
version: string;
10+
dependencies?: Record<string, string>;
11+
devDependencies?: Record<string, string>;
12+
[key: string]: unknown;
13+
};
14+
15+
const argv = yargs(hideBin(process.argv)).parseSync();
816

917
if (argv._.length !== 1) {
1018
throw new Error('Provide version x.x.x to the argument');
1119
}
1220

13-
const version = argv._[0];
21+
const version = String(argv._[0]);
1422
const part = version.split('-')[0];
1523
const format = part.split('.');
1624

@@ -63,9 +71,9 @@ const projects = [
6371
'./package.json',
6472
];
6573

66-
for (let projectPath of projects) {
67-
const pthPackageJson = join(__dirname, projectPath);
68-
const file = require(pthPackageJson);
74+
for (const projectPath of projects) {
75+
const pthPackageJson = join(process.cwd(), projectPath);
76+
const file = JSON.parse(readFileSync(pthPackageJson, 'utf8')) as PackageJson;
6977
const { dependencies, devDependencies } = file;
7078
const depKeys = dependencies ? Object.keys(dependencies) : [];
7179
const devDepKeys = devDependencies ? Object.keys(devDependencies) : [];
@@ -75,11 +83,11 @@ for (let projectPath of projects) {
7583
file.version = version;
7684

7785
depKeysExisted.forEach((k) => {
78-
file.dependencies[k] = version;
86+
(file.dependencies as Record<string, string>)[k] = version;
7987
});
8088

8189
devDepKeysExisted.forEach((k) => {
82-
file.devDependencies[k] = version;
90+
(file.devDependencies as Record<string, string>)[k] = version;
8391
});
8492

8593
writeFileSync(pthPackageJson, JSON.stringify(file, null, 2) + EOL, 'utf-8');

0 commit comments

Comments
 (0)