@jsdevtools/npm-publish 2.0.0 → 2.2.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/README.md +92 -32
- package/lib/action/core.d.ts +2 -2
- package/lib/action/core.js +7 -2
- package/lib/action/core.js.map +1 -1
- package/lib/action/main.js +2 -0
- package/lib/action/main.js.map +1 -1
- package/lib/cli/index.d.ts +1 -1
- package/lib/cli/index.js +7 -1
- package/lib/cli/index.js.map +1 -1
- package/lib/cli/parse-cli-arguments.js +8 -1
- package/lib/cli/parse-cli-arguments.js.map +1 -1
- package/lib/compare-and-publish/compare-and-publish.d.ts +21 -0
- package/lib/compare-and-publish/compare-and-publish.js +53 -0
- package/lib/compare-and-publish/compare-and-publish.js.map +1 -0
- package/lib/compare-and-publish/compare-versions.d.ts +16 -0
- package/lib/compare-and-publish/compare-versions.js +41 -0
- package/lib/compare-and-publish/compare-versions.js.map +1 -0
- package/lib/compare-and-publish/get-arguments.d.ts +21 -0
- package/lib/compare-and-publish/get-arguments.js +50 -0
- package/lib/compare-and-publish/get-arguments.js.map +1 -0
- package/lib/compare-and-publish/index.d.ts +1 -0
- package/lib/compare-and-publish/index.js +18 -0
- package/lib/compare-and-publish/index.js.map +1 -0
- package/lib/errors.d.ts +3 -0
- package/lib/errors.js +8 -1
- package/lib/errors.js.map +1 -1
- package/lib/format-publish-result.d.ts +3 -3
- package/lib/format-publish-result.js +5 -5
- package/lib/format-publish-result.js.map +1 -1
- package/lib/normalize-options.d.ts +5 -2
- package/lib/normalize-options.js +15 -12
- package/lib/normalize-options.js.map +1 -1
- package/lib/npm/call-npm-cli.d.ts +27 -4
- package/lib/npm/call-npm-cli.js +50 -27
- package/lib/npm/call-npm-cli.js.map +1 -1
- package/lib/npm/index.d.ts +2 -29
- package/lib/npm/index.js +16 -38
- package/lib/npm/index.js.map +1 -1
- package/lib/npm/use-npm-environment.d.ts +4 -2
- package/lib/npm/use-npm-environment.js +7 -5
- package/lib/npm/use-npm-environment.js.map +1 -1
- package/lib/npm-publish.js +7 -12
- package/lib/npm-publish.js.map +1 -1
- package/lib/options.d.ts +28 -9
- package/lib/read-manifest.d.ts +4 -7
- package/lib/read-manifest.js +4 -1
- package/lib/read-manifest.js.map +1 -1
- package/lib/results.d.ts +5 -1
- package/lib/results.js +3 -0
- package/lib/results.js.map +1 -1
- package/package.json +18 -14
- package/src/action/core.ts +7 -3
- package/src/action/main.ts +2 -0
- package/src/cli/index.ts +7 -1
- package/src/cli/parse-cli-arguments.ts +11 -1
- package/src/compare-and-publish/compare-and-publish.ts +79 -0
- package/src/compare-and-publish/compare-versions.ts +48 -0
- package/src/compare-and-publish/get-arguments.ts +61 -0
- package/src/compare-and-publish/index.ts +1 -0
- package/src/errors.ts +7 -0
- package/src/format-publish-result.ts +6 -6
- package/src/normalize-options.ts +18 -12
- package/src/npm/call-npm-cli.ts +94 -48
- package/src/npm/index.ts +2 -64
- package/src/npm/use-npm-environment.ts +10 -4
- package/src/npm-publish.ts +11 -18
- package/src/options.ts +30 -9
- package/src/read-manifest.ts +8 -9
- package/src/results.ts +6 -1
- package/lib/compare-versions.d.ts +0 -20
- package/lib/compare-versions.js +0 -36
- package/lib/compare-versions.js.map +0 -1
- package/lib/npm/get-publish-arguments.d.ts +0 -9
- package/lib/npm/get-publish-arguments.js +0 -29
- package/lib/npm/get-publish-arguments.js.map +0 -1
- package/src/compare-versions.ts +0 -52
- package/src/npm/get-publish-arguments.ts +0 -34
package/lib/errors.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.NpmCallError = exports.InvalidStrategyError = exports.InvalidAccessError = exports.InvalidTokenError = exports.InvalidRegistryUrlError = exports.InvalidPackagePublishConfigError = exports.InvalidPackageVersionError = exports.InvalidPackageNameError = exports.PackageJsonParseError = exports.PackageTarballReadError = exports.PackageJsonReadError = exports.InvalidPackageError = void 0;
|
|
6
|
+
exports.NpmCallError = exports.InvalidStrategyError = exports.InvalidAccessError = exports.InvalidTagError = exports.InvalidTokenError = exports.InvalidRegistryUrlError = exports.InvalidPackagePublishConfigError = exports.InvalidPackageVersionError = exports.InvalidPackageNameError = exports.PackageJsonParseError = exports.PackageTarballReadError = exports.PackageJsonReadError = exports.InvalidPackageError = void 0;
|
|
7
7
|
const node_os_1 = __importDefault(require("node:os"));
|
|
8
8
|
const options_js_1 = require("./options.js");
|
|
9
9
|
class InvalidPackageError extends TypeError {
|
|
@@ -87,6 +87,13 @@ class InvalidTokenError extends TypeError {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
exports.InvalidTokenError = InvalidTokenError;
|
|
90
|
+
class InvalidTagError extends TypeError {
|
|
91
|
+
constructor(value) {
|
|
92
|
+
super(`Tag must be a non-empty string, got "${String(value)}".`);
|
|
93
|
+
this.name = "InvalidTagError";
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.InvalidTagError = InvalidTagError;
|
|
90
97
|
class InvalidAccessError extends TypeError {
|
|
91
98
|
constructor(value) {
|
|
92
99
|
super(`Access must be "${options_js_1.ACCESS_PUBLIC}" or "${options_js_1.ACCESS_RESTRICTED}", got "${String(value)}".`);
|
package/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PublishResult } from "./
|
|
1
|
+
import type { PublishResult } from "./compare-and-publish/index.js";
|
|
2
2
|
import type { PackageManifest } from "./read-manifest.js";
|
|
3
3
|
import type { NormalizedOptions } from "./normalize-options.js";
|
|
4
4
|
/**
|
|
@@ -6,7 +6,7 @@ import type { NormalizedOptions } from "./normalize-options.js";
|
|
|
6
6
|
*
|
|
7
7
|
* @param manifest Package manifest
|
|
8
8
|
* @param options Configuration options.
|
|
9
|
-
* @param
|
|
9
|
+
* @param result Results from running npm publish.
|
|
10
10
|
* @returns Formatted string.
|
|
11
11
|
*/
|
|
12
|
-
export declare function formatPublishResult(manifest: PackageManifest, options: NormalizedOptions,
|
|
12
|
+
export declare function formatPublishResult(manifest: PackageManifest, options: NormalizedOptions, result: PublishResult): string;
|
|
@@ -10,17 +10,17 @@ const node_os_1 = __importDefault(require("node:os"));
|
|
|
10
10
|
*
|
|
11
11
|
* @param manifest Package manifest
|
|
12
12
|
* @param options Configuration options.
|
|
13
|
-
* @param
|
|
13
|
+
* @param result Results from running npm publish.
|
|
14
14
|
* @returns Formatted string.
|
|
15
15
|
*/
|
|
16
|
-
function formatPublishResult(manifest, options,
|
|
17
|
-
if (
|
|
16
|
+
function formatPublishResult(manifest, options, result) {
|
|
17
|
+
if (result.id === undefined) {
|
|
18
18
|
return `🙅♀️ ${manifest.name}@${manifest.version} publish skipped.`;
|
|
19
19
|
}
|
|
20
20
|
return [
|
|
21
|
-
`📦 ${
|
|
21
|
+
`📦 ${result.id}${options.dryRun.value ? " (DRY RUN)" : ""}`,
|
|
22
22
|
"=== Contents ===",
|
|
23
|
-
...
|
|
23
|
+
...result.files.map(({ path, size }) => `${formatSize(size)}\t${path}`),
|
|
24
24
|
].join(node_os_1.default.EOL);
|
|
25
25
|
}
|
|
26
26
|
exports.formatPublishResult = formatPublishResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-publish-result.js","sourceRoot":"","sources":["../src/format-publish-result.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AAMzB;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CACjC,QAAyB,EACzB,OAA0B,EAC1B,
|
|
1
|
+
{"version":3,"file":"format-publish-result.js","sourceRoot":"","sources":["../src/format-publish-result.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AAMzB;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CACjC,QAAyB,EACzB,OAA0B,EAC1B,MAAqB;IAErB,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE;QAC3B,OAAO,SAAS,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,mBAAmB,CAAC;KACtE;IAED,OAAO;QACL,MAAM,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5D,kBAAkB;QAClB,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;KACxE,CAAC,IAAI,CAAC,iBAAE,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAdD,kDAcC;AAED,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE;IAC1C,IAAI,IAAI,GAAG,IAAI,EAAE;QACf,OAAO,GAAG,IAAI,IAAI,CAAC;KACpB;IACD,IAAI,IAAI,GAAG,OAAS,EAAE;QACpB,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;KACzC;IAED,OAAO,GAAG,CAAC,IAAI,GAAG,OAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/C,CAAC,CAAC"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { PackageManifest } from "./read-manifest.js";
|
|
2
2
|
import { type Access, type Strategy, type Options, type Logger } from "./options.js";
|
|
3
|
+
export declare const TAG_LATEST = "latest";
|
|
3
4
|
/** Normalized and sanitized auth, publish, and runtime configurations. */
|
|
4
5
|
export interface NormalizedOptions {
|
|
5
6
|
registry: URL;
|
|
6
7
|
token: string;
|
|
7
8
|
tag: ConfigValue<string>;
|
|
8
9
|
access: ConfigValue<Access | undefined>;
|
|
10
|
+
provenance: ConfigValue<boolean>;
|
|
11
|
+
ignoreScripts: ConfigValue<boolean>;
|
|
9
12
|
dryRun: ConfigValue<boolean>;
|
|
10
13
|
strategy: ConfigValue<Strategy>;
|
|
11
14
|
logger: Logger | undefined;
|
|
@@ -19,8 +22,8 @@ export interface ConfigValue<TValue> {
|
|
|
19
22
|
/**
|
|
20
23
|
* Normalizes and sanitizes options, and fills-in any default values.
|
|
21
24
|
*
|
|
22
|
-
* @param options User-input options.
|
|
23
25
|
* @param manifest Package metadata from package.json.
|
|
26
|
+
* @param options User-input options.
|
|
24
27
|
* @returns Validated auth and publish configuration.
|
|
25
28
|
*/
|
|
26
|
-
export declare function normalizeOptions(
|
|
29
|
+
export declare function normalizeOptions(manifest: PackageManifest, options: Options): NormalizedOptions;
|
package/lib/normalize-options.js
CHANGED
|
@@ -26,30 +26,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.normalizeOptions = void 0;
|
|
29
|
+
exports.normalizeOptions = exports.TAG_LATEST = void 0;
|
|
30
30
|
const node_os_1 = __importDefault(require("node:os"));
|
|
31
31
|
const errors = __importStar(require("./errors.js"));
|
|
32
32
|
const options_js_1 = require("./options.js");
|
|
33
|
-
const
|
|
34
|
-
|
|
33
|
+
const REGISTRY_NPM = "https://registry.npmjs.org/";
|
|
34
|
+
exports.TAG_LATEST = "latest";
|
|
35
35
|
/**
|
|
36
36
|
* Normalizes and sanitizes options, and fills-in any default values.
|
|
37
37
|
*
|
|
38
|
-
* @param options User-input options.
|
|
39
38
|
* @param manifest Package metadata from package.json.
|
|
39
|
+
* @param options User-input options.
|
|
40
40
|
* @returns Validated auth and publish configuration.
|
|
41
41
|
*/
|
|
42
|
-
function normalizeOptions(
|
|
43
|
-
const defaultTag = manifest.publishConfig?.tag ??
|
|
44
|
-
const defaultRegistry = manifest.publishConfig?.registry ??
|
|
42
|
+
function normalizeOptions(manifest, options) {
|
|
43
|
+
const defaultTag = manifest.publishConfig?.tag ?? exports.TAG_LATEST;
|
|
44
|
+
const defaultRegistry = manifest.publishConfig?.registry ?? REGISTRY_NPM;
|
|
45
45
|
const defaultAccess = manifest.publishConfig?.access ??
|
|
46
46
|
(manifest.scope === undefined ? options_js_1.ACCESS_PUBLIC : undefined);
|
|
47
|
+
const defaultProvenance = manifest.publishConfig?.provenance ?? false;
|
|
47
48
|
return {
|
|
48
49
|
token: validateToken(options.token),
|
|
49
50
|
registry: validateRegistry(options.registry ?? defaultRegistry),
|
|
50
51
|
tag: setValue(options.tag, defaultTag, validateTag),
|
|
51
52
|
access: setValue(options.access, defaultAccess, validateAccess),
|
|
52
|
-
|
|
53
|
+
provenance: setValue(options.provenance, defaultProvenance, Boolean),
|
|
54
|
+
ignoreScripts: setValue(options.ignoreScripts, true, Boolean),
|
|
55
|
+
dryRun: setValue(options.dryRun, false, Boolean),
|
|
53
56
|
strategy: setValue(options.strategy, options_js_1.STRATEGY_ALL, validateStrategy),
|
|
54
57
|
logger: options.logger,
|
|
55
58
|
temporaryDirectory: options.temporaryDirectory ?? node_os_1.default.tmpdir(),
|
|
@@ -75,10 +78,10 @@ const validateRegistry = (value) => {
|
|
|
75
78
|
}
|
|
76
79
|
};
|
|
77
80
|
const validateTag = (value) => {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
if (typeof value === "string" && value.length > 0) {
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
throw new errors.InvalidTagError(value);
|
|
82
85
|
};
|
|
83
86
|
const validateAccess = (value) => {
|
|
84
87
|
if (value === undefined ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../src/normalize-options.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAyB;AAEzB,oDAAsC;AAEtC,6CASsB;AAEtB,MAAM,
|
|
1
|
+
{"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../src/normalize-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,32 @@
|
|
|
1
1
|
import type { Logger } from "../options.js";
|
|
2
2
|
import type { NpmCliEnvironment } from "./use-npm-environment.js";
|
|
3
|
-
export interface NpmCliOptions
|
|
4
|
-
environment
|
|
5
|
-
|
|
3
|
+
export interface NpmCliOptions {
|
|
4
|
+
environment: NpmCliEnvironment;
|
|
5
|
+
ignoreScripts: boolean;
|
|
6
6
|
logger?: Logger | undefined;
|
|
7
7
|
}
|
|
8
|
+
export interface NpmCallResult<CommandT extends Command> {
|
|
9
|
+
successData: SuccessData<CommandT> | undefined;
|
|
10
|
+
errorCode: string | undefined;
|
|
11
|
+
error: Error | undefined;
|
|
12
|
+
}
|
|
13
|
+
type SuccessData<T extends Command> = T extends typeof VIEW ? NpmViewData : T extends typeof PUBLISH ? NpmPublishData : unknown;
|
|
14
|
+
export interface NpmViewData {
|
|
15
|
+
"dist-tags": Record<string, string>;
|
|
16
|
+
versions: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface NpmPublishData {
|
|
19
|
+
id: string;
|
|
20
|
+
files: {
|
|
21
|
+
path: string;
|
|
22
|
+
size: number;
|
|
23
|
+
}[];
|
|
24
|
+
}
|
|
25
|
+
export type Command = typeof VIEW | typeof PUBLISH | string;
|
|
26
|
+
export declare const VIEW = "view";
|
|
27
|
+
export declare const PUBLISH = "publish";
|
|
28
|
+
export declare const E404 = "E404";
|
|
29
|
+
export declare const EPUBLISHCONFLICT = "EPUBLISHCONFLICT";
|
|
8
30
|
/**
|
|
9
31
|
* Call the NPM CLI in JSON mode.
|
|
10
32
|
*
|
|
@@ -13,4 +35,5 @@ export interface NpmCliOptions<TReturn> {
|
|
|
13
35
|
* @param options Customize environment variables or add an error handler.
|
|
14
36
|
* @returns The parsed JSON, or stdout if unparsable.
|
|
15
37
|
*/
|
|
16
|
-
export declare function callNpmCli<
|
|
38
|
+
export declare function callNpmCli<CommandT extends Command>(command: CommandT, cliArguments: string[], options: NpmCliOptions): Promise<NpmCallResult<CommandT>>;
|
|
39
|
+
export {};
|
package/lib/npm/call-npm-cli.js
CHANGED
|
@@ -26,13 +26,50 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.callNpmCli = void 0;
|
|
29
|
+
exports.callNpmCli = exports.EPUBLISHCONFLICT = exports.E404 = exports.PUBLISH = exports.VIEW = void 0;
|
|
30
30
|
const node_child_process_1 = __importDefault(require("node:child_process"));
|
|
31
31
|
const node_os_1 = __importDefault(require("node:os"));
|
|
32
32
|
const errors = __importStar(require("../errors.js"));
|
|
33
|
+
exports.VIEW = "view";
|
|
34
|
+
exports.PUBLISH = "publish";
|
|
35
|
+
exports.E404 = "E404";
|
|
36
|
+
exports.EPUBLISHCONFLICT = "EPUBLISHCONFLICT";
|
|
33
37
|
const NPM = node_os_1.default.platform() === "win32" ? "npm.cmd" : "npm";
|
|
34
38
|
const JSON_MATCH_RE = /(\{[\s\S]*\})/mu;
|
|
35
|
-
const
|
|
39
|
+
const baseArguments = (options) => options.ignoreScripts ? ["--ignore-scripts", "--json"] : ["--json"];
|
|
40
|
+
/**
|
|
41
|
+
* Call the NPM CLI in JSON mode.
|
|
42
|
+
*
|
|
43
|
+
* @param command The command of the NPM CLI to call
|
|
44
|
+
* @param cliArguments Any arguments to send to the command
|
|
45
|
+
* @param options Customize environment variables or add an error handler.
|
|
46
|
+
* @returns The parsed JSON, or stdout if unparsable.
|
|
47
|
+
*/
|
|
48
|
+
async function callNpmCli(command, cliArguments, options) {
|
|
49
|
+
const { stdout, stderr, exitCode } = await execNpm([command, ...baseArguments(options), ...cliArguments], options.environment, options.logger);
|
|
50
|
+
let successData;
|
|
51
|
+
let errorCode;
|
|
52
|
+
let error;
|
|
53
|
+
if (exitCode === 0) {
|
|
54
|
+
successData = parseJson(stdout);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
const errorPayload = parseJson(stdout, stderr);
|
|
58
|
+
errorCode = errorPayload?.error?.code?.toUpperCase();
|
|
59
|
+
error = new errors.NpmCallError(command, exitCode, stderr);
|
|
60
|
+
}
|
|
61
|
+
return { successData, errorCode, error };
|
|
62
|
+
}
|
|
63
|
+
exports.callNpmCli = callNpmCli;
|
|
64
|
+
/**
|
|
65
|
+
* Execute the npm CLI.
|
|
66
|
+
*
|
|
67
|
+
* @param commandArguments Npm subcommand and arguments.
|
|
68
|
+
* @param environment Environment variables.
|
|
69
|
+
* @param logger Optional logger.
|
|
70
|
+
* @returns Stdout, stderr, and the exit code.
|
|
71
|
+
*/
|
|
72
|
+
async function execNpm(commandArguments, environment, logger) {
|
|
36
73
|
logger?.debug?.(`Running command: ${NPM} ${commandArguments.join(" ")}`);
|
|
37
74
|
return new Promise((resolve) => {
|
|
38
75
|
let stdout = "";
|
|
@@ -50,8 +87,17 @@ const execNpm = (commandArguments, environment = {}, logger) => {
|
|
|
50
87
|
});
|
|
51
88
|
});
|
|
52
89
|
});
|
|
53
|
-
}
|
|
54
|
-
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Parse CLI outputs for JSON data.
|
|
93
|
+
*
|
|
94
|
+
* Certain versions of the npm CLI may intersperse JSON with human-readable
|
|
95
|
+
* output, which this function accounts for.
|
|
96
|
+
*
|
|
97
|
+
* @param values CLI outputs to check
|
|
98
|
+
* @returns Parsed JSON, if able to parse.
|
|
99
|
+
*/
|
|
100
|
+
function parseJson(...values) {
|
|
55
101
|
for (const value of values) {
|
|
56
102
|
const jsonValue = JSON_MATCH_RE.exec(value)?.[1];
|
|
57
103
|
if (jsonValue) {
|
|
@@ -64,28 +110,5 @@ const parseJson = (...values) => {
|
|
|
64
110
|
}
|
|
65
111
|
}
|
|
66
112
|
return undefined;
|
|
67
|
-
};
|
|
68
|
-
/**
|
|
69
|
-
* Call the NPM CLI in JSON mode.
|
|
70
|
-
*
|
|
71
|
-
* @param command The command of the NPM CLI to call
|
|
72
|
-
* @param cliArguments Any arguments to send to the command
|
|
73
|
-
* @param options Customize environment variables or add an error handler.
|
|
74
|
-
* @returns The parsed JSON, or stdout if unparsable.
|
|
75
|
-
*/
|
|
76
|
-
async function callNpmCli(command, cliArguments, options = {}) {
|
|
77
|
-
const { stdout, stderr, exitCode } = await execNpm([command, "--ignore-scripts", "--json", ...cliArguments], options.environment, options.logger);
|
|
78
|
-
if (exitCode !== 0) {
|
|
79
|
-
const errorPayload = parseJson(stdout, stderr);
|
|
80
|
-
const errorCode = errorPayload?.error?.code?.toLowerCase();
|
|
81
|
-
if (typeof errorCode === "string" &&
|
|
82
|
-
options.ifError &&
|
|
83
|
-
errorCode in options.ifError) {
|
|
84
|
-
return options.ifError[errorCode];
|
|
85
|
-
}
|
|
86
|
-
throw new errors.NpmCallError(command, exitCode, stderr);
|
|
87
|
-
}
|
|
88
|
-
return parseJson(stdout) ?? stdout;
|
|
89
113
|
}
|
|
90
|
-
exports.callNpmCli = callNpmCli;
|
|
91
114
|
//# sourceMappingURL=call-npm-cli.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-npm-cli.js","sourceRoot":"","sources":["../../src/npm/call-npm-cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4EAA8C;AAC9C,sDAAyB;AAEzB,qDAAuC;
|
|
1
|
+
{"version":3,"file":"call-npm-cli.js","sourceRoot":"","sources":["../../src/npm/call-npm-cli.ts"],"names":[],"mappings":"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"}
|
package/lib/npm/index.d.ts
CHANGED
|
@@ -1,29 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
"dist-tags": Record<string, string>;
|
|
4
|
-
versions: string[];
|
|
5
|
-
}
|
|
6
|
-
export interface PublishFile {
|
|
7
|
-
path: string;
|
|
8
|
-
size: number;
|
|
9
|
-
}
|
|
10
|
-
export interface PublishResult {
|
|
11
|
-
id: string;
|
|
12
|
-
files: PublishFile[];
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Get a package's published versions.
|
|
16
|
-
*
|
|
17
|
-
* @param packageName The name of the package to get published versions for.
|
|
18
|
-
* @param options Configuration options.
|
|
19
|
-
* @returns All published versions and tags.
|
|
20
|
-
*/
|
|
21
|
-
export declare function getVersions(packageName: string, options: NormalizedOptions): Promise<PublishedVersions>;
|
|
22
|
-
/**
|
|
23
|
-
* Publish a package.
|
|
24
|
-
*
|
|
25
|
-
* @param packageSpec Package specification to pass to npm.
|
|
26
|
-
* @param options Configuration options.
|
|
27
|
-
* @returns Release metadata.
|
|
28
|
-
*/
|
|
29
|
-
export declare function publish(packageSpec: string, options: NormalizedOptions): Promise<PublishResult>;
|
|
1
|
+
export * from "./call-npm-cli.js";
|
|
2
|
+
export * from "./use-npm-environment.js";
|
package/lib/npm/index.js
CHANGED
|
@@ -1,41 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const call_npm_cli_js_1 = require("./call-npm-cli.js");
|
|
6
|
-
const get_publish_arguments_js_1 = require("./get-publish-arguments.js");
|
|
7
|
-
/**
|
|
8
|
-
* Get a package's published versions.
|
|
9
|
-
*
|
|
10
|
-
* @param packageName The name of the package to get published versions for.
|
|
11
|
-
* @param options Configuration options.
|
|
12
|
-
* @returns All published versions and tags.
|
|
13
|
-
*/
|
|
14
|
-
async function getVersions(packageName, options) {
|
|
15
|
-
return (0, use_npm_environment_js_1.useNpmEnvironment)(options, (environment) => {
|
|
16
|
-
return (0, call_npm_cli_js_1.callNpmCli)("view", [packageName, "dist-tags", "versions"], {
|
|
17
|
-
logger: options.logger,
|
|
18
|
-
environment,
|
|
19
|
-
ifError: { e404: { "dist-tags": {}, versions: [] } },
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
exports.getVersions = getVersions;
|
|
24
|
-
/**
|
|
25
|
-
* Publish a package.
|
|
26
|
-
*
|
|
27
|
-
* @param packageSpec Package specification to pass to npm.
|
|
28
|
-
* @param options Configuration options.
|
|
29
|
-
* @returns Release metadata.
|
|
30
|
-
*/
|
|
31
|
-
async function publish(packageSpec, options) {
|
|
32
|
-
const publishArguments = (0, get_publish_arguments_js_1.getPublishArguments)(packageSpec, options);
|
|
33
|
-
return (0, use_npm_environment_js_1.useNpmEnvironment)(options, (environment) => {
|
|
34
|
-
return (0, call_npm_cli_js_1.callNpmCli)("publish", publishArguments, {
|
|
35
|
-
logger: options.logger,
|
|
36
|
-
environment,
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
exports.publish = publish;
|
|
17
|
+
__exportStar(require("./call-npm-cli.js"), exports);
|
|
18
|
+
__exportStar(require("./use-npm-environment.js"), exports);
|
|
41
19
|
//# sourceMappingURL=index.js.map
|
package/lib/npm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/npm/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/npm/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,2DAAyC"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
import type { PackageManifest } from "../read-manifest.js";
|
|
1
2
|
import type { NormalizedOptions } from "../normalize-options.js";
|
|
2
3
|
export type NpmCliEnvironment = Record<string, string>;
|
|
3
|
-
export type NpmCliTask<TReturn> = (environment: NpmCliEnvironment) => Promise<TReturn>;
|
|
4
|
+
export type NpmCliTask<TReturn> = (manifest: PackageManifest, options: NormalizedOptions, environment: NpmCliEnvironment) => Promise<TReturn>;
|
|
4
5
|
/**
|
|
5
6
|
* Create a temporary .npmrc file with the given auth token, and call a task
|
|
6
7
|
* with env vars set to use that .npmrc.
|
|
7
8
|
*
|
|
9
|
+
* @param manifest Pacakge metadata.
|
|
8
10
|
* @param options Configuration options.
|
|
9
11
|
* @param task A function called with the configured environment. After the
|
|
10
12
|
* function resolves, the temporary .npmrc file will be removed.
|
|
11
13
|
* @returns The resolved value of `task`
|
|
12
14
|
*/
|
|
13
|
-
export declare function useNpmEnvironment<TReturn>(options: NormalizedOptions, task: NpmCliTask<TReturn>): Promise<TReturn>;
|
|
15
|
+
export declare function useNpmEnvironment<TReturn>(manifest: PackageManifest, options: NormalizedOptions, task: NpmCliTask<TReturn>): Promise<TReturn>;
|
|
@@ -11,15 +11,20 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
11
11
|
* Create a temporary .npmrc file with the given auth token, and call a task
|
|
12
12
|
* with env vars set to use that .npmrc.
|
|
13
13
|
*
|
|
14
|
+
* @param manifest Pacakge metadata.
|
|
14
15
|
* @param options Configuration options.
|
|
15
16
|
* @param task A function called with the configured environment. After the
|
|
16
17
|
* function resolves, the temporary .npmrc file will be removed.
|
|
17
18
|
* @returns The resolved value of `task`
|
|
18
19
|
*/
|
|
19
|
-
async function useNpmEnvironment(options, task) {
|
|
20
|
+
async function useNpmEnvironment(manifest, options, task) {
|
|
20
21
|
const { registry, token, logger, temporaryDirectory } = options;
|
|
21
22
|
const npmrcDirectory = await promises_1.default.mkdtemp(node_path_1.default.join(temporaryDirectory, "npm-publish-"));
|
|
22
23
|
const npmrc = node_path_1.default.join(npmrcDirectory, ".npmrc");
|
|
24
|
+
const environment = {
|
|
25
|
+
NODE_AUTH_TOKEN: token,
|
|
26
|
+
npm_config_userconfig: npmrc,
|
|
27
|
+
};
|
|
23
28
|
const config = [
|
|
24
29
|
"; created by jsdevtools/npm-publish",
|
|
25
30
|
`//${registry.host}/:_authToken=\${NODE_AUTH_TOKEN}`,
|
|
@@ -29,10 +34,7 @@ async function useNpmEnvironment(options, task) {
|
|
|
29
34
|
await promises_1.default.writeFile(npmrc, config, "utf8");
|
|
30
35
|
logger?.debug?.(`Temporary .npmrc created at ${npmrc}\n${config}`);
|
|
31
36
|
try {
|
|
32
|
-
return await task(
|
|
33
|
-
NODE_AUTH_TOKEN: token,
|
|
34
|
-
npm_config_userconfig: npmrc,
|
|
35
|
-
});
|
|
37
|
+
return await task(manifest, options, environment);
|
|
36
38
|
}
|
|
37
39
|
finally {
|
|
38
40
|
await promises_1.default.rm(npmrcDirectory, { force: true, recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-npm-environment.js","sourceRoot":"","sources":["../../src/npm/use-npm-environment.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAkC;AAClC,sDAAyB;AACzB,0DAA6B;
|
|
1
|
+
{"version":3,"file":"use-npm-environment.js","sourceRoot":"","sources":["../../src/npm/use-npm-environment.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAkC;AAClC,sDAAyB;AACzB,0DAA6B;AAa7B;;;;;;;;;GASG;AACI,KAAK,UAAU,iBAAiB,CACrC,QAAyB,EACzB,OAA0B,EAC1B,IAAyB;IAEzB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;IAChE,MAAM,cAAc,GAAG,MAAM,kBAAE,CAAC,OAAO,CACrC,mBAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAC9C,CAAC;IACF,MAAM,KAAK,GAAG,mBAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG;QAClB,eAAe,EAAE,KAAK;QACtB,qBAAqB,EAAE,KAAK;KAC7B,CAAC;IAEF,MAAM,MAAM,GAAG;QACb,qCAAqC;QACrC,KAAK,QAAQ,CAAC,IAAI,kCAAkC;QACpD,YAAY,QAAQ,CAAC,IAAI,EAAE;QAC3B,EAAE;KACH,CAAC,IAAI,CAAC,iBAAE,CAAC,GAAG,CAAC,CAAC;IAEf,MAAM,kBAAE,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1C,MAAM,EAAE,KAAK,EAAE,CAAC,+BAA+B,KAAK,KAAK,MAAM,EAAE,CAAC,CAAC;IAEnE,IAAI;QACF,OAAO,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;KACnD;YAAS;QACR,MAAM,kBAAE,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;KAC/D;AACH,CAAC;AA/BD,8CA+BC"}
|
package/lib/npm-publish.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.npmPublish = void 0;
|
|
|
4
4
|
const read_manifest_js_1 = require("./read-manifest.js");
|
|
5
5
|
const normalize_options_js_1 = require("./normalize-options.js");
|
|
6
6
|
const index_js_1 = require("./npm/index.js");
|
|
7
|
-
const
|
|
7
|
+
const index_js_2 = require("./compare-and-publish/index.js");
|
|
8
8
|
const format_publish_result_js_1 = require("./format-publish-result.js");
|
|
9
9
|
/**
|
|
10
10
|
* Publishes a package to NPM, if its version has changed.
|
|
@@ -13,21 +13,16 @@ const format_publish_result_js_1 = require("./format-publish-result.js");
|
|
|
13
13
|
* @returns Release metadata.
|
|
14
14
|
*/
|
|
15
15
|
async function npmPublish(options) {
|
|
16
|
-
const
|
|
17
|
-
const normalizedOptions = (0, normalize_options_js_1.normalizeOptions)(
|
|
18
|
-
const
|
|
19
|
-
const versionComparison = (0, compare_versions_js_1.compareVersions)(manifest.version, publishedVersions, normalizedOptions);
|
|
20
|
-
let publishResult;
|
|
21
|
-
if (versionComparison.type !== undefined) {
|
|
22
|
-
publishResult = await (0, index_js_1.publish)(packageSpec, normalizedOptions);
|
|
23
|
-
}
|
|
16
|
+
const manifest = await (0, read_manifest_js_1.readManifest)(options.package);
|
|
17
|
+
const normalizedOptions = (0, normalize_options_js_1.normalizeOptions)(manifest, options);
|
|
18
|
+
const publishResult = await (0, index_js_1.useNpmEnvironment)(manifest, normalizedOptions, index_js_2.compareAndPublish);
|
|
24
19
|
normalizedOptions.logger?.info?.((0, format_publish_result_js_1.formatPublishResult)(manifest, normalizedOptions, publishResult));
|
|
25
20
|
return {
|
|
26
|
-
id: publishResult
|
|
21
|
+
id: publishResult.id,
|
|
22
|
+
type: publishResult.type,
|
|
23
|
+
oldVersion: publishResult.oldVersion,
|
|
27
24
|
name: manifest.name,
|
|
28
25
|
version: manifest.version,
|
|
29
|
-
type: versionComparison.type,
|
|
30
|
-
oldVersion: versionComparison.oldVersion,
|
|
31
26
|
registry: normalizedOptions.registry,
|
|
32
27
|
tag: normalizedOptions.tag.value,
|
|
33
28
|
access: normalizedOptions.access.value,
|
package/lib/npm-publish.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-publish.js","sourceRoot":"","sources":["../src/npm-publish.ts"],"names":[],"mappings":";;;AAAA,yDAAkD;AAClD,iEAA0D;AAC1D,
|
|
1
|
+
{"version":3,"file":"npm-publish.js","sourceRoot":"","sources":["../src/npm-publish.ts"],"names":[],"mappings":";;;AAAA,yDAAkD;AAClD,iEAA0D;AAC1D,6CAAmD;AACnD,6DAAmE;AACnE,yEAAiE;AAIjE;;;;;GAKG;AACI,KAAK,UAAU,UAAU,CAAC,OAAgB;IAC/C,MAAM,QAAQ,GAAG,MAAM,IAAA,+BAAY,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,iBAAiB,GAAG,IAAA,uCAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,MAAM,IAAA,4BAAiB,EAC3C,QAAQ,EACR,iBAAiB,EACjB,4BAAiB,CAClB,CAAC;IAEF,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,CAC9B,IAAA,8CAAmB,EAAC,QAAQ,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAChE,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,aAAa,CAAC,EAAE;QACpB,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;QACpC,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,KAAK;QAChC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK;QACtC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,KAAK;QAC1C,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK;KACvC,CAAC;AACJ,CAAC;AAzBD,gCAyBC"}
|
package/lib/options.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ export interface Options {
|
|
|
34
34
|
*
|
|
35
35
|
* Defaults to "https://registry.npmjs.org/".
|
|
36
36
|
*
|
|
37
|
-
* Can be
|
|
37
|
+
* Can be set by the package.json's `publishConfig` field.
|
|
38
38
|
*/
|
|
39
39
|
registry?: string | URL | undefined;
|
|
40
40
|
/**
|
|
@@ -42,7 +42,7 @@ export interface Options {
|
|
|
42
42
|
*
|
|
43
43
|
* Defaults to "latest".
|
|
44
44
|
*
|
|
45
|
-
* Can be
|
|
45
|
+
* Can be set by the package.json's `publishConfig` field.
|
|
46
46
|
*/
|
|
47
47
|
tag?: string | undefined;
|
|
48
48
|
/**
|
|
@@ -53,21 +53,40 @@ export interface Options {
|
|
|
53
53
|
* packages.
|
|
54
54
|
*
|
|
55
55
|
* Defaults to "restricted" for scoped packages, unless that package has been
|
|
56
|
-
* previously published as `public
|
|
56
|
+
* previously published as `public`.
|
|
57
57
|
*
|
|
58
|
-
* Can be
|
|
58
|
+
* Can be set by the package.json's `publishConfig` field.
|
|
59
59
|
*/
|
|
60
60
|
access?: Access | undefined;
|
|
61
61
|
/**
|
|
62
|
-
*
|
|
62
|
+
* Generate provenance statements.
|
|
63
|
+
*
|
|
64
|
+
* Publish must be run from a supported CI provider to succeed. When run from
|
|
65
|
+
* GitHub Actions, requires `id-token: write` permission.
|
|
63
66
|
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
+
* Defaults to `false`.
|
|
68
|
+
*
|
|
69
|
+
* Can be set by the package.json's `publishConfig` field.
|
|
70
|
+
*/
|
|
71
|
+
provenance?: boolean | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Version check strategy.
|
|
67
74
|
*
|
|
68
|
-
*
|
|
75
|
+
* - `always` (default): the package will be published if its version is simply
|
|
76
|
+
* not yet published.
|
|
77
|
+
* - `upgrade`: the package will only be published if its version is higher than
|
|
78
|
+
* the existing version on the configured tag.
|
|
69
79
|
*/
|
|
70
80
|
strategy?: Strategy | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* Ignore lifecycle scripts.
|
|
83
|
+
*
|
|
84
|
+
* If `true` (default), `--ignore-scripts` will be passed to `npm`. If you
|
|
85
|
+
* rely on publish lifecycle scripts - i.e. `prepublishOnly`, `prepack`,
|
|
86
|
+
* `prepare`, `postpack`, `publish`, `postpublish` - you should set this to
|
|
87
|
+
* `false` or rework your build and publish workflow.
|
|
88
|
+
*/
|
|
89
|
+
ignoreScripts?: boolean | undefined;
|
|
71
90
|
/**
|
|
72
91
|
* Pretend to publish, but don't actually upload to the registry.
|
|
73
92
|
*
|