@microwiseai/snapshot 0.5.1 → 0.6.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 (77) hide show
  1. package/dist/commands/doctor.d.ts +2 -0
  2. package/dist/commands/doctor.d.ts.map +1 -0
  3. package/dist/commands/doctor.js +37 -0
  4. package/dist/commands/doctor.js.map +1 -0
  5. package/dist/commands/install.d.ts.map +1 -1
  6. package/dist/commands/install.js +34 -11
  7. package/dist/commands/install.js.map +1 -1
  8. package/dist/commands/setup.d.ts +5 -0
  9. package/dist/commands/setup.d.ts.map +1 -0
  10. package/dist/commands/setup.js +52 -0
  11. package/dist/commands/setup.js.map +1 -0
  12. package/dist/index.js +18 -14
  13. package/dist/index.js.map +1 -1
  14. package/dist/lib/config.js +1 -1
  15. package/dist/lib/config.js.map +1 -1
  16. package/dist/lib/gitlab.d.ts.map +1 -1
  17. package/dist/lib/gitlab.js +8 -6
  18. package/dist/lib/gitlab.js.map +1 -1
  19. package/dist/lib/prerequisites.d.ts +33 -0
  20. package/dist/lib/prerequisites.d.ts.map +1 -0
  21. package/dist/lib/prerequisites.js +123 -0
  22. package/dist/lib/prerequisites.js.map +1 -0
  23. package/package.json +3 -14
  24. package/dist/commands/clone-all.d.ts +0 -21
  25. package/dist/commands/clone-all.d.ts.map +0 -1
  26. package/dist/commands/clone-all.js +0 -57
  27. package/dist/commands/clone-all.js.map +0 -1
  28. package/node_modules/@gitdot/clone-lib/README.md +0 -117
  29. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts +0 -9
  30. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts.map +0 -1
  31. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js +0 -154
  32. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js.map +0 -1
  33. package/node_modules/@gitdot/clone-lib/dist/clone.d.ts +0 -21
  34. package/node_modules/@gitdot/clone-lib/dist/clone.d.ts.map +0 -1
  35. package/node_modules/@gitdot/clone-lib/dist/clone.js +0 -228
  36. package/node_modules/@gitdot/clone-lib/dist/clone.js.map +0 -1
  37. package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts +0 -10
  38. package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts.map +0 -1
  39. package/node_modules/@gitdot/clone-lib/dist/dotpath.js +0 -27
  40. package/node_modules/@gitdot/clone-lib/dist/dotpath.js.map +0 -1
  41. package/node_modules/@gitdot/clone-lib/dist/git.d.ts +0 -23
  42. package/node_modules/@gitdot/clone-lib/dist/git.d.ts.map +0 -1
  43. package/node_modules/@gitdot/clone-lib/dist/git.js +0 -134
  44. package/node_modules/@gitdot/clone-lib/dist/git.js.map +0 -1
  45. package/node_modules/@gitdot/clone-lib/dist/index.d.ts +0 -17
  46. package/node_modules/@gitdot/clone-lib/dist/index.d.ts.map +0 -1
  47. package/node_modules/@gitdot/clone-lib/dist/index.js +0 -35
  48. package/node_modules/@gitdot/clone-lib/dist/index.js.map +0 -1
  49. package/node_modules/@gitdot/clone-lib/dist/lock.d.ts +0 -24
  50. package/node_modules/@gitdot/clone-lib/dist/lock.d.ts.map +0 -1
  51. package/node_modules/@gitdot/clone-lib/dist/lock.js +0 -97
  52. package/node_modules/@gitdot/clone-lib/dist/lock.js.map +0 -1
  53. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts +0 -15
  54. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts.map +0 -1
  55. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js +0 -124
  56. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js.map +0 -1
  57. package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts +0 -12
  58. package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts.map +0 -1
  59. package/node_modules/@gitdot/clone-lib/dist/resolve/index.js +0 -31
  60. package/node_modules/@gitdot/clone-lib/dist/resolve/index.js.map +0 -1
  61. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts +0 -32
  62. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts.map +0 -1
  63. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js +0 -159
  64. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js.map +0 -1
  65. package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts +0 -44
  66. package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts.map +0 -1
  67. package/node_modules/@gitdot/clone-lib/dist/resolve/member.js +0 -163
  68. package/node_modules/@gitdot/clone-lib/dist/resolve/member.js.map +0 -1
  69. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts +0 -18
  70. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts.map +0 -1
  71. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js +0 -155
  72. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js.map +0 -1
  73. package/node_modules/@gitdot/clone-lib/dist/types.d.ts +0 -225
  74. package/node_modules/@gitdot/clone-lib/dist/types.d.ts.map +0 -1
  75. package/node_modules/@gitdot/clone-lib/dist/types.js +0 -9
  76. package/node_modules/@gitdot/clone-lib/dist/types.js.map +0 -1
  77. package/node_modules/@gitdot/clone-lib/package.json +0 -53
@@ -1,163 +0,0 @@
1
- "use strict";
2
- /**
3
- * Shared member-coordinate core (RESOLVED-LOCK-SPEC S2/S4).
4
- *
5
- * The ONE place that turns "an in-scope npm package + (maybe) a projectId" into a
6
- * fully-resolved resolved-lock member. Both resolvers build on it:
7
- *
8
- * B1 resolveLock(package-lock) — projectId from the `resolved` tarball URL
9
- * B2 resolveFromManifest(json) — projectId from the registry packument
10
- *
11
- * They differ ONLY in how they discover the package set + its projectId; from
12
- * "npm name + version + projectId" onward the resolution is identical here.
13
- * READ-ONLY: reads an installed package.json (optional) + GitLab GETs.
14
- */
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.projectIdFromResolved = projectIdFromResolved;
17
- exports.repositoryToCloneUrl = repositoryToCloneUrl;
18
- exports.projectPathFromUrl = projectPathFromUrl;
19
- exports.idFromProjectPath = idFromProjectPath;
20
- exports.groupFromProjectPath = groupFromProjectPath;
21
- exports.findCommitSha = findCommitSha;
22
- exports.resolveMember = resolveMember;
23
- /** Extract the numeric GitLab projectId from a registry `resolved`/tarball URL. */
24
- function projectIdFromResolved(resolved) {
25
- if (!resolved)
26
- return null;
27
- const m = String(resolved).match(/\/projects\/(\d+)\//);
28
- return m ? Number(m[1]) : null;
29
- }
30
- /** Normalize a package.json `repository` field to a plain git clone URL, or null. */
31
- function repositoryToCloneUrl(repository) {
32
- if (!repository)
33
- return null;
34
- const raw = typeof repository === 'string' ? repository : repository.url;
35
- if (!raw || typeof raw !== 'string')
36
- return null;
37
- return raw.replace(/^git\+/, ''); // strip npm's `git+` prefix
38
- }
39
- /** Derive `namespace/project` path from an https/ssh git URL, or null. */
40
- function projectPathFromUrl(url) {
41
- if (!url)
42
- return null;
43
- let s = url.replace(/^git\+/, '');
44
- const scheme = s.match(/^[a-zA-Z][\w+.-]*:\/\/(.*)$/);
45
- if (scheme) {
46
- s = scheme[1].replace(/^[^@/]+@/, ''); // strip creds
47
- const slash = s.indexOf('/');
48
- if (slash === -1)
49
- return null;
50
- s = s.slice(slash + 1);
51
- }
52
- else {
53
- const scp = s.match(/^(?:[^@/]+@)?[^/:]+:(.+)$/); // scp form (git@host:group/repo.git)
54
- if (!scp)
55
- return null;
56
- s = scp[1];
57
- }
58
- return s.replace(/^\/+/, '').replace(/\.git$/i, '').replace(/\/+$/, '') || null;
59
- }
60
- /** id = projectPath with '/' -> '.' (pure dot-identity for dotToTreePath). */
61
- function idFromProjectPath(projectPath) {
62
- return projectPath.replace(/\//g, '.');
63
- }
64
- /** gitlabGroup = the namespace (everything before the last path segment). */
65
- function groupFromProjectPath(projectPath) {
66
- const parts = projectPath.split('/');
67
- return parts.length > 1 ? parts.slice(0, -1).join('/') : parts[0];
68
- }
69
- /** Find the commit sha for `version` via a `v<version>` or `<version>` tag. */
70
- function findCommitSha(tags, version) {
71
- if (!Array.isArray(tags))
72
- return { sha: null, tag: null };
73
- const want = new Set([`v${version}`, `${version}`]);
74
- const hit = tags.find((t) => want.has(t.name));
75
- return hit
76
- ? { sha: (hit.commit && (hit.commit.id || hit.commit.sha)) || null, tag: hit.name }
77
- : { sha: null, tag: null };
78
- }
79
- /** Resolve a single member. Shared by B1 + B2. */
80
- async function resolveMember(p) {
81
- const { npmName, version, projectId, installer, api, readInstalledManifest, doWarn } = p;
82
- let cloneUrl = null;
83
- let projectPath = null;
84
- let visibility = 'unknown';
85
- let provenance = null;
86
- let defaultBranch = null;
87
- // (1) manifest-repository: read the installed package.json `repository` (if any).
88
- const manifest = readInstalledManifest ? readInstalledManifest(npmName) : null;
89
- const repoUrl = manifest ? repositoryToCloneUrl(manifest.repository) : null;
90
- if (repoUrl) {
91
- cloneUrl = repoUrl;
92
- projectPath = projectPathFromUrl(repoUrl);
93
- provenance = 'manifest-repository';
94
- }
95
- // Enrich (and, for path-2, resolve) the coordinate via the GitLab API by projectId.
96
- let project = null;
97
- if (projectId != null) {
98
- try {
99
- project = await api.getProject(projectId);
100
- }
101
- catch (e) {
102
- doWarn(`${npmName}: GET /projects/${projectId} failed (${e.message})`);
103
- }
104
- }
105
- if (project) {
106
- if (!provenance) {
107
- // (2) gitlab-api: coordinate comes entirely from the API
108
- cloneUrl = project.http_url_to_repo || cloneUrl;
109
- projectPath = project.path_with_namespace || projectPath;
110
- provenance = 'gitlab-api';
111
- }
112
- else {
113
- // path-1 already pinned the coordinate; API only enriches path/visibility
114
- projectPath = projectPath || project.path_with_namespace || null;
115
- }
116
- visibility = project.visibility || visibility;
117
- defaultBranch = project.default_branch || null;
118
- }
119
- if (!cloneUrl || !projectPath) {
120
- doWarn(`${npmName}: could not resolve a clone coordinate (projectId=${projectId}) — ` +
121
- `member emitted without cloneUrl (clone-lib will mark it failed)`);
122
- }
123
- // commitSha via tag lookup (tag → sha pin).
124
- let sha = null;
125
- let tag = null;
126
- if (projectId != null) {
127
- try {
128
- const tags = await api.getTags(projectId);
129
- const found = findCommitSha(tags, version);
130
- sha = found.sha || null;
131
- tag = found.tag || null;
132
- }
133
- catch (e) {
134
- doWarn(`${npmName}: GET tags failed (${e.message}) — commitSha=null`);
135
- }
136
- }
137
- if (!sha) {
138
- doWarn(`${npmName}@${version}: no matching v<version> tag — commitSha=null (pinned mode will skip this member)`);
139
- }
140
- const id = projectPath
141
- ? idFromProjectPath(projectPath)
142
- : npmName.replace(/^@/, '').replace(/[/]/g, '.');
143
- const gitlabGroup = projectPath ? groupFromProjectPath(projectPath) : null;
144
- const member = {
145
- id,
146
- npmName,
147
- gitlabGroup,
148
- repoCoordinate: {
149
- ...(cloneUrl ? { cloneUrl } : {}),
150
- ...(projectPath ? { projectPath } : {}),
151
- ...(projectId != null ? { projectId } : {}),
152
- },
153
- visibility,
154
- version,
155
- commitSha: sha,
156
- ref: { branch: defaultBranch || null, tag, sha, dirty: false },
157
- memberType: 'npm-lib',
158
- installer,
159
- provenance,
160
- };
161
- return { id, member };
162
- }
163
- //# sourceMappingURL=member.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"member.js","sourceRoot":"","sources":["../../src/resolve/member.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAYH,sDAIC;AAGD,oDAKC;AAGD,gDAeC;AAGD,8CAEC;AAGD,oDAGC;AAGD,sCAUC;AAaD,sCA2FC;AA/JD,mFAAmF;AACnF,SAAgB,qBAAqB,CAAC,QAAmC;IACvE,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACxD,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,qFAAqF;AACrF,SAAgB,oBAAoB,CAAC,UAAmB;IACtD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,GAAG,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAE,UAAgC,CAAC,GAAG,CAAC;IAChG,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,4BAA4B;AAChE,CAAC;AAED,0EAA0E;AAC1E,SAAgB,kBAAkB,CAAC,GAA8B;IAC/D,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACtD,IAAI,MAAM,EAAE,CAAC;QACX,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc;QACrD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9B,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,qCAAqC;QACvF,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACb,CAAC;IACD,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;AAClF,CAAC;AAED,8EAA8E;AAC9E,SAAgB,iBAAiB,CAAC,WAAmB;IACnD,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,6EAA6E;AAC7E,SAAgB,oBAAoB,CAAC,WAAmB;IACtD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,+EAA+E;AAC/E,SAAgB,aAAa,CAC3B,IAA2B,EAC3B,OAAsB;IAEtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,GAAG,GAAI,IAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,OAAO,GAAG;QACR,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;QACnF,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAYD,kDAAkD;AAC3C,KAAK,UAAU,aAAa,CACjC,CAAsB;IAEtB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzF,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,UAAU,GAAe,SAAS,CAAC;IACvC,IAAI,UAAU,GAAe,IAAI,CAAC;IAClC,IAAI,aAAa,GAAkB,IAAI,CAAC;IAExC,kFAAkF;IAClF,MAAM,QAAQ,GAAG,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,IAAI,OAAO,EAAE,CAAC;QACZ,QAAQ,GAAG,OAAO,CAAC;QACnB,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC1C,UAAU,GAAG,qBAAqB,CAAC;IACrC,CAAC;IAED,oFAAoF;IACpF,IAAI,OAAO,GAAG,IAA2D,CAAC;IAC1E,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,OAAO,mBAAmB,SAAS,YAAa,CAAW,CAAC,OAAO,GAAG,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,yDAAyD;YACzD,QAAQ,GAAG,OAAO,CAAC,gBAAgB,IAAI,QAAQ,CAAC;YAChD,WAAW,GAAG,OAAO,CAAC,mBAAmB,IAAI,WAAW,CAAC;YACzD,UAAU,GAAG,YAAY,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,0EAA0E;YAC1E,WAAW,GAAG,WAAW,IAAI,OAAO,CAAC,mBAAmB,IAAI,IAAI,CAAC;QACnE,CAAC;QACD,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC;QAC9C,aAAa,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,CACJ,GAAG,OAAO,qDAAqD,SAAS,MAAM;YAC5E,iEAAiE,CACpE,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,IAAI,GAAG,GAAkB,IAAI,CAAC;IAC9B,IAAI,GAAG,GAAkB,IAAI,CAAC;IAC9B,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;YACxB,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,OAAO,sBAAuB,CAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,CAAC,GAAG,OAAO,IAAI,OAAO,mFAAmF,CAAC,CAAC;IACnH,CAAC;IAED,MAAM,EAAE,GAAG,WAAW;QACpB,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC;QAChC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3E,MAAM,MAAM,GAAW;QACrB,EAAE;QACF,OAAO;QACP,WAAW;QACX,cAAc,EAAE;YACd,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C;QACD,UAAU;QACV,OAAO;QACP,SAAS,EAAE,GAAG;QACd,GAAG,EAAE,EAAE,MAAM,EAAE,aAAa,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;QAC9D,UAAU,EAAE,SAAS;QACrB,SAAS;QACT,UAAU;KACX,CAAC;IAEF,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC"}
@@ -1,18 +0,0 @@
1
- /**
2
- * resolveLock (B1) — the resolve step of RESOLVED-LOCK-SPEC (S4). Turns an
3
- * installed project's `package-lock.json` (+ its node_modules) into a
4
- * resolved-lock (S2) that cloneFromLock (S3) consumes directly.
5
- *
6
- * Why package-lock is the input: its `packages` map is already the FLAT
7
- * dependency closure with resolved versions + resolved registry URLs (the
8
- * numeric GitLab projectId), so closure expansion is a lock read — no live fetch.
9
- *
10
- * Deterministic: members sorted by id, edges sorted; timestamp is injectable.
11
- * READ-ONLY: reads files + GitLab GETs; never writes to any source repo.
12
- */
13
- import type { ResolveLockOptions, ResolveResult } from '../types';
14
- export declare const DEFAULT_SCOPES: string[];
15
- /** npmName from a package-lock `packages` key (segment after the last node_modules/). */
16
- export declare function npmNameFromKey(key: string): string | null;
17
- export declare function resolveLock(options: ResolveLockOptions): Promise<ResolveResult>;
18
- //# sourceMappingURL=resolve.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/resolve/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAiC,kBAAkB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjG,eAAO,MAAM,cAAc,UAAoD,CAAC;AAEhF,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGzD;AAeD,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAuGrF"}
@@ -1,155 +0,0 @@
1
- "use strict";
2
- /**
3
- * resolveLock (B1) — the resolve step of RESOLVED-LOCK-SPEC (S4). Turns an
4
- * installed project's `package-lock.json` (+ its node_modules) into a
5
- * resolved-lock (S2) that cloneFromLock (S3) consumes directly.
6
- *
7
- * Why package-lock is the input: its `packages` map is already the FLAT
8
- * dependency closure with resolved versions + resolved registry URLs (the
9
- * numeric GitLab projectId), so closure expansion is a lock read — no live fetch.
10
- *
11
- * Deterministic: members sorted by id, edges sorted; timestamp is injectable.
12
- * READ-ONLY: reads files + GitLab GETs; never writes to any source repo.
13
- */
14
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- var desc = Object.getOwnPropertyDescriptor(m, k);
17
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
- desc = { enumerable: true, get: function() { return m[k]; } };
19
- }
20
- Object.defineProperty(o, k2, desc);
21
- }) : (function(o, m, k, k2) {
22
- if (k2 === undefined) k2 = k;
23
- o[k2] = m[k];
24
- }));
25
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
- Object.defineProperty(o, "default", { enumerable: true, value: v });
27
- }) : function(o, v) {
28
- o["default"] = v;
29
- });
30
- var __importStar = (this && this.__importStar) || (function () {
31
- var ownKeys = function(o) {
32
- ownKeys = Object.getOwnPropertyNames || function (o) {
33
- var ar = [];
34
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
- return ar;
36
- };
37
- return ownKeys(o);
38
- };
39
- return function (mod) {
40
- if (mod && mod.__esModule) return mod;
41
- var result = {};
42
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
- __setModuleDefault(result, mod);
44
- return result;
45
- };
46
- })();
47
- Object.defineProperty(exports, "__esModule", { value: true });
48
- exports.DEFAULT_SCOPES = void 0;
49
- exports.npmNameFromKey = npmNameFromKey;
50
- exports.resolveLock = resolveLock;
51
- const fs = __importStar(require("fs"));
52
- const path = __importStar(require("path"));
53
- const member_1 = require("./member");
54
- exports.DEFAULT_SCOPES = ['@ist', '@microwiseai', '@glpkg', '@microature'];
55
- /** npmName from a package-lock `packages` key (segment after the last node_modules/). */
56
- function npmNameFromKey(key) {
57
- const idx = key.lastIndexOf('node_modules/');
58
- return idx === -1 ? null : key.slice(idx + 'node_modules/'.length);
59
- }
60
- /** Is this npm name in one of the glpkg scopes we carve as members? */
61
- function inScopes(name, scopes) {
62
- return scopes.some((s) => name.startsWith(s + '/'));
63
- }
64
- async function resolveLock(options) {
65
- const { packageLockPath, subset, scopes = exports.DEFAULT_SCOPES, source = {}, api, installer = 'glpkg', now = () => new Date().toISOString(), warn = () => { }, } = options;
66
- if (!packageLockPath)
67
- throw new Error('resolveLock: options.packageLockPath is required');
68
- if (!subset)
69
- throw new Error('resolveLock: options.subset is required');
70
- if (!api)
71
- throw new Error('resolveLock: options.api (GitLab client) is required');
72
- const nodeModulesDir = options.nodeModulesDir || path.join(path.dirname(packageLockPath), 'node_modules');
73
- const readInstalledManifest = options.readInstalledManifest ||
74
- ((name) => {
75
- const p = path.join(nodeModulesDir, ...name.split('/'), 'package.json');
76
- try {
77
- return JSON.parse(fs.readFileSync(p, 'utf8'));
78
- }
79
- catch {
80
- return null;
81
- }
82
- });
83
- const warnings = [];
84
- const doWarn = (m) => {
85
- warnings.push(m);
86
- warn(m);
87
- };
88
- const lock = JSON.parse(fs.readFileSync(packageLockPath, 'utf8'));
89
- const packages = lock.packages || {};
90
- // --- 1. collect unique in-scope members from the flat packages map ---------
91
- const byName = new Map();
92
- for (const [key, entry] of Object.entries(packages)) {
93
- if (!key.includes('node_modules/'))
94
- continue; // skip the root ("") entry
95
- const name = npmNameFromKey(key);
96
- if (!name || !inScopes(name, scopes))
97
- continue;
98
- if (!byName.has(name))
99
- byName.set(name, { version: entry.version, resolved: entry.resolved });
100
- }
101
- // --- 2. resolve each member -----------------------------------------------
102
- const nameToId = new Map();
103
- const members = [];
104
- for (const [npmName, info] of byName) {
105
- const { id, member } = await (0, member_1.resolveMember)({
106
- npmName,
107
- version: info.version || null,
108
- projectId: (0, member_1.projectIdFromResolved)(info.resolved),
109
- installer,
110
- api,
111
- readInstalledManifest,
112
- doWarn,
113
- });
114
- nameToId.set(npmName, id);
115
- members.push(member);
116
- }
117
- // --- 3. edges from each member's installed dependencies --------------------
118
- const edgeSet = new Set();
119
- for (const [npmName, id] of nameToId) {
120
- const manifest = readInstalledManifest(npmName);
121
- if (!manifest)
122
- continue;
123
- const deps = {
124
- ...(manifest.dependencies || {}),
125
- ...(manifest.peerDependencies || {}),
126
- };
127
- for (const depName of Object.keys(deps)) {
128
- const depId = nameToId.get(depName);
129
- if (depId && depId !== id)
130
- edgeSet.add(`${id} ${depId}`);
131
- }
132
- }
133
- const edges = [...edgeSet]
134
- .map((s) => s.split(' '))
135
- .sort((a, b) => (a[0] === b[0] ? a[1].localeCompare(b[1]) : a[0].localeCompare(b[0])));
136
- members.sort((a, b) => a.id.localeCompare(b.id));
137
- return {
138
- lock: {
139
- lockVersion: 1,
140
- kind: 'resolved-lock',
141
- subset,
142
- source: {
143
- manifest: source.manifest || null,
144
- manifestVersion: source.manifestVersion || null,
145
- registry: source.registry || {},
146
- derivedFrom: 'package-lock.json',
147
- },
148
- resolvedAt: now(),
149
- members,
150
- edges,
151
- },
152
- warnings,
153
- };
154
- }
155
- //# sourceMappingURL=resolve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/resolve/resolve.ts"],"names":[],"mappings":"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"}
@@ -1,225 +0,0 @@
1
- /**
2
- * Public type surface for @gitdot/clone-lib (RESOLVED-LOCK-SPEC S2/S3/S4).
3
- *
4
- * Consumers (snapshot / skit / glpkg) import these to type their adapters:
5
- * import type { ResolvedLock, Member, CloneReport, Manifest } from '@gitdot/clone-lib';
6
- */
7
- /** Clone strategy: pin an exact commit, or track the default-branch HEAD. */
8
- export type CloneMode = 'pinned' | 'head';
9
- /** Resolved repo visibility (drives the S3 credential pre-flight). */
10
- export type Visibility = 'public' | 'private' | 'unknown';
11
- /** How a coordinate was resolved (makes GAP-1 guesswork explicit + checkable). */
12
- export type Provenance = 'manifest-repository' | 'gitlab-api' | 'package-lock-projectid' | 'convention-guess' | null;
13
- /** Member kind (reused enum from SUBSET-MANIFEST). */
14
- export type MemberType = 'npm-lib' | 'app/worker' | 'static-asset' | 'meta';
15
- /** Structured git failure kind emitted by the GitRunner. */
16
- export type GitErrorKind = 'not-found' | 'no-access' | 'failed';
17
- /** A real, git-clonable coordinate. `cloneUrl` is REQUIRED for a finished lock. */
18
- export interface RepoCoordinate {
19
- cloneUrl?: string;
20
- projectPath?: string;
21
- projectId?: number;
22
- }
23
- /** Full resolved ref; `sha` === Member.commitSha. */
24
- export interface Ref {
25
- branch: string | null;
26
- tag: string | null;
27
- sha: string | null;
28
- dirty: boolean;
29
- }
30
- /** One fully-resolved node of the install closure. */
31
- export interface Member {
32
- /** declared gitdot dot-identity, separate from npmName (F2). */
33
- id: string;
34
- npmName: string;
35
- /** resolved GitLab group — pinned PER MEMBER (multi-tenant rule S2). */
36
- gitlabGroup: string | null;
37
- repoCoordinate: RepoCoordinate;
38
- visibility: Visibility;
39
- version: string | null;
40
- /** exact commit the version was published from (tag → sha pin). */
41
- commitSha: string | null;
42
- ref: Ref;
43
- memberType: MemberType;
44
- /** install channel that declared it (glpkg | npm-proxy | skit | …). */
45
- installer: string;
46
- provenance: Provenance;
47
- }
48
- /** `source` block — the only part that differs between skit/snapshot/glpkg locks. */
49
- export interface LockSource {
50
- manifest: string | null;
51
- manifestVersion: string | null;
52
- registry: Record<string, unknown>;
53
- derivedFrom: 'package-lock.json' | 'manifest' | string;
54
- }
55
- /** The one resolved-lock schema; skit/snapshot/glpkg.lock.json are instances of it. */
56
- export interface ResolvedLock {
57
- lockVersion: 1;
58
- kind: 'resolved-lock';
59
- subset?: string;
60
- source: LockSource;
61
- resolvedAt: string;
62
- members: Member[];
63
- edges: Array<[string, string]>;
64
- }
65
- export interface ClonedEntry {
66
- id: string;
67
- sha: string;
68
- path: string;
69
- coordinate: string;
70
- visibility: Visibility;
71
- provenance: Provenance;
72
- }
73
- export interface SkippedEntry {
74
- id: string;
75
- reason: string;
76
- }
77
- export interface NoAccessEntry {
78
- id: string;
79
- visibility: Visibility;
80
- reason: string;
81
- }
82
- export interface BucketEntry {
83
- id: string;
84
- reason: string;
85
- }
86
- /** Structured, --json-serializable clone outcome. Every member lands in one bucket. */
87
- export interface CloneReport {
88
- mode: CloneMode;
89
- credentialsNeeded: number;
90
- cloned: ClonedEntry[];
91
- skipped: SkippedEntry[];
92
- 'skipped-no-access': NoAccessEntry[];
93
- 'not-found': BucketEntry[];
94
- failed: BucketEntry[];
95
- closureSize: number;
96
- }
97
- /** The git surface cloneFromLock depends on; inject a fake for deterministic tests. */
98
- export interface GitRunner {
99
- exists(absPath: string): boolean;
100
- isRepo(absPath: string): boolean;
101
- clone(cloneUrl: string, absPath: string): void;
102
- checkout(absPath: string, sha: string): void;
103
- headSha(absPath: string): string;
104
- }
105
- export interface GitLabProject {
106
- id: number | string;
107
- path_with_namespace?: string;
108
- http_url_to_repo?: string;
109
- visibility?: Visibility;
110
- default_branch?: string;
111
- [k: string]: unknown;
112
- }
113
- export interface GitLabTag {
114
- name: string;
115
- commit?: {
116
- id?: string;
117
- sha?: string;
118
- };
119
- }
120
- export interface PackumentVersion {
121
- dist?: {
122
- tarball?: string;
123
- };
124
- dependencies?: Record<string, string>;
125
- [k: string]: unknown;
126
- }
127
- export interface Packument {
128
- name?: string;
129
- 'dist-tags'?: {
130
- latest?: string;
131
- };
132
- versions?: Record<string, PackumentVersion>;
133
- [k: string]: unknown;
134
- }
135
- /** Read-only GitLab client; inject a fake in tests. */
136
- export interface GitLabApi {
137
- getProject(id: number | string): Promise<GitLabProject>;
138
- getTags(id: number | string): Promise<GitLabTag[]>;
139
- getPackument(name: string, opts?: {
140
- group?: string;
141
- }): Promise<Packument>;
142
- }
143
- /** scope → group (+ optional url) default table. */
144
- export type RegistryMap = Record<string, {
145
- group: string;
146
- url?: string;
147
- }>;
148
- /** Install block: channelled ({channel:{name:ver}}) OR a flat {name:ver} map. */
149
- export type InstallBlock = Record<string, Record<string, string>> | Record<string, string>;
150
- /** snapshot.json-like input consumed by resolveFromManifest (B2). */
151
- export interface Manifest {
152
- name?: string;
153
- version?: string;
154
- subset?: string;
155
- registry?: RegistryMap;
156
- install?: InstallBlock;
157
- [k: string]: unknown;
158
- }
159
- /** Object form of a skit `dependencies.npm` value (source-pinned). */
160
- export interface NpmDependencySpec {
161
- version: string;
162
- source?: 'npm' | 'proxy';
163
- }
164
- /**
165
- * skit.json (SkitManifest) shape — documented for consumers that map it into a
166
- * {@link Manifest} before calling resolveFromManifest (a thin per-distribution shim).
167
- */
168
- export interface SkitManifest {
169
- name: string;
170
- version: string;
171
- registry?: RegistryMap;
172
- dependencies?: {
173
- npm?: Record<string, string | NpmDependencySpec>;
174
- skit?: Record<string, string>;
175
- };
176
- glpkg?: {
177
- groups?: Record<string, string[]>;
178
- policy?: string;
179
- };
180
- [k: string]: unknown;
181
- }
182
- export interface CloneFromLockOptions {
183
- mode?: CloneMode;
184
- dest: string;
185
- only?: string[];
186
- installer?: string[];
187
- git?: GitRunner;
188
- workspaceDir?: string;
189
- }
190
- /** Reader that returns an installed package.json (path-1 manifest-repository). */
191
- export type ReadInstalledManifest = (name: string) => {
192
- repository?: unknown;
193
- [k: string]: unknown;
194
- } | null;
195
- export interface ResolveLockOptions {
196
- packageLockPath: string;
197
- nodeModulesDir?: string;
198
- subset: string;
199
- scopes?: string[];
200
- source?: Partial<Pick<LockSource, 'manifest' | 'manifestVersion'>> & {
201
- registry?: Record<string, unknown>;
202
- };
203
- api: GitLabApi;
204
- installer?: string;
205
- readInstalledManifest?: ReadInstalledManifest;
206
- now?: () => string;
207
- warn?: (msg: string) => void;
208
- }
209
- export interface ResolveFromManifestOptions {
210
- api: GitLabApi;
211
- scopes?: string[];
212
- subset?: string;
213
- source?: {
214
- manifest?: string | null;
215
- manifestVersion?: string | null;
216
- };
217
- readInstalledManifest?: ReadInstalledManifest;
218
- now?: () => string;
219
- warn?: (msg: string) => void;
220
- }
221
- export interface ResolveResult {
222
- lock: ResolvedLock;
223
- warnings: string[];
224
- }
225
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- "use strict";
2
- /**
3
- * Public type surface for @gitdot/clone-lib (RESOLVED-LOCK-SPEC S2/S3/S4).
4
- *
5
- * Consumers (snapshot / skit / glpkg) import these to type their adapters:
6
- * import type { ResolvedLock, Member, CloneReport, Manifest } from '@gitdot/clone-lib';
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -1,53 +0,0 @@
1
- {
2
- "name": "@gitdot/clone-lib",
3
- "version": "0.2.0",
4
- "description": "Shared resolved-lock library (TypeScript): resolve a distribution's install closure (from a package-lock or a snapshot.json manifest) into a resolved-lock (RESOLVED-LOCK-SPEC S2), then clone that closure. Zero runtime dependencies.",
5
- "type": "commonjs",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "default": "./dist/index.js"
12
- },
13
- "./resolve": {
14
- "types": "./dist/resolve/index.d.ts",
15
- "default": "./dist/resolve/index.js"
16
- },
17
- "./package.json": "./package.json"
18
- },
19
- "bin": {
20
- "gitdot-resolve": "dist/bin/gitdot-resolve.js"
21
- },
22
- "files": [
23
- "dist",
24
- "README.md"
25
- ],
26
- "scripts": {
27
- "clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
28
- "build": "npm run clean && tsc -p tsconfig.json",
29
- "typecheck": "tsc --noEmit",
30
- "test": "npm run build && node --test",
31
- "prepublishOnly": "npm run build"
32
- },
33
- "engines": {
34
- "node": ">=18"
35
- },
36
- "keywords": [
37
- "gitdot",
38
- "resolved-lock",
39
- "clone",
40
- "gitlab",
41
- "monorepo",
42
- "typescript"
43
- ],
44
- "license": "UNLICENSED",
45
- "repository": {
46
- "type": "git",
47
- "url": "git+https://gitlab.com/microwiseai/gitdot.clone-lib.git"
48
- },
49
- "devDependencies": {
50
- "@types/node": "^20.19.43",
51
- "typescript": "^5.9.3"
52
- }
53
- }