@zlooks.cn/cli 1.0.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 (81) hide show
  1. package/dist/command/index.d.ts +3 -0
  2. package/dist/command/index.d.ts.map +1 -0
  3. package/dist/command/index.js +145 -0
  4. package/dist/command/index.js.map +1 -0
  5. package/dist/deploy.d.ts +35 -0
  6. package/dist/deploy.d.ts.map +1 -0
  7. package/dist/deploy.js +312 -0
  8. package/dist/deploy.js.map +1 -0
  9. package/dist/deployment.d.ts +18 -0
  10. package/dist/deployment.d.ts.map +1 -0
  11. package/dist/deployment.js +26 -0
  12. package/dist/deployment.js.map +1 -0
  13. package/dist/doctor.d.ts +24 -0
  14. package/dist/doctor.d.ts.map +1 -0
  15. package/dist/doctor.js +78 -0
  16. package/dist/doctor.js.map +1 -0
  17. package/dist/export/export-operation.d.ts +34 -0
  18. package/dist/export/export-operation.d.ts.map +1 -0
  19. package/dist/export/export-operation.js +69 -0
  20. package/dist/export/export-operation.js.map +1 -0
  21. package/dist/export/legacy-export.d.ts +129 -0
  22. package/dist/export/legacy-export.d.ts.map +1 -0
  23. package/dist/export/legacy-export.js +334 -0
  24. package/dist/export/legacy-export.js.map +1 -0
  25. package/dist/export/legacy-source.d.ts +16 -0
  26. package/dist/export/legacy-source.d.ts.map +1 -0
  27. package/dist/export/legacy-source.js +164 -0
  28. package/dist/export/legacy-source.js.map +1 -0
  29. package/dist/global-packages.d.ts +24 -0
  30. package/dist/global-packages.d.ts.map +1 -0
  31. package/dist/global-packages.js +89 -0
  32. package/dist/global-packages.js.map +1 -0
  33. package/dist/import/import-operation.d.ts +6 -0
  34. package/dist/import/import-operation.d.ts.map +1 -0
  35. package/dist/import/import-operation.js +16 -0
  36. package/dist/import/import-operation.js.map +1 -0
  37. package/dist/npm-registry.d.ts +11 -0
  38. package/dist/npm-registry.d.ts.map +1 -0
  39. package/dist/npm-registry.js +20 -0
  40. package/dist/npm-registry.js.map +1 -0
  41. package/dist/operations.d.ts +33 -0
  42. package/dist/operations.d.ts.map +1 -0
  43. package/dist/operations.js +270 -0
  44. package/dist/operations.js.map +1 -0
  45. package/dist/package-manifest.d.ts +16 -0
  46. package/dist/package-manifest.d.ts.map +1 -0
  47. package/dist/package-manifest.js +72 -0
  48. package/dist/package-manifest.js.map +1 -0
  49. package/dist/package-updates.d.ts +13 -0
  50. package/dist/package-updates.d.ts.map +1 -0
  51. package/dist/package-updates.js +41 -0
  52. package/dist/package-updates.js.map +1 -0
  53. package/dist/pm2.d.ts +28 -0
  54. package/dist/pm2.d.ts.map +1 -0
  55. package/dist/pm2.js +72 -0
  56. package/dist/pm2.js.map +1 -0
  57. package/dist/prompt.d.ts +49 -0
  58. package/dist/prompt.d.ts.map +1 -0
  59. package/dist/prompt.js +25 -0
  60. package/dist/prompt.js.map +1 -0
  61. package/dist/release-environment.d.ts +6 -0
  62. package/dist/release-environment.d.ts.map +1 -0
  63. package/dist/release-environment.js +19 -0
  64. package/dist/release-environment.js.map +1 -0
  65. package/dist/service-catalog.d.ts +10 -0
  66. package/dist/service-catalog.d.ts.map +1 -0
  67. package/dist/service-catalog.js +28 -0
  68. package/dist/service-catalog.js.map +1 -0
  69. package/dist/setup.d.ts +39 -0
  70. package/dist/setup.d.ts.map +1 -0
  71. package/dist/setup.js +413 -0
  72. package/dist/setup.js.map +1 -0
  73. package/dist/system.d.ts +5 -0
  74. package/dist/system.d.ts.map +1 -0
  75. package/dist/system.js +11 -0
  76. package/dist/system.js.map +1 -0
  77. package/dist/topology.d.ts +11 -0
  78. package/dist/topology.d.ts.map +1 -0
  79. package/dist/topology.js +78 -0
  80. package/dist/topology.js.map +1 -0
  81. package/package.json +51 -0
@@ -0,0 +1,11 @@
1
+ export interface TopologyNode {
2
+ readonly name: string;
3
+ readonly dependsOn: readonly string[];
4
+ }
5
+ export interface TopologyPlan<Node extends TopologyNode> {
6
+ readonly start: readonly Node[];
7
+ readonly stop: readonly Node[];
8
+ }
9
+ export declare function trimTopologyDependencies<Node extends TopologyNode>(nodes: readonly Node[]): Node[];
10
+ export declare function planTopology<Node extends TopologyNode>(nodes: readonly Node[]): TopologyPlan<Node>;
11
+ //# sourceMappingURL=topology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,YAAY,CAAC,IAAI,SAAS,YAAY;IACrD,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;CAChC;AAED,wBAAgB,wBAAwB,CAAC,IAAI,SAAS,YAAY,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,IAAI,EAAE,CAMlG;AAED,wBAAgB,YAAY,CAAC,IAAI,SAAS,YAAY,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAwClG"}
@@ -0,0 +1,78 @@
1
+ export function trimTopologyDependencies(nodes) {
2
+ const selected = new Set(nodes.map((node) => node.name));
3
+ return nodes.map((node) => ({
4
+ ...node,
5
+ dependsOn: node.dependsOn.filter((dependency) => selected.has(dependency)),
6
+ }));
7
+ }
8
+ export function planTopology(nodes) {
9
+ const byName = new Map();
10
+ for (const node of nodes) {
11
+ if (byName.has(node.name))
12
+ throw new Error(`Duplicate service identity: ${node.name}`);
13
+ byName.set(node.name, node);
14
+ }
15
+ for (const node of nodes) {
16
+ for (const dependency of node.dependsOn) {
17
+ if (!byName.has(dependency)) {
18
+ throw new Error(`Missing dependency ${dependency} required by ${node.name}`);
19
+ }
20
+ }
21
+ }
22
+ const indegree = new Map(nodes.map((node) => [node.name, node.dependsOn.length]));
23
+ const dependents = new Map();
24
+ for (const node of nodes) {
25
+ for (const dependency of node.dependsOn) {
26
+ const current = dependents.get(dependency) ?? [];
27
+ current.push(node.name);
28
+ dependents.set(dependency, current);
29
+ }
30
+ }
31
+ const ready = nodes.filter((node) => indegree.get(node.name) === 0)
32
+ .sort((left, right) => left.name.localeCompare(right.name));
33
+ const ordered = [];
34
+ while (ready.length > 0) {
35
+ const node = ready.shift();
36
+ ordered.push(node);
37
+ for (const dependent of (dependents.get(node.name) ?? []).sort()) {
38
+ const next = indegree.get(dependent) - 1;
39
+ indegree.set(dependent, next);
40
+ if (next === 0) {
41
+ ready.push(byName.get(dependent));
42
+ ready.sort((left, right) => left.name.localeCompare(right.name));
43
+ }
44
+ }
45
+ }
46
+ if (ordered.length !== nodes.length)
47
+ throw new Error(`Circular dependency: ${findCycle(nodes, byName).join(' -> ')}`);
48
+ return { start: ordered, stop: [...ordered].reverse() };
49
+ }
50
+ function findCycle(nodes, byName) {
51
+ const state = new Map();
52
+ const stack = [];
53
+ const visit = (node) => {
54
+ if (state.get(node.name) === 'visited')
55
+ return undefined;
56
+ if (state.get(node.name) === 'visiting') {
57
+ const start = stack.indexOf(node.name);
58
+ return [...stack.slice(start), node.name];
59
+ }
60
+ state.set(node.name, 'visiting');
61
+ stack.push(node.name);
62
+ for (const dependency of node.dependsOn) {
63
+ const cycle = visit(byName.get(dependency));
64
+ if (cycle)
65
+ return cycle;
66
+ }
67
+ stack.pop();
68
+ state.set(node.name, 'visited');
69
+ return undefined;
70
+ };
71
+ for (const node of nodes) {
72
+ const cycle = visit(node);
73
+ if (cycle)
74
+ return cycle;
75
+ }
76
+ return [];
77
+ }
78
+ //# sourceMappingURL=topology.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topology.js","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@zlooks.cn/cli",
3
+ "version": "1.0.0",
4
+ "private": false,
5
+ "type": "module",
6
+ "bin": {
7
+ "zlooks": "dist/command/index.js"
8
+ },
9
+ "exports": {
10
+ "./service-catalog": {
11
+ "types": "./dist/service-catalog.d.ts",
12
+ "import": "./dist/service-catalog.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "engines": {
19
+ "node": ">=24.0.0"
20
+ },
21
+ "scripts": {
22
+ "build": "pnpm run clean && tsc -p tsconfig.json && fix-esm-import-path --preserve-import-type ./dist",
23
+ "clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
24
+ "dev": "tsx src/command/index.ts",
25
+ "test": "vitest run",
26
+ "typecheck": "tsc -p tsconfig.json --noEmit"
27
+ },
28
+ "dependencies": {
29
+ "@hile/ioredis": "4.0.1",
30
+ "@hile/typeorm": "4.0.1",
31
+ "@inquirer/prompts": "8.7.0",
32
+ "@zlooks.cn/infrastructure": "1.0.0",
33
+ "@zlooks.cn/legacy-import": "1.0.0",
34
+ "@zlooks.cn/public-host-contract": "1.0.0",
35
+ "@zlooks.cn/registry-config": "1.0.0",
36
+ "commander": "15.0.0",
37
+ "ioredis": "5.11.1",
38
+ "semver": "7.8.5",
39
+ "typeorm": "1.1.0",
40
+ "yaml": "2.9.0"
41
+ },
42
+ "devDependencies": {
43
+ "@types/node": "26.2.0",
44
+ "@types/semver": "7.8.0",
45
+ "fix-esm-import-path": "1.10.3",
46
+ "tsx": "4.23.12",
47
+ "typescript": "7.0.2",
48
+ "vitest": "4.1.11"
49
+ },
50
+ "gitHead": "a3e825c2a62561f73f49a54720e286f08da63429"
51
+ }