Skip to content

Commit b7abdc1

Browse files
committed
feat: add version check script and update starter package versions
1 parent 1e8675e commit b7abdc1

File tree

6 files changed

+96
-5
lines changed

6 files changed

+96
-5
lines changed

.changeset/config.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
"@objectql/sdk",
1313
"@objectql/server",
1414
"@objectql/types",
15-
"@objectql/platform-node"
15+
"@objectql/platform-node",
16+
"@objectql/starter-basic",
17+
"@objectql/starter-express-api",
18+
"@objectql/starter-enterprise"
1619
]
1720
],
1821
"linked": [],

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
"private": true,
44
"scripts": {
55
"build": "tsc -b && pnpm -r run build",
6-
"test": "pnpm -r run test",
6+
"check-versions": "node scripts/check-versions.js",
7+
"test": "pnpm run check-versions && pnpm -r run test",
78
"studio": "node packages/cli/dist/index.js studio --dir examples/starters/basic-script",
89
"changeset": "changeset",
910
"version": "changeset version",

packages/starters/basic/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@objectql/starter-basic",
3-
"version": "7.0.0",
3+
"version": "1.6.0",
44
"license": "MIT",
55
"author": "ObjectQL Contributors",
66
"repository": {

packages/starters/enterprise/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@objectql/starter-enterprise",
3-
"version": "2.0.0",
3+
"version": "1.6.0",
44
"license": "MIT",
55
"author": "ObjectQL Contributors",
66
"repository": {

packages/starters/express-api/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@objectql/starter-express-api",
3-
"version": "1.1.5",
3+
"version": "1.6.0",
44
"license": "MIT",
55
"author": "ObjectQL Contributors",
66
"repository": {

scripts/check-versions.js

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
const fs = require('fs');
2+
const path = require('path');
3+
4+
const rootDir = path.resolve(__dirname, '..');
5+
const packagesDir = path.join(rootDir, 'packages');
6+
7+
function findPackageJsons(dir, fileList = []) {
8+
const files = fs.readdirSync(dir);
9+
files.forEach(file => {
10+
const filePath = path.join(dir, file);
11+
const stat = fs.statSync(filePath);
12+
if (stat.isDirectory()) {
13+
if (file !== 'node_modules' && file !== 'dist') {
14+
findPackageJsons(filePath, fileList);
15+
}
16+
} else {
17+
if (file === 'package.json') {
18+
fileList.push(filePath);
19+
}
20+
}
21+
});
22+
return fileList;
23+
}
24+
25+
const packageJsonFiles = findPackageJsons(packagesDir);
26+
const packageVersions = {};
27+
28+
packageJsonFiles.forEach(file => {
29+
const content = JSON.parse(fs.readFileSync(file, 'utf8'));
30+
if (content.name && !content.private) { // Only check public packages or those explicitly in the list
31+
packageVersions[content.name] = {
32+
version: content.version,
33+
path: file
34+
};
35+
} else if (content.name && content.name.startsWith('@objectql/starter-')) {
36+
// Include starters even if they might be private (though we set them public earlier)
37+
packageVersions[content.name] = {
38+
version: content.version,
39+
path: file
40+
};
41+
}
42+
});
43+
44+
// Load changeset config
45+
const changesetConfigPath = path.join(rootDir, '.changeset', 'config.json');
46+
if (!fs.existsSync(changesetConfigPath)) {
47+
console.warn("No .changeset/config.json found, skipping check.");
48+
process.exit(0);
49+
}
50+
51+
const changesetConfig = JSON.parse(fs.readFileSync(changesetConfigPath, 'utf8'));
52+
const fixedGroups = changesetConfig.fixed || [];
53+
54+
let hasError = false;
55+
56+
fixedGroups.forEach((group, index) => {
57+
const versionsInGroup = new Set();
58+
const details = [];
59+
60+
group.forEach(pkgName => {
61+
if (packageVersions[pkgName]) {
62+
const v = packageVersions[pkgName].version;
63+
versionsInGroup.add(v);
64+
details.push(`${pkgName}: ${v}`);
65+
}
66+
});
67+
68+
if (versionsInGroup.size > 1) {
69+
console.error(`Error: Version mismatch in fixed group ${index + 1}:`);
70+
details.forEach(d => console.error(` - ${d}`));
71+
hasError = true;
72+
} else if (versionsInGroup.size === 1) {
73+
const v = Array.from(versionsInGroup)[0];
74+
console.log(`✓ Group ${index + 1} synchronized at version ${v} (${details.length} packages)`);
75+
}
76+
});
77+
78+
const packageJson = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf8'));
79+
const rootVersion = packageJson.version;
80+
// Optionally check if root version matches the packages?
81+
// Usually monorepo root version matches the main release version.
82+
83+
if (hasError) {
84+
process.exit(1);
85+
} else {
86+
console.log("All fixed package groups are synchronized.");
87+
}

0 commit comments

Comments
 (0)