monocrate 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/collect-package-locations.d.ts +12 -0
- package/dist/collect-package-locations.d.ts.map +1 -0
- package/dist/collect-package-locations.js +53 -0
- package/dist/collect-package-locations.js.map +1 -0
- package/dist/compute-package-closure.d.ts +4 -0
- package/dist/compute-package-closure.d.ts.map +1 -0
- package/dist/compute-package-closure.js +64 -0
- package/dist/compute-package-closure.js.map +1 -0
- package/dist/file-copier.d.ts +9 -0
- package/dist/file-copier.d.ts.map +1 -0
- package/dist/file-copier.js +37 -0
- package/dist/file-copier.js.map +1 -0
- package/dist/get-files-to-pack.d.ts +12 -0
- package/dist/get-files-to-pack.d.ts.map +1 -0
- package/dist/get-files-to-pack.js +20 -0
- package/dist/get-files-to-pack.js.map +1 -0
- package/dist/import-rewriter.d.ts +4 -4
- package/dist/import-rewriter.d.ts.map +1 -1
- package/dist/import-rewriter.js +6 -9
- package/dist/import-rewriter.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mirror-sources.d.ts +11 -0
- package/dist/mirror-sources.d.ts.map +1 -0
- package/dist/mirror-sources.js +90 -0
- package/dist/mirror-sources.js.map +1 -0
- package/dist/monocrate-cli.d.ts.map +1 -1
- package/dist/monocrate-cli.js +74 -38
- package/dist/monocrate-cli.js.map +1 -1
- package/dist/monocrate-options.d.ts +67 -0
- package/dist/monocrate-options.d.ts.map +1 -0
- package/dist/monocrate-options.js +2 -0
- package/dist/monocrate-options.js.map +1 -0
- package/dist/monocrate-result.d.ts +18 -0
- package/dist/monocrate-result.d.ts.map +1 -0
- package/dist/monocrate-result.js +2 -0
- package/dist/monocrate-result.js.map +1 -0
- package/dist/monocrate.d.ts +6 -32
- package/dist/monocrate.d.ts.map +1 -1
- package/dist/monocrate.js +60 -64
- package/dist/monocrate.js.map +1 -1
- package/dist/name-mangler.d.ts +2 -0
- package/dist/name-mangler.d.ts.map +1 -0
- package/dist/name-mangler.js +4 -0
- package/dist/name-mangler.js.map +1 -0
- package/dist/npm-client.d.ts +29 -0
- package/dist/npm-client.d.ts.map +1 -0
- package/dist/npm-client.js +83 -0
- package/dist/npm-client.js.map +1 -0
- package/dist/package-assembler.d.ts +16 -0
- package/dist/package-assembler.d.ts.map +1 -0
- package/dist/package-assembler.js +52 -0
- package/dist/package-assembler.js.map +1 -0
- package/dist/package-closure.d.ts +14 -0
- package/dist/package-closure.d.ts.map +1 -0
- package/dist/package-closure.js +2 -0
- package/dist/package-closure.js.map +1 -0
- package/dist/package-json.d.ts +1 -0
- package/dist/package-json.d.ts.map +1 -1
- package/dist/package-json.js +1 -0
- package/dist/package-json.js.map +1 -1
- package/dist/package-location.d.ts +31 -0
- package/dist/package-location.d.ts.map +1 -0
- package/dist/package-location.js +2 -0
- package/dist/package-location.js.map +1 -0
- package/dist/paths.d.ts +37 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +59 -0
- package/dist/paths.js.map +1 -0
- package/dist/publish.d.ts +4 -0
- package/dist/publish.d.ts.map +1 -0
- package/dist/publish.js +4 -0
- package/dist/publish.js.map +1 -0
- package/dist/repo-explorer.d.ts +23 -0
- package/dist/repo-explorer.d.ts.map +1 -0
- package/dist/repo-explorer.js +121 -0
- package/dist/repo-explorer.js.map +1 -0
- package/dist/resolve-version.d.ts +6 -0
- package/dist/resolve-version.d.ts.map +1 -0
- package/dist/resolve-version.js +38 -0
- package/dist/resolve-version.js.map +1 -0
- package/dist/rewrite-package-json.d.ts +4 -0
- package/dist/rewrite-package-json.d.ts.map +1 -0
- package/dist/rewrite-package-json.js +21 -0
- package/dist/rewrite-package-json.js.map +1 -0
- package/dist/run-npm.d.ts +36 -0
- package/dist/run-npm.d.ts.map +1 -0
- package/dist/run-npm.js +35 -0
- package/dist/run-npm.js.map +1 -0
- package/dist/version-specifier.d.ts +8 -0
- package/dist/version-specifier.d.ts.map +1 -0
- package/dist/version-specifier.js +17 -0
- package/dist/version-specifier.js.map +1 -0
- package/package.json +11 -3
- package/dist/assemble.d.ts +0 -3
- package/dist/assemble.d.ts.map +0 -1
- package/dist/assemble.js +0 -11
- package/dist/assemble.js.map +0 -1
- package/dist/build-dependency-graph.d.ts +0 -8
- package/dist/build-dependency-graph.d.ts.map +0 -1
- package/dist/build-dependency-graph.js +0 -38
- package/dist/build-dependency-graph.js.map +0 -1
- package/dist/build-package-map.d.ts +0 -4
- package/dist/build-package-map.d.ts.map +0 -1
- package/dist/build-package-map.js +0 -43
- package/dist/build-package-map.js.map +0 -1
- package/dist/dist-copier.d.ts +0 -10
- package/dist/dist-copier.d.ts.map +0 -1
- package/dist/dist-copier.js +0 -44
- package/dist/dist-copier.js.map +0 -1
- package/dist/monorepo.d.ts +0 -9
- package/dist/monorepo.d.ts.map +0 -1
- package/dist/monorepo.js +0 -82
- package/dist/monorepo.js.map +0 -1
- package/dist/package-map.d.ts +0 -8
- package/dist/package-map.d.ts.map +0 -1
- package/dist/package-map.js +0 -2
- package/dist/package-map.js.map +0 -1
- package/dist/transform-package-json.d.ts +0 -5
- package/dist/transform-package-json.d.ts.map +0 -1
- package/dist/transform-package-json.js +0 -19
- package/dist/transform-package-json.js.map +0 -1
package/dist/package-json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-json.js","sourceRoot":"","sources":["../src/package-json.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"package-json.js","sourceRoot":"","sources":["../src/package-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { PackageJson } from './package-json.js';
|
|
2
|
+
import type { AbsolutePath } from './paths.js';
|
|
3
|
+
export interface PackageLocation {
|
|
4
|
+
/**
|
|
5
|
+
* The package name from package.json
|
|
6
|
+
* @example "@myorg/utils"
|
|
7
|
+
*/
|
|
8
|
+
name: string;
|
|
9
|
+
/**
|
|
10
|
+
* Absolute path to the package's directory in the repo.
|
|
11
|
+
* @example "/home/user/monorepo/packages/my-package"
|
|
12
|
+
*/
|
|
13
|
+
fromDir: AbsolutePath;
|
|
14
|
+
/**
|
|
15
|
+
* Absolute path to the the package's output directory
|
|
16
|
+
* @example "/tmp/monocrate-ab00003/deps/packages/my-package" (in-repo dependency)
|
|
17
|
+
*/
|
|
18
|
+
toDir: AbsolutePath;
|
|
19
|
+
/**
|
|
20
|
+
* Individual file paths (relative to the package dir) to copy, as determined by `npm pack --dry-run`.
|
|
21
|
+
* These are the exact files npm would include in the published tarball.
|
|
22
|
+
* @example ["dist/index.js", "dist/utils.js", "package.json"]
|
|
23
|
+
*/
|
|
24
|
+
filesToCopy: string[];
|
|
25
|
+
/**
|
|
26
|
+
* The package.json contents, used for import resolution
|
|
27
|
+
*/
|
|
28
|
+
packageJson: PackageJson;
|
|
29
|
+
}
|
|
30
|
+
export type PackageMap = Map<string, PackageLocation>;
|
|
31
|
+
//# sourceMappingURL=package-location.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-location.d.ts","sourceRoot":"","sources":["../src/package-location.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,OAAO,EAAE,YAAY,CAAA;IAErB;;;OAGG;IACH,KAAK,EAAE,YAAY,CAAA;IAEnB;;;;OAIG;IACH,WAAW,EAAE,MAAM,EAAE,CAAA;IAErB;;OAEG;IACH,WAAW,EAAE,WAAW,CAAA;CACzB;AAED,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-location.js","sourceRoot":"","sources":["../src/package-location.ts"],"names":[],"mappings":""}
|
package/dist/paths.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branded type for absolute file system paths.
|
|
3
|
+
* Use AbsolutePath(s) to create, AbsolutePath.join() and AbsolutePath.dirname() for manipulation.
|
|
4
|
+
*/
|
|
5
|
+
export type AbsolutePath = string & {
|
|
6
|
+
readonly __brand: 'AbsolutePath';
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Creates an AbsolutePath from a string. Normalizes the input.
|
|
10
|
+
* @throws if the path is not absolute
|
|
11
|
+
*/
|
|
12
|
+
export declare function AbsolutePath(s: string): AbsolutePath;
|
|
13
|
+
export declare namespace AbsolutePath {
|
|
14
|
+
function join(base: AbsolutePath, p: RelativePath, ...paths: string[]): AbsolutePath;
|
|
15
|
+
function dirname(p: AbsolutePath): AbsolutePath;
|
|
16
|
+
/**
|
|
17
|
+
* Checks if `parent` contains `child` (or they are equal).
|
|
18
|
+
*/
|
|
19
|
+
function contains(parent: AbsolutePath, child: AbsolutePath): boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Branded type for paths relative to the monorepo root.
|
|
23
|
+
* Use RelativePath(s) to create, RelativePath.join() and RelativePath.dirname() for manipulation.
|
|
24
|
+
*/
|
|
25
|
+
export type RelativePath = string & {
|
|
26
|
+
readonly __brand: 'RelativePath';
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Creates a RelativePath from a string. Normalizes the input.
|
|
30
|
+
* @throws if the path is absolute
|
|
31
|
+
*/
|
|
32
|
+
export declare function RelativePath(s: string): RelativePath;
|
|
33
|
+
export declare namespace RelativePath {
|
|
34
|
+
function join(base: RelativePath, ...paths: string[]): RelativePath;
|
|
35
|
+
function dirname(p: RelativePath): RelativePath;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAA;AAExE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAMpD;AAGD,yBAAiB,YAAY,CAAC;IAC5B,SAAgB,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAE1F;IAED,SAAgB,OAAO,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAErD;IAED;;OAEG;IACH,SAAgB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAG3E;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAA;AAExE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAMpD;AAGD,yBAAiB,YAAY,CAAC;IAC5B,SAAgB,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAOzE;IAED,SAAgB,OAAO,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAErD;CACF"}
|
package/dist/paths.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an AbsolutePath from a string. Normalizes the input.
|
|
4
|
+
* @throws if the path is not absolute
|
|
5
|
+
*/
|
|
6
|
+
export function AbsolutePath(s) {
|
|
7
|
+
const normalized = path.normalize(s);
|
|
8
|
+
if (!path.isAbsolute(normalized)) {
|
|
9
|
+
throw new Error(`Expected absolute path, got: ${s}`);
|
|
10
|
+
}
|
|
11
|
+
return normalized;
|
|
12
|
+
}
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
14
|
+
(function (AbsolutePath) {
|
|
15
|
+
function join(base, p, ...paths) {
|
|
16
|
+
return AbsolutePath(path.join(base, RelativePath.join(p, ...paths)));
|
|
17
|
+
}
|
|
18
|
+
AbsolutePath.join = join;
|
|
19
|
+
function dirname(p) {
|
|
20
|
+
return AbsolutePath(path.dirname(p));
|
|
21
|
+
}
|
|
22
|
+
AbsolutePath.dirname = dirname;
|
|
23
|
+
/**
|
|
24
|
+
* Checks if `parent` contains `child` (or they are equal).
|
|
25
|
+
*/
|
|
26
|
+
function contains(parent, child) {
|
|
27
|
+
const relative = path.relative(parent, child);
|
|
28
|
+
return !relative.startsWith('..') && !path.isAbsolute(relative);
|
|
29
|
+
}
|
|
30
|
+
AbsolutePath.contains = contains;
|
|
31
|
+
})(AbsolutePath || (AbsolutePath = {}));
|
|
32
|
+
/**
|
|
33
|
+
* Creates a RelativePath from a string. Normalizes the input.
|
|
34
|
+
* @throws if the path is absolute
|
|
35
|
+
*/
|
|
36
|
+
export function RelativePath(s) {
|
|
37
|
+
const normalized = path.normalize(s);
|
|
38
|
+
if (path.isAbsolute(normalized)) {
|
|
39
|
+
throw new Error(`Expected relative path, got: ${s}`);
|
|
40
|
+
}
|
|
41
|
+
return normalized;
|
|
42
|
+
}
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
44
|
+
(function (RelativePath) {
|
|
45
|
+
function join(base, ...paths) {
|
|
46
|
+
for (const at of paths) {
|
|
47
|
+
if (path.isAbsolute(at)) {
|
|
48
|
+
throw new Error(`Cannot join absolute path ${at} to RelativePath`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return RelativePath(path.join(base, ...paths));
|
|
52
|
+
}
|
|
53
|
+
RelativePath.join = join;
|
|
54
|
+
function dirname(p) {
|
|
55
|
+
return RelativePath(path.dirname(p));
|
|
56
|
+
}
|
|
57
|
+
RelativePath.dirname = dirname;
|
|
58
|
+
})(RelativePath || (RelativePath = {}));
|
|
59
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAQ5B;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,UAA0B,CAAA;AACnC,CAAC;AAED,2DAA2D;AAC3D,WAAiB,YAAY;IAC3B,SAAgB,IAAI,CAAC,IAAkB,EAAE,CAAe,EAAE,GAAG,KAAe;QAC1E,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACtE,CAAC;IAFe,iBAAI,OAEnB,CAAA;IAED,SAAgB,OAAO,CAAC,CAAe;QACrC,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC;IAFe,oBAAO,UAEtB,CAAA;IAED;;OAEG;IACH,SAAgB,QAAQ,CAAC,MAAoB,EAAE,KAAmB;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IACjE,CAAC;IAHe,qBAAQ,WAGvB,CAAA;AACH,CAAC,EAhBgB,YAAY,KAAZ,YAAY,QAgB5B;AAQD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACpC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,UAA0B,CAAA;AACnC,CAAC;AAED,2DAA2D;AAC3D,WAAiB,YAAY;IAC3B,SAAgB,IAAI,CAAC,IAAkB,EAAE,GAAG,KAAe;QACzD,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,CAAA;YACpE,CAAC;QACH,CAAC;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;IAChD,CAAC;IAPe,iBAAI,OAOnB,CAAA;IAED,SAAgB,OAAO,CAAC,CAAe;QACrC,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC;IAFe,oBAAO,UAEtB,CAAA;AACH,CAAC,EAbgB,YAAY,KAAZ,YAAY,QAa5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,wBAAsB,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,iBAE1E"}
|
package/dist/publish.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,SAAoB,EAAE,SAAuB;IACzE,MAAM,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACpC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { PackageJson } from './package-json.js';
|
|
2
|
+
import { AbsolutePath, RelativePath } from './paths.js';
|
|
3
|
+
export interface MonorepoPackage {
|
|
4
|
+
name: string;
|
|
5
|
+
fromDir: AbsolutePath;
|
|
6
|
+
pathInRepo: RelativePath;
|
|
7
|
+
packageJson: PackageJson;
|
|
8
|
+
}
|
|
9
|
+
export declare class RepoExplorer {
|
|
10
|
+
readonly repoRootDir: AbsolutePath;
|
|
11
|
+
private readonly map;
|
|
12
|
+
constructor(repoRootDir: AbsolutePath, map: Map<string, MonorepoPackage>);
|
|
13
|
+
static create(monorepoRoot: AbsolutePath): Promise<RepoExplorer>;
|
|
14
|
+
listNames(): string[];
|
|
15
|
+
listPackages(): MonorepoPackage[];
|
|
16
|
+
getPackage(pkgName: string): MonorepoPackage;
|
|
17
|
+
lookupPackage(pkgName: string): MonorepoPackage | undefined;
|
|
18
|
+
static findMonorepoRoot(startDir: AbsolutePath): AbsolutePath;
|
|
19
|
+
private static readPackageJson;
|
|
20
|
+
private static parseWorkspacePatterns;
|
|
21
|
+
static discover(monorepoRoot: AbsolutePath): Promise<Map<string, MonorepoPackage>>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=repo-explorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-explorer.d.ts","sourceRoot":"","sources":["../src/repo-explorer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEvD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,YAAY,CAAA;IACrB,UAAU,EAAE,YAAY,CAAA;IACxB,WAAW,EAAE,WAAW,CAAA;CACzB;AAED,qBAAa,YAAY;IAErB,QAAQ,CAAC,WAAW,EAAE,YAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADX,WAAW,EAAE,YAAY,EACjB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC;WAGvC,MAAM,CAAC,YAAY,EAAE,YAAY;IAkB9C,SAAS;IAGT,YAAY;IAIZ,UAAU,CAAC,OAAO,EAAE,MAAM;IAQ1B,aAAa,CAAC,OAAO,EAAE,MAAM;IAI7B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY;IAuB7D,OAAO,CAAC,MAAM,CAAC,eAAe;IAa9B,OAAO,CAAC,MAAM,CAAC,sBAAsB;WA8BxB,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAyBzF"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { glob } from 'glob';
|
|
4
|
+
import { PackageJson } from './package-json.js';
|
|
5
|
+
import { AbsolutePath, RelativePath } from './paths.js';
|
|
6
|
+
export class RepoExplorer {
|
|
7
|
+
repoRootDir;
|
|
8
|
+
map;
|
|
9
|
+
constructor(repoRootDir, map) {
|
|
10
|
+
this.repoRootDir = repoRootDir;
|
|
11
|
+
this.map = map;
|
|
12
|
+
}
|
|
13
|
+
static async create(monorepoRoot) {
|
|
14
|
+
const map = await this.discover(monorepoRoot);
|
|
15
|
+
// Validate all package directories are under the monorepo root
|
|
16
|
+
// Use realpath to resolve symlinks and catch cases where a symlink points outside
|
|
17
|
+
const realMonorepoRoot = AbsolutePath(fs.realpathSync(monorepoRoot));
|
|
18
|
+
for (const pkg of map.values()) {
|
|
19
|
+
const realPkgPath = AbsolutePath(fs.realpathSync(pkg.fromDir));
|
|
20
|
+
if (!AbsolutePath.contains(realMonorepoRoot, realPkgPath)) {
|
|
21
|
+
throw new Error(`Package "${pkg.name}" is located at "${realPkgPath}" which is outside the monorepo root "${realMonorepoRoot}"`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return new RepoExplorer(monorepoRoot, map);
|
|
25
|
+
}
|
|
26
|
+
listNames() {
|
|
27
|
+
return [...this.map.keys()];
|
|
28
|
+
}
|
|
29
|
+
listPackages() {
|
|
30
|
+
return [...this.map.values()];
|
|
31
|
+
}
|
|
32
|
+
getPackage(pkgName) {
|
|
33
|
+
const ret = this.lookupPackage(pkgName);
|
|
34
|
+
if (!ret) {
|
|
35
|
+
throw new Error(`Unrecognized package name: "${pkgName}"`);
|
|
36
|
+
}
|
|
37
|
+
return ret;
|
|
38
|
+
}
|
|
39
|
+
lookupPackage(pkgName) {
|
|
40
|
+
return this.map.get(pkgName);
|
|
41
|
+
}
|
|
42
|
+
static findMonorepoRoot(startDir) {
|
|
43
|
+
let dir = startDir;
|
|
44
|
+
while (dir !== AbsolutePath.dirname(dir)) {
|
|
45
|
+
const packageJsonPath = path.join(dir, 'package.json');
|
|
46
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
47
|
+
const parsed = PackageJson.safeParse(JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')));
|
|
48
|
+
if (parsed.success && parsed.data.workspaces !== undefined) {
|
|
49
|
+
return dir;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const pnpmWorkspacePath = path.join(dir, 'pnpm-workspace.yaml');
|
|
53
|
+
if (fs.existsSync(pnpmWorkspacePath)) {
|
|
54
|
+
return dir;
|
|
55
|
+
}
|
|
56
|
+
dir = AbsolutePath.dirname(dir);
|
|
57
|
+
}
|
|
58
|
+
throw new Error(`Could not find monorepo root from ${startDir}`);
|
|
59
|
+
}
|
|
60
|
+
static readPackageJson(packageDir) {
|
|
61
|
+
const packageJsonPath = path.join(packageDir, 'package.json');
|
|
62
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
63
|
+
throw new Error(`No package.json found at ${packageDir}`);
|
|
64
|
+
}
|
|
65
|
+
const content = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
66
|
+
const parsed = PackageJson.safeParse(content);
|
|
67
|
+
if (!parsed.success) {
|
|
68
|
+
throw new Error(`Invalid package.json at ${packageDir}: ${parsed.error.message}`);
|
|
69
|
+
}
|
|
70
|
+
return parsed.data;
|
|
71
|
+
}
|
|
72
|
+
static parseWorkspacePatterns(monorepoRoot) {
|
|
73
|
+
const packageJsonPath = path.join(monorepoRoot, 'package.json');
|
|
74
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
75
|
+
const parsed = PackageJson.safeParse(JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')));
|
|
76
|
+
if (parsed.success) {
|
|
77
|
+
const workspaces = parsed.data.workspaces;
|
|
78
|
+
if (Array.isArray(workspaces)) {
|
|
79
|
+
return workspaces;
|
|
80
|
+
}
|
|
81
|
+
if (workspaces && typeof workspaces === 'object' && 'packages' in workspaces) {
|
|
82
|
+
return workspaces.packages;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const pnpmWorkspacePath = path.join(monorepoRoot, 'pnpm-workspace.yaml');
|
|
87
|
+
if (fs.existsSync(pnpmWorkspacePath)) {
|
|
88
|
+
const content = fs.readFileSync(pnpmWorkspacePath, 'utf-8');
|
|
89
|
+
const match = /packages:\s*\n((?:\s+-\s+.+\n?)+)/m.exec(content);
|
|
90
|
+
if (match?.[1]) {
|
|
91
|
+
return match[1]
|
|
92
|
+
.split('\n')
|
|
93
|
+
.map((line) => line.replace(/^\s*-\s*['"]?|['"]?\s*$/g, ''))
|
|
94
|
+
.filter(Boolean);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return ['packages/*'];
|
|
98
|
+
}
|
|
99
|
+
static async discover(monorepoRoot) {
|
|
100
|
+
const patterns = this.parseWorkspacePatterns(monorepoRoot);
|
|
101
|
+
const packages = new Map();
|
|
102
|
+
for (const pattern of patterns) {
|
|
103
|
+
const fullPattern = path.join(monorepoRoot, pattern, 'package.json');
|
|
104
|
+
const matches = await glob(fullPattern, { ignore: '**/node_modules/**' });
|
|
105
|
+
for (const match of matches) {
|
|
106
|
+
const packageDir = AbsolutePath(path.dirname(match));
|
|
107
|
+
const packageJson = this.readPackageJson(packageDir);
|
|
108
|
+
if (packageJson.name) {
|
|
109
|
+
packages.set(packageJson.name, {
|
|
110
|
+
name: packageJson.name,
|
|
111
|
+
fromDir: packageDir,
|
|
112
|
+
pathInRepo: RelativePath(path.relative(monorepoRoot, packageDir)),
|
|
113
|
+
packageJson,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return packages;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=repo-explorer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-explorer.js","sourceRoot":"","sources":["../src/repo-explorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AbsolutePath } from './paths.js';
|
|
2
|
+
import type { VersionSpecifier } from './version-specifier.js';
|
|
3
|
+
import type { NpmClient } from './npm-client.js';
|
|
4
|
+
export declare function resolveVersion(npmClient: NpmClient, dir: AbsolutePath, packageName: string, versionSpecifier: VersionSpecifier): Promise<string>;
|
|
5
|
+
export declare function maxVersion(va: string, vb: string): string;
|
|
6
|
+
//# sourceMappingURL=resolve-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-version.d.ts","sourceRoot":"","sources":["../src/resolve-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAUhD,wBAAsB,cAAc,CAClC,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,YAAY,EACjB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,gBAAgB,mBAUnC;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAiBhD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
async function getCurrentPublishedVersion(npmClient, dir, packageName) {
|
|
2
|
+
return (await npmClient.viewVersion(packageName, dir)) ?? '0.0.0';
|
|
3
|
+
}
|
|
4
|
+
export async function resolveVersion(npmClient, dir, packageName, versionSpecifier) {
|
|
5
|
+
if (versionSpecifier.tag === 'explicit') {
|
|
6
|
+
return versionSpecifier.value;
|
|
7
|
+
}
|
|
8
|
+
const currentVersion = await getCurrentPublishedVersion(npmClient, dir, packageName);
|
|
9
|
+
const nums = parseVersion(currentVersion);
|
|
10
|
+
const indexToIncrement = { major: 0, minor: 1, patch: 2 }[versionSpecifier.tag];
|
|
11
|
+
return nums.map((n, i) => (i < indexToIncrement ? n : i === indexToIncrement ? n + 1 : 0)).join('.');
|
|
12
|
+
}
|
|
13
|
+
export function maxVersion(va, vb) {
|
|
14
|
+
const [a1, a2, a3] = parseVersion(va);
|
|
15
|
+
const [b1, b2, b3] = parseVersion(vb);
|
|
16
|
+
if (a1 !== b1) {
|
|
17
|
+
return a1 > b1 ? va : vb;
|
|
18
|
+
}
|
|
19
|
+
if (a2 !== b2) {
|
|
20
|
+
return a2 > b2 ? va : vb;
|
|
21
|
+
}
|
|
22
|
+
if (a3 !== b3) {
|
|
23
|
+
return a3 > b3 ? va : vb;
|
|
24
|
+
}
|
|
25
|
+
return va;
|
|
26
|
+
}
|
|
27
|
+
const parseVersion = (s) => {
|
|
28
|
+
const [a, b, c] = s
|
|
29
|
+
.split('.')
|
|
30
|
+
.slice(0, 3)
|
|
31
|
+
.map(Number)
|
|
32
|
+
.filter((at) => Number.isInteger(at));
|
|
33
|
+
if (a === undefined || b === undefined || c === undefined) {
|
|
34
|
+
throw new Error(`Current version is ill-formatted: "${s}"`);
|
|
35
|
+
}
|
|
36
|
+
return [a, b, c];
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=resolve-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-version.js","sourceRoot":"","sources":["../src/resolve-version.ts"],"names":[],"mappings":"AAIA,KAAK,UAAU,0BAA0B,CACvC,SAAoB,EACpB,GAAiB,EACjB,WAAmB;IAEnB,OAAO,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,OAAO,CAAA;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAoB,EACpB,GAAiB,EACjB,WAAmB,EACnB,gBAAkC;IAElC,IAAI,gBAAgB,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QACxC,OAAO,gBAAgB,CAAC,KAAK,CAAA;IAC/B,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,0BAA0B,CAAC,SAAS,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;IACpF,MAAM,IAAI,GAAG,YAAY,CAAC,cAAc,CAAC,CAAA;IACzC,MAAM,gBAAgB,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAC/E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACtG,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAU,EAAE,EAAU;IAC/C,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;IACrC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;IAErC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1B,CAAC;IAED,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1B,CAAC;IAED,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1B,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,CAAS,EAA4B,EAAE;IAC3D,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;SAChB,KAAK,CAAC,GAAG,CAAC;SACV,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,MAAM,CAAC;SACX,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;IACvC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,GAAG,CAAC,CAAA;IAC7D,CAAC;IAED,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAClB,CAAC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PackageClosure } from './package-closure.js';
|
|
2
|
+
import type { AbsolutePath } from './paths.js';
|
|
3
|
+
export declare function rewritePackageJson(closure: PackageClosure, version: string | undefined, outputDir: AbsolutePath): void;
|
|
4
|
+
//# sourceMappingURL=rewrite-package-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewrite-package-json.d.ts","sourceRoot":"","sources":["../src/rewrite-package-json.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,YAAY,QAsB/G"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
export function rewritePackageJson(closure, version, outputDir) {
|
|
4
|
+
const subject = closure.members.find((at) => at.name === closure.subjectPackageName);
|
|
5
|
+
if (!subject) {
|
|
6
|
+
throw new Error(`Incosistency in subject package name: "${closure.subjectPackageName}"`);
|
|
7
|
+
}
|
|
8
|
+
const { dependencies: _1, devDependencies: _2, ...rest } = subject.packageJson;
|
|
9
|
+
const rewritten = {
|
|
10
|
+
...rest,
|
|
11
|
+
};
|
|
12
|
+
if (version) {
|
|
13
|
+
rewritten.version = version;
|
|
14
|
+
}
|
|
15
|
+
// Replace dependencies with flattened third-party deps (no workspace deps)
|
|
16
|
+
if (Object.keys(closure.allThirdPartyDeps).length > 0) {
|
|
17
|
+
rewritten.dependencies = closure.allThirdPartyDeps;
|
|
18
|
+
}
|
|
19
|
+
fs.writeFileSync(path.join(outputDir, 'package.json'), JSON.stringify(rewritten, null, 2) + '\n');
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=rewrite-package-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewrite-package-json.js","sourceRoot":"","sources":["../src/rewrite-package-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAKjC,MAAM,UAAU,kBAAkB,CAAC,OAAuB,EAAE,OAA2B,EAAE,SAAuB;IAC9G,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACpF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,CAAC,kBAAkB,GAAG,CAAC,CAAA;IAC1F,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,WAAW,CAAA;IAE9E,MAAM,SAAS,GAAgB;QAC7B,GAAG,IAAI;KACR,CAAA;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,SAAS,CAAC,OAAO,GAAG,OAAO,CAAA;IAC7B,CAAC;IAED,2EAA2E;IAC3E,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,SAAS,CAAC,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAA;IACpD,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AACnG,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { AbsolutePath } from './paths.js';
|
|
2
|
+
export interface NpmOptionsBase {
|
|
3
|
+
env?: Partial<Record<string, string>>;
|
|
4
|
+
userconfig?: string;
|
|
5
|
+
}
|
|
6
|
+
interface StdioPipe {
|
|
7
|
+
stdio: 'pipe';
|
|
8
|
+
}
|
|
9
|
+
interface StdioInherit {
|
|
10
|
+
stdio?: 'inherit';
|
|
11
|
+
}
|
|
12
|
+
interface PolicyThrow {
|
|
13
|
+
nonZeroExitCodePolicy?: 'throw';
|
|
14
|
+
}
|
|
15
|
+
interface PolicyReturn {
|
|
16
|
+
nonZeroExitCodePolicy: 'return';
|
|
17
|
+
}
|
|
18
|
+
interface OutputResult {
|
|
19
|
+
stdout: string;
|
|
20
|
+
stderr: string;
|
|
21
|
+
}
|
|
22
|
+
interface PolicyThrowResult {
|
|
23
|
+
ok: true;
|
|
24
|
+
}
|
|
25
|
+
type PolicyReturnResult = {
|
|
26
|
+
ok: false;
|
|
27
|
+
error: Error;
|
|
28
|
+
} | {
|
|
29
|
+
ok: true;
|
|
30
|
+
};
|
|
31
|
+
export declare function runNpm(subcommand: string, args: string[], cwd: AbsolutePath, options: PolicyReturn & StdioInherit & NpmOptionsBase): Promise<PolicyReturnResult>;
|
|
32
|
+
export declare function runNpm(subcommand: string, args: string[], cwd: AbsolutePath, options: PolicyReturn & StdioPipe & NpmOptionsBase): Promise<PolicyReturnResult & OutputResult>;
|
|
33
|
+
export declare function runNpm(subcommand: string, args: string[], cwd: AbsolutePath, options?: PolicyThrow & StdioInherit & NpmOptionsBase): Promise<PolicyThrowResult>;
|
|
34
|
+
export declare function runNpm(subcommand: string, args: string[], cwd: AbsolutePath, options: PolicyThrow & StdioPipe & NpmOptionsBase): Promise<PolicyThrowResult & OutputResult>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=run-npm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-npm.d.ts","sourceRoot":"","sources":["../src/run-npm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACrC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED,UAAU,WAAW;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC;AAED,UAAU,YAAY;IACpB,qBAAqB,EAAE,QAAQ,CAAA;CAChC;AAED,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,UAAU,iBAAiB;IACzB,EAAE,EAAE,IAAI,CAAA;CACT;AACD,KAAK,kBAAkB,GACnB;IACE,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE,KAAK,CAAA;CACb,GACD;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAA;AAEhB,wBAAsB,MAAM,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,YAAY,GAAG,YAAY,GAAG,cAAc,GACpD,OAAO,CAAC,kBAAkB,CAAC,CAAA;AAC9B,wBAAsB,MAAM,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,cAAc,GACjD,OAAO,CAAC,kBAAkB,GAAG,YAAY,CAAC,CAAA;AAC7C,wBAAsB,MAAM,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,YAAY,EACjB,OAAO,CAAC,EAAE,WAAW,GAAG,YAAY,GAAG,cAAc,GACpD,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAC7B,wBAAsB,MAAM,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,cAAc,GAChD,OAAO,CAAC,iBAAiB,GAAG,YAAY,CAAC,CAAA"}
|
package/dist/run-npm.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { x } from 'tinyexec';
|
|
2
|
+
export async function runNpm(subcommand, args, cwd, options) {
|
|
3
|
+
const errorPolicy = options?.nonZeroExitCodePolicy ?? 'throw';
|
|
4
|
+
const stdio = options?.stdio ?? 'inherit';
|
|
5
|
+
const uc = options?.userconfig ? ['--userconfig', options.userconfig] : [];
|
|
6
|
+
const fullArgs = [subcommand, ...args, ...uc];
|
|
7
|
+
const synopsis = `${cwd}$ npm ${fullArgs.map((a) => JSON.stringify(a)).join(' ')}`;
|
|
8
|
+
const proc = x('npm', fullArgs, {
|
|
9
|
+
nodeOptions: { env: options?.env, cwd, stdio },
|
|
10
|
+
throwOnError: false,
|
|
11
|
+
});
|
|
12
|
+
const result = await proc;
|
|
13
|
+
if (result.exitCode === undefined) {
|
|
14
|
+
throw new Error(`npm ${subcommand} terminated abnormally` + (proc.killed ? ' (killed)' : ''));
|
|
15
|
+
}
|
|
16
|
+
if (result.exitCode !== 0) {
|
|
17
|
+
let message = `An NPM command exited with code ${String(result.exitCode)} - ${synopsis}`;
|
|
18
|
+
if (stdio === 'pipe') {
|
|
19
|
+
message += `\n${result.stdout}`;
|
|
20
|
+
}
|
|
21
|
+
const error = new Error(message);
|
|
22
|
+
if (errorPolicy === 'throw') {
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
if (stdio === 'pipe') {
|
|
26
|
+
return { ok: false, stdout: result.stdout, stderr: result.stderr, error };
|
|
27
|
+
}
|
|
28
|
+
return { ok: false, error };
|
|
29
|
+
}
|
|
30
|
+
if (stdio === 'pipe') {
|
|
31
|
+
return { ok: true, stdout: result.stdout, stderr: result.stderr };
|
|
32
|
+
}
|
|
33
|
+
return { ok: true };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=run-npm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-npm.js","sourceRoot":"","sources":["../src/run-npm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAA;AA+D5B,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,UAAkB,EAClB,IAAc,EACd,GAAiB,EACjB,OAAoF;IAIpF,MAAM,WAAW,GAAG,OAAO,EAAE,qBAAqB,IAAI,OAAO,CAAA;IAC7D,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,SAAS,CAAA;IAEzC,MAAM,EAAE,GAAG,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1E,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,GAAG,GAAG,SAAS,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;IAClF,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE;QAC9B,WAAW,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;QAC9C,YAAY,EAAE,KAAK;KACpB,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAA;IAEzB,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,OAAO,UAAU,wBAAwB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/F,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,IAAI,OAAO,GAAG,mCAAmC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,QAAQ,EAAE,CAAA;QACxF,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAA;QACjC,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;QAChC,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAA;QACb,CAAC;QACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAA;QAC3E,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IAC7B,CAAC;IAED,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;IACnE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type VersionSpecifier = {
|
|
2
|
+
tag: 'major' | 'minor' | 'patch';
|
|
3
|
+
} | {
|
|
4
|
+
tag: 'explicit';
|
|
5
|
+
value: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function parseVersionSpecifier(value: string | undefined): VersionSpecifier | undefined;
|
|
8
|
+
//# sourceMappingURL=version-specifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-specifier.d.ts","sourceRoot":"","sources":["../src/version-specifier.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GAAG;IAAE,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AACxG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAkB7F"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
const SemVerPart = z.union([z.literal('patch'), z.literal('minor'), z.literal('major')]);
|
|
3
|
+
export function parseVersionSpecifier(value) {
|
|
4
|
+
if (value === undefined) {
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
const parsedPart = SemVerPart.safeParse(value);
|
|
8
|
+
if (parsedPart.success) {
|
|
9
|
+
return { tag: parsedPart.data };
|
|
10
|
+
}
|
|
11
|
+
const isSemver = /^\d+\.\d+\.\d+(-[\w.-]+)?(\+[\w.-]+)?$/.test(value);
|
|
12
|
+
if (!isSemver) {
|
|
13
|
+
throw new Error(`Invalid publish value: "${value}". Expected "patch", "minor", "major" or an explicit version such as "1.2.3"`);
|
|
14
|
+
}
|
|
15
|
+
return { tag: 'explicit', value };
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=version-specifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-specifier.js","sourceRoot":"","sources":["../src/version-specifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAExF,MAAM,UAAU,qBAAqB,CAAC,KAAyB;IAC7D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC9C,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,CAAA;IACjC,CAAC;IAED,MAAM,QAAQ,GAAG,wCAAwC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,8EAA8E,CAC/G,CAAA;IACH,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;AACnC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monocrate",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "From monorepo to npm in one command",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
},
|
|
17
17
|
"files": [
|
|
18
18
|
"dist",
|
|
19
|
-
"!dist/**/*.test.*"
|
|
19
|
+
"!dist/**/*.test.*",
|
|
20
|
+
"!dist/**/*.compilation-test.*",
|
|
21
|
+
"!dist/testing/**"
|
|
20
22
|
],
|
|
21
23
|
"scripts": {
|
|
22
24
|
"build": "tsc",
|
|
@@ -46,13 +48,17 @@
|
|
|
46
48
|
"devDependencies": {
|
|
47
49
|
"@eslint/js": "^9.0.0",
|
|
48
50
|
"@types/node": "^20.19.29",
|
|
51
|
+
"@types/yargs": "^17.0.35",
|
|
49
52
|
"@vitest/coverage-v8": "^1.2.0",
|
|
50
53
|
"eslint": "^9.0.0",
|
|
54
|
+
"eslint-plugin-unused-imports": "^4.3.0",
|
|
55
|
+
"get-port": "^7.1.0",
|
|
51
56
|
"husky": "^9.1.7",
|
|
52
57
|
"lint-staged": "^16.2.7",
|
|
53
58
|
"prettier": "^3.2.0",
|
|
54
59
|
"typescript": "^5.3.0",
|
|
55
60
|
"typescript-eslint": "^8.0.0",
|
|
61
|
+
"verdaccio": "^6.2.4",
|
|
56
62
|
"vitest": "^1.2.0"
|
|
57
63
|
},
|
|
58
64
|
"engines": {
|
|
@@ -65,10 +71,12 @@
|
|
|
65
71
|
]
|
|
66
72
|
},
|
|
67
73
|
"dependencies": {
|
|
68
|
-
"citty": "^0.1.6",
|
|
69
74
|
"esbuild": "^0.24.0",
|
|
70
75
|
"glob": "^13.0.0",
|
|
76
|
+
"resolve.exports": "^2.0.3",
|
|
77
|
+
"tinyexec": "^1.0.2",
|
|
71
78
|
"ts-morph": "^27.0.2",
|
|
79
|
+
"yargs": "^18.0.0",
|
|
72
80
|
"zod": "^4.3.5"
|
|
73
81
|
}
|
|
74
82
|
}
|
package/dist/assemble.d.ts
DELETED
package/dist/assemble.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../src/assemble.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAElE,wBAAsB,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7G"}
|
package/dist/assemble.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as fsPromises from 'node:fs/promises';
|
|
2
|
-
import { buildPackageMap } from './build-package-map.js';
|
|
3
|
-
import { DistCopier } from './dist-copier.js';
|
|
4
|
-
import { ImportRewriter } from './import-rewriter.js';
|
|
5
|
-
export async function assemble(graph, monorepoRoot, outputDir) {
|
|
6
|
-
const packageMap = buildPackageMap(graph, monorepoRoot);
|
|
7
|
-
await fsPromises.mkdir(outputDir, { recursive: true });
|
|
8
|
-
const copiedFiles = await new DistCopier(packageMap, outputDir).copy();
|
|
9
|
-
await new ImportRewriter(packageMap, outputDir).rewriteAll(copiedFiles);
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=assemble.js.map
|