Skip to content

Commit 8a746a5

Browse files
committed
feat: utils to ts
1 parent 4fd2b70 commit 8a746a5

23 files changed

Lines changed: 221 additions & 108 deletions

package-lock.json

Lines changed: 5 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/babel/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@
5959
"@babel/preset-typescript": "7.28.5",
6060
"@babel/traverse": "7.29.0",
6161
"@rockpack/tsconfig": "8.0.0",
62-
"@rockpack/utils": "8.0.0",
6362
"babel-plugin-add-import-extension": "1.6.0",
6463
"babel-plugin-react-compiler": "1.0.0",
6564
"babel-plugin-transform-typescript-metadata": "0.4.0",

packages/codestyle/src/declarations.d.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,3 @@ declare module 'eslint-plugin-no-only-tests' {
33
const plugin: ESLint.Plugin;
44
export = plugin;
55
}
6-
7-
declare module '@rockpack/utils' {
8-
export const getMode: (modes?: readonly string[], defaultMode?: string) => string;
9-
}

packages/starter/lib/packageJSONPreparing.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,10 @@ export const packageJSONPreparing = async (packageJSON, { appType, tester, nogit
125125

126126
if (appType === 'library' || appType === 'component') {
127127
packageJSON = addScripts(packageJSON, {
128-
analyzer: 'node scripts.build --analyzer',
129-
build: 'node scripts.build --mode=production',
130-
'build:example': 'node example/scripts.build --mode=production',
131-
start: 'node example/scripts.build',
128+
analyzer: 'node scripts.build.js --analyzer',
129+
build: 'node scripts.build.js --mode=production',
130+
'build:example': 'node example/scripts.build.js --mode=production',
131+
start: 'node example/scripts.build.js',
132132
});
133133

134134
const examplePath = path.resolve(currentPath, 'example');
@@ -150,9 +150,9 @@ export const packageJSONPreparing = async (packageJSON, { appType, tester, nogit
150150
await writePackageJSON(examplePath, packageJSONExample);
151151
} else {
152152
packageJSON = addScripts(packageJSON, {
153-
analyzer: 'node scripts.build --analyzer',
154-
build: 'node scripts.build --mode=production',
155-
start: 'node scripts.build',
153+
analyzer: 'node scripts.build.js --analyzer',
154+
build: 'node scripts.build.js --mode=production',
155+
start: 'node scripts.build.js',
156156
});
157157
}
158158

packages/utils/index.js

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

packages/utils/package.json

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,48 @@
1717
},
1818
"license": "MIT",
1919
"author": "Aleksandrov Sergey <gooddev.sergey@gmail.com> (https://github.com/AlexSergey/rockpack)",
20-
"main": "index.js",
20+
"type": "module",
21+
"exports": {
22+
".": {
23+
"import": "./lib/esm/index.mjs",
24+
"require": "./lib/cjs/index.cjs",
25+
"types": "./types/index.d.ts"
26+
},
27+
"./polyfills/text-encoder.fix": {
28+
"import": "./lib/esm/polyfills/text-encoder.fix.mjs",
29+
"require": "./lib/cjs/polyfills/text-encoder.fix.cjs",
30+
"types": "./types/polyfills/text-encoder.fix.d.ts"
31+
}
32+
},
33+
"main": "./lib/cjs/index.cjs",
34+
"module": "./lib/esm/index.mjs",
35+
"types": "./types/index.d.ts",
2136
"files": [
22-
"polyfills",
23-
"utils"
37+
"src/polyfills",
38+
"src/utils"
2439
],
2540
"scripts": {
26-
"format": "npm run format:eslint",
27-
"format:eslint": "eslint . --fix",
28-
"lint": "eslint .",
41+
"build": "npm run build:esm && npm run build:cjs && npm run build:types",
42+
"build:cjs": "node scripts/build.cjs.mjs",
43+
"build:esm": "node scripts/build.mjs",
44+
"build:types": "tsc -p tsconfig.types.json",
45+
"format": "npm run format:code",
46+
"format:code": "eslint . --fix",
47+
"lint": "npm run lint:ts && npm run lint:code",
48+
"lint:code": "eslint .",
49+
"lint:ts": "tsc --noEmit",
2950
"production": "npm run lint && npm publish --access public"
3051
},
3152
"dependencies": {
32-
"require-main-filename": "2.0.0",
3353
"semver": "7.8.0",
3454
"valid-types": "2.0.5",
3555
"yargs": "18.0.0"
3656
},
57+
"devDependencies": {
58+
"@types/node": "24.10.13",
59+
"@types/semver": "7.7.1",
60+
"@types/yargs": "17.0.35"
61+
},
3762
"engines": {
3863
"node": ">=23.0.0"
3964
}

packages/utils/polyfills/text-encoder.fix.js

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { transformFileSync } from '@babel/core';
2+
import { mkdirSync, readdirSync, writeFileSync } from 'node:fs';
3+
import { createRequire } from 'node:module';
4+
import { dirname, extname, join, relative, resolve } from 'node:path';
5+
import { fileURLToPath } from 'node:url';
6+
7+
const _require = createRequire(import.meta.url);
8+
const __dirname = dirname(fileURLToPath(import.meta.url));
9+
const root = resolve(__dirname, '..');
10+
const srcDir = resolve(root, 'src');
11+
const outDir = resolve(root, 'lib/cjs');
12+
13+
const babelOptions = {
14+
babelrc: false,
15+
configFile: false,
16+
plugins: [
17+
[_require.resolve('babel-plugin-add-import-extension'), { extension: 'cjs' }],
18+
[_require.resolve('@babel/plugin-transform-modules-commonjs')],
19+
],
20+
presets: [[_require.resolve('@babel/preset-typescript')]],
21+
};
22+
23+
const collectFiles = (dir) => {
24+
const entries = readdirSync(dir, { withFileTypes: true });
25+
return entries.flatMap((entry) => {
26+
const fullPath = join(dir, entry.name);
27+
return entry.isDirectory() ? collectFiles(fullPath) : [fullPath];
28+
});
29+
};
30+
31+
const files = collectFiles(srcDir).filter((f) => {
32+
const ext = extname(f);
33+
if (f.endsWith('.d.ts') || f.endsWith('.d.cts')) return false;
34+
return ext === '.ts' || ext === '.tsx' || ext === '.cts';
35+
});
36+
37+
for (const file of files) {
38+
const result = transformFileSync(file, babelOptions);
39+
const rel = relative(srcDir, file);
40+
const outFile = join(outDir, rel.replace(/\.(tsx?|cts)$/, '.cjs'));
41+
mkdirSync(dirname(outFile), { recursive: true });
42+
writeFileSync(outFile, result.code);
43+
}
44+
45+
console.log(`CJS: built ${files.length} file(s) → ${outDir}`);

packages/utils/scripts/build.mjs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { transformFileSync } from '@babel/core';
2+
import { mkdirSync, readdirSync, writeFileSync } from 'node:fs';
3+
import { createRequire } from 'node:module';
4+
import { dirname, extname, join, relative, resolve } from 'node:path';
5+
import { fileURLToPath } from 'node:url';
6+
7+
const _require = createRequire(import.meta.url);
8+
const __dirname = dirname(fileURLToPath(import.meta.url));
9+
const root = resolve(__dirname, '..');
10+
const srcDir = resolve(root, 'src');
11+
const outDir = resolve(root, 'lib/esm');
12+
13+
const babelOptions = {
14+
babelrc: false,
15+
configFile: false,
16+
plugins: [[_require.resolve('babel-plugin-add-import-extension'), { extension: 'mjs' }]],
17+
presets: [
18+
[_require.resolve('@babel/preset-env'), { modules: false, targets: { node: 'current' } }],
19+
[_require.resolve('@babel/preset-typescript')],
20+
],
21+
};
22+
23+
const collectFiles = (dir) => {
24+
const entries = readdirSync(dir, { withFileTypes: true });
25+
return entries.flatMap((entry) => {
26+
const fullPath = join(dir, entry.name);
27+
return entry.isDirectory() ? collectFiles(fullPath) : [fullPath];
28+
});
29+
};
30+
31+
const files = collectFiles(srcDir).filter((f) => {
32+
const ext = extname(f);
33+
return (ext === '.ts' || ext === '.tsx') && !f.endsWith('.d.ts');
34+
});
35+
36+
for (const file of files) {
37+
const result = transformFileSync(file, babelOptions);
38+
const rel = relative(srcDir, file);
39+
const outFile = join(outDir, rel.replace(/\.tsx?$/, '.mjs'));
40+
mkdirSync(dirname(outFile), { recursive: true });
41+
writeFileSync(outFile, result.code);
42+
}
43+
44+
console.log(`ESM: built ${files.length} file(s) → ${outDir}`);

packages/utils/src/declarations.d.ts

Whitespace-only changes.

0 commit comments

Comments
 (0)