@lerna-lite/publish 0.3.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/LICENSE +20 -0
- package/README.md +415 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/create-temp-licenses.d.ts +7 -0
- package/dist/lib/create-temp-licenses.js +33 -0
- package/dist/lib/create-temp-licenses.js.map +1 -0
- package/dist/lib/fetch-config.d.ts +7 -0
- package/dist/lib/fetch-config.js +22 -0
- package/dist/lib/fetch-config.js.map +1 -0
- package/dist/lib/get-current-sha.d.ts +6 -0
- package/dist/lib/get-current-sha.js +20 -0
- package/dist/lib/get-current-sha.js.map +1 -0
- package/dist/lib/get-current-tags.d.ts +8 -0
- package/dist/lib/get-current-tags.js +36 -0
- package/dist/lib/get-current-tags.js.map +1 -0
- package/dist/lib/get-npm-username.d.ts +7 -0
- package/dist/lib/get-npm-username.js +50 -0
- package/dist/lib/get-npm-username.js.map +1 -0
- package/dist/lib/get-packages-without-license.d.ts +8 -0
- package/dist/lib/get-packages-without-license.js +23 -0
- package/dist/lib/get-packages-without-license.js.map +1 -0
- package/dist/lib/get-packed.d.ts +2 -0
- package/dist/lib/get-packed.js +66 -0
- package/dist/lib/get-packed.js.map +1 -0
- package/dist/lib/get-profile-data.d.ts +7 -0
- package/dist/lib/get-profile-data.js +23 -0
- package/dist/lib/get-profile-data.js.map +1 -0
- package/dist/lib/get-tagged-packages.d.ts +8 -0
- package/dist/lib/get-tagged-packages.js +30 -0
- package/dist/lib/get-tagged-packages.js.map +1 -0
- package/dist/lib/get-two-factor-auth-required.d.ts +7 -0
- package/dist/lib/get-two-factor-auth-required.js +43 -0
- package/dist/lib/get-two-factor-auth-required.js.map +1 -0
- package/dist/lib/get-unpublished-packages.d.ts +7 -0
- package/dist/lib/get-unpublished-packages.js +34 -0
- package/dist/lib/get-unpublished-packages.js.map +1 -0
- package/dist/lib/get-whoami.d.ts +11 -0
- package/dist/lib/get-whoami.js +21 -0
- package/dist/lib/get-whoami.js.map +1 -0
- package/dist/lib/git-checkout.d.ts +7 -0
- package/dist/lib/git-checkout.js +21 -0
- package/dist/lib/git-checkout.js.map +1 -0
- package/dist/lib/index.d.ts +19 -0
- package/dist/lib/index.js +32 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/log-packed.d.ts +1 -0
- package/dist/lib/log-packed.js +68 -0
- package/dist/lib/log-packed.js.map +1 -0
- package/dist/lib/npm-dist-tag.d.ts +30 -0
- package/dist/lib/npm-dist-tag.js +142 -0
- package/dist/lib/npm-dist-tag.js.map +1 -0
- package/dist/lib/npm-publish.d.ts +11 -0
- package/dist/lib/npm-publish.js +116 -0
- package/dist/lib/npm-publish.js.map +1 -0
- package/dist/lib/pack-directory.d.ts +8 -0
- package/dist/lib/pack-directory.js +68 -0
- package/dist/lib/pack-directory.js.map +1 -0
- package/dist/lib/remove-temp-licenses.d.ts +6 -0
- package/dist/lib/remove-temp-licenses.js +20 -0
- package/dist/lib/remove-temp-licenses.js.map +1 -0
- package/dist/lib/verify-npm-package-access.d.ts +9 -0
- package/dist/lib/verify-npm-package-access.js +56 -0
- package/dist/lib/verify-npm-package-access.js.map +1 -0
- package/dist/publishCommand.d.ts +59 -0
- package/dist/publishCommand.js +628 -0
- package/dist/publishCommand.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.fetchTags = exports.list = exports.remove = exports.add = void 0;
|
|
7
|
+
const npmlog_1 = __importDefault(require("npmlog"));
|
|
8
|
+
const npm_package_arg_1 = __importDefault(require("npm-package-arg"));
|
|
9
|
+
const npm_registry_fetch_1 = __importDefault(require("npm-registry-fetch"));
|
|
10
|
+
const core_1 = require("@lerna-lite/core");
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {fetch.FetchOptions & { defaultTag?: string; dryRun?: boolean; }} DistTagOptions
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Add a dist-tag to a package.
|
|
16
|
+
* @param {string} spec
|
|
17
|
+
* @param {string} [tag]
|
|
18
|
+
* @param {DistTagOptions} options
|
|
19
|
+
* @param {import("@lerna/otplease").OneTimePasswordCache} otpCache
|
|
20
|
+
*/
|
|
21
|
+
function add(spec, tag, options, otpCache) {
|
|
22
|
+
const opts = {
|
|
23
|
+
log: npmlog_1.default,
|
|
24
|
+
...options,
|
|
25
|
+
spec: (0, npm_package_arg_1.default)(spec),
|
|
26
|
+
};
|
|
27
|
+
const cleanTag = (tag || opts.defaultTag || opts.tag).trim();
|
|
28
|
+
const { name, rawSpec: version } = opts.spec;
|
|
29
|
+
opts.log.verbose('dist-tag', `adding "${cleanTag}" to ${name}@${version}`);
|
|
30
|
+
// istanbul ignore next
|
|
31
|
+
if (opts.dryRun) {
|
|
32
|
+
opts.log.silly('dist-tag', 'dry-run configured, bailing now');
|
|
33
|
+
return Promise.resolve();
|
|
34
|
+
}
|
|
35
|
+
return fetchTags(opts).then((tags) => {
|
|
36
|
+
if (tags[cleanTag] === version) {
|
|
37
|
+
opts.log.warn('dist-tag', `${name}@${cleanTag} already set to ${version}`);
|
|
38
|
+
return tags;
|
|
39
|
+
}
|
|
40
|
+
const uri = `/-/package/${opts.spec.escapedName}/dist-tags/${encodeURIComponent(cleanTag)}`;
|
|
41
|
+
const payload = {
|
|
42
|
+
...opts,
|
|
43
|
+
method: 'PUT',
|
|
44
|
+
body: JSON.stringify(version),
|
|
45
|
+
headers: {
|
|
46
|
+
// cannot use fetch.json() due to HTTP 204 response,
|
|
47
|
+
// so we manually set the required content-type
|
|
48
|
+
'content-type': 'application/json',
|
|
49
|
+
},
|
|
50
|
+
spec: opts.spec,
|
|
51
|
+
};
|
|
52
|
+
// success returns HTTP 204, thus no JSON to parse
|
|
53
|
+
return (0, core_1.otplease)((wrappedPayload) => (0, npm_registry_fetch_1.default)(uri, wrappedPayload), payload, otpCache).then(() => {
|
|
54
|
+
opts.log.verbose('dist-tag', `added "${cleanTag}" to ${name}@${version}`);
|
|
55
|
+
// eslint-disable-next-line no-param-reassign
|
|
56
|
+
tags[cleanTag] = version;
|
|
57
|
+
return tags;
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
exports.add = add;
|
|
62
|
+
/**
|
|
63
|
+
* Remove a dist-tag from a package.
|
|
64
|
+
* @param {string} spec
|
|
65
|
+
* @param {string} tag
|
|
66
|
+
* @param {DistTagOptions} options
|
|
67
|
+
* @param {import("@lerna/otplease").OneTimePasswordCache} otpCache
|
|
68
|
+
*/
|
|
69
|
+
function remove(spec, tag, options, otpCache) {
|
|
70
|
+
const opts = {
|
|
71
|
+
log: npmlog_1.default,
|
|
72
|
+
...options,
|
|
73
|
+
spec: (0, npm_package_arg_1.default)(spec),
|
|
74
|
+
};
|
|
75
|
+
opts.log.verbose('dist-tag', `removing "${tag}" from ${opts.spec.name}`);
|
|
76
|
+
// istanbul ignore next
|
|
77
|
+
if (opts.dryRun) {
|
|
78
|
+
opts.log.silly('dist-tag', 'dry-run configured, bailing now');
|
|
79
|
+
return Promise.resolve();
|
|
80
|
+
}
|
|
81
|
+
return fetchTags(opts).then((tags) => {
|
|
82
|
+
const version = tags[tag];
|
|
83
|
+
if (!version) {
|
|
84
|
+
opts.log.info('dist-tag', `"${tag}" is not a dist-tag on ${opts.spec.name}`);
|
|
85
|
+
return tags;
|
|
86
|
+
}
|
|
87
|
+
const uri = `/-/package/${opts.spec.escapedName}/dist-tags/${encodeURIComponent(tag)}`;
|
|
88
|
+
const payload = {
|
|
89
|
+
...opts,
|
|
90
|
+
method: 'DELETE',
|
|
91
|
+
spec: opts.spec,
|
|
92
|
+
};
|
|
93
|
+
// the delete properly returns a 204, so no json to parse
|
|
94
|
+
return (0, core_1.otplease)((wrappedPayload) => (0, npm_registry_fetch_1.default)(uri, wrappedPayload), payload, otpCache).then(() => {
|
|
95
|
+
opts.log.verbose('dist-tag', `removed "${tag}" from ${opts.spec.name}@${version}`);
|
|
96
|
+
// eslint-disable-next-line no-param-reassign
|
|
97
|
+
delete tags[tag];
|
|
98
|
+
return tags;
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
exports.remove = remove;
|
|
103
|
+
/**
|
|
104
|
+
* List dist-tags of a package.
|
|
105
|
+
* @param {string} spec
|
|
106
|
+
* @param {DistTagOptions} options
|
|
107
|
+
*/
|
|
108
|
+
function list(spec, options) {
|
|
109
|
+
const opts = {
|
|
110
|
+
log: npmlog_1.default,
|
|
111
|
+
...options,
|
|
112
|
+
spec: (0, npm_package_arg_1.default)(spec),
|
|
113
|
+
};
|
|
114
|
+
// istanbul ignore next
|
|
115
|
+
if (opts.dryRun) {
|
|
116
|
+
opts.log.silly('dist-tag', 'dry-run configured, bailing now');
|
|
117
|
+
return Promise.resolve();
|
|
118
|
+
}
|
|
119
|
+
return fetchTags(opts);
|
|
120
|
+
}
|
|
121
|
+
exports.list = list;
|
|
122
|
+
/**
|
|
123
|
+
* Retrieve list of dist-tags for a package.
|
|
124
|
+
* @param {Omit<fetch.FetchOptions, 'spec'> & { spec: npa.Result }} opts
|
|
125
|
+
*/
|
|
126
|
+
function fetchTags(opts) {
|
|
127
|
+
return npm_registry_fetch_1.default
|
|
128
|
+
.json(`/-/package/${opts.spec.escapedName}/dist-tags`, {
|
|
129
|
+
...opts,
|
|
130
|
+
preferOnline: true,
|
|
131
|
+
spec: opts.spec,
|
|
132
|
+
})
|
|
133
|
+
.then((data) => {
|
|
134
|
+
if (data && typeof data === 'object') {
|
|
135
|
+
// eslint-disable-next-line no-param-reassign, no-underscore-dangle
|
|
136
|
+
delete data._etag;
|
|
137
|
+
}
|
|
138
|
+
return data || {};
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
exports.fetchTags = fetchTags;
|
|
142
|
+
//# sourceMappingURL=npm-dist-tag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-dist-tag.js","sourceRoot":"","sources":["../../src/lib/npm-dist-tag.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAyB;AACzB,sEAAkC;AAClC,4EAAuC;AAEvC,2CAA4C;AAE5C;;GAEG;AAEH;;;;;;GAMG;AACH,SAAgB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ;IAC9C,MAAM,IAAI,GAAG;QACX,GAAG,EAAH,gBAAG;QACH,GAAG,OAAO;QACV,IAAI,EAAE,IAAA,yBAAG,EAAC,IAAI,CAAC;KAChB,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;IAE7C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,QAAQ,QAAQ,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;IAE3E,uBAAuB;IACvB,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,iCAAiC,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC1B;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,IAAI,QAAQ,mBAAmB,OAAO,EAAE,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC;SACb;QAED,MAAM,GAAG,GAAG,cAAc,IAAI,CAAC,IAAI,CAAC,WAAW,cAAc,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5F,MAAM,OAAO,GAAG;YACd,GAAG,IAAI;YACP,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,OAAO,EAAE;gBACP,oDAAoD;gBACpD,+CAA+C;gBAC/C,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;QAEF,kDAAkD;QAClD,OAAO,IAAA,eAAQ,EAAC,CAAC,cAAc,EAAE,EAAE,CAAC,IAAA,4BAAK,EAAC,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC3F,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,QAAQ,QAAQ,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;YAE1E,6CAA6C;YAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;YAEzB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AA/CD,kBA+CC;AAED;;;;;;GAMG;AACH,SAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ;IACjD,MAAM,IAAI,GAAG;QACX,GAAG,EAAH,gBAAG;QACH,GAAG,OAAO;QACV,IAAI,EAAE,IAAA,yBAAG,EAAC,IAAI,CAAC;KAChB,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,GAAG,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAEzE,uBAAuB;IACvB,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,iCAAiC,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC1B;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,0BAA0B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7E,OAAO,IAAI,CAAC;SACb;QAED,MAAM,GAAG,GAAG,cAAc,IAAI,CAAC,IAAI,CAAC,WAAW,cAAc,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QACvF,MAAM,OAAO,GAAG;YACd,GAAG,IAAI;YACP,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;QAEF,yDAAyD;QACzD,OAAO,IAAA,eAAQ,EAAC,CAAC,cAAc,EAAE,EAAE,CAAC,IAAA,4BAAK,EAAC,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC3F,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,GAAG,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;YAEnF,6CAA6C;YAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YAEjB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAxCD,wBAwCC;AAED;;;;GAIG;AACH,SAAgB,IAAI,CAAC,IAAI,EAAE,OAAO;IAChC,MAAM,IAAI,GAAG;QACX,GAAG,EAAH,gBAAG;QACH,GAAG,OAAO;QACV,IAAI,EAAE,IAAA,yBAAG,EAAC,IAAI,CAAC;KAChB,CAAC;IAEF,uBAAuB;IACvB,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,iCAAiC,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC1B;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAdD,oBAcC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,IAAI;IAC5B,OAAO,4BAAK;SACT,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,WAAW,YAAY,EAAE;QACrD,GAAG,IAAI;QACP,YAAY,EAAE,IAAI;QAClB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACpC,mEAAmE;YACnE,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;QAED,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC;AAfD,8BAeC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import('npm-registry-fetch').FetchOptions & { access?: 'public' | 'restricted'; defaultTag?: string; }} LibNpmPublishOptions https://github.com/npm/libnpmpublish#opts
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Publish a package to the configured registry.
|
|
6
|
+
* @param {import("@lerna/package").Package} pkg
|
|
7
|
+
* @param {string} tarFilePath
|
|
8
|
+
* @param {LibNpmPublishOptions & NpmPublishOptions} [options]
|
|
9
|
+
* @param {import("@lerna/otplease").OneTimePasswordCache} [otpCache]
|
|
10
|
+
*/
|
|
11
|
+
export declare function npmPublish(pkg: any, tarFilePath: any, options: {} | undefined, otpCache: any): Promise<any>;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.npmPublish = void 0;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const npmlog_1 = __importDefault(require("npmlog"));
|
|
9
|
+
const npm_package_arg_1 = __importDefault(require("npm-package-arg"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const pify_1 = __importDefault(require("pify"));
|
|
12
|
+
const libnpmpublish_1 = require("libnpmpublish");
|
|
13
|
+
const read_package_json_1 = __importDefault(require("read-package-json"));
|
|
14
|
+
const core_1 = require("@lerna-lite/core");
|
|
15
|
+
const readJSONAsync = (0, pify_1.default)(read_package_json_1.default);
|
|
16
|
+
/**
|
|
17
|
+
* @typedef {object} NpmPublishOptions
|
|
18
|
+
* @property {boolean} [dryRun]
|
|
19
|
+
* @property {string} [tag] Passed to libnpmpublish as `opts.defaultTag` to preserve npm v6 back-compat
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Alias dash-cased npmConf to camelCase
|
|
23
|
+
* @param {NpmPublishOptions} obj
|
|
24
|
+
* @returns {NpmPublishOptions}
|
|
25
|
+
*/
|
|
26
|
+
function flattenOptions(obj) {
|
|
27
|
+
return {
|
|
28
|
+
// eslint-disable-next-line dot-notation -- (npm v7 compat)
|
|
29
|
+
defaultTag: obj['tag'] || 'latest',
|
|
30
|
+
dryRun: obj['dry-run'],
|
|
31
|
+
...obj,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @typedef {import('npm-registry-fetch').FetchOptions & { access?: 'public' | 'restricted'; defaultTag?: string; }} LibNpmPublishOptions https://github.com/npm/libnpmpublish#opts
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* Publish a package to the configured registry.
|
|
39
|
+
* @param {import("@lerna/package").Package} pkg
|
|
40
|
+
* @param {string} tarFilePath
|
|
41
|
+
* @param {LibNpmPublishOptions & NpmPublishOptions} [options]
|
|
42
|
+
* @param {import("@lerna/otplease").OneTimePasswordCache} [otpCache]
|
|
43
|
+
*/
|
|
44
|
+
function npmPublish(pkg, tarFilePath, options = {}, otpCache) {
|
|
45
|
+
const { dryRun, ...remainingOptions } = flattenOptions(options);
|
|
46
|
+
const { scope } = (0, npm_package_arg_1.default)(pkg.name);
|
|
47
|
+
// pass only the package scope to libnpmpublish
|
|
48
|
+
const opts = {
|
|
49
|
+
log: npmlog_1.default,
|
|
50
|
+
...remainingOptions,
|
|
51
|
+
projectScope: scope,
|
|
52
|
+
};
|
|
53
|
+
opts.log.verbose('publish', pkg.name);
|
|
54
|
+
let chain = Promise.resolve();
|
|
55
|
+
if (!dryRun) {
|
|
56
|
+
chain = chain.then(() => {
|
|
57
|
+
let { manifestLocation } = pkg;
|
|
58
|
+
if (pkg.contents !== pkg.location) {
|
|
59
|
+
// 'rebase' manifest used to generated directory
|
|
60
|
+
manifestLocation = path_1.default.join(pkg.contents, 'package.json');
|
|
61
|
+
}
|
|
62
|
+
return Promise.all([fs_extra_1.default.readFile(tarFilePath), readJSONAsync(manifestLocation)]);
|
|
63
|
+
});
|
|
64
|
+
chain = chain.then(([tarData, manifest]) => {
|
|
65
|
+
// non-default tag needs to override publishConfig.tag,
|
|
66
|
+
// which is merged into opts below if necessary
|
|
67
|
+
if (opts.defaultTag !== 'latest' &&
|
|
68
|
+
manifest.publishConfig &&
|
|
69
|
+
manifest.publishConfig.tag &&
|
|
70
|
+
manifest.publishConfig.tag !== opts.defaultTag) {
|
|
71
|
+
// eslint-disable-next-line no-param-reassign
|
|
72
|
+
manifest.publishConfig.tag = opts.defaultTag;
|
|
73
|
+
}
|
|
74
|
+
// publishConfig is no longer consumed in n-r-f, so merge here
|
|
75
|
+
if (manifest.publishConfig) {
|
|
76
|
+
Object.assign(opts, publishConfigToOpts(manifest.publishConfig));
|
|
77
|
+
}
|
|
78
|
+
return (0, core_1.otplease)((innerOpts) => (0, libnpmpublish_1.publish)(manifest, tarData, innerOpts), opts, otpCache).catch((err) => {
|
|
79
|
+
var _a, _b;
|
|
80
|
+
opts.log.silly('', err);
|
|
81
|
+
opts.log.error(err.code, (_b = (_a = err.body) === null || _a === void 0 ? void 0 : _a.error) !== null && _b !== void 0 ? _b : err.message);
|
|
82
|
+
// avoid dumping logs, this isn't a lerna-lite problem
|
|
83
|
+
err.name = 'ValidationError';
|
|
84
|
+
// ensure process exits non-zero
|
|
85
|
+
process.exitCode = 'errno' in err ? err.errno : 1;
|
|
86
|
+
// re-throw to break chain upstream
|
|
87
|
+
throw err;
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
chain = chain.then(() => (0, core_1.runLifecycle)(pkg, 'publish', opts));
|
|
92
|
+
chain = chain.then(() => (0, core_1.runLifecycle)(pkg, 'postpublish', opts));
|
|
93
|
+
return chain;
|
|
94
|
+
}
|
|
95
|
+
exports.npmPublish = npmPublish;
|
|
96
|
+
/**
|
|
97
|
+
* @typedef {object} PackagePublishConfig
|
|
98
|
+
* @property {'public' | 'restricted'} [access]
|
|
99
|
+
* @property {string} [registry]
|
|
100
|
+
* @property {string} [tag]
|
|
101
|
+
*/
|
|
102
|
+
/**
|
|
103
|
+
* Obtain an object suitable for assignment onto existing options from `pkg.publishConfig`.
|
|
104
|
+
* @param {PackagePublishConfig} publishConfig
|
|
105
|
+
* @returns {Omit<PackagePublishConfig, 'tag'> & { defaultTag?: string }}
|
|
106
|
+
*/
|
|
107
|
+
function publishConfigToOpts(publishConfig) {
|
|
108
|
+
const opts = { ...publishConfig };
|
|
109
|
+
// npm v7 renamed tag internally
|
|
110
|
+
if (publishConfig.tag) {
|
|
111
|
+
opts.defaultTag = publishConfig.tag;
|
|
112
|
+
delete opts.tag;
|
|
113
|
+
}
|
|
114
|
+
return opts;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=npm-publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-publish.js","sourceRoot":"","sources":["../../src/lib/npm-publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Package, PackConfig } from '@lerna-lite/core';
|
|
2
|
+
/**
|
|
3
|
+
* Pack a directory suitable for publishing, writing tarball to a tempfile.
|
|
4
|
+
* @param {Package|string} _pkg Package instance or path to manifest
|
|
5
|
+
* @param {string} dir to pack
|
|
6
|
+
* @param {PackConfig} options
|
|
7
|
+
*/
|
|
8
|
+
export declare function packDirectory(_pkg: Package, dir: string, options: PackConfig): Promise<any>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.packDirectory = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const npm_packlist_1 = __importDefault(require("npm-packlist"));
|
|
9
|
+
const npmlog_1 = __importDefault(require("npmlog"));
|
|
10
|
+
const tar_1 = __importDefault(require("tar"));
|
|
11
|
+
const temp_write_1 = __importDefault(require("temp-write"));
|
|
12
|
+
const core_1 = require("@lerna-lite/core");
|
|
13
|
+
const get_packed_1 = require("./get-packed");
|
|
14
|
+
/**
|
|
15
|
+
* Pack a directory suitable for publishing, writing tarball to a tempfile.
|
|
16
|
+
* @param {Package|string} _pkg Package instance or path to manifest
|
|
17
|
+
* @param {string} dir to pack
|
|
18
|
+
* @param {PackConfig} options
|
|
19
|
+
*/
|
|
20
|
+
function packDirectory(_pkg, dir, options) {
|
|
21
|
+
const pkg = core_1.Package.lazy(_pkg, dir);
|
|
22
|
+
const opts = {
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
log: npmlog_1.default,
|
|
25
|
+
...options,
|
|
26
|
+
};
|
|
27
|
+
opts.log.verbose('pack-directory', path_1.default.relative('.', pkg.contents));
|
|
28
|
+
let chain = Promise.resolve();
|
|
29
|
+
if (opts.ignorePrepublish !== true) {
|
|
30
|
+
chain = chain.then(() => (0, core_1.runLifecycle)(pkg, 'prepublish', opts));
|
|
31
|
+
}
|
|
32
|
+
chain = chain.then(() => (0, core_1.runLifecycle)(pkg, 'prepare', opts));
|
|
33
|
+
if (opts.lernaCommand === 'publish') {
|
|
34
|
+
chain = chain.then(() => pkg.refresh());
|
|
35
|
+
chain = chain.then(() => (0, core_1.runLifecycle)(pkg, 'prepublishOnly', opts));
|
|
36
|
+
chain = chain.then(() => pkg.refresh());
|
|
37
|
+
}
|
|
38
|
+
chain = chain.then(() => (0, core_1.runLifecycle)(pkg, 'prepack', opts));
|
|
39
|
+
chain = chain.then(() => pkg.refresh());
|
|
40
|
+
chain = chain.then(() => (0, npm_packlist_1.default)({ path: pkg.contents }));
|
|
41
|
+
chain = chain.then((files) => tar_1.default.create({
|
|
42
|
+
cwd: pkg.contents,
|
|
43
|
+
prefix: 'package/',
|
|
44
|
+
portable: true,
|
|
45
|
+
// Provide a specific date in the 1980s for the benefit of zip,
|
|
46
|
+
// which is confounded by files dated at the Unix epoch 0.
|
|
47
|
+
mtime: new Date('1985-10-26T08:15:00.000Z'),
|
|
48
|
+
gzip: true,
|
|
49
|
+
},
|
|
50
|
+
// NOTE: node-tar does some Magic Stuff depending on prefixes for files
|
|
51
|
+
// specifically with @ signs, so we just neutralize that one
|
|
52
|
+
// and any such future 'features' by prepending `./`
|
|
53
|
+
files.map((f) => `./${f}`)));
|
|
54
|
+
chain = chain.then((stream) => (0, temp_write_1.default)(stream, getTarballName(pkg)));
|
|
55
|
+
chain = chain.then((tarFilePath) => (0, get_packed_1.getPacked)(pkg, tarFilePath).then((packed) => Promise.resolve()
|
|
56
|
+
.then(() => (0, core_1.runLifecycle)(pkg, 'postpack', opts))
|
|
57
|
+
.then(() => packed)));
|
|
58
|
+
return chain;
|
|
59
|
+
}
|
|
60
|
+
exports.packDirectory = packDirectory;
|
|
61
|
+
function getTarballName(pkg) {
|
|
62
|
+
const name = pkg.name[0] === '@'
|
|
63
|
+
? // scoped packages get special treatment
|
|
64
|
+
pkg.name.substr(1).replace(/\//g, '-')
|
|
65
|
+
: pkg.name;
|
|
66
|
+
return `${name}-${pkg.version}.tgz`;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=pack-directory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pack-directory.js","sourceRoot":"","sources":["../../src/lib/pack-directory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.removeTempLicenses = void 0;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const p_map_1 = __importDefault(require("p-map"));
|
|
9
|
+
/**
|
|
10
|
+
* Remove temporary license files.
|
|
11
|
+
* @param {Package[]} packagesToBeLicensed
|
|
12
|
+
*/
|
|
13
|
+
function removeTempLicenses(packagesToBeLicensed) {
|
|
14
|
+
if (!packagesToBeLicensed.length) {
|
|
15
|
+
return Promise.resolve();
|
|
16
|
+
}
|
|
17
|
+
return (0, p_map_1.default)(packagesToBeLicensed, (pkg) => fs_extra_1.default.remove(pkg.licensePath));
|
|
18
|
+
}
|
|
19
|
+
exports.removeTempLicenses = removeTempLicenses;
|
|
20
|
+
//# sourceMappingURL=remove-temp-licenses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-temp-licenses.js","sourceRoot":"","sources":["../../src/lib/remove-temp-licenses.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA0B;AAC1B,kDAAyB;AAIzB;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,oBAA+B;IAChE,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;QAChC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC1B;IAED,OAAO,IAAA,eAAI,EAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAE,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACzE,CAAC;AAND,gDAMC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FetchConfig, Package } from '@lerna-lite/core';
|
|
2
|
+
/**
|
|
3
|
+
* Throw an error if the logged-in user does not have read-write access to all packages.
|
|
4
|
+
* @param {{ name: string; }[]} packages
|
|
5
|
+
* @param {string} username
|
|
6
|
+
* @param {import('./fetch-config').FetchConfig} options
|
|
7
|
+
* @returns {Promise<void>}
|
|
8
|
+
*/
|
|
9
|
+
export declare function verifyNpmPackageAccess(packages: Package[], username: string, options: FetchConfig): Promise<void>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.verifyNpmPackageAccess = void 0;
|
|
7
|
+
const libnpmaccess_1 = __importDefault(require("libnpmaccess"));
|
|
8
|
+
const core_1 = require("@lerna-lite/core");
|
|
9
|
+
const fetch_config_1 = require("./fetch-config");
|
|
10
|
+
/**
|
|
11
|
+
* Throw an error if the logged-in user does not have read-write access to all packages.
|
|
12
|
+
* @param {{ name: string; }[]} packages
|
|
13
|
+
* @param {string} username
|
|
14
|
+
* @param {import('./fetch-config').FetchConfig} options
|
|
15
|
+
* @returns {Promise<void>}
|
|
16
|
+
*/
|
|
17
|
+
function verifyNpmPackageAccess(packages, username, options) {
|
|
18
|
+
const opts = (0, fetch_config_1.getFetchConfig)(options, {
|
|
19
|
+
// don't wait forever for third-party failures to be dealt with
|
|
20
|
+
fetchRetries: 0,
|
|
21
|
+
});
|
|
22
|
+
opts.log.silly('verifyNpmPackageAccess');
|
|
23
|
+
return (0, core_1.pulseTillDone)(libnpmaccess_1.default.lsPackages(username, opts)).then(success, failure);
|
|
24
|
+
function success(result) {
|
|
25
|
+
// when _no_ results received, access.lsPackages returns null
|
|
26
|
+
// we can only assume that the packages in question have never been published
|
|
27
|
+
if (result === null) {
|
|
28
|
+
opts.log.warn('', 'The logged-in user does not have any previously-published packages, skipping permission checks...');
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
for (const pkg of packages) {
|
|
32
|
+
if (pkg.name in result && result[pkg.name] !== 'read-write') {
|
|
33
|
+
throw new core_1.ValidationError('EACCESS', `You do not have write permission required to publish '${pkg.name}'`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function failure(err) {
|
|
39
|
+
// pass if registry does not support ls-packages endpoint
|
|
40
|
+
if (err.code === 'E500' || err.code === 'E404') {
|
|
41
|
+
// most likely a private registry (npm Enterprise, verdaccio, etc)
|
|
42
|
+
opts.log.warn('EREGISTRY', 'Registry %j does not support `npm access ls-packages`, skipping permission checks...',
|
|
43
|
+
// registry
|
|
44
|
+
opts.registry);
|
|
45
|
+
// don't log redundant errors
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// Log the error cleanly to stderr
|
|
49
|
+
opts.log.pause();
|
|
50
|
+
console.error(err.message); // eslint-disable-line no-console
|
|
51
|
+
opts.log.resume();
|
|
52
|
+
throw new core_1.ValidationError('EWHOAMI', 'Authentication error. Use `npm whoami` to troubleshoot.');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.verifyNpmPackageAccess = verifyNpmPackageAccess;
|
|
56
|
+
//# sourceMappingURL=verify-npm-package-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-npm-package-access.js","sourceRoot":"","sources":["../../src/lib/verify-npm-package-access.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAkC;AAElC,2CAAwF;AACxF,iDAAgD;AAEhD;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,QAAmB,EAAE,QAAgB,EAAE,OAAoB;IAChG,MAAM,IAAI,GAAG,IAAA,6BAAc,EAAC,OAAO,EAAE;QACnC,+DAA+D;QAC/D,YAAY,EAAE,CAAC;KAChB,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEzC,OAAO,IAAA,oBAAa,EAAC,sBAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE/E,SAAS,OAAO,CAAC,MAAM;QACrB,6DAA6D;QAC7D,6EAA6E;QAC7E,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,EAAE,EACF,mGAAmG,CACpG,CAAC;SACH;aAAM;YACL,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;gBAC1B,IAAI,GAAG,CAAC,IAAI,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,YAAY,EAAE;oBAC3D,MAAM,IAAI,sBAAe,CACvB,SAAS,EACT,yDAAyD,GAAG,CAAC,IAAI,GAAG,CACrE,CAAC;iBACH;aACF;SACF;IACH,CAAC;IAED,SAAS,OAAO,CAAC,GAAG;QAClB,yDAAyD;QACzD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;YAC9C,kEAAkE;YAClE,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,WAAW,EACX,sFAAsF;YACtF,WAAW;YACX,IAAI,CAAC,QAAQ,CACd,CAAC;YAEF,6BAA6B;YAC7B,OAAO;SACR;QAED,kCAAkC;QAClC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC;QAC7D,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,MAAM,IAAI,sBAAe,CAAC,SAAS,EAAE,yDAAyD,CAAC,CAAC;IAClG,CAAC;AACH,CAAC;AApDD,wDAoDC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Command, Package } from '@lerna-lite/core';
|
|
2
|
+
export declare class PublishCommand extends Command {
|
|
3
|
+
/** command name */
|
|
4
|
+
name: string;
|
|
5
|
+
conf: any;
|
|
6
|
+
otpCache: any;
|
|
7
|
+
gitReset: boolean;
|
|
8
|
+
savePrefix: string;
|
|
9
|
+
tagPrefix: string;
|
|
10
|
+
hasRootedLeaf: boolean;
|
|
11
|
+
npmSession: string;
|
|
12
|
+
packagesToPublish: Package[];
|
|
13
|
+
packagesToBeLicensed?: Package[];
|
|
14
|
+
runPackageLifecycle: any;
|
|
15
|
+
runRootLifecycle: (stage: string) => Promise<void> | void;
|
|
16
|
+
verifyAccess: boolean;
|
|
17
|
+
twoFactorAuthRequired: boolean;
|
|
18
|
+
updates: any[];
|
|
19
|
+
updatesVersions?: Map<string, any>;
|
|
20
|
+
get otherCommandConfigs(): string[];
|
|
21
|
+
get requiresGit(): boolean;
|
|
22
|
+
configureProperties(): void;
|
|
23
|
+
get userAgent(): string;
|
|
24
|
+
initialize(): Promise<string | boolean>;
|
|
25
|
+
execute(): Promise<void>;
|
|
26
|
+
verifyWorkingTreeClean(): any;
|
|
27
|
+
detectFromGit(): Promise<any[] | {
|
|
28
|
+
updates: any;
|
|
29
|
+
updatesVersions: any;
|
|
30
|
+
needsConfirmation: boolean;
|
|
31
|
+
} | undefined>;
|
|
32
|
+
detectFromPackage(): Promise<{
|
|
33
|
+
updates: any;
|
|
34
|
+
updatesVersions: any;
|
|
35
|
+
needsConfirmation: boolean;
|
|
36
|
+
}>;
|
|
37
|
+
detectCanaryVersions(): Promise<{
|
|
38
|
+
updates: any;
|
|
39
|
+
updatesVersions: any;
|
|
40
|
+
needsConfirmation: boolean;
|
|
41
|
+
}>;
|
|
42
|
+
confirmPublish(): true | Promise<string>;
|
|
43
|
+
prepareLicenseActions(): Promise<void>;
|
|
44
|
+
prepareRegistryActions(): Promise<any>;
|
|
45
|
+
updateCanaryVersions(): Promise<void[]>;
|
|
46
|
+
resolveLocalDependencyLinks(): Promise<void[]>;
|
|
47
|
+
annotateGitHead(): void;
|
|
48
|
+
serializeChanges(): Promise<Package[]>;
|
|
49
|
+
resetChanges(): any;
|
|
50
|
+
execScript(pkg: any, script: any): any;
|
|
51
|
+
removeTempLicensesOnError(error: any): Promise<never>;
|
|
52
|
+
requestOneTimePassword(): Promise<string> | undefined;
|
|
53
|
+
topoMapPackages(mapper: any): Promise<unknown>;
|
|
54
|
+
packUpdated(): Promise<any>;
|
|
55
|
+
publishPacked(): Promise<any>;
|
|
56
|
+
npmUpdateAsLatest(): Promise<any>;
|
|
57
|
+
getDistTag(): any;
|
|
58
|
+
getPreDistTag(pkg: any): any;
|
|
59
|
+
}
|