@microwiseai/snapshot 0.5.2 → 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 (134) 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 +68 -206
  7. package/dist/commands/install.js.map +1 -1
  8. package/dist/commands/publish.d.ts +0 -4
  9. package/dist/commands/publish.d.ts.map +1 -1
  10. package/dist/commands/publish.js +1 -35
  11. package/dist/commands/publish.js.map +1 -1
  12. package/dist/commands/setup.d.ts +5 -0
  13. package/dist/commands/setup.d.ts.map +1 -0
  14. package/dist/commands/setup.js +52 -0
  15. package/dist/commands/setup.js.map +1 -0
  16. package/dist/index.js +18 -27
  17. package/dist/index.js.map +1 -1
  18. package/dist/lib/config.js +1 -1
  19. package/dist/lib/config.js.map +1 -1
  20. package/dist/lib/gitlab.d.ts.map +1 -1
  21. package/dist/lib/gitlab.js +8 -6
  22. package/dist/lib/gitlab.js.map +1 -1
  23. package/dist/lib/prerequisites.d.ts +33 -0
  24. package/dist/lib/prerequisites.d.ts.map +1 -0
  25. package/dist/lib/prerequisites.js +123 -0
  26. package/dist/lib/prerequisites.js.map +1 -0
  27. package/dist/lib/transitive-resolver.d.ts +0 -121
  28. package/dist/lib/transitive-resolver.d.ts.map +1 -1
  29. package/dist/lib/transitive-resolver.js +0 -190
  30. package/dist/lib/transitive-resolver.js.map +1 -1
  31. package/package.json +3 -20
  32. package/dist/commands/clone-all.d.ts +0 -21
  33. package/dist/commands/clone-all.d.ts.map +0 -1
  34. package/dist/commands/clone-all.js +0 -57
  35. package/dist/commands/clone-all.js.map +0 -1
  36. package/dist/commands/preflight.d.ts +0 -31
  37. package/dist/commands/preflight.d.ts.map +0 -1
  38. package/dist/commands/preflight.js +0 -83
  39. package/dist/commands/preflight.js.map +0 -1
  40. package/dist/lib/distkit-closure-bridge.d.ts +0 -102
  41. package/dist/lib/distkit-closure-bridge.d.ts.map +0 -1
  42. package/dist/lib/distkit-closure-bridge.js +0 -177
  43. package/dist/lib/distkit-closure-bridge.js.map +0 -1
  44. package/dist/lib/distkit-closure-parity.d.ts +0 -110
  45. package/dist/lib/distkit-closure-parity.d.ts.map +0 -1
  46. package/dist/lib/distkit-closure-parity.js +0 -134
  47. package/dist/lib/distkit-closure-parity.js.map +0 -1
  48. package/dist/lib/distkit-routing-port.d.ts +0 -37
  49. package/dist/lib/distkit-routing-port.d.ts.map +0 -1
  50. package/dist/lib/distkit-routing-port.js +0 -72
  51. package/dist/lib/distkit-routing-port.js.map +0 -1
  52. package/dist/lib/install-timeline.d.ts +0 -81
  53. package/dist/lib/install-timeline.d.ts.map +0 -1
  54. package/dist/lib/install-timeline.js +0 -243
  55. package/dist/lib/install-timeline.js.map +0 -1
  56. package/dist/lib/preflight-adapter.d.ts +0 -52
  57. package/dist/lib/preflight-adapter.d.ts.map +0 -1
  58. package/dist/lib/preflight-adapter.js +0 -224
  59. package/dist/lib/preflight-adapter.js.map +0 -1
  60. package/node_modules/@gitdot/clone-lib/README.md +0 -117
  61. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts +0 -9
  62. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts.map +0 -1
  63. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js +0 -154
  64. package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js.map +0 -1
  65. package/node_modules/@gitdot/clone-lib/dist/clone.d.ts +0 -21
  66. package/node_modules/@gitdot/clone-lib/dist/clone.d.ts.map +0 -1
  67. package/node_modules/@gitdot/clone-lib/dist/clone.js +0 -228
  68. package/node_modules/@gitdot/clone-lib/dist/clone.js.map +0 -1
  69. package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts +0 -10
  70. package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts.map +0 -1
  71. package/node_modules/@gitdot/clone-lib/dist/dotpath.js +0 -27
  72. package/node_modules/@gitdot/clone-lib/dist/dotpath.js.map +0 -1
  73. package/node_modules/@gitdot/clone-lib/dist/git.d.ts +0 -23
  74. package/node_modules/@gitdot/clone-lib/dist/git.d.ts.map +0 -1
  75. package/node_modules/@gitdot/clone-lib/dist/git.js +0 -134
  76. package/node_modules/@gitdot/clone-lib/dist/git.js.map +0 -1
  77. package/node_modules/@gitdot/clone-lib/dist/index.d.ts +0 -17
  78. package/node_modules/@gitdot/clone-lib/dist/index.d.ts.map +0 -1
  79. package/node_modules/@gitdot/clone-lib/dist/index.js +0 -35
  80. package/node_modules/@gitdot/clone-lib/dist/index.js.map +0 -1
  81. package/node_modules/@gitdot/clone-lib/dist/lock.d.ts +0 -24
  82. package/node_modules/@gitdot/clone-lib/dist/lock.d.ts.map +0 -1
  83. package/node_modules/@gitdot/clone-lib/dist/lock.js +0 -97
  84. package/node_modules/@gitdot/clone-lib/dist/lock.js.map +0 -1
  85. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts +0 -15
  86. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts.map +0 -1
  87. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js +0 -124
  88. package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js.map +0 -1
  89. package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts +0 -12
  90. package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts.map +0 -1
  91. package/node_modules/@gitdot/clone-lib/dist/resolve/index.js +0 -31
  92. package/node_modules/@gitdot/clone-lib/dist/resolve/index.js.map +0 -1
  93. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts +0 -32
  94. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts.map +0 -1
  95. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js +0 -159
  96. package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js.map +0 -1
  97. package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts +0 -44
  98. package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts.map +0 -1
  99. package/node_modules/@gitdot/clone-lib/dist/resolve/member.js +0 -163
  100. package/node_modules/@gitdot/clone-lib/dist/resolve/member.js.map +0 -1
  101. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts +0 -18
  102. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts.map +0 -1
  103. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js +0 -155
  104. package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js.map +0 -1
  105. package/node_modules/@gitdot/clone-lib/dist/types.d.ts +0 -225
  106. package/node_modules/@gitdot/clone-lib/dist/types.d.ts.map +0 -1
  107. package/node_modules/@gitdot/clone-lib/dist/types.js +0 -9
  108. package/node_modules/@gitdot/clone-lib/dist/types.js.map +0 -1
  109. package/node_modules/@gitdot/clone-lib/package.json +0 -53
  110. package/node_modules/@microwiseai/install-preflight/dist/index.d.ts +0 -27
  111. package/node_modules/@microwiseai/install-preflight/dist/index.d.ts.map +0 -1
  112. package/node_modules/@microwiseai/install-preflight/dist/index.js +0 -26
  113. package/node_modules/@microwiseai/install-preflight/dist/index.js.map +0 -1
  114. package/node_modules/@microwiseai/install-preflight/dist/policy.d.ts +0 -42
  115. package/node_modules/@microwiseai/install-preflight/dist/policy.d.ts.map +0 -1
  116. package/node_modules/@microwiseai/install-preflight/dist/policy.js +0 -79
  117. package/node_modules/@microwiseai/install-preflight/dist/policy.js.map +0 -1
  118. package/node_modules/@microwiseai/install-preflight/dist/preflight.d.ts +0 -18
  119. package/node_modules/@microwiseai/install-preflight/dist/preflight.d.ts.map +0 -1
  120. package/node_modules/@microwiseai/install-preflight/dist/preflight.js +0 -0
  121. package/node_modules/@microwiseai/install-preflight/dist/preflight.js.map +0 -1
  122. package/node_modules/@microwiseai/install-preflight/dist/resolvers.d.ts +0 -26
  123. package/node_modules/@microwiseai/install-preflight/dist/resolvers.d.ts.map +0 -1
  124. package/node_modules/@microwiseai/install-preflight/dist/resolvers.js +0 -63
  125. package/node_modules/@microwiseai/install-preflight/dist/resolvers.js.map +0 -1
  126. package/node_modules/@microwiseai/install-preflight/dist/semver.d.ts +0 -45
  127. package/node_modules/@microwiseai/install-preflight/dist/semver.d.ts.map +0 -1
  128. package/node_modules/@microwiseai/install-preflight/dist/semver.js +0 -195
  129. package/node_modules/@microwiseai/install-preflight/dist/semver.js.map +0 -1
  130. package/node_modules/@microwiseai/install-preflight/dist/types.d.ts +0 -136
  131. package/node_modules/@microwiseai/install-preflight/dist/types.d.ts.map +0 -1
  132. package/node_modules/@microwiseai/install-preflight/dist/types.js +0 -11
  133. package/node_modules/@microwiseai/install-preflight/dist/types.js.map +0 -1
  134. package/node_modules/@microwiseai/install-preflight/package.json +0 -49
@@ -1,159 +0,0 @@
1
- "use strict";
2
- /**
3
- * resolveFromManifest (B2) — the manifest-driven resolver (RESOLVED-LOCK-SPEC S4).
4
- *
5
- * Input: a snapshot.json-like {@link Manifest} (install set + registry scope→group).
6
- * B2 discovers each package's projectId by fetching the GitLab npm **packument**
7
- * and mining the version's `dist.tarball` URL — the same coordinate signal B1
8
- * mines from a package-lock `resolved` URL. From "npmName + version + projectId"
9
- * onward it reuses the shared member core, so resolution is IDENTICAL to B1.
10
- *
11
- * Output: the SAME resolved-lock schema (S2); only `source.derivedFrom` differs.
12
- * READ-ONLY: registry GETs only.
13
- */
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.scopeOf = scopeOf;
16
- exports.flattenInstall = flattenInstall;
17
- exports.pickVersionEntry = pickVersionEntry;
18
- exports.resolveFromManifest = resolveFromManifest;
19
- const member_1 = require("./member");
20
- /** scope of an npm name: "@ist/tda" -> "@ist"; unscoped -> null. */
21
- function scopeOf(name) {
22
- const m = name.match(/^(@[^/]+)\//);
23
- return m ? m[1] : null;
24
- }
25
- /**
26
- * Flatten an install block into entries. Accepts the channelled shape
27
- * ({channel:{name:version}}) or a flat map. De-dups by npmName (first wins).
28
- */
29
- function flattenInstall(install, doWarn) {
30
- const entries = [];
31
- const seen = new Map(); // npmName -> installer that claimed it
32
- const values = Object.values(install || {});
33
- const looksChannelled = values.length > 0 && values.every((v) => v && typeof v === 'object' && !Array.isArray(v));
34
- const push = (npmName, version, installer) => {
35
- if (seen.has(npmName)) {
36
- doWarn(`${npmName}: appears in multiple install channels ("${seen.get(npmName)}" kept, "${installer}" ignored) ` +
37
- `— see OPEN QUESTION 4 (cross-installer identity)`);
38
- return;
39
- }
40
- seen.set(npmName, installer);
41
- entries.push({ npmName, version, installer });
42
- };
43
- if (looksChannelled) {
44
- for (const [channel, set] of Object.entries(install)) {
45
- for (const [npmName, version] of Object.entries(set))
46
- push(npmName, version, channel);
47
- }
48
- }
49
- else {
50
- for (const [npmName, version] of Object.entries((install || {}))) {
51
- push(npmName, version, 'unknown');
52
- }
53
- }
54
- return entries;
55
- }
56
- /** Pick the packument version entry for an exact version, else dist-tags.latest. */
57
- function pickVersionEntry(packument, version, doWarn, npmName) {
58
- const versions = (packument && packument.versions) || {};
59
- if (version && versions[version])
60
- return { entry: versions[version], version };
61
- const latest = packument && packument['dist-tags'] && packument['dist-tags'].latest;
62
- if (latest && versions[latest]) {
63
- doWarn(`${npmName}: version "${version}" not in packument — falling back to dist-tags.latest (${latest})`);
64
- return { entry: versions[latest], version: latest };
65
- }
66
- doWarn(`${npmName}: no packument version entry for "${version}" and no usable dist-tags.latest`);
67
- return { entry: null, version };
68
- }
69
- async function resolveFromManifest(manifestObj, options) {
70
- const { api, source = {}, readInstalledManifest, now = () => new Date().toISOString(), warn = () => { }, } = options || {};
71
- if (!manifestObj || typeof manifestObj !== 'object') {
72
- throw new Error('resolveFromManifest: manifestObj is required');
73
- }
74
- if (!api || typeof api.getPackument !== 'function') {
75
- throw new Error('resolveFromManifest: options.api with getPackument() is required');
76
- }
77
- const registry = manifestObj.registry || {};
78
- const subset = options.subset || manifestObj.subset || manifestObj.name || 'manifest.subset';
79
- const scopes = options.scopes && options.scopes.length ? options.scopes : Object.keys(registry);
80
- const warnings = [];
81
- const doWarn = (m) => {
82
- warnings.push(m);
83
- warn(m);
84
- };
85
- const entries = flattenInstall(manifestObj.install, doWarn);
86
- const nameToId = new Map();
87
- const depsByName = new Map();
88
- const members = [];
89
- for (const { npmName, version, installer } of entries) {
90
- const scope = scopeOf(npmName);
91
- if (scopes.length && scope && !scopes.includes(scope)) {
92
- doWarn(`${npmName}: scope "${scope}" not in resolve scopes — skipped (not a member)`);
93
- continue;
94
- }
95
- const group = (scope && registry[scope] && registry[scope].group) || undefined;
96
- // packument -> projectId + declared dependencies
97
- let projectId = null;
98
- let resolvedVersion = version;
99
- let deps = {};
100
- try {
101
- const packument = await api.getPackument(npmName, { group });
102
- const picked = pickVersionEntry(packument, version, doWarn, npmName);
103
- resolvedVersion = picked.version;
104
- if (picked.entry) {
105
- projectId = (0, member_1.projectIdFromResolved)(picked.entry.dist && picked.entry.dist.tarball);
106
- deps = picked.entry.dependencies || {};
107
- if (projectId == null)
108
- doWarn(`${npmName}: packument version has no projectId in dist.tarball`);
109
- }
110
- }
111
- catch (e) {
112
- doWarn(`${npmName}: getPackument failed (${e.message}) — projectId unresolved`);
113
- }
114
- const { id, member } = await (0, member_1.resolveMember)({
115
- npmName,
116
- version: resolvedVersion,
117
- projectId,
118
- installer,
119
- api,
120
- readInstalledManifest,
121
- doWarn,
122
- });
123
- nameToId.set(npmName, id);
124
- depsByName.set(npmName, deps);
125
- members.push(member);
126
- }
127
- // edges from packument-declared dependencies (in-closure only)
128
- const edgeSet = new Set();
129
- for (const [npmName, id] of nameToId) {
130
- const deps = depsByName.get(npmName) || {};
131
- for (const depName of Object.keys(deps)) {
132
- const depId = nameToId.get(depName);
133
- if (depId && depId !== id)
134
- edgeSet.add(`${id} ${depId}`);
135
- }
136
- }
137
- const edges = [...edgeSet]
138
- .map((s) => s.split(' '))
139
- .sort((a, b) => (a[0] === b[0] ? a[1].localeCompare(b[1]) : a[0].localeCompare(b[0])));
140
- members.sort((a, b) => a.id.localeCompare(b.id));
141
- return {
142
- lock: {
143
- lockVersion: 1,
144
- kind: 'resolved-lock',
145
- subset,
146
- source: {
147
- manifest: source.manifest || manifestObj.name || null,
148
- manifestVersion: source.manifestVersion || manifestObj.version || null,
149
- registry,
150
- derivedFrom: 'manifest',
151
- },
152
- resolvedAt: now(),
153
- members,
154
- edges,
155
- },
156
- warnings,
157
- };
158
- }
159
- //# sourceMappingURL=manifest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/resolve/manifest.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Shared member-coordinate core (RESOLVED-LOCK-SPEC S2/S4).
3
- *
4
- * The ONE place that turns "an in-scope npm package + (maybe) a projectId" into a
5
- * fully-resolved resolved-lock member. Both resolvers build on it:
6
- *
7
- * B1 resolveLock(package-lock) — projectId from the `resolved` tarball URL
8
- * B2 resolveFromManifest(json) — projectId from the registry packument
9
- *
10
- * They differ ONLY in how they discover the package set + its projectId; from
11
- * "npm name + version + projectId" onward the resolution is identical here.
12
- * READ-ONLY: reads an installed package.json (optional) + GitLab GETs.
13
- */
14
- import type { GitLabApi, GitLabTag, Member, ReadInstalledManifest } from '../types';
15
- /** Extract the numeric GitLab projectId from a registry `resolved`/tarball URL. */
16
- export declare function projectIdFromResolved(resolved: string | null | undefined): number | null;
17
- /** Normalize a package.json `repository` field to a plain git clone URL, or null. */
18
- export declare function repositoryToCloneUrl(repository: unknown): string | null;
19
- /** Derive `namespace/project` path from an https/ssh git URL, or null. */
20
- export declare function projectPathFromUrl(url: string | null | undefined): string | null;
21
- /** id = projectPath with '/' -> '.' (pure dot-identity for dotToTreePath). */
22
- export declare function idFromProjectPath(projectPath: string): string;
23
- /** gitlabGroup = the namespace (everything before the last path segment). */
24
- export declare function groupFromProjectPath(projectPath: string): string;
25
- /** Find the commit sha for `version` via a `v<version>` or `<version>` tag. */
26
- export declare function findCommitSha(tags: GitLabTag[] | unknown, version: string | null): {
27
- sha: string | null;
28
- tag: string | null;
29
- };
30
- export interface ResolveMemberParams {
31
- npmName: string;
32
- version: string | null;
33
- projectId: number | null;
34
- installer: string;
35
- api: GitLabApi;
36
- readInstalledManifest?: ReadInstalledManifest;
37
- doWarn: (msg: string) => void;
38
- }
39
- /** Resolve a single member. Shared by B1 + B2. */
40
- export declare function resolveMember(p: ResolveMemberParams): Promise<{
41
- id: string;
42
- member: Member;
43
- }>;
44
- //# sourceMappingURL=member.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"member.d.ts","sourceRoot":"","sources":["../../src/resolve/member.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,MAAM,EAEN,qBAAqB,EAEtB,MAAM,UAAU,CAAC;AAElB,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIxF;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAKvE;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAehF;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAC3B,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,EAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB;IAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAO5C;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,SAAS,CAAC;IACf,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,kDAAkD;AAClD,wBAAsB,aAAa,CACjC,CAAC,EAAE,mBAAmB,GACrB,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAyFzC"}
@@ -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":"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"}
@@ -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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"}