@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.
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +37 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +34 -11
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/setup.d.ts +5 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +52 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/index.js +18 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/config.js +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/gitlab.d.ts.map +1 -1
- package/dist/lib/gitlab.js +8 -6
- package/dist/lib/gitlab.js.map +1 -1
- package/dist/lib/prerequisites.d.ts +33 -0
- package/dist/lib/prerequisites.d.ts.map +1 -0
- package/dist/lib/prerequisites.js +123 -0
- package/dist/lib/prerequisites.js.map +1 -0
- package/package.json +3 -14
- package/dist/commands/clone-all.d.ts +0 -21
- package/dist/commands/clone-all.d.ts.map +0 -1
- package/dist/commands/clone-all.js +0 -57
- package/dist/commands/clone-all.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/README.md +0 -117
- package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts +0 -9
- package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js +0 -154
- package/node_modules/@gitdot/clone-lib/dist/bin/gitdot-resolve.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/clone.d.ts +0 -21
- package/node_modules/@gitdot/clone-lib/dist/clone.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/clone.js +0 -228
- package/node_modules/@gitdot/clone-lib/dist/clone.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts +0 -10
- package/node_modules/@gitdot/clone-lib/dist/dotpath.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/dotpath.js +0 -27
- package/node_modules/@gitdot/clone-lib/dist/dotpath.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/git.d.ts +0 -23
- package/node_modules/@gitdot/clone-lib/dist/git.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/git.js +0 -134
- package/node_modules/@gitdot/clone-lib/dist/git.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/index.d.ts +0 -17
- package/node_modules/@gitdot/clone-lib/dist/index.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/index.js +0 -35
- package/node_modules/@gitdot/clone-lib/dist/index.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/lock.d.ts +0 -24
- package/node_modules/@gitdot/clone-lib/dist/lock.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/lock.js +0 -97
- package/node_modules/@gitdot/clone-lib/dist/lock.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts +0 -15
- package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js +0 -124
- package/node_modules/@gitdot/clone-lib/dist/resolve/gitlab.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts +0 -12
- package/node_modules/@gitdot/clone-lib/dist/resolve/index.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/index.js +0 -31
- package/node_modules/@gitdot/clone-lib/dist/resolve/index.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts +0 -32
- package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js +0 -159
- package/node_modules/@gitdot/clone-lib/dist/resolve/manifest.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts +0 -44
- package/node_modules/@gitdot/clone-lib/dist/resolve/member.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/member.js +0 -163
- package/node_modules/@gitdot/clone-lib/dist/resolve/member.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts +0 -18
- package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js +0 -155
- package/node_modules/@gitdot/clone-lib/dist/resolve/resolve.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/types.d.ts +0 -225
- package/node_modules/@gitdot/clone-lib/dist/types.d.ts.map +0 -1
- package/node_modules/@gitdot/clone-lib/dist/types.js +0 -9
- package/node_modules/@gitdot/clone-lib/dist/types.js.map +0 -1
- package/node_modules/@gitdot/clone-lib/package.json +0 -53
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Sidecar lock schema (RESOLVED-LOCK-SPEC S2).
|
|
4
|
-
*
|
|
5
|
-
* skit.lock.json, snapshot.lock.json and glpkg.lock.json are ALL instances of
|
|
6
|
-
* the ONE resolved-lock schema — same file shape, differing only in the `source`
|
|
7
|
-
* block. Readers load them FILENAME-AGNOSTICALLY: the filename is a label, never
|
|
8
|
-
* a schema selector.
|
|
9
|
-
*/
|
|
10
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
-
}
|
|
16
|
-
Object.defineProperty(o, k2, desc);
|
|
17
|
-
}) : (function(o, m, k, k2) {
|
|
18
|
-
if (k2 === undefined) k2 = k;
|
|
19
|
-
o[k2] = m[k];
|
|
20
|
-
}));
|
|
21
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
-
}) : function(o, v) {
|
|
24
|
-
o["default"] = v;
|
|
25
|
-
});
|
|
26
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
-
var ownKeys = function(o) {
|
|
28
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
-
var ar = [];
|
|
30
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
-
return ar;
|
|
32
|
-
};
|
|
33
|
-
return ownKeys(o);
|
|
34
|
-
};
|
|
35
|
-
return function (mod) {
|
|
36
|
-
if (mod && mod.__esModule) return mod;
|
|
37
|
-
var result = {};
|
|
38
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
-
__setModuleDefault(result, mod);
|
|
40
|
-
return result;
|
|
41
|
-
};
|
|
42
|
-
})();
|
|
43
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.KNOWN_SIDECARS = void 0;
|
|
45
|
-
exports.validateLock = validateLock;
|
|
46
|
-
exports.loadLock = loadLock;
|
|
47
|
-
exports.writeLock = writeLock;
|
|
48
|
-
const fs = __importStar(require("fs"));
|
|
49
|
-
/** Distributions known to emit this schema; informational only (not a gate). */
|
|
50
|
-
exports.KNOWN_SIDECARS = [
|
|
51
|
-
'skit.lock.json',
|
|
52
|
-
'snapshot.lock.json',
|
|
53
|
-
'glpkg.lock.json',
|
|
54
|
-
];
|
|
55
|
-
/**
|
|
56
|
-
* Validate a parsed object against the resolved-lock schema. Returns it typed.
|
|
57
|
-
* @throws on a shape that clone/consumer code cannot safely read.
|
|
58
|
-
*/
|
|
59
|
-
function validateLock(lock, label = 'lock') {
|
|
60
|
-
if (!lock || typeof lock !== 'object') {
|
|
61
|
-
throw new Error(`${label}: not an object`);
|
|
62
|
-
}
|
|
63
|
-
const l = lock;
|
|
64
|
-
if (l.kind !== 'resolved-lock') {
|
|
65
|
-
throw new Error(`${label}: not a resolved-lock (kind=${JSON.stringify(l.kind)})`);
|
|
66
|
-
}
|
|
67
|
-
if (l.lockVersion !== 1) {
|
|
68
|
-
throw new Error(`${label}: unsupported lockVersion ${JSON.stringify(l.lockVersion)} (expected 1)`);
|
|
69
|
-
}
|
|
70
|
-
if (!Array.isArray(l.members)) {
|
|
71
|
-
throw new Error(`${label}: missing members[]`);
|
|
72
|
-
}
|
|
73
|
-
return lock;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Load a resolved-lock from disk, filename-agnostically. The same function reads
|
|
77
|
-
* skit.lock.json / snapshot.lock.json / glpkg.lock.json — they are one schema.
|
|
78
|
-
*/
|
|
79
|
-
function loadLock(lockPath) {
|
|
80
|
-
if (!fs.existsSync(lockPath)) {
|
|
81
|
-
throw new Error(`loadLock: lock not found: ${lockPath}`);
|
|
82
|
-
}
|
|
83
|
-
let parsed;
|
|
84
|
-
try {
|
|
85
|
-
parsed = JSON.parse(fs.readFileSync(lockPath, 'utf8'));
|
|
86
|
-
}
|
|
87
|
-
catch (e) {
|
|
88
|
-
throw new Error(`loadLock: invalid JSON in ${lockPath}: ${e.message}`);
|
|
89
|
-
}
|
|
90
|
-
return validateLock(parsed, lockPath);
|
|
91
|
-
}
|
|
92
|
-
/** Write a resolved-lock deterministically (2-space indent + trailing newline). */
|
|
93
|
-
function writeLock(lockPath, lock) {
|
|
94
|
-
validateLock(lock, lockPath);
|
|
95
|
-
fs.writeFileSync(lockPath, JSON.stringify(lock, null, 2) + '\n');
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=lock.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBH,oCAeC;AAMD,4BAWC;AAGD,8BAGC;AApDD,uCAAyB;AAGzB,gFAAgF;AACnE,QAAA,cAAc,GAAsB;IAC/C,gBAAgB;IAChB,oBAAoB;IACpB,iBAAiB;CAClB,CAAC;AAEF;;;GAGG;AACH,SAAgB,YAAY,CAAC,IAAa,EAAE,KAAK,GAAG,MAAM;IACxD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iBAAiB,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,CAAC,GAAG,IAA6B,CAAC;IACxC,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,+BAA+B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,6BAA6B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACrG,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,IAAoB,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,QAAgB;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,mFAAmF;AACnF,SAAgB,SAAS,CAAC,QAAgB,EAAE,IAAkB;IAC5D,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7B,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Read-only GitLab API client for the resolve step (RESOLVED-LOCK-SPEC S4).
|
|
3
|
-
*
|
|
4
|
-
* Dependency-free (Node built-in https). Injectable at a higher level: the
|
|
5
|
-
* resolvers accept a {@link GitLabApi}, so unit tests pass a fake and never touch
|
|
6
|
-
* the network. Results are cached per key within one client.
|
|
7
|
-
*/
|
|
8
|
-
import type { GitLabApi } from '../types';
|
|
9
|
-
export declare function httpsGetJson<T = unknown>(host: string, pathname: string, token?: string, timeout?: number): Promise<T>;
|
|
10
|
-
export interface GitLabApiOptions {
|
|
11
|
-
token?: string | null;
|
|
12
|
-
host?: string;
|
|
13
|
-
}
|
|
14
|
-
export declare function createGitLabApi(opts?: GitLabApiOptions): GitLabApi;
|
|
15
|
-
//# sourceMappingURL=gitlab.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../src/resolve/gitlab.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAuC,MAAM,UAAU,CAAC;AAE/E,wBAAgB,YAAY,CAAC,CAAC,GAAG,OAAO,EACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,SAAQ,GACd,OAAO,CAAC,CAAC,CAAC,CAoCZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,eAAe,CAAC,IAAI,GAAE,gBAAqB,GAAG,SAAS,CA+CtE"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Read-only GitLab API client for the resolve step (RESOLVED-LOCK-SPEC S4).
|
|
4
|
-
*
|
|
5
|
-
* Dependency-free (Node built-in https). Injectable at a higher level: the
|
|
6
|
-
* resolvers accept a {@link GitLabApi}, so unit tests pass a fake and never touch
|
|
7
|
-
* the network. Results are cached per key within one client.
|
|
8
|
-
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
-
}) : function(o, v) {
|
|
23
|
-
o["default"] = v;
|
|
24
|
-
});
|
|
25
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
-
var ownKeys = function(o) {
|
|
27
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
-
var ar = [];
|
|
29
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
-
return ar;
|
|
31
|
-
};
|
|
32
|
-
return ownKeys(o);
|
|
33
|
-
};
|
|
34
|
-
return function (mod) {
|
|
35
|
-
if (mod && mod.__esModule) return mod;
|
|
36
|
-
var result = {};
|
|
37
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
-
__setModuleDefault(result, mod);
|
|
39
|
-
return result;
|
|
40
|
-
};
|
|
41
|
-
})();
|
|
42
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
exports.httpsGetJson = httpsGetJson;
|
|
44
|
-
exports.createGitLabApi = createGitLabApi;
|
|
45
|
-
const https = __importStar(require("https"));
|
|
46
|
-
function httpsGetJson(host, pathname, token, timeout = 30000) {
|
|
47
|
-
return new Promise((resolve, reject) => {
|
|
48
|
-
const req = https.request({
|
|
49
|
-
host,
|
|
50
|
-
path: pathname,
|
|
51
|
-
method: 'GET',
|
|
52
|
-
headers: token
|
|
53
|
-
? { 'PRIVATE-TOKEN': token, Accept: 'application/json' }
|
|
54
|
-
: { Accept: 'application/json' },
|
|
55
|
-
timeout,
|
|
56
|
-
}, (res) => {
|
|
57
|
-
let body = '';
|
|
58
|
-
res.on('data', (d) => (body += d));
|
|
59
|
-
res.on('end', () => {
|
|
60
|
-
const status = res.statusCode || 0;
|
|
61
|
-
if (status === 404)
|
|
62
|
-
return reject(Object.assign(new Error('not-found'), { status: 404 }));
|
|
63
|
-
if (status === 401 || status === 403) {
|
|
64
|
-
return reject(Object.assign(new Error('no-access'), { status }));
|
|
65
|
-
}
|
|
66
|
-
if (status >= 400) {
|
|
67
|
-
return reject(Object.assign(new Error(`http ${status}`), { status }));
|
|
68
|
-
}
|
|
69
|
-
try {
|
|
70
|
-
resolve(JSON.parse(body));
|
|
71
|
-
}
|
|
72
|
-
catch (e) {
|
|
73
|
-
reject(new Error(`bad JSON from ${pathname}: ${e.message}`));
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
req.on('timeout', () => req.destroy(new Error('timeout')));
|
|
78
|
-
req.on('error', reject);
|
|
79
|
-
req.end();
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
function createGitLabApi(opts = {}) {
|
|
83
|
-
const host = opts.host || 'gitlab.com';
|
|
84
|
-
const token = opts.token || undefined;
|
|
85
|
-
const projectCache = new Map();
|
|
86
|
-
const tagsCache = new Map();
|
|
87
|
-
const packumentCache = new Map();
|
|
88
|
-
return {
|
|
89
|
-
async getProject(projectId) {
|
|
90
|
-
const key = String(projectId);
|
|
91
|
-
const cached = projectCache.get(key);
|
|
92
|
-
if (cached)
|
|
93
|
-
return cached;
|
|
94
|
-
const p = await httpsGetJson(host, `/api/v4/projects/${encodeURIComponent(String(projectId))}`, token);
|
|
95
|
-
projectCache.set(key, p);
|
|
96
|
-
return p;
|
|
97
|
-
},
|
|
98
|
-
async getTags(projectId) {
|
|
99
|
-
const key = String(projectId);
|
|
100
|
-
const cached = tagsCache.get(key);
|
|
101
|
-
if (cached)
|
|
102
|
-
return cached;
|
|
103
|
-
// per_page=100: enough to find a released version tag for MVP scope.
|
|
104
|
-
const t = await httpsGetJson(host, `/api/v4/projects/${encodeURIComponent(String(projectId))}/repository/tags?per_page=100`, token);
|
|
105
|
-
tagsCache.set(key, t);
|
|
106
|
-
return t;
|
|
107
|
-
},
|
|
108
|
-
async getPackument(name, packOpts = {}) {
|
|
109
|
-
const key = `${packOpts.group || ''}::${name}`;
|
|
110
|
-
const cached = packumentCache.get(key);
|
|
111
|
-
if (cached)
|
|
112
|
-
return cached;
|
|
113
|
-
// npm metadata convention: encode only the scope slash as %2f, keep the leading @.
|
|
114
|
-
const enc = name.replace(/\//g, '%2f');
|
|
115
|
-
const pathname = packOpts.group
|
|
116
|
-
? `/api/v4/groups/${encodeURIComponent(packOpts.group)}/-/packages/npm/${enc}`
|
|
117
|
-
: `/api/v4/packages/npm/${enc}`;
|
|
118
|
-
const p = await httpsGetJson(host, pathname, token);
|
|
119
|
-
packumentCache.set(key, p);
|
|
120
|
-
return p;
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=gitlab.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/resolve/gitlab.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* resolve/ — the resolve step (RESOLVED-LOCK-SPEC S4). Two resolvers over ONE
|
|
3
|
-
* shared member core (member.ts), both emitting the same resolved-lock:
|
|
4
|
-
*
|
|
5
|
-
* B1 resolveLock(package-lock) — from an installed project's package-lock.json
|
|
6
|
-
* B2 resolveFromManifest(json) — from a snapshot.json-like install manifest
|
|
7
|
-
*/
|
|
8
|
-
export { resolveLock, DEFAULT_SCOPES, npmNameFromKey } from './resolve';
|
|
9
|
-
export { resolveFromManifest, flattenInstall, scopeOf, pickVersionEntry } from './manifest';
|
|
10
|
-
export { resolveMember, projectIdFromResolved, repositoryToCloneUrl, projectPathFromUrl, idFromProjectPath, groupFromProjectPath, findCommitSha, } from './member';
|
|
11
|
-
export { createGitLabApi, httpsGetJson } from './gitlab';
|
|
12
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolve/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,GACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* resolve/ — the resolve step (RESOLVED-LOCK-SPEC S4). Two resolvers over ONE
|
|
4
|
-
* shared member core (member.ts), both emitting the same resolved-lock:
|
|
5
|
-
*
|
|
6
|
-
* B1 resolveLock(package-lock) — from an installed project's package-lock.json
|
|
7
|
-
* B2 resolveFromManifest(json) — from a snapshot.json-like install manifest
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.httpsGetJson = exports.createGitLabApi = exports.findCommitSha = exports.groupFromProjectPath = exports.idFromProjectPath = exports.projectPathFromUrl = exports.repositoryToCloneUrl = exports.projectIdFromResolved = exports.resolveMember = exports.pickVersionEntry = exports.scopeOf = exports.flattenInstall = exports.resolveFromManifest = exports.npmNameFromKey = exports.DEFAULT_SCOPES = exports.resolveLock = void 0;
|
|
11
|
-
var resolve_1 = require("./resolve");
|
|
12
|
-
Object.defineProperty(exports, "resolveLock", { enumerable: true, get: function () { return resolve_1.resolveLock; } });
|
|
13
|
-
Object.defineProperty(exports, "DEFAULT_SCOPES", { enumerable: true, get: function () { return resolve_1.DEFAULT_SCOPES; } });
|
|
14
|
-
Object.defineProperty(exports, "npmNameFromKey", { enumerable: true, get: function () { return resolve_1.npmNameFromKey; } });
|
|
15
|
-
var manifest_1 = require("./manifest");
|
|
16
|
-
Object.defineProperty(exports, "resolveFromManifest", { enumerable: true, get: function () { return manifest_1.resolveFromManifest; } });
|
|
17
|
-
Object.defineProperty(exports, "flattenInstall", { enumerable: true, get: function () { return manifest_1.flattenInstall; } });
|
|
18
|
-
Object.defineProperty(exports, "scopeOf", { enumerable: true, get: function () { return manifest_1.scopeOf; } });
|
|
19
|
-
Object.defineProperty(exports, "pickVersionEntry", { enumerable: true, get: function () { return manifest_1.pickVersionEntry; } });
|
|
20
|
-
var member_1 = require("./member");
|
|
21
|
-
Object.defineProperty(exports, "resolveMember", { enumerable: true, get: function () { return member_1.resolveMember; } });
|
|
22
|
-
Object.defineProperty(exports, "projectIdFromResolved", { enumerable: true, get: function () { return member_1.projectIdFromResolved; } });
|
|
23
|
-
Object.defineProperty(exports, "repositoryToCloneUrl", { enumerable: true, get: function () { return member_1.repositoryToCloneUrl; } });
|
|
24
|
-
Object.defineProperty(exports, "projectPathFromUrl", { enumerable: true, get: function () { return member_1.projectPathFromUrl; } });
|
|
25
|
-
Object.defineProperty(exports, "idFromProjectPath", { enumerable: true, get: function () { return member_1.idFromProjectPath; } });
|
|
26
|
-
Object.defineProperty(exports, "groupFromProjectPath", { enumerable: true, get: function () { return member_1.groupFromProjectPath; } });
|
|
27
|
-
Object.defineProperty(exports, "findCommitSha", { enumerable: true, get: function () { return member_1.findCommitSha; } });
|
|
28
|
-
var gitlab_1 = require("./gitlab");
|
|
29
|
-
Object.defineProperty(exports, "createGitLabApi", { enumerable: true, get: function () { return gitlab_1.createGitLabApi; } });
|
|
30
|
-
Object.defineProperty(exports, "httpsGetJson", { enumerable: true, get: function () { return gitlab_1.httpsGetJson; } });
|
|
31
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolve/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,qCAAwE;AAA/D,sGAAA,WAAW,OAAA;AAAE,yGAAA,cAAc,OAAA;AAAE,yGAAA,cAAc,OAAA;AACpD,uCAA4F;AAAnF,+GAAA,mBAAmB,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AACvE,mCAQkB;AAPhB,uGAAA,aAAa,OAAA;AACb,+GAAA,qBAAqB,OAAA;AACrB,8GAAA,oBAAoB,OAAA;AACpB,4GAAA,kBAAkB,OAAA;AAClB,2GAAA,iBAAiB,OAAA;AACjB,8GAAA,oBAAoB,OAAA;AACpB,uGAAA,aAAa,OAAA;AAEf,mCAAyD;AAAhD,yGAAA,eAAe,OAAA;AAAE,sGAAA,YAAY,OAAA"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* resolveFromManifest (B2) — the manifest-driven resolver (RESOLVED-LOCK-SPEC S4).
|
|
3
|
-
*
|
|
4
|
-
* Input: a snapshot.json-like {@link Manifest} (install set + registry scope→group).
|
|
5
|
-
* B2 discovers each package's projectId by fetching the GitLab npm **packument**
|
|
6
|
-
* and mining the version's `dist.tarball` URL — the same coordinate signal B1
|
|
7
|
-
* mines from a package-lock `resolved` URL. From "npmName + version + projectId"
|
|
8
|
-
* onward it reuses the shared member core, so resolution is IDENTICAL to B1.
|
|
9
|
-
*
|
|
10
|
-
* Output: the SAME resolved-lock schema (S2); only `source.derivedFrom` differs.
|
|
11
|
-
* READ-ONLY: registry GETs only.
|
|
12
|
-
*/
|
|
13
|
-
import type { InstallBlock, Manifest, Packument, PackumentVersion, ResolveFromManifestOptions, ResolveResult } from '../types';
|
|
14
|
-
export interface InstallEntry {
|
|
15
|
-
npmName: string;
|
|
16
|
-
version: string;
|
|
17
|
-
installer: string;
|
|
18
|
-
}
|
|
19
|
-
/** scope of an npm name: "@ist/tda" -> "@ist"; unscoped -> null. */
|
|
20
|
-
export declare function scopeOf(name: string): string | null;
|
|
21
|
-
/**
|
|
22
|
-
* Flatten an install block into entries. Accepts the channelled shape
|
|
23
|
-
* ({channel:{name:version}}) or a flat map. De-dups by npmName (first wins).
|
|
24
|
-
*/
|
|
25
|
-
export declare function flattenInstall(install: InstallBlock | undefined, doWarn: (msg: string) => void): InstallEntry[];
|
|
26
|
-
/** Pick the packument version entry for an exact version, else dist-tags.latest. */
|
|
27
|
-
export declare function pickVersionEntry(packument: Packument | undefined, version: string, doWarn: (msg: string) => void, npmName: string): {
|
|
28
|
-
entry: PackumentVersion | null;
|
|
29
|
-
version: string;
|
|
30
|
-
};
|
|
31
|
-
export declare function resolveFromManifest(manifestObj: Manifest, options: ResolveFromManifestOptions): Promise<ResolveResult>;
|
|
32
|
-
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/resolve/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EAER,SAAS,EACT,gBAAgB,EAChB,0BAA0B,EAC1B,aAAa,EACd,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,oEAAoE;AACpE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGnD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC5B,YAAY,EAAE,CA6BhB;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAC7B,OAAO,EAAE,MAAM,GACd;IAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAUrD;AAED,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,QAAQ,EACrB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,aAAa,CAAC,CAuGxB"}
|
|
@@ -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"}
|