submodule-version 2.4.1 → 3.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 (120) hide show
  1. package/README.md +98 -20
  2. package/dist/runner/handleErrors/handleErrors.d.ts +1 -1
  3. package/dist/runner/handleErrors/handleErrors.js +3 -10
  4. package/dist/runner/handleErrors/handleErrors.js.map +1 -1
  5. package/dist/runner/index.js +0 -0
  6. package/dist/runner/runner.d.ts +4 -0
  7. package/dist/runner/runner.js +91 -37
  8. package/dist/runner/runner.js.map +1 -1
  9. package/dist/src/PubGrub/PubGrub.d.ts +28 -0
  10. package/dist/src/PubGrub/PubGrub.js +366 -0
  11. package/dist/src/PubGrub/PubGrub.js.map +1 -0
  12. package/dist/src/PubGrub/index.d.ts +2 -0
  13. package/dist/src/PubGrub/index.js +7 -0
  14. package/dist/src/PubGrub/index.js.map +1 -0
  15. package/dist/src/PubGrub/types.d.ts +56 -0
  16. package/dist/src/PubGrub/types.js +3 -0
  17. package/dist/src/PubGrub/types.js.map +1 -0
  18. package/dist/src/entryStore.d.ts +16 -0
  19. package/dist/src/entryStore.js +152 -0
  20. package/dist/src/entryStore.js.map +1 -0
  21. package/dist/src/errors.d.ts +28 -0
  22. package/dist/src/errors.js +30 -0
  23. package/dist/src/errors.js.map +1 -0
  24. package/dist/src/git/api/GithubError.d.ts +4 -0
  25. package/dist/src/git/api/GithubError.js +11 -0
  26. package/dist/src/git/api/GithubError.js.map +1 -0
  27. package/dist/src/git/api/api.d.ts +8 -0
  28. package/dist/src/git/api/api.js +133 -0
  29. package/dist/src/git/api/api.js.map +1 -0
  30. package/dist/src/git/api/index.d.ts +3 -0
  31. package/dist/src/git/api/index.js +8 -0
  32. package/dist/src/git/api/index.js.map +1 -0
  33. package/dist/src/git/git.d.ts +30 -23
  34. package/dist/src/git/git.js +8 -258
  35. package/dist/src/git/git.js.map +1 -1
  36. package/dist/src/git/index.d.ts +1 -0
  37. package/dist/src/git/index.js +3 -1
  38. package/dist/src/git/index.js.map +1 -1
  39. package/dist/src/git/local/index.d.ts +1 -0
  40. package/dist/src/git/local/index.js +6 -0
  41. package/dist/src/git/local/index.js.map +1 -0
  42. package/dist/src/git/local/local.d.ts +26 -0
  43. package/dist/src/git/local/local.js +288 -0
  44. package/dist/src/git/local/local.js.map +1 -0
  45. package/dist/src/index.d.ts +7 -0
  46. package/dist/src/index.js +16 -1
  47. package/dist/src/index.js.map +1 -1
  48. package/dist/src/printError.d.ts +1 -0
  49. package/dist/src/printError.js +158 -0
  50. package/dist/src/printError.js.map +1 -0
  51. package/dist/src/sv.d.ts +16 -8
  52. package/dist/src/sv.js +222 -143
  53. package/dist/src/sv.js.map +1 -1
  54. package/dist/src/versionUtil/index.d.ts +2 -0
  55. package/dist/src/versionUtil/index.js +6 -0
  56. package/dist/src/versionUtil/index.js.map +1 -0
  57. package/dist/src/versionUtil/versionUtil.d.ts +16 -0
  58. package/dist/src/versionUtil/versionUtil.js +70 -0
  59. package/dist/src/versionUtil/versionUtil.js.map +1 -0
  60. package/package.json +4 -2
  61. package/runner/handleErrors/handleErrors.ts +3 -10
  62. package/runner/runner.ts +128 -46
  63. package/src/PubGrub/PubGrub.ts +578 -0
  64. package/src/PubGrub/__tests__/PubGrub.test.ts +351 -0
  65. package/src/PubGrub/index.ts +12 -0
  66. package/src/PubGrub/types.ts +72 -0
  67. package/src/__tests__/entryStore.test.ts +248 -0
  68. package/src/__tests__/printError.test.ts +148 -0
  69. package/src/__tests__/sv.test.ts +441 -0
  70. package/src/entryStore.ts +212 -0
  71. package/src/errors.ts +39 -0
  72. package/src/git/api/GithubError.ts +5 -0
  73. package/src/git/api/api.ts +180 -0
  74. package/src/git/api/index.ts +3 -0
  75. package/src/git/git.ts +8 -396
  76. package/src/git/index.ts +1 -0
  77. package/src/git/local/index.ts +1 -0
  78. package/src/git/local/local.ts +430 -0
  79. package/src/index.ts +17 -0
  80. package/src/printError.ts +189 -0
  81. package/src/sv.ts +304 -146
  82. package/src/versionUtil/__tests__/versionUtil.test.ts +62 -0
  83. package/src/versionUtil/index.ts +2 -0
  84. package/src/versionUtil/versionUtil.ts +103 -0
  85. package/tsconfig.json +1 -1
  86. package/dist/runner/handleErrors/handleBuildGraphError.d.ts +0 -1
  87. package/dist/runner/handleErrors/handleBuildGraphError.js +0 -42
  88. package/dist/runner/handleErrors/handleBuildGraphError.js.map +0 -1
  89. package/dist/runner/handleErrors/handleGitError.d.ts +0 -1
  90. package/dist/runner/handleErrors/handleGitError.js +0 -27
  91. package/dist/runner/handleErrors/handleGitError.js.map +0 -1
  92. package/dist/runner/handleErrors/handleInstallError.d.ts +0 -1
  93. package/dist/runner/handleErrors/handleInstallError.js +0 -30
  94. package/dist/runner/handleErrors/handleInstallError.js.map +0 -1
  95. package/dist/src/__tests__/versionUtil.test.d.ts +0 -1
  96. package/dist/src/__tests__/versionUtil.test.js +0 -80
  97. package/dist/src/__tests__/versionUtil.test.js.map +0 -1
  98. package/dist/src/buildGraph/GraphError.d.ts +0 -11
  99. package/dist/src/buildGraph/GraphError.js +0 -11
  100. package/dist/src/buildGraph/GraphError.js.map +0 -1
  101. package/dist/src/buildGraph/buildGraph.d.ts +0 -8
  102. package/dist/src/buildGraph/buildGraph.js +0 -100
  103. package/dist/src/buildGraph/buildGraph.js.map +0 -1
  104. package/dist/src/buildGraph/index.d.ts +0 -2
  105. package/dist/src/buildGraph/index.js +0 -8
  106. package/dist/src/buildGraph/index.js.map +0 -1
  107. package/dist/src/git/__tests__/parseGitUrl.test.d.ts +0 -1
  108. package/dist/src/git/__tests__/parseGitUrl.test.js +0 -30
  109. package/dist/src/git/__tests__/parseGitUrl.test.js.map +0 -1
  110. package/dist/src/versionUtil.d.ts +0 -13
  111. package/dist/src/versionUtil.js +0 -79
  112. package/dist/src/versionUtil.js.map +0 -1
  113. package/runner/handleErrors/handleBuildGraphError.ts +0 -49
  114. package/runner/handleErrors/handleGitError.ts +0 -28
  115. package/runner/handleErrors/handleInstallError.ts +0 -26
  116. package/src/__tests__/versionUtil.test.ts +0 -96
  117. package/src/buildGraph/GraphError.ts +0 -12
  118. package/src/buildGraph/buildGraph.ts +0 -150
  119. package/src/buildGraph/index.ts +0 -2
  120. package/src/versionUtil.ts +0 -97
@@ -0,0 +1,26 @@
1
+ export declare const local: {
2
+ addSubmodule: (url: string) => Promise<void>;
3
+ checkout: (name: string, version: string) => Promise<void>;
4
+ listVersions: (projectName: string) => Promise<string[]>;
5
+ status: (dir: string) => Promise<string>;
6
+ hasChanges: (dir: string) => Promise<boolean>;
7
+ hasUnpushedCommits: (dir: string) => Promise<boolean>;
8
+ isGitRepo: (dir: string) => Promise<boolean>;
9
+ getRemote: (dir: string) => Promise<string | null>;
10
+ init: (dir: string) => Promise<void>;
11
+ addRemote: (dir: string, url: string) => Promise<void>;
12
+ currentBranch: (dir: string) => Promise<string | null>;
13
+ defaultRemoteBranch: (dir: string) => Promise<string | null>;
14
+ ensureBranch: (dir: string) => Promise<void>;
15
+ commitAll: (dir: string, message: string) => Promise<void>;
16
+ addTag: (dir: string, version: string) => Promise<void>;
17
+ push: (dir: string, tag?: string) => Promise<void>;
18
+ fetch: (dir: string) => Promise<void>;
19
+ isRemoteAhead: (dir: string) => Promise<boolean>;
20
+ pullRebaseAutostash: (dir: string) => Promise<void>;
21
+ tagsAtHead: (dir: string) => Promise<string[]>;
22
+ currentVersion: (name: string) => Promise<string | null>;
23
+ listTags: (dir: string) => Promise<string[]>;
24
+ readJSONAtRef: (name: string, ref: string) => Promise<any | null>;
25
+ rm: (submoduleName: string) => Promise<void>;
26
+ };
@@ -0,0 +1,288 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.local = void 0;
7
+ const child_process_1 = require("child_process");
8
+ const util_1 = require("util");
9
+ const path_1 = __importDefault(require("path"));
10
+ const parseGitUrl_1 = require("../parseGitUrl");
11
+ const versionUtil_1 = require("../../versionUtil");
12
+ const runOptions_1 = require("../../runOptions");
13
+ const GitError_1 = require("../GitError");
14
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
15
+ /* stderr упавшей git-команды — единственный источник настоящей причины */
16
+ const stderrOf = (error) => (error?.stderr || '').trim();
17
+ exports.local = {
18
+ addSubmodule: async (url) => {
19
+ const { name } = (0, parseGitUrl_1.parseGitUrl)(url);
20
+ const module = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
21
+ try {
22
+ await execAsync(`git submodule add "${url}" "${module}"`, { cwd: runOptions_1.RunOptions.cwd });
23
+ }
24
+ catch (error) {
25
+ throw new GitError_1.GitError('GIT_SUBMODULE_ADD_FAILED', {
26
+ url,
27
+ reason: stderrOf(error),
28
+ });
29
+ }
30
+ },
31
+ checkout: async (name, version) => {
32
+ const module = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
33
+ try {
34
+ await execAsync(`git -C "${module}" checkout ${version} -q`, { cwd: runOptions_1.RunOptions.cwd });
35
+ }
36
+ catch (error) {
37
+ throw new GitError_1.GitError('GIT_MODULE_CHECKOUT_FAILED', {
38
+ name,
39
+ version,
40
+ reason: stderrOf(error),
41
+ });
42
+ }
43
+ },
44
+ listVersions: async (projectName) => {
45
+ const module = path_1.default.join(runOptions_1.RunOptions.modulesDir, projectName);
46
+ return exports.local.listTags(module);
47
+ },
48
+ status: async (dir) => {
49
+ const res = await execAsync(`git -C "${dir}" status --porcelain`, { cwd: runOptions_1.RunOptions.cwd });
50
+ return res.stdout.toString();
51
+ },
52
+ hasChanges: async (dir) => {
53
+ const status = await exports.local.status(dir);
54
+ return status.trim().length > 0;
55
+ },
56
+ hasUnpushedCommits: async (dir) => {
57
+ await exports.local.fetch(dir);
58
+ const branch = await exports.local.currentBranch(dir);
59
+ if (branch) {
60
+ let upstream = null;
61
+ try {
62
+ const res = await execAsync(`git -C "${dir}" rev-parse --abbrev-ref --symbolic-full-name @{u}`, { cwd: runOptions_1.RunOptions.cwd });
63
+ upstream = res.stdout.toString().trim() || null;
64
+ }
65
+ catch {
66
+ upstream = null;
67
+ }
68
+ if (!upstream) {
69
+ try {
70
+ await execAsync(`git -C "${dir}" rev-parse --verify --quiet origin/${branch}`, { cwd: runOptions_1.RunOptions.cwd });
71
+ upstream = `origin/${branch}`;
72
+ }
73
+ catch {
74
+ upstream = null;
75
+ }
76
+ }
77
+ /* Ветки на remote нет — всё локальное не опубликовано */
78
+ if (!upstream)
79
+ return true;
80
+ const res = await execAsync(`git -C "${dir}" rev-list ${upstream}..HEAD --count`, { cwd: runOptions_1.RunOptions.cwd });
81
+ return Number(res.stdout.toString().trim()) > 0;
82
+ }
83
+ /*
84
+ * Detached HEAD (checkout на тег): локальные теги не доказывают публикацию
85
+ * (могут быть не запушены) — сверяем HEAD с фактическими рефами remote.
86
+ */
87
+ let remoteOutput = '';
88
+ try {
89
+ const res = await execAsync(`git -C "${dir}" ls-remote origin`, { cwd: runOptions_1.RunOptions.cwd });
90
+ remoteOutput = res.stdout.toString();
91
+ }
92
+ catch {
93
+ /* Remote недоступен/не настроен — считаем всё неопубликованным */
94
+ return true;
95
+ }
96
+ const remoteShas = remoteOutput.split(/\r?\n/)
97
+ .map(line => line.split(/\s+/)[0])
98
+ .filter(sha => /^[0-9a-f]{40}$/.test(sha));
99
+ for (const sha of remoteShas) {
100
+ try {
101
+ await execAsync(`git -C "${dir}" merge-base --is-ancestor HEAD ${sha}`, { cwd: runOptions_1.RunOptions.cwd });
102
+ /* HEAD достижим из remote-рефа — опубликован */
103
+ return false;
104
+ }
105
+ catch {
106
+ // HEAD не предок этого рефа — проверяем остальные
107
+ }
108
+ }
109
+ return true;
110
+ },
111
+ isGitRepo: async (dir) => {
112
+ try {
113
+ await execAsync(`git -C "${dir}" rev-parse --is-inside-work-tree`, { cwd: runOptions_1.RunOptions.cwd });
114
+ return true;
115
+ }
116
+ catch {
117
+ return false;
118
+ }
119
+ },
120
+ getRemote: async (dir) => {
121
+ try {
122
+ const res = await execAsync(`git -C "${dir}" remote get-url origin`, { cwd: runOptions_1.RunOptions.cwd });
123
+ return res.stdout.toString().trim() || null;
124
+ }
125
+ catch {
126
+ return null;
127
+ }
128
+ },
129
+ init: async (dir) => {
130
+ await execAsync(`git -C "${dir}" init`, { cwd: runOptions_1.RunOptions.cwd });
131
+ },
132
+ addRemote: async (dir, url) => {
133
+ const existing = await exports.local.getRemote(dir);
134
+ const command = existing
135
+ ? `git -C "${dir}" remote set-url origin "${url}"`
136
+ : `git -C "${dir}" remote add origin "${url}"`;
137
+ await execAsync(command, { cwd: runOptions_1.RunOptions.cwd });
138
+ },
139
+ currentBranch: async (dir) => {
140
+ try {
141
+ const res = await execAsync(`git -C "${dir}" symbolic-ref --short -q HEAD`, { cwd: runOptions_1.RunOptions.cwd });
142
+ return res.stdout.toString().trim() || null;
143
+ }
144
+ catch {
145
+ return null;
146
+ }
147
+ },
148
+ defaultRemoteBranch: async (dir) => {
149
+ try {
150
+ const res = await execAsync(`git -C "${dir}" symbolic-ref --short refs/remotes/origin/HEAD`, { cwd: runOptions_1.RunOptions.cwd });
151
+ return res.stdout.toString().trim().replace(/^origin\//, '') || null;
152
+ }
153
+ catch {
154
+ // origin/HEAD not set - probe common defaults
155
+ }
156
+ for (const candidate of ['main', 'master']) {
157
+ try {
158
+ await execAsync(`git -C "${dir}" rev-parse --verify --quiet origin/${candidate}`, { cwd: runOptions_1.RunOptions.cwd });
159
+ return candidate;
160
+ }
161
+ catch {
162
+ // No such remote branch
163
+ }
164
+ }
165
+ return null;
166
+ },
167
+ /*
168
+ * Аддоны checkout'нуты на тег (detached HEAD). Перед коммитом поднимаем
169
+ * локальную ветку на текущем коммите и привязываем её к remote-ветке,
170
+ * чтобы sync/push работали по ветке, а не в оторванной голове.
171
+ */
172
+ ensureBranch: async (dir) => {
173
+ const branch = await exports.local.currentBranch(dir);
174
+ if (branch)
175
+ return;
176
+ await exports.local.fetch(dir);
177
+ const remoteBranch = await exports.local.defaultRemoteBranch(dir);
178
+ const target = remoteBranch || 'main';
179
+ await execAsync(`git -C "${dir}" checkout -B ${target}`, { cwd: runOptions_1.RunOptions.cwd });
180
+ if (remoteBranch) {
181
+ await execAsync(
182
+ // eslint-disable-next-line max-len
183
+ `git -C "${dir}" branch --set-upstream-to=origin/${remoteBranch} ${target}`, { cwd: runOptions_1.RunOptions.cwd });
184
+ }
185
+ },
186
+ commitAll: async (dir, message) => {
187
+ await execAsync(`git -C "${dir}" add -A`, { cwd: runOptions_1.RunOptions.cwd });
188
+ await execAsync(`git -C "${dir}" commit -m ${JSON.stringify(message)}`, { cwd: runOptions_1.RunOptions.cwd });
189
+ },
190
+ addTag: async (dir, version) => {
191
+ await execAsync(`git -C "${dir}" tag ${version}`, { cwd: runOptions_1.RunOptions.cwd });
192
+ },
193
+ push: async (dir, tag) => {
194
+ await execAsync(`git -C "${dir}" push -u origin HEAD`, { cwd: runOptions_1.RunOptions.cwd });
195
+ if (tag) {
196
+ await execAsync(`git -C "${dir}" push origin ${tag}`, { cwd: runOptions_1.RunOptions.cwd });
197
+ }
198
+ },
199
+ fetch: async (dir) => {
200
+ try {
201
+ await execAsync(`git -C "${dir}" fetch origin`, { cwd: runOptions_1.RunOptions.cwd });
202
+ }
203
+ catch {
204
+ // Fresh repo without upstream yet - nothing to fetch
205
+ }
206
+ },
207
+ isRemoteAhead: async (dir) => {
208
+ await exports.local.fetch(dir);
209
+ try {
210
+ const res = await execAsync(`git -C "${dir}" rev-list HEAD..@{u} --count`, { cwd: runOptions_1.RunOptions.cwd });
211
+ return Number(res.stdout.toString().trim()) > 0;
212
+ }
213
+ catch {
214
+ // No upstream configured - remote is not ahead
215
+ return false;
216
+ }
217
+ },
218
+ pullRebaseAutostash: async (dir) => {
219
+ try {
220
+ await execAsync(`git -C "${dir}" pull --rebase --autostash`, { cwd: runOptions_1.RunOptions.cwd });
221
+ }
222
+ catch {
223
+ try {
224
+ await execAsync(`git -C "${dir}" rebase --abort`, { cwd: runOptions_1.RunOptions.cwd });
225
+ }
226
+ catch {
227
+ // Best effort - no rebase in progress
228
+ }
229
+ try {
230
+ await execAsync(`git -C "${dir}" stash pop`, { cwd: runOptions_1.RunOptions.cwd });
231
+ }
232
+ catch {
233
+ // Best effort - nothing stashed
234
+ }
235
+ throw new GitError_1.GitError('GIT_SYNC_CONFLICT');
236
+ }
237
+ },
238
+ tagsAtHead: async (dir) => {
239
+ try {
240
+ const res = await execAsync(`git -C "${dir}" tag --points-at HEAD`, { cwd: runOptions_1.RunOptions.cwd });
241
+ return res.stdout.toString().split(/\r?\n/)
242
+ .filter(tag => tag && versionUtil_1.versionUtil.validate(tag));
243
+ }
244
+ catch {
245
+ return [];
246
+ }
247
+ },
248
+ currentVersion: async (name) => {
249
+ const module = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
250
+ const tags = await exports.local.tagsAtHead(module);
251
+ return versionUtil_1.versionUtil.latest(tags) || null;
252
+ },
253
+ listTags: async (dir) => {
254
+ try {
255
+ await execAsync(`git -C "${dir}" fetch --tags`, { cwd: runOptions_1.RunOptions.cwd });
256
+ }
257
+ catch {
258
+ // Repo without remote - local tags only
259
+ }
260
+ const res = await execAsync(`git -C "${dir}" tag -l`, { cwd: runOptions_1.RunOptions.cwd });
261
+ const tagList = res.stdout.toString().split(/\r?\n/);
262
+ return tagList.filter(tag => {
263
+ if (!tag)
264
+ return false;
265
+ return versionUtil_1.versionUtil.validate(tag);
266
+ });
267
+ },
268
+ /*
269
+ * package.json сабмодуля на произвольном рефе (теге), не трогая рабочую
270
+ * копию. Нет файла или рефа — null (ленивое чтение depsByVersion).
271
+ */
272
+ readJSONAtRef: async (name, ref) => {
273
+ const module = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
274
+ try {
275
+ const res = await execAsync(`git -C "${module}" show ${ref}:package.json`, { cwd: runOptions_1.RunOptions.cwd });
276
+ return JSON.parse(res.stdout.toString());
277
+ }
278
+ catch {
279
+ return null;
280
+ }
281
+ },
282
+ rm: async (submoduleName) => {
283
+ const modulePath = path_1.default.join(runOptions_1.RunOptions.modulesDir, submoduleName);
284
+ await execAsync(`git rm -rf "${modulePath}"`, { cwd: runOptions_1.RunOptions.cwd });
285
+ await execAsync(`rm -rf "${path_1.default.join('.git/modules', modulePath)}"`, { cwd: runOptions_1.RunOptions.cwd });
286
+ },
287
+ };
288
+ //# sourceMappingURL=local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../src/git/local/local.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,9 @@
1
1
  export { SV } from './sv';
2
2
  export { versionUtil } from './versionUtil';
3
+ export { PubGrub, pubGrub } from './PubGrub';
4
+ export type { IEntrySource, IIncompatibility, IOverride, IPackageEntry, IRequirement, IResolvedPackage, ITerm, TDependencies, TPubGrubResult, } from './PubGrub';
5
+ export { EntryStore, entryStore } from './entryStore';
6
+ export { printError } from './printError';
7
+ export { git, GitError, GithubError } from './git';
8
+ export { SVError, ERR } from './errors';
9
+ export type { TSVErrorCode, TSVErrorDetails } from './errors';
package/dist/src/index.js CHANGED
@@ -1,8 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.versionUtil = exports.SV = void 0;
3
+ exports.ERR = exports.SVError = exports.GithubError = exports.GitError = exports.git = exports.printError = exports.entryStore = exports.EntryStore = exports.pubGrub = exports.PubGrub = exports.versionUtil = exports.SV = void 0;
4
4
  var sv_1 = require("./sv");
5
5
  Object.defineProperty(exports, "SV", { enumerable: true, get: function () { return sv_1.SV; } });
6
6
  var versionUtil_1 = require("./versionUtil");
7
7
  Object.defineProperty(exports, "versionUtil", { enumerable: true, get: function () { return versionUtil_1.versionUtil; } });
8
+ var PubGrub_1 = require("./PubGrub");
9
+ Object.defineProperty(exports, "PubGrub", { enumerable: true, get: function () { return PubGrub_1.PubGrub; } });
10
+ Object.defineProperty(exports, "pubGrub", { enumerable: true, get: function () { return PubGrub_1.pubGrub; } });
11
+ var entryStore_1 = require("./entryStore");
12
+ Object.defineProperty(exports, "EntryStore", { enumerable: true, get: function () { return entryStore_1.EntryStore; } });
13
+ Object.defineProperty(exports, "entryStore", { enumerable: true, get: function () { return entryStore_1.entryStore; } });
14
+ var printError_1 = require("./printError");
15
+ Object.defineProperty(exports, "printError", { enumerable: true, get: function () { return printError_1.printError; } });
16
+ var git_1 = require("./git");
17
+ Object.defineProperty(exports, "git", { enumerable: true, get: function () { return git_1.git; } });
18
+ Object.defineProperty(exports, "GitError", { enumerable: true, get: function () { return git_1.GitError; } });
19
+ Object.defineProperty(exports, "GithubError", { enumerable: true, get: function () { return git_1.GithubError; } });
20
+ var errors_1 = require("./errors");
21
+ Object.defineProperty(exports, "SVError", { enumerable: true, get: function () { return errors_1.SVError; } });
22
+ Object.defineProperty(exports, "ERR", { enumerable: true, get: function () { return errors_1.ERR; } });
8
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,2BAA0B;AAAjB,wFAAA,EAAE,OAAA;AACX,6CAA4C;AAAnC,0GAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,2BAA0B;AAAjB,wFAAA,EAAE,OAAA;AACX,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,qCAA6C;AAApC,kGAAA,OAAO,OAAA;AAAE,kGAAA,OAAO,OAAA;AAYzB,2CAAsD;AAA7C,wGAAA,UAAU,OAAA;AAAE,wGAAA,UAAU,OAAA;AAC/B,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,6BAAmD;AAA1C,0FAAA,GAAG,OAAA;AAAE,+FAAA,QAAQ,OAAA;AAAE,kGAAA,WAAW,OAAA;AACnC,mCAAwC;AAA/B,iGAAA,OAAO,OAAA;AAAE,6FAAA,GAAG,OAAA"}
@@ -0,0 +1 @@
1
+ export declare const printError: (error: Error) => string;
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.printError = void 0;
7
+ const fs_1 = require("fs");
8
+ const path_1 = __importDefault(require("path"));
9
+ const errors_1 = require("./errors");
10
+ const git_1 = require("./git");
11
+ const runOptions_1 = require("./runOptions");
12
+ const versionUtil_1 = require("./versionUtil");
13
+ const ROOT = '<root>';
14
+ const asList = (value) => (Array.isArray(value) ? value.map(String) : []);
15
+ /* Имя проекта из корневого package.json для отображения вместо <root> */
16
+ const projectRootName = () => {
17
+ try {
18
+ const pkg = JSON.parse((0, fs_1.readFileSync)(path_1.default.join(runOptions_1.RunOptions.cwd, 'package.json'), 'utf-8'));
19
+ return pkg.name || 'the project root';
20
+ }
21
+ catch {
22
+ return 'the project root';
23
+ }
24
+ };
25
+ const printVersionConflict = (details) => {
26
+ const parents = (details.parents || {});
27
+ const versions = asList(details.versions);
28
+ const constraints = (Array.isArray(details.constraints) ? details.constraints : []);
29
+ /*
30
+ * Ни одна доступная версия не подходит под одно из требований —
31
+ * это не конфликт между родителями, а запрос несуществующей версии.
32
+ */
33
+ const unsatisfiable = constraints.find(requirement => (requirement.positive
34
+ && !versions.some(version => (versionUtil_1.versionUtil.satisfies(version, requirement.range)))));
35
+ if (unsatisfiable) {
36
+ const from = unsatisfiable.requiredBy === ROOT
37
+ ? projectRootName()
38
+ : unsatisfiable.requiredBy;
39
+ return `Package ${String(details.name)} does not contain a version`
40
+ + ` matching ${unsatisfiable.range} required by ${from}`
41
+ + `. Use one of [${versions.join(', ')}]`;
42
+ }
43
+ const chain = asList(details.chain)
44
+ .map(name => (name === ROOT ? projectRootName() : name));
45
+ const lines = [
46
+ `Version conflict for ${String(details.name)}:`,
47
+ ...Object.entries(parents).map(([parent, range]) => {
48
+ const from = parent === ROOT ? projectRootName() : parent;
49
+ return ` - ${range} required by ${from}`;
50
+ }),
51
+ ];
52
+ if (chain.length)
53
+ lines.push(` chain: ${chain.join(' -> ')}`);
54
+ if (versions.length) {
55
+ lines.push(` available versions: ${versions.join(', ')}`);
56
+ }
57
+ return lines.join('\n');
58
+ };
59
+ const printSVError = (error) => {
60
+ const { error: code, details } = error;
61
+ switch (code) {
62
+ case errors_1.ERR.NOT_A_NPM:
63
+ return 'Not an npm project (package.json not found)';
64
+ case errors_1.ERR.NOT_A_GIT_REPO:
65
+ return 'Not a git repository';
66
+ case errors_1.ERR.NOT_A_GIT_URL:
67
+ return `${String(details.url || '')} - is not a git url!`;
68
+ case errors_1.ERR.NOT_INITIALIZED:
69
+ return 'SV is not initialized - call init() first';
70
+ case errors_1.ERR.NOT_IMPLEMENTED:
71
+ return 'This command is not implemented yet';
72
+ case errors_1.ERR.PATH_NOT_FOUND:
73
+ return `Path ${String(details.path)} is not found`;
74
+ case errors_1.ERR.ADDON_NOT_FOUND: {
75
+ const urls = asList(details.urls);
76
+ const suffix = urls.length
77
+ ? ` (conflicting urls: ${urls.join(', ')})`
78
+ : '';
79
+ return `Module ${String(details.name)} is not found${suffix}`;
80
+ }
81
+ case errors_1.ERR.REQUESTED_VERSION_NOT_EXISTS: {
82
+ const versions = asList(details.versions).join(', ');
83
+ return `Package ${String(details.name)} does not contain version`
84
+ + ` ${String(details.requestedVersion)}. Use one of [${versions}]`;
85
+ }
86
+ case errors_1.ERR.VERSION_CONFLICT:
87
+ return printVersionConflict(details);
88
+ case errors_1.ERR.CIRCULAR_DEPENDENCY:
89
+ return `Circular dependency: ${asList(details.chain).join(' -> ')}`;
90
+ case errors_1.ERR.UNKNOWN_VERSION:
91
+ return `Unknown version ${String(details.version)}`
92
+ + ` for ${String(details.name)} in ${String(details.parent)}`;
93
+ case errors_1.ERR.GIT_DIRTY_SWITCH_CONFLICT:
94
+ return 'Checkout failed: uncommitted changes cannot be carried over'
95
+ + ' - move them manually';
96
+ default:
97
+ return code;
98
+ }
99
+ };
100
+ const printGitError = (error) => {
101
+ const reason = error.details.reason
102
+ ? `: ${String(error.details.reason)}`
103
+ : '';
104
+ switch (error.message) {
105
+ case 'GIT_NOT_A_REPO':
106
+ return 'Not a git repository';
107
+ case 'GIT_SUBMODULE_ADD_FAILED':
108
+ return `Failed to add submodule ${String(error.details.url)}${reason}`;
109
+ case 'GIT_MODULE_CHECKOUT_FAILED':
110
+ return `Checkout ${String(error.details.version || '')}`
111
+ + ` failed${reason}`;
112
+ case 'GIT_REPO_URL_REQUIRED':
113
+ return 'Module is not published yet'
114
+ + ' - pass --repo-url for the first publish';
115
+ case 'GIT_NOT_LATEST_VERSION':
116
+ return 'Publish is only possible from the latest version';
117
+ case 'GIT_SYNC_CONFLICT':
118
+ return 'Sync with remote failed - resolve conflicts manually';
119
+ default:
120
+ return error.message;
121
+ }
122
+ };
123
+ const printGithubError = (error) => {
124
+ const { message, details } = error;
125
+ switch (message) {
126
+ case 'GITHUB_NOT_A_REPO_URL':
127
+ return `Not a GitHub repo url: ${String(details.url)}`;
128
+ case 'GITHUB_TOKEN_REQUIRED':
129
+ return 'GitHub GraphQL API requires a token: set GITHUB_TOKEN'
130
+ + ' or pass { githubToken } to new SV()';
131
+ case 'GITHUB_API_FAILED': {
132
+ const hints = {
133
+ 404: 'repo not found or private (set GITHUB_TOKEN)',
134
+ 403: 'rate limit or forbidden (set GITHUB_TOKEN)',
135
+ };
136
+ const status = details.status;
137
+ const hint = hints[status];
138
+ const target = details.url ? ` for ${String(details.url)}` : '';
139
+ const errors = asList(details.errors).join('; ');
140
+ return `GitHub API failed (${status})${target}`
141
+ + `${errors ? `: ${errors}` : ''}${hint ? `: ${hint}` : ''}`;
142
+ }
143
+ default:
144
+ return message;
145
+ }
146
+ };
147
+ /* Человекочитаемый текст ошибок SV/PubGrub, git-слоя и GitHub API */
148
+ const printError = (error) => {
149
+ if (error instanceof errors_1.SVError)
150
+ return printSVError(error);
151
+ if (error instanceof git_1.GitError)
152
+ return printGitError(error);
153
+ if (error instanceof git_1.GithubError)
154
+ return printGithubError(error);
155
+ return `Unhandled error: ${error.message}`;
156
+ };
157
+ exports.printError = printError;
158
+ //# sourceMappingURL=printError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"printError.js","sourceRoot":"","sources":["../../src/printError.ts"],"names":[],"mappings":"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"}
package/dist/src/sv.d.ts CHANGED
@@ -1,12 +1,20 @@
1
+ import { TPubGrubResult } from './PubGrub';
1
2
  export declare class SV {
2
- constructor(projectDir: string, modulesDir?: string);
3
- buildGraph: () => Promise<Record<string, import("./buildGraph/buildGraph").IGraphEntry>>;
4
- install: (gitUrl: string, parentModule?: string) => Promise<void>;
5
- update: () => Promise<void>;
6
- setVersion: (name: string, version: string, constraint?: string) => Promise<void>;
7
- getConstraint: (name: string) => Promise<string | null>;
8
- setConstraint: (name: string, constraint: string) => Promise<void>;
9
- remove: (submoduleName: string, parentModule?: string) => Promise<void>;
3
+ private resolution;
4
+ private store;
5
+ private explicitModulesDir?;
6
+ constructor(projectDir: string, modulesDir?: string, options?: {
7
+ githubToken?: string;
8
+ });
9
+ private syncModulesDir;
10
+ private resolveDeps;
11
+ private syncModules;
12
+ private apply;
13
+ init: () => Promise<void>;
14
+ getResolution: () => TPubGrubResult;
15
+ put: (url: string, versionOrParent?: string, parentName?: string) => Promise<void>;
16
+ delete: (name: string, parentName?: string) => Promise<void>;
17
+ listVersions: (name?: string) => Record<string, string[]> | string[];
10
18
  hasChanges: (module?: string) => Promise<boolean>;
11
19
  hasUncommittedChanges: (module?: string) => Promise<boolean>;
12
20
  currentVersion: (module?: string) => Promise<string | null>;