superlib 1.0.21 → 1.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 (139) hide show
  1. package/dist/basic/BaseError.d.ts +4 -0
  2. package/dist/basic/BaseError.d.ts.map +1 -0
  3. package/dist/basic/BaseError.js +6 -0
  4. package/dist/basic/Result.d.ts +29 -0
  5. package/dist/basic/Result.d.ts.map +1 -0
  6. package/dist/basic/Result.js +55 -0
  7. package/dist/basic/ResultAsync.d.ts +9 -0
  8. package/dist/basic/ResultAsync.d.ts.map +1 -0
  9. package/dist/basic/ResultAsync.js +41 -0
  10. package/dist/basic/assert.d.ts +8 -0
  11. package/dist/basic/assert.d.ts.map +1 -0
  12. package/dist/basic/assert.js +25 -0
  13. package/dist/basic/index.d.ts +5 -0
  14. package/dist/basic/index.d.ts.map +1 -0
  15. package/dist/basic/index.js +4 -0
  16. package/dist/decorators/Retry.d.ts +3 -0
  17. package/dist/decorators/Retry.d.ts.map +1 -0
  18. package/dist/decorators/Retry.js +9 -0
  19. package/dist/decorators/Timeout.d.ts +3 -0
  20. package/dist/decorators/Timeout.d.ts.map +1 -0
  21. package/dist/decorators/Timeout.js +9 -0
  22. package/dist/decorators/common.d.ts +2 -0
  23. package/dist/decorators/common.d.ts.map +1 -0
  24. package/dist/decorators/common.js +17 -0
  25. package/dist/decorators/index.d.ts +3 -0
  26. package/dist/decorators/index.d.ts.map +1 -0
  27. package/dist/decorators/index.js +2 -0
  28. package/dist/index.d.ts +8 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +7 -0
  31. package/dist/platform/JsonHttpClient/JsonHttpClient.d.ts +18 -0
  32. package/dist/platform/JsonHttpClient/JsonHttpClient.d.ts.map +1 -0
  33. package/dist/platform/JsonHttpClient/JsonHttpClient.js +48 -0
  34. package/dist/platform/JsonHttpClient/index.d.ts +2 -0
  35. package/dist/platform/JsonHttpClient/index.d.ts.map +1 -0
  36. package/dist/platform/JsonHttpClient/index.js +1 -0
  37. package/dist/platform/ProcessContext/EnvReader.d.ts +12 -0
  38. package/dist/platform/ProcessContext/EnvReader.d.ts.map +1 -0
  39. package/dist/platform/ProcessContext/EnvReader.js +56 -0
  40. package/dist/platform/ProcessContext/ProcessContext.d.ts +40 -0
  41. package/dist/platform/ProcessContext/ProcessContext.d.ts.map +1 -0
  42. package/dist/platform/ProcessContext/ProcessContext.js +57 -0
  43. package/dist/platform/ProcessContext/index.d.ts +3 -0
  44. package/dist/platform/ProcessContext/index.d.ts.map +1 -0
  45. package/dist/platform/ProcessContext/index.js +2 -0
  46. package/dist/platform/filesystem/AbsolutePath.d.ts +18 -0
  47. package/dist/platform/filesystem/AbsolutePath.d.ts.map +1 -0
  48. package/dist/platform/filesystem/AbsolutePath.js +28 -0
  49. package/dist/platform/filesystem/FileSystem.d.ts +19 -0
  50. package/dist/platform/filesystem/FileSystem.d.ts.map +1 -0
  51. package/dist/platform/filesystem/FileSystem.js +92 -0
  52. package/dist/platform/filesystem/IFileSystem.d.ts +46 -0
  53. package/dist/platform/filesystem/IFileSystem.d.ts.map +1 -0
  54. package/dist/platform/filesystem/IFileSystem.js +1 -0
  55. package/dist/platform/filesystem/MemoryFileSystem.d.ts +29 -0
  56. package/dist/platform/filesystem/MemoryFileSystem.d.ts.map +1 -0
  57. package/dist/platform/filesystem/MemoryFileSystem.js +126 -0
  58. package/dist/platform/filesystem/index.d.ts +5 -0
  59. package/dist/platform/filesystem/index.d.ts.map +1 -0
  60. package/dist/platform/filesystem/index.js +4 -0
  61. package/dist/platform/get-port/checkPort.d.ts +2 -0
  62. package/dist/platform/get-port/checkPort.d.ts.map +1 -0
  63. package/dist/platform/get-port/checkPort.js +20 -0
  64. package/dist/platform/get-port/getPort.d.ts +8 -0
  65. package/dist/platform/get-port/getPort.d.ts.map +1 -0
  66. package/dist/platform/get-port/getPort.js +13 -0
  67. package/dist/platform/safeFetch/index.d.ts +2 -0
  68. package/dist/platform/safeFetch/index.d.ts.map +1 -0
  69. package/dist/platform/safeFetch/index.js +1 -0
  70. package/dist/platform/safeFetch/makeSafeFetch.d.ts +23 -0
  71. package/dist/platform/safeFetch/makeSafeFetch.d.ts.map +1 -0
  72. package/dist/platform/safeFetch/makeSafeFetch.js +19 -0
  73. package/dist/random/FixedRandom.d.ts +12 -0
  74. package/dist/random/FixedRandom.d.ts.map +1 -0
  75. package/dist/random/FixedRandom.js +43 -0
  76. package/dist/random/Random.d.ts +18 -0
  77. package/dist/random/Random.d.ts.map +1 -0
  78. package/dist/random/Random.js +24 -0
  79. package/dist/random/RealRandom.d.ts +5 -0
  80. package/dist/random/RealRandom.d.ts.map +1 -0
  81. package/dist/random/RealRandom.js +6 -0
  82. package/dist/random/SeededRandom.d.ts +10 -0
  83. package/dist/random/SeededRandom.d.ts.map +1 -0
  84. package/dist/random/SeededRandom.js +15 -0
  85. package/dist/random/index.d.ts +5 -0
  86. package/dist/random/index.d.ts.map +1 -0
  87. package/dist/random/index.js +4 -0
  88. package/dist/schema/StandardSchema.d.ts +60 -0
  89. package/dist/schema/StandardSchema.d.ts.map +1 -0
  90. package/dist/schema/StandardSchema.js +1 -0
  91. package/dist/schema/validateSchema.d.ts +9 -0
  92. package/dist/schema/validateSchema.d.ts.map +1 -0
  93. package/dist/schema/validateSchema.js +9 -0
  94. package/dist/task/all.d.ts +14 -0
  95. package/dist/task/all.d.ts.map +1 -0
  96. package/dist/task/all.js +61 -0
  97. package/dist/task/index.d.ts +15 -0
  98. package/dist/task/index.d.ts.map +1 -0
  99. package/dist/task/index.js +11 -0
  100. package/dist/task/pipe.d.ts +8 -0
  101. package/dist/task/pipe.d.ts.map +1 -0
  102. package/dist/task/pipe.js +11 -0
  103. package/dist/task/retry.d.ts +27 -0
  104. package/dist/task/retry.d.ts.map +1 -0
  105. package/dist/task/retry.js +61 -0
  106. package/dist/task/timeout.d.ts +21 -0
  107. package/dist/task/timeout.d.ts.map +1 -0
  108. package/dist/task/timeout.js +39 -0
  109. package/dist/task/types.d.ts +3 -0
  110. package/dist/task/types.d.ts.map +1 -0
  111. package/dist/task/types.js +1 -0
  112. package/dist/time/Clock.d.ts +18 -0
  113. package/dist/time/Clock.d.ts.map +1 -0
  114. package/dist/time/Clock.js +26 -0
  115. package/dist/time/index.d.ts +4 -0
  116. package/dist/time/index.d.ts.map +1 -0
  117. package/dist/time/index.js +3 -0
  118. package/dist/time/sleep.d.ts +3 -0
  119. package/dist/time/sleep.d.ts.map +1 -0
  120. package/dist/time/sleep.js +5 -0
  121. package/dist/time/temporal.d.ts +5 -0
  122. package/dist/time/temporal.d.ts.map +1 -0
  123. package/dist/time/temporal.js +20 -0
  124. package/dist/types/index.d.ts +4 -0
  125. package/dist/types/index.d.ts.map +1 -0
  126. package/dist/types/index.js +1 -0
  127. package/package.json +57 -17
  128. package/README.md +0 -46
  129. package/elm-projects.js +0 -62
  130. package/index.js +0 -3
  131. package/lib.js +0 -117
  132. package/libm.js +0 -52
  133. package/projects.js +0 -145
  134. package/providers/github.js +0 -22
  135. package/providers/lib/connection.js +0 -19
  136. package/providers/npmjs.js +0 -22
  137. package/tests/providers.js +0 -13
  138. package/tests/utilities.js +0 -13
  139. package/utilities.js +0 -116
package/package.json CHANGED
@@ -1,27 +1,67 @@
1
1
  {
2
2
  "name": "superlib",
3
- "version": "1.0.21",
4
- "description": "Awesomest npm/elm dependencies analysis tool",
5
- "main": "index.js",
6
- "author": "davidhq",
7
- "license": "ISC",
3
+ "version": "1.2.0",
4
+ "description": "A missing standard library for TypeScript, providing utilities for async orchestration, error handling, filesystem abstraction, and common patterns",
5
+ "keywords": [
6
+ "async",
7
+ "result",
8
+ "stdlib",
9
+ "task",
10
+ "typescript",
11
+ "utilities"
12
+ ],
13
+ "license": "MIT",
14
+ "author": "Kris Kaczor",
8
15
  "repository": {
9
16
  "type": "git",
10
- "url": "https://github.com/davidhq/superlib"
17
+ "url": "git+https://github.com/superlibdotdev/superlib.git"
11
18
  },
12
- "bin": {
13
- "lib": "lib.js",
14
- "libm": "libm.js"
19
+ "files": [
20
+ "dist"
21
+ ],
22
+ "type": "module",
23
+ "main": "./dist/index.js",
24
+ "module": "./dist/index.js",
25
+ "types": "./dist/index.d.ts",
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "default": "./dist/index.js"
30
+ },
31
+ "./platform/filesystem": {
32
+ "types": "./dist/platform/filesystem/index.d.ts",
33
+ "default": "./dist/platform/filesystem/index.js"
34
+ },
35
+ "./platform/get-port": {
36
+ "types": "./dist/platform/get-port/index.d.ts",
37
+ "default": "./dist/platform/get-port/index.js"
38
+ },
39
+ "./platform/JsonHttpClient": {
40
+ "types": "./dist/platform/JsonHttpClient/index.d.ts",
41
+ "default": "./dist/platform/JsonHttpClient/index.js"
42
+ },
43
+ "./platform/ProcessContext": {
44
+ "types": "./dist/platform/ProcessContext/index.d.ts",
45
+ "default": "./dist/platform/ProcessContext/index.js"
46
+ },
47
+ "./platform/safeFetch": {
48
+ "types": "./dist/platform/safeFetch/index.d.ts",
49
+ "default": "./dist/platform/safeFetch/index.js"
50
+ }
15
51
  },
16
- "engines": {
17
- "node": ">=5.7.0"
52
+ "scripts": {
53
+ "build": "tsc -p tsconfig.build.json && bun run scripts/fix-imports.ts",
54
+ "lint": "oxlint --type-aware --type-check --deny-warnings",
55
+ "lint:fix": "bun run lint --fix",
56
+ "test": "bun test",
57
+ "fix": "cd ../.. && bun run fix"
18
58
  },
19
59
  "dependencies": {
20
- "colors": "^1.1.2",
21
- "commander": "^2.9.0",
22
- "open": "0.0.5",
23
- "superagent": "^1.8.0-beta.1",
24
- "tape": "^4.5.1",
25
- "x-ray": "^2.0.3"
60
+ "remeda": "^2.32.0",
61
+ "temporal-polyfill": "^0.3.0"
62
+ },
63
+ "devDependencies": {
64
+ "@types/node": "^22.0.0",
65
+ "zod": "^4.3.5"
26
66
  }
27
67
  }
package/README.md DELETED
@@ -1,46 +0,0 @@
1
- # Simple dependency analysis tool for Node and Elm
2
-
3
- [NpmJs](https://www.npmjs.com/package/superlib)
4
-
5
- ## Install
6
-
7
- npm install -g superlib
8
-
9
- ## Requirements
10
-
11
- Node 5.7.0+
12
-
13
- ## Help
14
-
15
- ```bash
16
- lib --help
17
- libm --help
18
- ```
19
-
20
- ## Usage
21
-
22
- Go to npm/elm project or a folder with many npm project subdirectories and run one of these commands:
23
-
24
- lib
25
- lib [dep]
26
- libm
27
- libm [dep]
28
-
29
- or
30
-
31
- lib --path /Path/To/Project
32
- libm --path /Path/To/Project
33
-
34
- ## Tips
35
-
36
- If you use `iTerm2 v3.0`, you can click on the links in terminal with `CMD+click`.
37
-
38
- ## Screenshots
39
-
40
- lib
41
-
42
- ![](http://cl.ly/3n3Q3W0c2i10/Screen%20Shot%202016-03-31%20at%2023.47.51.png)
43
-
44
- libm
45
-
46
- ![](http://cl.ly/3k352J3O1m2D/Screen%20Shot%202016-03-31%20at%2023.48.20.png)
package/elm-projects.js DELETED
@@ -1,62 +0,0 @@
1
- var fs = require('fs');
2
- var pth = require('path');
3
- var util = require('./utilities');
4
- var colors = require('colors');
5
-
6
- class ElmProjects {
7
- // scan(path) {
8
- // return util.scanDirSync(path)
9
- // .filter(dir => this.valid(dir))
10
- // .map(dir => this.info(dir))
11
- // }
12
-
13
- valid(path) {
14
- return util.fileExists(`${path}/elm-package.json`);
15
- //return util.fileExists(`${path}/elm-stuff/exact-dependencies.json`)
16
- }
17
-
18
- // returns the info for one project
19
- info(path) {
20
- if (this.valid(path)) {
21
- let pkg = require(`${path}/elm-package.json`);
22
- return pkg;
23
- }
24
- }
25
-
26
- exactDeps(path) {
27
- return new Promise((s, r) => {
28
- let exactDepsPath = `${path}/elm-stuff/exact-dependencies.json`;
29
- if (util.fileExists(exactDepsPath)) {
30
- s(require(exactDepsPath));
31
- } else {
32
- r('Run "elm package install" first');
33
- }
34
- });
35
- }
36
-
37
- exactDepsFullInfo(path) {
38
- if (this.valid(path)) {
39
- return new Promise((s, r) => {
40
- let info = this.info(path);
41
- this.exactDeps(path)
42
- .then(projectInfo => {
43
- s(
44
- Object.keys(projectInfo).map(dep => {
45
- let depPkg = require(`${path}/elm-stuff/packages/${dep}/${projectInfo[dep]}/elm-package.json`);
46
- let original = !!Object.keys(info.dependencies).find(d => d == dep);
47
- return {
48
- name: dep,
49
- original: original,
50
- version: projectInfo[dep],
51
- summary: depPkg.summary
52
- };
53
- })
54
- );
55
- })
56
- .catch(e => r(e));
57
- });
58
- }
59
- }
60
- }
61
-
62
- module.exports = ElmProjects;
package/index.js DELETED
@@ -1,3 +0,0 @@
1
- module.exports = {
2
- projects: require('./projects')
3
- };
package/lib.js DELETED
@@ -1,117 +0,0 @@
1
- #!/usr/bin/env node
2
- var colors = require('colors');
3
- var fs = require('fs');
4
- var util = require('./utilities');
5
- var path = require('path');
6
-
7
- var Projects = require('./projects');
8
- var projects = new Projects();
9
-
10
- var ElmProjects = require('./elm-projects');
11
- var elmProjects = new ElmProjects();
12
-
13
- // Parse command line options
14
- var program = require('commander');
15
-
16
- var pkg = require(path.join(__dirname, 'package.json'));
17
-
18
- program
19
- .version(pkg.version)
20
- .description('Awesomest npm dependencies analysis tool')
21
- .option('-p, --path <path>', 'Project(s) on which to run the command')
22
- .parse(process.argv);
23
-
24
- let dep = program.args[0];
25
-
26
- function isDepInstalled(projectPath, dep) {
27
- return util.isDirectory(path.join(projectPath, dep));
28
- }
29
-
30
- function colorizeDeps(projectPath, deps) {
31
- let modulesPath = path.join(projectPath, 'node_modules');
32
- return deps.map(d => {
33
- let str = isDepInstalled(modulesPath, d) ? colors.yellow(d) : colors.red(d);
34
- return dep && d.toLowerCase().indexOf(dep.toLowerCase()) > -1 ? colors.bold(str) : str;
35
- });
36
- }
37
-
38
- function showProject(project, dep) {
39
- if ((dep && projects.hasDep(project, dep)) || !dep) {
40
- let dir = '';
41
- if (project.name != project.folder) {
42
- dir = ` (directory: ${project.folder})`;
43
- }
44
-
45
- console.log(colors.cyan(`[ ${project.name} ]`) + dir);
46
-
47
- if (project.dependencies) {
48
- let deps = projects.depList(project);
49
- console.log(`Deps (${deps.length}): ${colorizeDeps(project.path, deps).join(', ')}`);
50
-
51
- if (dep) {
52
- for (let match of projects.findDeps(project, dep)) {
53
- console.log(colors.yellow.bold(match) + ': ' + colors.green(`https://www.npmjs.com/package/${match}`));
54
- }
55
- }
56
- }
57
-
58
- // check for linked npm projects
59
- let modulesPath = path.join(project.path, 'node_modules');
60
- if (util.isDirectory(modulesPath)) {
61
- fs.readdir(modulesPath, function(err, dirs) {
62
- for (let dir of dirs) {
63
- fs.lstat(`${modulesPath}/${dir}`, function(err, stats) {
64
- //fs.statSync can't read isSymbolicLink()
65
- if (err) throw err;
66
- if (stats.isSymbolicLink()) {
67
- console.log(colors.red(`<${project.name}> linked package: ${dir}`));
68
- }
69
- });
70
- }
71
- });
72
- }
73
-
74
- if (project.bin) {
75
- console.log();
76
- let bin = project.bin;
77
- for (let key in bin) {
78
- if (bin.hasOwnProperty(key)) {
79
- console.log('%s -> %s', colors.green(`bin/${key}`), bin[key]);
80
- }
81
- }
82
- }
83
-
84
- console.log();
85
- }
86
- }
87
-
88
- let cwd = process.cwd();
89
- let projecPath = program.path || cwd;
90
-
91
- // ELM
92
- if (elmProjects.valid(projecPath)) {
93
- let info = elmProjects.info(projecPath);
94
- elmProjects
95
- .exactDepsFullInfo(projecPath)
96
- .then(deps => {
97
- deps.forEach(dep => {
98
- let depName = dep.original ? colors.yellow(dep.name) : dep.name;
99
- console.log(`${depName}: ${colors.green(dep.version)}`);
100
- console.log(colors.green(dep.summary));
101
- console.log();
102
- });
103
- })
104
- .catch(e => console.log(colors.red(e)));
105
- } else {
106
- // NPM
107
- let project = projects.info(projecPath);
108
-
109
- if (project) {
110
- showProject(project, dep);
111
- projects.showDep(projects.projectDepInfoFormat(project.path));
112
- } else {
113
- for (let project of projects.scan(projecPath)) {
114
- showProject(project, dep);
115
- }
116
- }
117
- }
package/libm.js DELETED
@@ -1,52 +0,0 @@
1
- #!/usr/bin/env node
2
- var colors = require('colors');
3
- var fs = require('fs');
4
- var util = require('./utilities');
5
- var path = require('path');
6
-
7
- var npmjs = require('./providers/npmjs');
8
-
9
- var Projects = require('./projects');
10
- var projects = new Projects();
11
-
12
- // Parse command line options
13
- var program = require('commander');
14
-
15
- var pkg = require(path.join(__dirname, 'package.json'));
16
-
17
- program
18
- .version(pkg.version)
19
- .description('Awesomest npm dependencies analysis tool')
20
- .option('-p, --path <path>', 'Project(s) on which to run the command')
21
- .parse(process.argv);
22
-
23
- function nameEmail(name, email) {
24
- return email ? `${name} <${email}>` : name;
25
- }
26
-
27
- let filter = program.args[0];
28
-
29
- let projecPath = program.path || process.cwd();
30
- let project = projects.info(projecPath);
31
-
32
- let deps = project ? projects.depsWithInfo(project) : projects.depsWithInfoPath(projecPath);
33
- deps = util.arraySortByKey(deps, 'name');
34
-
35
- util
36
- .asyncMap(deps, function(dep, callback) {
37
- if (dep.missing) {
38
- npmjs.info(dep.name, info => callback(Object.assign(info, { projects: dep.projects })));
39
- } else {
40
- callback(dep);
41
- }
42
- })
43
- .then(deps => {
44
- for (let dep of deps) {
45
- if (!filter || (filter && util.cointainsStringInsensitive(dep.name, filter))) {
46
- projects.showDep(dep);
47
- }
48
- }
49
- })
50
- .catch(error => {
51
- console.log(error);
52
- });
package/projects.js DELETED
@@ -1,145 +0,0 @@
1
- var fs = require('fs');
2
- var pth = require('path');
3
- var colors = require('colors');
4
-
5
- var util = require('./utilities');
6
-
7
- var GitHub = require('./providers/github');
8
- let github = new GitHub();
9
-
10
- class Projects {
11
- scan(path) {
12
- return util
13
- .scanDirSync(path)
14
- .filter(dir => this.valid(dir))
15
- .map(dir => this.info(dir));
16
- }
17
-
18
- valid(path) {
19
- return util.fileExists(`${path}/package.json`);
20
- }
21
-
22
- // returns the info for one project
23
- info(path) {
24
- if (this.valid(path)) {
25
- let pkg = JSON.parse(fs.readFileSync(`${path}/package.json`));
26
-
27
- return {
28
- name: pkg.name,
29
- folder: pth.basename(path),
30
- version: pkg.version,
31
- path: path,
32
- dependencies: pkg.dependencies,
33
- bin: pkg.bin
34
- };
35
- }
36
- }
37
-
38
- depList(project) {
39
- return project.dependencies ? Object.keys(project.dependencies) : [];
40
- }
41
-
42
- hasDep(project, term) {
43
- return project.dependencies && this.findDeps(project, term).length > 0;
44
- }
45
-
46
- findDeps(project, term) {
47
- return util.listSearch(this.depList(project), term);
48
- }
49
-
50
- projectDepInfoFormat(projectPath, dep) {
51
- let pkgFile = `${projectPath}/package.json`;
52
- if (util.fileExists(pkgFile)) {
53
- let pkg = JSON.parse(fs.readFileSync(pkgFile));
54
-
55
- let obj = {
56
- name: pkg.name,
57
- version: pkg.version,
58
- description: pkg.description,
59
- homepage: pkg.homepage,
60
- author: pkg.author, // email, name, url
61
- npmuser: pkg._npmUser // email, name, url
62
- };
63
-
64
- if (pkg['repository']) {
65
- if (pkg['repository']['url']) {
66
- let repo = github.repoName(pkg['repository']['url']);
67
- obj.github = `https://github.com/${repo}`;
68
- } else {
69
- // "repository": "expressjs/express"
70
- obj.github = `https://github.com/${pkg['repository']}`;
71
- }
72
- } else {
73
- obj.github = '<missing>';
74
- }
75
-
76
- return obj;
77
- } else {
78
- return {
79
- missing: true,
80
- name: dep,
81
- description: '<missing>',
82
- github: '<missing>',
83
- homepage: '<missing>'
84
- };
85
- }
86
- }
87
-
88
- depInfo(projectPath, dep) {
89
- return this.projectDepInfoFormat(`${projectPath}/node_modules/${dep}`, dep);
90
- }
91
-
92
- // scans all the dependencies for the project and reads the package.json of each one
93
- depsWithInfo(project) {
94
- return this.depList(project).map(function(dep) {
95
- return Object.assign(this.depInfo(project.path, dep), {
96
- project: project.name
97
- });
98
- }, this);
99
- }
100
-
101
- // get all unique dependencies across all projects
102
- // if some project doesn't have node_modules currently but another one has, then dependency info is still gathered from where it can be
103
- // each dependency has to be present only once across all scanned projects
104
- depsWithInfoPath(path) {
105
- let depProjects = {};
106
-
107
- let list = this.scan(path).reduce(
108
- (deps, project) =>
109
- deps.concat(
110
- this.depsWithInfo(project).filter(dep => {
111
- if (!depProjects[dep.name]) {
112
- depProjects[dep.name] = [];
113
- }
114
- depProjects[dep.name] = depProjects[dep.name].concat(dep.project);
115
- let match = deps.find(d => d.name == dep.name);
116
- return !match || match.missing;
117
- })
118
- ),
119
- []
120
- );
121
-
122
- // remove missing but only if they are not the only occurence
123
- let condition = dep => dep.missing && list.filter(d => d.name == dep.name && !d.missing).length > 0;
124
- return list.filter(dep => !condition(dep)).map(dep => Object.assign(dep, { projects: depProjects[dep.name].sort() }));
125
- }
126
-
127
- showDep(dep) {
128
- console.log(colors.yellow(`${dep.name} >>> `) + colors.green(dep.description));
129
- if (dep.github) {
130
- console.log('GitHub: ' + colors.cyan(dep.github));
131
- }
132
- if (dep.homepage) {
133
- console.log('Homepage: ' + colors.cyan(dep.homepage));
134
- }
135
- console.log('Version: ' + colors.green(dep.version));
136
- if (dep.projects) {
137
- console.log('Projects: ' + colors.yellow(dep.projects.join(', ')));
138
- }
139
- //if(dep.author) console.log('Author: ' + nameEmail(dep.author.name, dep.author.email))
140
- //console.log('Npm User: ' + nameEmail(dep.npmuser.name, dep.npmuser.email))
141
- console.log();
142
- }
143
- }
144
-
145
- module.exports = Projects;
@@ -1,22 +0,0 @@
1
- let Connection = require('./lib/connection');
2
-
3
- class GitHub {
4
- constructor() {
5
- this.conn = new Connection('https://api.github.com');
6
- }
7
-
8
- repoInfo(repo, callback) {
9
- this.conn.get(`repos/${repo}`, {}, callback);
10
- }
11
-
12
- repoName(url) {
13
- url = url.trim();
14
- if (url.endsWith('.git')) url = url.slice(0, url.length - 4);
15
- // git@github.com:documentationjs/documentation.git
16
- // https://github.com/davidhq/superlib
17
- let matches = /github.com[\/\:]([\w\.\-_]+)\/([\w\.\-_]+)/i.exec(url);
18
- if (matches) return `${matches[1]}/${matches[2]}`;
19
- }
20
- }
21
-
22
- module.exports = GitHub;
@@ -1,19 +0,0 @@
1
- var request = require('superagent');
2
-
3
- class Connection {
4
- constructor(api_base) {
5
- this.api_base = api_base;
6
- }
7
-
8
- get(path, options, callback) {
9
- request.get(`${this.api_base}/${path}`).send(options).set('Content-Type', 'application/json').set('Accept', 'application/json').end(function(err, res) {
10
- if (res.ok) {
11
- callback(res.body);
12
- } else {
13
- console.log('Oh no! error ' + res.text);
14
- }
15
- });
16
- }
17
- }
18
-
19
- module.exports = Connection;
@@ -1,22 +0,0 @@
1
- // --
2
- var util = require('../utilities');
3
- var Xray = require('x-ray');
4
- var x = Xray();
5
-
6
- module.exports = {
7
- info: (pkg, callback) => {
8
- let url = `https://www.npmjs.com/package/${pkg}`;
9
- x(url, {
10
- description: '.package-description',
11
- links: x('.sidebar .box', ['a@href'])
12
- })((err, obj) => {
13
- let github_url = obj.links.filter(link => link.startsWith('https://github.com') && util.countOccurences(link, '/') == 4)[0];
14
- callback({
15
- name: pkg,
16
- description: obj.description,
17
- github: github_url,
18
- github_repo: github_url && github_url.replace('https://github.com/', '')
19
- });
20
- });
21
- }
22
- };
@@ -1,13 +0,0 @@
1
- var test = require('tape');
2
-
3
- test('github parsing repo from url', function(t) {
4
- t.plan(4);
5
-
6
- var GitHub = require('../providers/github');
7
- let github = new GitHub();
8
-
9
- t.equal(github.repoName('https://github.com/davidhq/cryptonite'), 'davidhq/cryptonite');
10
- t.equal(github.repoName('https://GitHub.com/davidhq/cryptonite'), 'davidhq/cryptonite');
11
- t.equal(github.repoName('https://github.com/visionmedia/superagent#readme'), 'visionmedia/superagent');
12
- t.equal(github.repoName('git+ssh://git@github.com/Marak/colors.js.git'), 'Marak/colors.js');
13
- });
@@ -1,13 +0,0 @@
1
- var test = require('tape');
2
- var util = require('../utilities');
3
-
4
- test('utilities', function (t) {
5
- t.plan(5)
6
-
7
- t.true(util.listSearch(['aaa', 'bbb', 'ccc'], 'BB').length == 1)
8
-
9
- t.deepEqual(util.arraySortByKey([ { name: 'b' }, { name: 'z' }, { name: 'a' } ], 'name'), [ { name: 'a' }, { name: 'b' }, { name: 'z' } ])
10
- t.deepEqual(util.arraySortByKey([ { name: 'b' }, { }, { name: 'a' } ], 'name'), [ { name: 'a' }, { name: 'b' }, { } ])
11
- t.deepEqual(util.arraySortByKey([ { name: 2 }, { name: 1000 }, { name: 1 } ], 'name', true), [ { name: 1 }, { name: 2 }, { name: 1000 } ])
12
- t.deepEqual(util.arraySortByKey([ { name: 2 }, { }, { name: 1 } ], 'name', true), [ { name: 1 }, { name: 2 }, { } ])
13
- })