@potential-guide/check-environment 0.0.0 → 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.
Files changed (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +213 -2
  3. package/dist/bundles/directories/resources/check.json +19 -0
  4. package/dist/bundles/directories/resources/references/en/check.md +18 -0
  5. package/dist/bundles/directories/resources/references/en/problems/directory-unusable.md +10 -0
  6. package/dist/bundles/directories/resources/references/en/problems/not-directory.md +7 -0
  7. package/dist/bundles/directories/schemas/0.json +51 -0
  8. package/dist/bundles/directories/schemas/1.json +74 -0
  9. package/dist/bundles/directories/schemas/2.json +4 -0
  10. package/dist/bundles/directories/task.yaml +22 -0
  11. package/dist/bundles/directories/worker.cjs +4 -0
  12. package/dist/bundles/directories.car +0 -0
  13. package/dist/bundles/network/resources/check.json +21 -0
  14. package/dist/bundles/network/resources/references/en/check.md +21 -0
  15. package/dist/bundles/network/resources/references/en/problems/dns-unavailable.md +8 -0
  16. package/dist/bundles/network/resources/references/en/problems/http-status.md +9 -0
  17. package/dist/bundles/network/resources/references/en/problems/http-unavailable.md +9 -0
  18. package/dist/bundles/network/schemas/0.json +76 -0
  19. package/dist/bundles/network/schemas/1.json +78 -0
  20. package/dist/bundles/network/schemas/2.json +4 -0
  21. package/dist/bundles/network/task.yaml +23 -0
  22. package/dist/bundles/network/worker.cjs +2 -0
  23. package/dist/bundles/network.car +0 -0
  24. package/dist/bundles/references.json +17 -0
  25. package/dist/bundles/tools/resources/check.json +23 -0
  26. package/dist/bundles/tools/resources/references/en/check.md +21 -0
  27. package/dist/bundles/tools/resources/references/en/problems/tool-missing.md +8 -0
  28. package/dist/bundles/tools/resources/references/en/problems/tool-unusable.md +9 -0
  29. package/dist/bundles/tools/resources/references/en/problems/tool-version.md +8 -0
  30. package/dist/bundles/tools/resources/references/en/problems/version-unparseable.md +8 -0
  31. package/dist/bundles/tools/schemas/0.json +50 -0
  32. package/dist/bundles/tools/schemas/1.json +82 -0
  33. package/dist/bundles/tools/schemas/2.json +4 -0
  34. package/dist/bundles/tools/task.yaml +24 -0
  35. package/dist/bundles/tools/worker.cjs +2 -0
  36. package/dist/bundles/tools.car +0 -0
  37. package/dist/command.d.ts +8 -0
  38. package/dist/command.d.ts.map +1 -0
  39. package/dist/command.js +105 -0
  40. package/dist/command.js.map +1 -0
  41. package/dist/contracts.d.ts +36 -0
  42. package/dist/contracts.d.ts.map +1 -0
  43. package/dist/contracts.js +14 -0
  44. package/dist/contracts.js.map +1 -0
  45. package/dist/definitions/directories.d.ts +1 -0
  46. package/dist/definitions/directories.js +1 -0
  47. package/dist/definitions/network.d.ts +1 -0
  48. package/dist/definitions/network.js +1 -0
  49. package/dist/definitions/tools.d.ts +1 -0
  50. package/dist/definitions/tools.js +1 -0
  51. package/dist/directories.d.ts +16 -0
  52. package/dist/directories.d.ts.map +1 -0
  53. package/dist/directories.js +65 -0
  54. package/dist/directories.js.map +1 -0
  55. package/dist/index.d.ts +5 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +4 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/network.d.ts +18 -0
  60. package/dist/network.d.ts.map +1 -0
  61. package/dist/network.js +79 -0
  62. package/dist/network.js.map +1 -0
  63. package/dist/result.d.ts +20 -0
  64. package/dist/result.d.ts.map +1 -0
  65. package/dist/result.js +23 -0
  66. package/dist/result.js.map +1 -0
  67. package/dist/tasks/directories/contract.d.ts +21 -0
  68. package/dist/tasks/directories/contract.d.ts.map +1 -0
  69. package/dist/tasks/directories/contract.js +11 -0
  70. package/dist/tasks/directories/contract.js.map +1 -0
  71. package/dist/tasks/directories/main.d.ts +2 -0
  72. package/dist/tasks/directories/main.d.ts.map +1 -0
  73. package/dist/tasks/directories/main.js +7 -0
  74. package/dist/tasks/directories/main.js.map +1 -0
  75. package/dist/tasks/inputs.d.ts +6 -0
  76. package/dist/tasks/inputs.d.ts.map +1 -0
  77. package/dist/tasks/inputs.js +5 -0
  78. package/dist/tasks/inputs.js.map +1 -0
  79. package/dist/tasks/network/contract.d.ts +24 -0
  80. package/dist/tasks/network/contract.d.ts.map +1 -0
  81. package/dist/tasks/network/contract.js +25 -0
  82. package/dist/tasks/network/contract.js.map +1 -0
  83. package/dist/tasks/network/main.d.ts +2 -0
  84. package/dist/tasks/network/main.d.ts.map +1 -0
  85. package/dist/tasks/network/main.js +7 -0
  86. package/dist/tasks/network/main.js.map +1 -0
  87. package/dist/tasks/tools/contract.d.ts +23 -0
  88. package/dist/tasks/tools/contract.d.ts.map +1 -0
  89. package/dist/tasks/tools/contract.js +13 -0
  90. package/dist/tasks/tools/contract.js.map +1 -0
  91. package/dist/tasks/tools/main.d.ts +2 -0
  92. package/dist/tasks/tools/main.d.ts.map +1 -0
  93. package/dist/tasks/tools/main.js +7 -0
  94. package/dist/tasks/tools/main.js.map +1 -0
  95. package/dist/tools.d.ts +19 -0
  96. package/dist/tools.d.ts.map +1 -0
  97. package/dist/tools.js +49 -0
  98. package/dist/tools.js.map +1 -0
  99. package/package.json +44 -5
package/dist/tools.js ADDED
@@ -0,0 +1,49 @@
1
+ import { problemCodes } from "../dist/definitions/tools.js";
2
+ import { executeCommand } from "./command.js";
3
+ import { problems, result, timeoutValue } from "./result.js";
4
+ export function parseToolVersion(output) {
5
+ return /(?:^|\s)v?(\d+\.\d+(?:\.\d+)*)(?:\b|$)/m.exec(output)?.[1];
6
+ }
7
+ export function compareVersions(actual, expected) {
8
+ if (![actual, expected].every((value) => /^\d+(?:\.\d+)*$/.test(value)))
9
+ throw new Error("Versions must contain only dot-separated decimal numbers.");
10
+ const a = actual.split(".").map((part) => part.replace(/^0+(?=\d)/, ""));
11
+ const b = expected.split(".").map((part) => part.replace(/^0+(?=\d)/, ""));
12
+ for (let i = 0; i < Math.max(a.length, b.length); i++) {
13
+ const first = a[i] ?? "0";
14
+ const second = b[i] ?? "0";
15
+ if (first.length !== second.length)
16
+ return Math.sign(first.length - second.length);
17
+ if (first !== second)
18
+ return first > second ? 1 : -1;
19
+ }
20
+ return 0;
21
+ }
22
+ export async function inspectTools(input, context = {}) {
23
+ if (!input.tools.length || input.tools.length > 100)
24
+ throw new Error("Specify between 1 and 100 tools.");
25
+ const timeout = timeoutValue(input.checkTimeoutMs);
26
+ for (const tool of input.tools)
27
+ compareVersions(tool.minimumVersion, tool.minimumVersion);
28
+ const checks = [];
29
+ for (const tool of input.tools) {
30
+ const output = await executeCommand(tool.command, tool.args, timeout, context.signal);
31
+ const actual = parseToolVersion(output.stdout + output.stderr);
32
+ const code = output.missing
33
+ ? "tool-missing"
34
+ : output.code !== 0
35
+ ? "tool-unusable"
36
+ : actual === undefined
37
+ ? "version-unparseable"
38
+ : compareVersions(actual, tool.minimumVersion) < 0
39
+ ? "tool-version"
40
+ : "pass";
41
+ checks.push({ target: tool.command, ok: code === "pass", code, actual: actual ?? null });
42
+ }
43
+ return problems(checks);
44
+ }
45
+ export async function checkTools(input, context = {}) {
46
+ return result(problemCodes, await inspectTools(input, context));
47
+ }
48
+ export default checkTools;
49
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,53 @@
1
1
  {
2
2
  "name": "@potential-guide/check-environment",
3
- "version": "0.0.0",
4
- "description": "Reusable tool version, directory and network checks delivered as standalone Task Bundles. Bootstrap placeholder only.",
3
+ "version": "0.1.0",
4
+ "description": "Reusable tool version, directory and network checks delivered as standalone Task Bundles.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist/*.js",
16
+ "dist/*.d.ts",
17
+ "dist/*.map",
18
+ "dist/tasks",
19
+ "dist/definitions",
20
+ "dist/bundles",
21
+ "README.md"
22
+ ],
23
+ "engines": {
24
+ "node": ">=22.13.0"
25
+ },
26
+ "dependencies": {
27
+ "@sinclair/typebox": "0.34.52",
28
+ "@potential-guide/check-sdk": "^0.1.0"
29
+ },
30
+ "devDependencies": {
31
+ "yaml": "2.9.1",
32
+ "@potential-guide/task-engine": "^0.1.0-rc.0",
33
+ "@potential-guide/task-sdk": "^0.1.0-rc.0",
34
+ "@potential-guide/pguide-task-bundle": "^0.1.0-rc.0",
35
+ "@potential-guide/task-protocol": "^0.1.0-rc.0"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
5
40
  "license": "MIT",
6
41
  "repository": {
7
42
  "type": "git",
8
43
  "url": "git+https://github.com/shazhou-ww/potential-guide.git",
9
44
  "directory": "packages/check-environment"
10
45
  },
11
- "publishConfig": {
12
- "access": "public"
46
+ "scripts": {
47
+ "build": "node build.mjs",
48
+ "clean": "node -e \"for (const path of ['dist', '../../.cache/tsbuildinfo/check-environment.tsbuildinfo']) require('node:fs').rmSync(path, { recursive: true, force: true })\"",
49
+ "lint": "biome lint .",
50
+ "test": "tsx --test \"test/*.test.ts\"",
51
+ "typecheck": "node prepare.mjs && tsc -b --pretty false"
13
52
  }
14
- }
53
+ }