@lerna-lite/publish 1.1.0 → 1.4.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 (63) hide show
  1. package/README.md +474 -417
  2. package/dist/index.d.ts +3 -2
  3. package/dist/index.js +19 -18
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/create-temp-licenses.d.ts +7 -7
  6. package/dist/lib/create-temp-licenses.js +32 -32
  7. package/dist/lib/create-temp-licenses.js.map +1 -1
  8. package/dist/lib/fetch-config.d.ts +10 -7
  9. package/dist/lib/fetch-config.js +21 -21
  10. package/dist/lib/fetch-config.js.map +1 -1
  11. package/dist/lib/get-current-sha.d.ts +6 -6
  12. package/dist/lib/get-current-sha.js +19 -19
  13. package/dist/lib/get-current-tags.d.ts +8 -8
  14. package/dist/lib/get-current-tags.js +35 -35
  15. package/dist/lib/get-npm-username.d.ts +7 -7
  16. package/dist/lib/get-npm-username.js +49 -49
  17. package/dist/lib/get-npm-username.js.map +1 -1
  18. package/dist/lib/get-packages-without-license.d.ts +8 -8
  19. package/dist/lib/get-packages-without-license.js +23 -23
  20. package/dist/lib/get-packages-without-license.js.map +1 -1
  21. package/dist/lib/get-packed.d.ts +2 -2
  22. package/dist/lib/get-packed.js +65 -65
  23. package/dist/lib/get-profile-data.d.ts +7 -7
  24. package/dist/lib/get-profile-data.js +22 -22
  25. package/dist/lib/get-tagged-packages.d.ts +9 -8
  26. package/dist/lib/get-tagged-packages.js +29 -29
  27. package/dist/lib/get-tagged-packages.js.map +1 -1
  28. package/dist/lib/get-two-factor-auth-required.d.ts +7 -7
  29. package/dist/lib/get-two-factor-auth-required.js +42 -42
  30. package/dist/lib/get-two-factor-auth-required.js.map +1 -1
  31. package/dist/lib/get-unpublished-packages.d.ts +8 -8
  32. package/dist/lib/get-unpublished-packages.js +36 -36
  33. package/dist/lib/get-whoami.d.ts +11 -11
  34. package/dist/lib/get-whoami.js +20 -20
  35. package/dist/lib/git-checkout.d.ts +10 -7
  36. package/dist/lib/git-checkout.js +20 -20
  37. package/dist/lib/git-checkout.js.map +1 -1
  38. package/dist/lib/index.d.ts +19 -19
  39. package/dist/lib/index.js +35 -35
  40. package/dist/lib/log-packed.d.ts +2 -1
  41. package/dist/lib/log-packed.js +67 -67
  42. package/dist/lib/log-packed.js.map +1 -1
  43. package/dist/lib/npm-dist-tag.d.ts +33 -30
  44. package/dist/lib/npm-dist-tag.js +139 -141
  45. package/dist/lib/npm-dist-tag.js.map +1 -1
  46. package/dist/lib/npm-publish.d.ts +10 -11
  47. package/dist/lib/npm-publish.js +102 -116
  48. package/dist/lib/npm-publish.js.map +1 -1
  49. package/dist/lib/pack-directory.d.ts +8 -8
  50. package/dist/lib/pack-directory.js +66 -67
  51. package/dist/lib/pack-directory.js.map +1 -1
  52. package/dist/lib/remove-temp-licenses.d.ts +6 -6
  53. package/dist/lib/remove-temp-licenses.js +19 -19
  54. package/dist/lib/verify-npm-package-access.d.ts +9 -9
  55. package/dist/lib/verify-npm-package-access.js +55 -55
  56. package/dist/lib/verify-npm-package-access.js.map +1 -1
  57. package/dist/models/index.d.ts +32 -0
  58. package/dist/models/index.js +3 -0
  59. package/dist/models/index.js.map +1 -0
  60. package/dist/publish-command.d.ts +64 -61
  61. package/dist/publish-command.js +642 -626
  62. package/dist/publish-command.js.map +1 -1
  63. package/package.json +9 -10
@@ -1,56 +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 === null || pkg === void 0 ? void 0 : pkg.name) in result && result[pkg === null || pkg === void 0 ? void 0 : 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;
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 === null || pkg === void 0 ? void 0 : pkg.name) in result && result[pkg === null || pkg === void 0 ? void 0 : 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
56
  //# sourceMappingURL=verify-npm-package-access.js.map
@@ -1 +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,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,KAAI,MAAM,IAAI,MAAM,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,CAAC,KAAK,YAAY,EAAE;oBAC7D,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"}
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,EAAE,EAAE,CAAC,CAAC;IAE7C,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,MAAW;QAC1B,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,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,KAAI,MAAM,IAAI,MAAM,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,CAAC,KAAK,YAAY,EAAE;oBAC7D,MAAM,IAAI,sBAAe,CACvB,SAAS,EACT,yDAAyD,GAAG,CAAC,IAAI,GAAG,CACrE,CAAC;iBACH;aACF;SACF;IACH,CAAC;IAED,SAAS,OAAO,CAAC,GAAQ;QACvB,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,32 @@
1
+ import fetch from 'npm-registry-fetch';
2
+ export interface DistTagOptions extends fetch.FetchOptions {
3
+ defaultTag?: string;
4
+ dryRun?: boolean;
5
+ tag: string;
6
+ }
7
+ /** LibNpmPublishOptions - https://github.com/npm/libnpmpublish#opts */
8
+ export interface LibNpmPublishOptions extends fetch.FetchOptions {
9
+ access?: 'public' | 'restricted';
10
+ defaultTag: string;
11
+ dryRun?: boolean;
12
+ tag?: string;
13
+ }
14
+ export interface PackagePublishConfig {
15
+ access?: 'public' | 'restricted';
16
+ defaultTag?: string;
17
+ registry?: string;
18
+ tag?: string;
19
+ }
20
+ export interface Tarball {
21
+ name: string;
22
+ version: string;
23
+ files: any[];
24
+ bundled: any[];
25
+ filename: string;
26
+ size: number;
27
+ unpackedSize: number;
28
+ shasum: string;
29
+ integrity: boolean;
30
+ entryCount: number;
31
+ tarFilePath: string;
32
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":""}
@@ -1,61 +1,64 @@
1
- import { Command, Package } from '@lerna-lite/core';
2
- export declare function factory(argv: any): PublishCommand;
3
- export declare class PublishCommand extends Command {
4
- /** command name */
5
- name: string;
6
- conf: any;
7
- otpCache: any;
8
- gitReset: boolean;
9
- savePrefix: string;
10
- tagPrefix: string;
11
- hasRootedLeaf: boolean;
12
- npmSession: string;
13
- packagesToPublish: Package[];
14
- packagesToBeLicensed?: Package[];
15
- runPackageLifecycle: any;
16
- runRootLifecycle: (stage: string) => Promise<void> | void;
17
- verifyAccess: boolean;
18
- twoFactorAuthRequired: boolean;
19
- updates: any[];
20
- updatesVersions?: Map<string, any>;
21
- get otherCommandConfigs(): string[];
22
- get requiresGit(): boolean;
23
- constructor(argv: any);
24
- configureProperties(): void;
25
- get userAgent(): string;
26
- initialize(): Promise<boolean>;
27
- execute(): Promise<void>;
28
- verifyWorkingTreeClean(): Promise<void>;
29
- detectFromGit(): Promise<{
30
- updates: any;
31
- updatesVersions: any;
32
- needsConfirmation: boolean;
33
- }>;
34
- detectFromPackage(): Promise<{
35
- updates: any;
36
- updatesVersions: any;
37
- needsConfirmation: boolean;
38
- }>;
39
- detectCanaryVersions(): Promise<{
40
- updates: any;
41
- updatesVersions: any;
42
- needsConfirmation: boolean;
43
- }>;
44
- confirmPublish(): true | Promise<boolean>;
45
- prepareLicenseActions(): Promise<void>;
46
- prepareRegistryActions(): Promise<any>;
47
- updateCanaryVersions(): Promise<void[]>;
48
- resolveLocalDependencyLinks(): Promise<void[]>;
49
- annotateGitHead(): void;
50
- serializeChanges(): Promise<Package[]>;
51
- resetChanges(): Promise<any>;
52
- execScript(pkg: any, script: any): any;
53
- removeTempLicensesOnError(error: any): Promise<never>;
54
- requestOneTimePassword(): Promise<string> | undefined;
55
- topoMapPackages(mapper: any): Promise<unknown>;
56
- packUpdated(): Promise<any>;
57
- publishPacked(): Promise<any>;
58
- npmUpdateAsLatest(): Promise<any>;
59
- getDistTag(): any;
60
- getPreDistTag(pkg: any): any;
61
- }
1
+ import { Command, CommandType, Conf, OneTimePasswordCache, Package, PackageGraphNode, PublishCommandOption } from '@lerna-lite/core';
2
+ export declare function factory(argv: PublishCommandOption): PublishCommand;
3
+ export declare class PublishCommand extends Command<PublishCommandOption> {
4
+ /** command name */
5
+ name: CommandType;
6
+ conf: Conf & {
7
+ snapshot?: any;
8
+ };
9
+ otpCache: OneTimePasswordCache;
10
+ gitReset: boolean;
11
+ savePrefix: string;
12
+ tagPrefix: string;
13
+ hasRootedLeaf: boolean;
14
+ npmSession: string;
15
+ packagesToPublish: Package[];
16
+ packagesToBeLicensed?: Package[];
17
+ runPackageLifecycle: (pkg: Package, stage: string) => Promise<void>;
18
+ runRootLifecycle: (stage: string) => Promise<void> | void;
19
+ verifyAccess: boolean;
20
+ twoFactorAuthRequired: boolean;
21
+ updates: PackageGraphNode[];
22
+ updatesVersions?: Map<string, any>;
23
+ get otherCommandConfigs(): string[];
24
+ get requiresGit(): boolean;
25
+ constructor(argv: PublishCommandOption);
26
+ configureProperties(): void;
27
+ get userAgent(): string;
28
+ initialize(): Promise<boolean>;
29
+ execute(): Promise<void>;
30
+ verifyWorkingTreeClean(): Promise<void>;
31
+ detectFromGit(): Promise<{
32
+ updates: Package[];
33
+ updatesVersions: string[][];
34
+ needsConfirmation: boolean;
35
+ }>;
36
+ detectFromPackage(): Promise<{
37
+ updates: any;
38
+ updatesVersions: any;
39
+ needsConfirmation: boolean;
40
+ }>;
41
+ detectCanaryVersions(): Promise<{
42
+ updates: any;
43
+ updatesVersions: any;
44
+ needsConfirmation: boolean;
45
+ }>;
46
+ confirmPublish(): true | Promise<boolean>;
47
+ prepareLicenseActions(): Promise<void>;
48
+ prepareRegistryActions(): Promise<any>;
49
+ updateCanaryVersions(): Promise<void[]>;
50
+ resolveLocalDependencyLinks(): Promise<void[]>;
51
+ resolveLocalDependencyWorkspaceProtocols(): Promise<void[]>;
52
+ annotateGitHead(): void;
53
+ serializeChanges(): Promise<Package[]>;
54
+ resetChanges(): Promise<any>;
55
+ execScript(pkg: Package, script: string): Package;
56
+ removeTempLicensesOnError(error: any): Promise<never>;
57
+ requestOneTimePassword(): Promise<string> | undefined;
58
+ topoMapPackages(mapper: (pkg: Package) => Promise<any>): Promise<unknown>;
59
+ packUpdated(): Promise<any>;
60
+ publishPacked(): Promise<any>;
61
+ npmUpdateAsLatest(): Promise<any>;
62
+ getDistTag(): string | undefined;
63
+ getPreDistTag(pkg: Package): string | undefined;
64
+ }