workgraph 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +252 -0
- package/dist/affected.d.ts +7 -0
- package/dist/affected.js +61 -0
- package/dist/affected.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +329 -0
- package/dist/cli.js.map +1 -0
- package/dist/executor.d.ts +3 -0
- package/dist/executor.js +156 -0
- package/dist/executor.js.map +1 -0
- package/dist/graph.d.ts +5 -0
- package/dist/graph.js +98 -0
- package/dist/graph.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/planner.d.ts +4 -0
- package/dist/planner.js +58 -0
- package/dist/planner.js.map +1 -0
- package/dist/types.d.ts +69 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/watcher.d.ts +4 -0
- package/dist/watcher.js +109 -0
- package/dist/watcher.js.map +1 -0
- package/dist/workspace.d.ts +4 -0
- package/dist/workspace.js +117 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.loadWorkspaceProjects = loadWorkspaceProjects;
|
|
37
|
+
exports.getProjectFromPath = getProjectFromPath;
|
|
38
|
+
exports.isRootConfig = isRootConfig;
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const glob_1 = require("glob");
|
|
42
|
+
async function loadWorkspaceProjects(root) {
|
|
43
|
+
const rootPkgPath = path.join(root, 'package.json');
|
|
44
|
+
if (!fs.existsSync(rootPkgPath)) {
|
|
45
|
+
throw new Error(`No package.json found at ${root}`);
|
|
46
|
+
}
|
|
47
|
+
const rootPkg = JSON.parse(fs.readFileSync(rootPkgPath, 'utf-8'));
|
|
48
|
+
const workspacePatterns = rootPkg.workspaces || [];
|
|
49
|
+
if (workspacePatterns.length === 0) {
|
|
50
|
+
throw new Error('No workspaces defined in package.json');
|
|
51
|
+
}
|
|
52
|
+
const projects = new Map();
|
|
53
|
+
const seenNames = new Map();
|
|
54
|
+
for (const pattern of workspacePatterns) {
|
|
55
|
+
const matches = await (0, glob_1.glob)(pattern, {
|
|
56
|
+
cwd: root,
|
|
57
|
+
absolute: false,
|
|
58
|
+
});
|
|
59
|
+
for (const match of matches) {
|
|
60
|
+
const projectPath = match;
|
|
61
|
+
const absolutePath = path.resolve(root, match);
|
|
62
|
+
const pkgJsonPath = path.join(absolutePath, 'package.json');
|
|
63
|
+
if (!fs.existsSync(pkgJsonPath)) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8'));
|
|
67
|
+
if (!pkgJson.name) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (seenNames.has(pkgJson.name)) {
|
|
71
|
+
throw new Error(`Duplicate project name "${pkgJson.name}" found at:\n` +
|
|
72
|
+
` - ${seenNames.get(pkgJson.name)}\n` +
|
|
73
|
+
` - ${projectPath}`);
|
|
74
|
+
}
|
|
75
|
+
seenNames.set(pkgJson.name, projectPath);
|
|
76
|
+
projects.set(pkgJson.name, {
|
|
77
|
+
name: pkgJson.name,
|
|
78
|
+
path: projectPath,
|
|
79
|
+
absolutePath,
|
|
80
|
+
packageJson: pkgJson,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return projects;
|
|
85
|
+
}
|
|
86
|
+
function getProjectFromPath(filePath, projects, root) {
|
|
87
|
+
const absoluteFilePath = path.isAbsolute(filePath)
|
|
88
|
+
? filePath
|
|
89
|
+
: path.resolve(root, filePath);
|
|
90
|
+
let longestMatch = null;
|
|
91
|
+
let longestLength = 0;
|
|
92
|
+
for (const [name, project] of projects) {
|
|
93
|
+
if (absoluteFilePath.startsWith(project.absolutePath + path.sep)) {
|
|
94
|
+
if (project.absolutePath.length > longestLength) {
|
|
95
|
+
longestLength = project.absolutePath.length;
|
|
96
|
+
longestMatch = name;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return longestMatch;
|
|
101
|
+
}
|
|
102
|
+
function isRootConfig(filePath, root) {
|
|
103
|
+
const absoluteFilePath = path.isAbsolute(filePath)
|
|
104
|
+
? filePath
|
|
105
|
+
: path.resolve(root, filePath);
|
|
106
|
+
const relativePath = path.relative(root, absoluteFilePath);
|
|
107
|
+
const rootConfigs = [
|
|
108
|
+
'package.json',
|
|
109
|
+
'package-lock.json',
|
|
110
|
+
'pnpm-lock.yaml',
|
|
111
|
+
'yarn.lock',
|
|
112
|
+
'tsconfig.json',
|
|
113
|
+
'tsconfig.base.json',
|
|
114
|
+
];
|
|
115
|
+
return rootConfigs.includes(relativePath) || !relativePath.includes(path.sep);
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "workgraph",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Lightweight workspace dependency graph and parallel build orchestrator for monorepos",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"workgraph": "dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "tsc --watch",
|
|
13
|
+
"prepublishOnly": "npm run build"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"monorepo",
|
|
17
|
+
"workspace",
|
|
18
|
+
"build",
|
|
19
|
+
"orchestrator",
|
|
20
|
+
"parallel",
|
|
21
|
+
"dependency",
|
|
22
|
+
"graph",
|
|
23
|
+
"watch",
|
|
24
|
+
"npm",
|
|
25
|
+
"yarn",
|
|
26
|
+
"pnpm",
|
|
27
|
+
"turborepo",
|
|
28
|
+
"nx",
|
|
29
|
+
"lerna"
|
|
30
|
+
],
|
|
31
|
+
"author": "asutov@outlook.com",
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=18.0.0"
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"dist",
|
|
38
|
+
"README.md",
|
|
39
|
+
"LICENSE"
|
|
40
|
+
],
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"chokidar": "^3.6.0",
|
|
43
|
+
"commander": "^12.0.0",
|
|
44
|
+
"glob": "^10.0.0"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/node": "^22.10.7",
|
|
48
|
+
"typescript": "^5.7.3"
|
|
49
|
+
}
|
|
50
|
+
}
|