mor 0.0.2 → 0.2.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.
Files changed (64) hide show
  1. package/LICENSE +22 -21
  2. package/README.md +163 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +609 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/config.d.ts +3 -0
  7. package/dist/config.js +50 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/db.d.ts +38 -0
  10. package/dist/db.js +134 -0
  11. package/dist/db.js.map +1 -0
  12. package/dist/embeddings/azure-openai.d.ts +12 -0
  13. package/dist/embeddings/azure-openai.js +41 -0
  14. package/dist/embeddings/azure-openai.js.map +1 -0
  15. package/dist/embeddings/none.d.ts +6 -0
  16. package/dist/embeddings/none.js +8 -0
  17. package/dist/embeddings/none.js.map +1 -0
  18. package/dist/embeddings/ollama.d.ts +9 -0
  19. package/dist/embeddings/ollama.js +28 -0
  20. package/dist/embeddings/ollama.js.map +1 -0
  21. package/dist/embeddings/openai.d.ts +10 -0
  22. package/dist/embeddings/openai.js +33 -0
  23. package/dist/embeddings/openai.js.map +1 -0
  24. package/dist/embeddings/provider.d.ts +7 -0
  25. package/dist/embeddings/provider.js +18 -0
  26. package/dist/embeddings/provider.js.map +1 -0
  27. package/dist/filter.d.ts +11 -0
  28. package/dist/filter.js +47 -0
  29. package/dist/filter.js.map +1 -0
  30. package/dist/index.d.ts +10 -0
  31. package/dist/index.js +165 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/mcp.d.ts +4 -0
  34. package/dist/mcp.js +269 -0
  35. package/dist/mcp.js.map +1 -0
  36. package/dist/memory.d.ts +22 -0
  37. package/dist/memory.js +129 -0
  38. package/dist/memory.js.map +1 -0
  39. package/dist/operations.d.ts +65 -0
  40. package/dist/operations.js +127 -0
  41. package/dist/operations.js.map +1 -0
  42. package/dist/query.d.ts +3 -0
  43. package/dist/query.js +44 -0
  44. package/dist/query.js.map +1 -0
  45. package/dist/remote.d.ts +37 -0
  46. package/dist/remote.js +77 -0
  47. package/dist/remote.js.map +1 -0
  48. package/dist/server.d.ts +8 -0
  49. package/dist/server.js +341 -0
  50. package/dist/server.js.map +1 -0
  51. package/dist/types.d.ts +55 -0
  52. package/dist/types.js +10 -0
  53. package/dist/types.js.map +1 -0
  54. package/package.json +54 -18
  55. package/.dir-locals.el +0 -6
  56. package/.editorconfig +0 -15
  57. package/.eslintrc +0 -26
  58. package/.npmignore +0 -32
  59. package/alg/dfs.js +0 -36
  60. package/alg/revDfs.js +0 -36
  61. package/cli.js +0 -106
  62. package/mor-core.js +0 -60
  63. package/mor-link.js +0 -23
  64. 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
- };