@jsdevtools/npm-publish 3.1.1 → 4.0.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 +39 -25
- package/bin/npm-publish.js +17 -7
- package/lib/action/core.d.ts +1 -1
- package/lib/action/core.js +16 -25
- package/lib/action/core.js.map +1 -1
- package/lib/action/main.js +5 -32
- package/lib/action/main.js.map +1 -1
- package/lib/cli/index.js +7 -11
- package/lib/cli/index.js.map +1 -1
- package/lib/cli/parse-cli-arguments.js +3 -10
- package/lib/cli/parse-cli-arguments.js.map +1 -1
- package/lib/compare-and-publish/compare-and-publish.d.ts +1 -1
- package/lib/compare-and-publish/compare-and-publish.js +16 -18
- package/lib/compare-and-publish/compare-and-publish.js.map +1 -1
- package/lib/compare-and-publish/compare-versions.d.ts +1 -1
- package/lib/compare-and-publish/compare-versions.js +12 -19
- package/lib/compare-and-publish/compare-versions.js.map +1 -1
- package/lib/compare-and-publish/get-arguments.js +6 -8
- package/lib/compare-and-publish/get-arguments.js.map +1 -1
- package/lib/compare-and-publish/index.js +1 -17
- package/lib/compare-and-publish/index.js.map +1 -1
- package/lib/errors.js +22 -41
- package/lib/errors.js.map +1 -1
- package/lib/format-publish-result.d.ts +1 -1
- package/lib/format-publish-result.js +3 -10
- package/lib/format-publish-result.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +4 -22
- package/lib/index.js.map +1 -1
- package/lib/normalize-options.d.ts +1 -1
- package/lib/normalize-options.js +18 -44
- package/lib/normalize-options.js.map +1 -1
- package/lib/npm/call-npm-cli.d.ts +1 -0
- package/lib/npm/call-npm-cli.js +15 -42
- package/lib/npm/call-npm-cli.js.map +1 -1
- package/lib/npm/index.js +2 -18
- package/lib/npm/index.js.map +1 -1
- package/lib/npm/use-npm-environment.d.ts +1 -1
- package/lib/npm/use-npm-environment.js +9 -16
- package/lib/npm/use-npm-environment.js.map +1 -1
- package/lib/npm-publish.js +10 -14
- package/lib/npm-publish.js.map +1 -1
- package/lib/options.js +4 -7
- package/lib/options.js.map +1 -1
- package/lib/read-manifest.js +27 -53
- package/lib/read-manifest.js.map +1 -1
- package/lib/results.d.ts +1 -1
- package/lib/results.js +2 -5
- package/lib/results.js.map +1 -1
- package/package.json +39 -42
- package/src/action/core.ts +7 -8
- package/src/action/main.ts +4 -4
- package/src/cli/index.ts +1 -1
- package/src/cli/parse-cli-arguments.ts +1 -0
- package/src/compare-and-publish/compare-and-publish.ts +12 -7
- package/src/compare-and-publish/compare-versions.ts +2 -2
- package/src/compare-and-publish/get-arguments.ts +4 -1
- package/src/errors.ts +1 -1
- package/src/format-publish-result.ts +1 -1
- package/src/index.ts +1 -1
- package/src/normalize-options.ts +13 -8
- package/src/npm/call-npm-cli.ts +14 -12
- package/src/npm/use-npm-environment.ts +1 -1
- package/src/npm-publish.ts +3 -3
- package/src/read-manifest.ts +16 -9
- package/src/results.ts +2 -1
- package/src/tar.d.ts +0 -3
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.useNpmEnvironment = void 0;
|
|
7
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
|
-
const node_os_1 = __importDefault(require("node:os"));
|
|
9
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
10
4
|
/**
|
|
11
5
|
* Create a temporary .npmrc file with the given auth token, and call a task
|
|
12
6
|
* with env vars set to use that .npmrc.
|
|
@@ -17,7 +11,7 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
17
11
|
* function resolves, the temporary .npmrc file will be removed.
|
|
18
12
|
* @returns The resolved value of `task`
|
|
19
13
|
*/
|
|
20
|
-
async function useNpmEnvironment(manifest, options, task) {
|
|
14
|
+
export async function useNpmEnvironment(manifest, options, task) {
|
|
21
15
|
const { registry, token, logger, temporaryDirectory } = options;
|
|
22
16
|
const { host, origin, pathname } = registry;
|
|
23
17
|
const pathnameWithSlash = pathname.endsWith("/") ? pathname : `${pathname}/`;
|
|
@@ -26,18 +20,17 @@ async function useNpmEnvironment(manifest, options, task) {
|
|
|
26
20
|
`//${host}${pathnameWithSlash}:_authToken=\${NODE_AUTH_TOKEN}`,
|
|
27
21
|
`registry=${origin}${pathnameWithSlash}`,
|
|
28
22
|
"",
|
|
29
|
-
].join(
|
|
30
|
-
const npmrcDirectory = await
|
|
31
|
-
const npmrc =
|
|
23
|
+
].join(os.EOL);
|
|
24
|
+
const npmrcDirectory = await fs.mkdtemp(path.join(temporaryDirectory, "npm-publish-"));
|
|
25
|
+
const npmrc = path.join(npmrcDirectory, ".npmrc");
|
|
32
26
|
const environment = { NODE_AUTH_TOKEN: token, npm_config_userconfig: npmrc };
|
|
33
|
-
await
|
|
27
|
+
await fs.writeFile(npmrc, config, "utf8");
|
|
34
28
|
logger?.debug?.(`Temporary .npmrc created at ${npmrc}\n${config}`);
|
|
35
29
|
try {
|
|
36
30
|
return await task(manifest, options, environment);
|
|
37
31
|
}
|
|
38
32
|
finally {
|
|
39
|
-
await
|
|
33
|
+
await fs.rm(npmrcDirectory, { force: true, recursive: true });
|
|
40
34
|
}
|
|
41
35
|
}
|
|
42
|
-
exports.useNpmEnvironment = useNpmEnvironment;
|
|
43
36
|
//# sourceMappingURL=use-npm-environment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-npm-environment.js","sourceRoot":"","sources":["../../src/npm/use-npm-environment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-npm-environment.js","sourceRoot":"","sources":["../../src/npm/use-npm-environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAa7B;;;;;;;;;GASG;AACH,MAAM,CAAC,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,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC5C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC;IAC7E,MAAM,MAAM,GAAG;QACb,qCAAqC;QACrC,KAAK,IAAI,GAAG,iBAAiB,iCAAiC;QAC9D,YAAY,MAAM,GAAG,iBAAiB,EAAE;QACxC,EAAE;KACH,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEf,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,OAAO,CACrC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAC9C,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;IAE7E,MAAM,EAAE,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,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
|
package/lib/npm-publish.js
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const index_js_1 = require("./npm/index.js");
|
|
7
|
-
const index_js_2 = require("./compare-and-publish/index.js");
|
|
8
|
-
const format_publish_result_js_1 = require("./format-publish-result.js");
|
|
1
|
+
import { compareAndPublish } from "./compare-and-publish/index.js";
|
|
2
|
+
import { formatPublishResult } from "./format-publish-result.js";
|
|
3
|
+
import { normalizeOptions } from "./normalize-options.js";
|
|
4
|
+
import { useNpmEnvironment } from "./npm/index.js";
|
|
5
|
+
import { readManifest } from "./read-manifest.js";
|
|
9
6
|
/**
|
|
10
7
|
* Publishes a package to NPM, if its version has changed.
|
|
11
8
|
*
|
|
12
9
|
* @param options Publish options.
|
|
13
10
|
* @returns Release metadata.
|
|
14
11
|
*/
|
|
15
|
-
async function npmPublish(options) {
|
|
16
|
-
const manifest = await
|
|
17
|
-
const normalizedOptions =
|
|
18
|
-
const publishResult = await
|
|
19
|
-
normalizedOptions.logger?.info?.(
|
|
12
|
+
export async function npmPublish(options) {
|
|
13
|
+
const manifest = await readManifest(options.package);
|
|
14
|
+
const normalizedOptions = normalizeOptions(manifest, options);
|
|
15
|
+
const publishResult = await useNpmEnvironment(manifest, normalizedOptions, compareAndPublish);
|
|
16
|
+
normalizedOptions.logger?.info?.(formatPublishResult(manifest, normalizedOptions, publishResult));
|
|
20
17
|
return {
|
|
21
18
|
id: publishResult.id,
|
|
22
19
|
type: publishResult.type,
|
|
@@ -30,5 +27,4 @@ async function npmPublish(options) {
|
|
|
30
27
|
dryRun: normalizedOptions.dryRun.value,
|
|
31
28
|
};
|
|
32
29
|
}
|
|
33
|
-
exports.npmPublish = npmPublish;
|
|
34
30
|
//# sourceMappingURL=npm-publish.js.map
|
package/lib/npm-publish.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-publish.js","sourceRoot":"","sources":["../src/npm-publish.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"npm-publish.js","sourceRoot":"","sources":["../src/npm-publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAgB;IAC/C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAC3C,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,CAClB,CAAC;IAEF,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,CAC9B,mBAAmB,CAAC,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"}
|
package/lib/options.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.ACCESS_RESTRICTED = "restricted";
|
|
6
|
-
exports.STRATEGY_UPGRADE = "upgrade";
|
|
7
|
-
exports.STRATEGY_ALL = "all";
|
|
1
|
+
export const ACCESS_PUBLIC = "public";
|
|
2
|
+
export const ACCESS_RESTRICTED = "restricted";
|
|
3
|
+
export const STRATEGY_UPGRADE = "upgrade";
|
|
4
|
+
export const STRATEGY_ALL = "all";
|
|
8
5
|
//# sourceMappingURL=options.js.map
|
package/lib/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAC;AACtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAW9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAC1C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC"}
|
package/lib/read-manifest.js
CHANGED
|
@@ -1,56 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.readManifest = void 0;
|
|
30
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
31
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
32
|
-
const valid_js_1 = __importDefault(require("semver/functions/valid.js"));
|
|
33
|
-
const list_js_1 = __importDefault(require("tar/lib/list.js"));
|
|
34
|
-
const errors = __importStar(require("./errors.js"));
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import semverValid from "semver/functions/valid.js";
|
|
4
|
+
import { list as tarList } from "tar/list";
|
|
5
|
+
import validatePackageName from "validate-npm-package-name";
|
|
6
|
+
import * as errors from "./errors.js";
|
|
35
7
|
const SCOPE_RE = /^(@.+)\/.+$/u;
|
|
36
8
|
const MANIFEST_BASENAME = "package.json";
|
|
37
9
|
const TARBALL_EXTNAME = ".tgz";
|
|
38
10
|
const isManifest = (file) => {
|
|
39
|
-
return typeof file === "string" &&
|
|
11
|
+
return typeof file === "string" && path.basename(file) === MANIFEST_BASENAME;
|
|
40
12
|
};
|
|
41
13
|
const isDirectory = (file) => {
|
|
42
|
-
return typeof file === "string" &&
|
|
14
|
+
return typeof file === "string" && path.extname(file) === "";
|
|
43
15
|
};
|
|
44
16
|
const isTarball = (file) => {
|
|
45
|
-
return typeof file === "string" &&
|
|
17
|
+
return typeof file === "string" && path.extname(file) === TARBALL_EXTNAME;
|
|
18
|
+
};
|
|
19
|
+
const normalizeVersion = (version) => {
|
|
20
|
+
return semverValid(version) ?? undefined;
|
|
46
21
|
};
|
|
47
|
-
const
|
|
48
|
-
return (
|
|
22
|
+
const validateName = (name) => {
|
|
23
|
+
return validatePackageName(name).validForNewPackages;
|
|
49
24
|
};
|
|
50
25
|
const readPackageJson = async (...pathSegments) => {
|
|
51
|
-
const file =
|
|
26
|
+
const file = path.resolve(...pathSegments);
|
|
52
27
|
try {
|
|
53
|
-
return await
|
|
28
|
+
return await fs.readFile(file, "utf8");
|
|
54
29
|
}
|
|
55
30
|
catch (error) {
|
|
56
31
|
throw new errors.PackageJsonReadError(file, error);
|
|
@@ -58,13 +33,13 @@ const readPackageJson = async (...pathSegments) => {
|
|
|
58
33
|
};
|
|
59
34
|
const readTarballPackageJson = async (file) => {
|
|
60
35
|
const data = [];
|
|
61
|
-
const
|
|
36
|
+
const onReadEntry = (entry) => {
|
|
62
37
|
if (entry.path === "package/package.json") {
|
|
63
38
|
entry.on("data", (chunk) => data.push(chunk));
|
|
64
39
|
}
|
|
65
40
|
};
|
|
66
41
|
try {
|
|
67
|
-
await (
|
|
42
|
+
await tarList({ file, onReadEntry });
|
|
68
43
|
if (data.length === 0) {
|
|
69
44
|
throw new Error("package.json not found inside archive");
|
|
70
45
|
}
|
|
@@ -80,7 +55,7 @@ const readTarballPackageJson = async (file) => {
|
|
|
80
55
|
* @param packagePath The path to the package being published.
|
|
81
56
|
* @returns The parsed package metadata.
|
|
82
57
|
*/
|
|
83
|
-
async function readManifest(packagePath) {
|
|
58
|
+
export async function readManifest(packagePath) {
|
|
84
59
|
let packageSpec;
|
|
85
60
|
let manifestContents;
|
|
86
61
|
if (!packagePath) {
|
|
@@ -88,15 +63,15 @@ async function readManifest(packagePath) {
|
|
|
88
63
|
manifestContents = await readPackageJson(MANIFEST_BASENAME);
|
|
89
64
|
}
|
|
90
65
|
else if (isManifest(packagePath)) {
|
|
91
|
-
packageSpec =
|
|
66
|
+
packageSpec = path.resolve(path.dirname(packagePath));
|
|
92
67
|
manifestContents = await readPackageJson(packagePath);
|
|
93
68
|
}
|
|
94
69
|
else if (isDirectory(packagePath)) {
|
|
95
|
-
packageSpec =
|
|
70
|
+
packageSpec = path.resolve(packagePath);
|
|
96
71
|
manifestContents = await readPackageJson(packagePath, MANIFEST_BASENAME);
|
|
97
72
|
}
|
|
98
73
|
else if (isTarball(packagePath)) {
|
|
99
|
-
packageSpec =
|
|
74
|
+
packageSpec = path.resolve(packagePath);
|
|
100
75
|
manifestContents = await readTarballPackageJson(packageSpec);
|
|
101
76
|
}
|
|
102
77
|
else {
|
|
@@ -108,18 +83,18 @@ async function readManifest(packagePath) {
|
|
|
108
83
|
let publishConfig;
|
|
109
84
|
try {
|
|
110
85
|
manifestJson = JSON.parse(manifestContents);
|
|
111
|
-
name = manifestJson
|
|
112
|
-
version =
|
|
113
|
-
publishConfig = manifestJson
|
|
86
|
+
name = manifestJson.name;
|
|
87
|
+
version = normalizeVersion(manifestJson.version);
|
|
88
|
+
publishConfig = manifestJson.publishConfig ?? {};
|
|
114
89
|
}
|
|
115
90
|
catch (error) {
|
|
116
91
|
throw new errors.PackageJsonParseError(packageSpec, error);
|
|
117
92
|
}
|
|
118
|
-
if (
|
|
93
|
+
if (!validateName(name)) {
|
|
119
94
|
throw new errors.InvalidPackageNameError(name);
|
|
120
95
|
}
|
|
121
96
|
if (typeof version !== "string") {
|
|
122
|
-
throw new errors.InvalidPackageVersionError(manifestJson
|
|
97
|
+
throw new errors.InvalidPackageVersionError(manifestJson.version);
|
|
123
98
|
}
|
|
124
99
|
if (typeof publishConfig !== "object" ||
|
|
125
100
|
Array.isArray(publishConfig) ||
|
|
@@ -134,5 +109,4 @@ async function readManifest(packagePath) {
|
|
|
134
109
|
scope: SCOPE_RE.exec(name)?.[1],
|
|
135
110
|
};
|
|
136
111
|
}
|
|
137
|
-
exports.readManifest = readManifest;
|
|
138
112
|
//# sourceMappingURL=read-manifest.js.map
|
package/lib/read-manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-manifest.js","sourceRoot":"","sources":["../src/read-manifest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read-manifest.js","sourceRoot":"","sources":["../src/read-manifest.ts"],"names":[],"mappings":"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"}
|
package/lib/results.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Access, Strategy } from "./options.js";
|
|
2
1
|
import type { ReleaseType as SemverReleaseType } from "semver";
|
|
2
|
+
import type { Access, Strategy } from "./options.js";
|
|
3
3
|
/** Release type */
|
|
4
4
|
export type ReleaseType = SemverReleaseType | typeof INITIAL | typeof DIFFERENT;
|
|
5
5
|
export declare const INITIAL = "initial";
|
package/lib/results.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.DIFFERENT = exports.INITIAL = void 0;
|
|
4
|
-
exports.INITIAL = "initial";
|
|
5
|
-
exports.DIFFERENT = "different";
|
|
1
|
+
export const INITIAL = "initial";
|
|
2
|
+
export const DIFFERENT = "different";
|
|
6
3
|
//# sourceMappingURL=results.js.map
|
package/lib/results.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"results.js","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"results.js","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AACjC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsdevtools/npm-publish",
|
|
3
3
|
"description": "Fast, easy publishing to NPM",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "4.0.0",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"github-action",
|
|
7
7
|
"npm",
|
|
@@ -19,9 +19,11 @@
|
|
|
19
19
|
"type": "git",
|
|
20
20
|
"url": "https://github.com/JS-DevTools/npm-publish.git"
|
|
21
21
|
},
|
|
22
|
-
"type": "
|
|
23
|
-
"
|
|
24
|
-
|
|
22
|
+
"type": "module",
|
|
23
|
+
"exports": {
|
|
24
|
+
"types": "./lib/index.d.ts",
|
|
25
|
+
"default": "./lib/index.js"
|
|
26
|
+
},
|
|
25
27
|
"bin": {
|
|
26
28
|
"npm-publish": "bin/npm-publish.js"
|
|
27
29
|
},
|
|
@@ -32,55 +34,50 @@
|
|
|
32
34
|
"!__tests__"
|
|
33
35
|
],
|
|
34
36
|
"scripts": {
|
|
35
|
-
"all": "
|
|
37
|
+
"all": "pnpm clean && pnpm build && pnpm format && pnpm coverage",
|
|
36
38
|
"clean": "rimraf coverage lib dist e2e/fixture *.tgz",
|
|
37
|
-
"lint": "
|
|
38
|
-
"format": "
|
|
39
|
-
"build": "concurrently -g
|
|
40
|
-
"build:dist": "
|
|
39
|
+
"lint": "eslint . && prettier . --check",
|
|
40
|
+
"format": "eslint . --fix && prettier . --write",
|
|
41
|
+
"build": "concurrently -g pnpm:build:*",
|
|
42
|
+
"build:dist": "rolldown src/action/main.ts --dir=dist --platform=node --treeshake --sourcemap",
|
|
41
43
|
"build:lib": "tsc",
|
|
42
44
|
"test": "vitest",
|
|
43
|
-
"coverage": "vitest run --coverage"
|
|
44
|
-
"_eslint": "eslint \"**/*.@(js|ts)\"",
|
|
45
|
-
"_prettier": "prettier \"**/*.@(js|ts|json|md|yaml)\""
|
|
45
|
+
"coverage": "vitest run --coverage"
|
|
46
46
|
},
|
|
47
47
|
"engines": {
|
|
48
|
-
"node": ">=
|
|
48
|
+
"node": ">=20"
|
|
49
49
|
},
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"access": "public",
|
|
52
52
|
"provenance": true
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@actions/core": "^1.
|
|
56
|
-
"@
|
|
57
|
-
"@
|
|
58
|
-
"@
|
|
59
|
-
"@
|
|
60
|
-
"@
|
|
61
|
-
"@
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"eslint": "^
|
|
65
|
-
"eslint-
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"prettier-plugin-jsdoc": "^1.1.1",
|
|
75
|
-
"rimraf": "^5.0.5",
|
|
76
|
-
"typescript": "^5.2.2",
|
|
77
|
-
"vitest": "^1.0.1",
|
|
78
|
-
"vitest-when": "^0.3.0"
|
|
55
|
+
"@actions/core": "^1.11.1",
|
|
56
|
+
"@mcous/eslint-config": "^0.7.0",
|
|
57
|
+
"@mcous/prettier-config": "^0.4.0",
|
|
58
|
+
"@mcous/typescript-config": "^0.3.0",
|
|
59
|
+
"@types/command-line-args": "^5.2.3",
|
|
60
|
+
"@types/node": "^24.4.0",
|
|
61
|
+
"@types/validate-npm-package-name": "^4.0.2",
|
|
62
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
63
|
+
"concurrently": "^9.2.1",
|
|
64
|
+
"eslint": "^9.35.0",
|
|
65
|
+
"eslint-plugin-jsdoc": "^57.0.8",
|
|
66
|
+
"globals": "^16.4.0",
|
|
67
|
+
"prettier": "^3.6.2",
|
|
68
|
+
"prettier-plugin-jsdoc": "^1.3.3",
|
|
69
|
+
"rimraf": "^6.0.1",
|
|
70
|
+
"rolldown": "1.0.0-beta.37",
|
|
71
|
+
"typescript": "^5.9.2",
|
|
72
|
+
"vitest": "^3.2.4",
|
|
73
|
+
"vitest-when": "^0.8.0"
|
|
79
74
|
},
|
|
80
75
|
"dependencies": {
|
|
81
|
-
"@types/semver": "^7.
|
|
82
|
-
"command-line-args": "
|
|
83
|
-
"semver": "7.
|
|
84
|
-
"tar": "
|
|
85
|
-
|
|
76
|
+
"@types/semver": "^7.7.1",
|
|
77
|
+
"command-line-args": "6.0.1",
|
|
78
|
+
"semver": "7.7.2",
|
|
79
|
+
"tar": "7.4.3",
|
|
80
|
+
"validate-npm-package-name": "^6.0.2"
|
|
81
|
+
},
|
|
82
|
+
"packageManager": "pnpm@10.16.1+sha256.b77e92ba0d59a6372b6c5041bbb3f866fb85e927df333827f0c7f577c5e1a713"
|
|
86
83
|
}
|
package/src/action/core.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/** Wrapper module for @actions/core */
|
|
2
2
|
import {
|
|
3
|
+
debug as ghLogDebug,
|
|
4
|
+
error as ghLogError,
|
|
3
5
|
getInput as ghGetInput,
|
|
6
|
+
info as ghLogInfo,
|
|
7
|
+
setFailed as ghSetFailed,
|
|
4
8
|
setOutput as ghSetOutput,
|
|
5
9
|
setSecret as ghSetSecret,
|
|
6
|
-
setFailed as ghSetFailed,
|
|
7
|
-
debug as ghLogDebug,
|
|
8
|
-
info as ghLogInfo,
|
|
9
|
-
error as ghLogError,
|
|
10
10
|
} from "@actions/core";
|
|
11
11
|
|
|
12
12
|
import type { Logger } from "../options.js";
|
|
@@ -24,9 +24,9 @@ export const logger: Logger = {
|
|
|
24
24
|
* @param name Input name
|
|
25
25
|
* @returns The input string value, or undefined if not set
|
|
26
26
|
*/
|
|
27
|
-
export function getInput
|
|
27
|
+
export function getInput(name: string): string | undefined {
|
|
28
28
|
const inputString = ghGetInput(name);
|
|
29
|
-
return inputString.length > 0 ?
|
|
29
|
+
return inputString.length > 0 ? inputString : undefined;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
/**
|
|
@@ -85,11 +85,10 @@ export function setOutput(
|
|
|
85
85
|
defaultValue: string | boolean
|
|
86
86
|
): void;
|
|
87
87
|
|
|
88
|
-
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
89
88
|
export function setOutput(
|
|
90
89
|
name: string,
|
|
91
90
|
value: string | boolean | undefined,
|
|
92
|
-
defaultValue?: string | boolean
|
|
91
|
+
defaultValue?: string | boolean
|
|
93
92
|
): void {
|
|
94
93
|
ghSetOutput(name, value ?? defaultValue);
|
|
95
94
|
}
|
package/src/action/main.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Action entry point */
|
|
2
|
-
import { npmPublish } from "../index.js";
|
|
2
|
+
import { type Access, npmPublish, type Strategy } from "../index.js";
|
|
3
3
|
import * as core from "./core.js";
|
|
4
4
|
|
|
5
5
|
/** Run the action. */
|
|
@@ -9,13 +9,13 @@ async function run(): Promise<void> {
|
|
|
9
9
|
registry: core.getInput("registry"),
|
|
10
10
|
package: core.getInput("package"),
|
|
11
11
|
tag: core.getInput("tag"),
|
|
12
|
-
access: core.getInput("access"),
|
|
12
|
+
access: core.getInput("access") as Access | undefined,
|
|
13
13
|
provenance: core.getBooleanInput("provenance"),
|
|
14
|
-
strategy: core.getInput("strategy"),
|
|
14
|
+
strategy: core.getInput("strategy") as Strategy | undefined,
|
|
15
15
|
ignoreScripts: core.getBooleanInput("ignore-scripts"),
|
|
16
16
|
dryRun: core.getBooleanInput("dry-run"),
|
|
17
17
|
logger: core.logger,
|
|
18
|
-
temporaryDirectory: process.env
|
|
18
|
+
temporaryDirectory: process.env.RUNNER_TEMP,
|
|
19
19
|
});
|
|
20
20
|
|
|
21
21
|
core.setOutput("id", results.id, "");
|
package/src/cli/index.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import type { PackageManifest } from "../read-manifest.js";
|
|
2
1
|
import type { NormalizedOptions } from "../normalize-options.js";
|
|
3
2
|
import {
|
|
4
|
-
|
|
5
|
-
PUBLISH,
|
|
3
|
+
callNpmCli,
|
|
6
4
|
E404,
|
|
5
|
+
E409,
|
|
7
6
|
EPUBLISHCONFLICT,
|
|
8
|
-
callNpmCli,
|
|
9
7
|
type NpmCliEnvironment,
|
|
8
|
+
PUBLISH,
|
|
9
|
+
VIEW,
|
|
10
10
|
} from "../npm/index.js";
|
|
11
|
+
import type { PackageManifest } from "../read-manifest.js";
|
|
11
12
|
import { compareVersions, type VersionComparison } from "./compare-versions.js";
|
|
12
|
-
import {
|
|
13
|
+
import { getPublishArguments, getViewArguments } from "./get-arguments.js";
|
|
13
14
|
|
|
14
15
|
export interface PublishResult extends VersionComparison {
|
|
15
16
|
id: string | undefined;
|
|
@@ -62,11 +63,15 @@ export async function compareAndPublish(
|
|
|
62
63
|
const isDryRun = options.dryRun.value;
|
|
63
64
|
const comparison = compareVersions(version, viewCall.successData, options);
|
|
64
65
|
const publishCall =
|
|
65
|
-
comparison.type ?? isDryRun
|
|
66
|
+
(comparison.type ?? isDryRun)
|
|
66
67
|
? await callNpmCli(PUBLISH, publishArguments, cliOptions)
|
|
67
68
|
: { successData: undefined, errorCode: undefined, error: undefined };
|
|
68
69
|
|
|
69
|
-
if (
|
|
70
|
+
if (
|
|
71
|
+
publishCall.error &&
|
|
72
|
+
publishCall.errorCode !== EPUBLISHCONFLICT &&
|
|
73
|
+
publishCall.errorCode !== E409
|
|
74
|
+
) {
|
|
70
75
|
throw publishCall.error;
|
|
71
76
|
}
|
|
72
77
|
|
|
@@ -2,10 +2,10 @@ import semverDifference from "semver/functions/diff.js";
|
|
|
2
2
|
import semverGreaterThan from "semver/functions/gt.js";
|
|
3
3
|
import semverValid from "semver/functions/valid.js";
|
|
4
4
|
|
|
5
|
-
import { STRATEGY_ALL } from "../options.js";
|
|
6
5
|
import type { NormalizedOptions } from "../normalize-options.js";
|
|
7
|
-
import { INITIAL, DIFFERENT, type ReleaseType } from "../results.js";
|
|
8
6
|
import type { NpmViewData } from "../npm/index.js";
|
|
7
|
+
import { STRATEGY_ALL } from "../options.js";
|
|
8
|
+
import { DIFFERENT, INITIAL, type ReleaseType } from "../results.js";
|
|
9
9
|
|
|
10
10
|
export interface VersionComparison {
|
|
11
11
|
type: ReleaseType | undefined;
|
|
@@ -54,7 +54,10 @@ export function getPublishArguments(
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
if (!dryRun.isDefault && dryRun.value) {
|
|
57
|
-
|
|
57
|
+
// NOTE: `--force` does not override `--dry-run`,
|
|
58
|
+
// but does bypass package existence check in npm >=11
|
|
59
|
+
// because we do our own existence checks separately
|
|
60
|
+
publishArguments.push("--dry-run", "--force");
|
|
58
61
|
}
|
|
59
62
|
|
|
60
63
|
return publishArguments;
|
package/src/errors.ts
CHANGED
|
@@ -62,7 +62,7 @@ export class PackageJsonParseError extends SyntaxError {
|
|
|
62
62
|
|
|
63
63
|
export class InvalidPackageNameError extends TypeError {
|
|
64
64
|
public constructor(value: unknown) {
|
|
65
|
-
super(`Package name
|
|
65
|
+
super(`Package name is not valid, got "${String(value)}"`);
|
|
66
66
|
this.name = "InvalidPackageNameError";
|
|
67
67
|
}
|
|
68
68
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import os from "node:os";
|
|
2
2
|
|
|
3
3
|
import type { PublishResult } from "./compare-and-publish/index.js";
|
|
4
|
-
import type { PackageManifest } from "./read-manifest.js";
|
|
5
4
|
import type { NormalizedOptions } from "./normalize-options.js";
|
|
5
|
+
import type { PackageManifest } from "./read-manifest.js";
|
|
6
6
|
|
|
7
7
|
const DRY_RUN_BANNER =
|
|
8
8
|
"=== DRY RUN === DRY RUN === DRY RUN === DRY RUN === DRY RUN ===";
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Export the external type definitions as named exports
|
|
2
|
+
export * from "./errors.js";
|
|
2
3
|
export * from "./options.js";
|
|
3
4
|
export * from "./results.js";
|
|
4
|
-
export * from "./errors.js";
|
|
5
5
|
|
|
6
6
|
// Export `npmPublish` as a named export
|
|
7
7
|
export { npmPublish } from "./npm-publish.js";
|