mor 0.0.2 → 0.1.0
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/README.md +160 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +587 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.js +56 -0
- package/dist/config.js.map +1 -0
- package/dist/db.d.ts +37 -0
- package/dist/db.js +134 -0
- package/dist/db.js.map +1 -0
- package/dist/embeddings/none.d.ts +6 -0
- package/dist/embeddings/none.js +8 -0
- package/dist/embeddings/none.js.map +1 -0
- package/dist/embeddings/ollama.d.ts +9 -0
- package/dist/embeddings/ollama.js +28 -0
- package/dist/embeddings/ollama.js.map +1 -0
- package/dist/embeddings/openai.d.ts +10 -0
- package/dist/embeddings/openai.js +33 -0
- package/dist/embeddings/openai.js.map +1 -0
- package/dist/embeddings/provider.d.ts +7 -0
- package/dist/embeddings/provider.js +15 -0
- package/dist/embeddings/provider.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +160 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +1 -0
- package/dist/mcp.js +188 -0
- package/dist/mcp.js.map +1 -0
- package/dist/memory.d.ts +20 -0
- package/dist/memory.js +124 -0
- package/dist/memory.js.map +1 -0
- package/dist/operations.d.ts +61 -0
- package/dist/operations.js +122 -0
- package/dist/operations.js.map +1 -0
- package/dist/query.d.ts +3 -0
- package/dist/query.js +44 -0
- package/dist/query.js.map +1 -0
- package/dist/remote.d.ts +35 -0
- package/dist/remote.js +77 -0
- package/dist/remote.js.map +1 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.js +241 -0
- package/dist/server.js.map +1 -0
- package/dist/types.d.ts +50 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/package.json +35 -17
- package/.dir-locals.el +0 -6
- package/.editorconfig +0 -15
- package/.eslintrc +0 -26
- package/.npmignore +0 -32
- package/LICENSE +0 -21
- package/alg/dfs.js +0 -36
- package/alg/revDfs.js +0 -36
- package/cli.js +0 -106
- package/mor-core.js +0 -60
- package/mor-link.js +0 -23
- package/mor-outdated.js +0 -26
package/cli.js
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
const doc = `Trollmor. the monolithic repository manager
|
|
4
|
-
|
|
5
|
-
Usage:
|
|
6
|
-
mor ls [<package> [--predecessors]] [--dot | --path]
|
|
7
|
-
mor path <package>...
|
|
8
|
-
mor cycles
|
|
9
|
-
mor link
|
|
10
|
-
mor pins
|
|
11
|
-
mor outdated
|
|
12
|
-
mor i | install
|
|
13
|
-
mor t | test
|
|
14
|
-
|
|
15
|
-
Options:
|
|
16
|
-
--pre, --predecessors All packages dependending on <package>
|
|
17
|
-
--dot Output as graphviz-dot
|
|
18
|
-
|
|
19
|
-
Examples:
|
|
20
|
-
mor ls --path
|
|
21
|
-
mor ls --dot | graph-easy # apt-get install libgraph-easy-perl
|
|
22
|
-
`;
|
|
23
|
-
const pjson = require('./package.json');
|
|
24
|
-
const sh = require('shelljs');
|
|
25
|
-
const dot = require('graphlib-dot');
|
|
26
|
-
const alg = require('graphlib').alg;
|
|
27
|
-
|
|
28
|
-
const core = require('./mor-core.js');
|
|
29
|
-
const outdated = require('./mor-outdated.js');
|
|
30
|
-
const link = require('./mor-link.js');
|
|
31
|
-
|
|
32
|
-
const args = require('docopt').docopt(doc, {version: pjson.version});
|
|
33
|
-
|
|
34
|
-
const logArray = arr => arr.forEach(v => console.log(v));
|
|
35
|
-
const packages = core.packages(sh.pwd());
|
|
36
|
-
const graph = core.graph(packages);
|
|
37
|
-
|
|
38
|
-
if (args.path) {
|
|
39
|
-
args['<package>'].forEach(pkg => {
|
|
40
|
-
console.log(packages.get(pkg)._path);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (args.cycles) {
|
|
45
|
-
var keepNodes = [];
|
|
46
|
-
alg.findCycles(graph).forEach(cycle => cycle.forEach(node => keepNodes.push(node)));
|
|
47
|
-
console.log(dot.write(core.graph(packages, keepNodes)));
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (args.outdated) {
|
|
51
|
-
outdated(packages);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (args.ls) {
|
|
55
|
-
let list;
|
|
56
|
-
if (args['<package>'].length) {
|
|
57
|
-
let pkg = args['<package>'][0];
|
|
58
|
-
if (args['--predecessors']) {
|
|
59
|
-
list = core.predecessors(graph, pkg);
|
|
60
|
-
} else {
|
|
61
|
-
list = core.successors(graph, pkg);
|
|
62
|
-
}
|
|
63
|
-
} else {
|
|
64
|
-
list = Array.from(packages.keys());
|
|
65
|
-
}
|
|
66
|
-
if (args['--dot']) {
|
|
67
|
-
console.log(dot.write(core.graph(packages, list)));
|
|
68
|
-
} else if (args['--path']) {
|
|
69
|
-
logArray(list.map(k => packages.get(k)._path));
|
|
70
|
-
} else {
|
|
71
|
-
logArray(list);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (args.link) {
|
|
76
|
-
link(packages, graph);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (args.test || args.t) {
|
|
80
|
-
let order = core.order(graph);
|
|
81
|
-
order.forEach(pkg => {
|
|
82
|
-
if (sh.exec(`cd ${packages.get(pkg)._path} && npm test`).code !== 0) {
|
|
83
|
-
process.exit(1);
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
outdated(packages);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (args.install || args.i) {
|
|
90
|
-
let order = core.order(graph);
|
|
91
|
-
order.forEach(pkg => {
|
|
92
|
-
console.log('\ninstall', pkg);
|
|
93
|
-
if (sh.exec(`cd ${packages.get(pkg)._path} && npm install`).code !== 0) {
|
|
94
|
-
process.exit(1);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if (args.pins) {
|
|
100
|
-
let order = core.order(graph);
|
|
101
|
-
order.forEach(pkg => {
|
|
102
|
-
let mor = packages.get(pkg).mor || {};
|
|
103
|
-
let pins = mor.pins || [];
|
|
104
|
-
pins.forEach(pin => console.log(pkg, 'has pinned', pin));
|
|
105
|
-
});
|
|
106
|
-
}
|
package/mor-core.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const _ = require('lodash');
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
const path = require('path');
|
|
5
|
-
const Graph = require('graphlib').Graph;
|
|
6
|
-
const alg = require('graphlib').alg;
|
|
7
|
-
const DFS = require('./alg/dfs');
|
|
8
|
-
const revDFS = require('./alg/revDfs.js');
|
|
9
|
-
|
|
10
|
-
const locatePackages = function (basepath) {
|
|
11
|
-
let projects = [];
|
|
12
|
-
const _tree = function (dir) {
|
|
13
|
-
try {
|
|
14
|
-
let stats = fs.statSync(dir);
|
|
15
|
-
if (stats.isFile() && path.basename(dir) === 'package.json') {
|
|
16
|
-
projects.push(dir);
|
|
17
|
-
} else if (stats.isDirectory() && path.basename(dir) !== 'node_modules') {
|
|
18
|
-
fs.readdirSync(dir).map(child => _tree(path.join(dir, child)));
|
|
19
|
-
}
|
|
20
|
-
} catch (e) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
_tree(basepath);
|
|
25
|
-
return projects;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const getPackages = function (packageFiles) {
|
|
29
|
-
let packageMap = new Map();
|
|
30
|
-
packageFiles.forEach(packageFile => {
|
|
31
|
-
let data = require(packageFile);
|
|
32
|
-
data.mor = data.mor || {pins: []};
|
|
33
|
-
data._path = path.dirname(packageFile);
|
|
34
|
-
packageMap.set(data.name, data);
|
|
35
|
-
});
|
|
36
|
-
return packageMap;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
const packagesGraph = function (packagesMap, withNodes) {
|
|
40
|
-
let g = new Graph();
|
|
41
|
-
packagesMap.forEach(pkg => {
|
|
42
|
-
g.setNode(pkg.name);
|
|
43
|
-
Object.keys(pkg.dependencies || {})
|
|
44
|
-
.concat(Object.keys(pkg.devDependencies || {}))
|
|
45
|
-
.filter(dep => packagesMap.has(dep))
|
|
46
|
-
.forEach(dep => g.setEdge(pkg.name, dep));
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
if (withNodes) {
|
|
50
|
-
let notInGraph = _.without.apply(_, [Array.from(packagesMap.keys())].concat(withNodes));
|
|
51
|
-
notInGraph.forEach(v => g.removeNode(v));
|
|
52
|
-
}
|
|
53
|
-
return g;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
exports.packages = basepath => getPackages(locatePackages(basepath));
|
|
57
|
-
exports.graph = packagesGraph;
|
|
58
|
-
exports.order = graph => alg.topsort(graph).reverse();
|
|
59
|
-
exports.predecessors = revDFS;
|
|
60
|
-
exports.successors = DFS;
|
package/mor-link.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const sh = require('shelljs');
|
|
3
|
-
const path = require('path');
|
|
4
|
-
const core = require('./mor-core.js');
|
|
5
|
-
|
|
6
|
-
module.exports = function (packages, graph) {
|
|
7
|
-
packages.forEach(pkg => {
|
|
8
|
-
let nodeModulesPath = path.join(pkg._path, 'node_modules');
|
|
9
|
-
core.successors(graph, pkg.name).forEach(successor => {
|
|
10
|
-
if (successor === pkg.name) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
if (pkg.mor.pins.indexOf(successor) >= 0) {
|
|
14
|
-
console.log(`WARN: skipping ${successor} in ${pkg.name}, it was pinned`);
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
if (successor[0] === '@') {
|
|
18
|
-
sh.mkdir('-p', path.join(nodeModulesPath, pkg.name.split('/')[0]));
|
|
19
|
-
}
|
|
20
|
-
sh.ln('-sf', packages.get(successor)._path, path.join(nodeModulesPath, successor));
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
};
|
package/mor-outdated.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
var semver = require('semver');
|
|
3
|
-
|
|
4
|
-
module.exports = function (packages) {
|
|
5
|
-
// TODO: should not exit
|
|
6
|
-
var isOutdated = false;
|
|
7
|
-
for (let pkg of packages) {
|
|
8
|
-
let deps = pkg[1].dependencies || {};
|
|
9
|
-
let pins = pkg[1].mor.pins || [];
|
|
10
|
-
Object.keys(deps).forEach(dep => {
|
|
11
|
-
if (packages.has(dep) && pins.indexOf(dep) < 0) {
|
|
12
|
-
var realVersion = packages.get(dep).version;
|
|
13
|
-
var depVersion = deps[dep];
|
|
14
|
-
var isLatest = semver.satisfies(realVersion, depVersion);
|
|
15
|
-
if (!isLatest) {
|
|
16
|
-
console.error(`ERROR: ${dep} is old in ${pkg[1].name}: was ${depVersion}, expected ${realVersion} `);
|
|
17
|
-
isOutdated = true;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
if (isOutdated) {
|
|
23
|
-
process.exit(1);
|
|
24
|
-
}
|
|
25
|
-
process.exit(0);
|
|
26
|
-
};
|