monocrate 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assemble.d.ts +4 -0
- package/dist/assemble.d.ts.map +1 -0
- package/dist/assemble.js +21 -0
- package/dist/assemble.js.map +1 -0
- package/dist/collect-package-locations.d.ts +48 -0
- package/dist/collect-package-locations.d.ts.map +1 -0
- package/dist/collect-package-locations.js +49 -0
- package/dist/collect-package-locations.js.map +1 -0
- package/dist/compute-package-closure.d.ts +3 -0
- package/dist/compute-package-closure.d.ts.map +1 -0
- package/dist/{build-dependency-graph.js → compute-package-closure.js} +8 -7
- package/dist/compute-package-closure.js.map +1 -0
- package/dist/{dist-copier.d.ts → file-copier.d.ts} +2 -3
- package/dist/file-copier.d.ts.map +1 -0
- package/dist/file-copier.js +38 -0
- package/dist/file-copier.js.map +1 -0
- package/dist/get-files-to-pack.d.ts +10 -0
- package/dist/get-files-to-pack.d.ts.map +1 -0
- package/dist/get-files-to-pack.js +46 -0
- package/dist/get-files-to-pack.js.map +1 -0
- package/dist/import-rewriter.d.ts.map +1 -1
- package/dist/import-rewriter.js +2 -3
- package/dist/import-rewriter.js.map +1 -1
- package/dist/monocrate-cli.js +2 -2
- package/dist/monocrate-cli.js.map +1 -1
- package/dist/monocrate.d.ts +9 -9
- package/dist/monocrate.d.ts.map +1 -1
- package/dist/monocrate.js +14 -64
- package/dist/monocrate.js.map +1 -1
- 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-map.d.ts +30 -6
- package/dist/package-map.d.ts.map +1 -1
- package/dist/publish.d.ts +2 -0
- package/dist/publish.d.ts.map +1 -0
- package/dist/publish.js +8 -0
- package/dist/publish.js.map +1 -0
- package/dist/resolve-version.d.ts +3 -0
- package/dist/resolve-version.d.ts.map +1 -0
- package/dist/resolve-version.js +40 -0
- package/dist/resolve-version.js.map +1 -0
- package/dist/rewrite-package-json.d.ts +3 -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/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 +10 -4
- 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.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/bundle.d.ts +0 -3
- package/dist/bundle.d.ts.map +0 -1
- package/dist/bundle.js +0 -11
- package/dist/bundle.js.map +0 -1
- package/dist/bundler.d.ts +0 -3
- package/dist/bundler.d.ts.map +0 -1
- package/dist/bundler.js +0 -62
- package/dist/bundler.js.map +0 -1
- package/dist/copy-bundler.d.ts +0 -3
- package/dist/copy-bundler.d.ts.map +0 -1
- package/dist/copy-bundler.js +0 -11
- package/dist/copy-bundler.js.map +0 -1
- package/dist/dependency-graph.d.ts +0 -3
- package/dist/dependency-graph.d.ts.map +0 -1
- package/dist/dependency-graph.js +0 -44
- package/dist/dependency-graph.js.map +0 -1
- 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/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -110
- package/dist/index.test.js.map +0 -1
- package/dist/monocrate.test.d.ts +0 -2
- package/dist/monocrate.test.d.ts.map +0 -1
- package/dist/monocrate.test.js +0 -1044
- package/dist/monocrate.test.js.map +0 -1
- package/dist/package-transformer.d.ts +0 -5
- package/dist/package-transformer.d.ts.map +0 -1
- package/dist/package-transformer.js +0 -20
- package/dist/package-transformer.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/types.d.ts +0 -2
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PackageClosure } from './package-closure.js';
|
|
2
|
+
import type { VersionSpecifier } from './version-specifier.js';
|
|
3
|
+
export declare function assemble(closure: PackageClosure, monorepoRoot: string, outputDir: string, versionSpecifier: VersionSpecifier | undefined): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=assemble.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../src/assemble.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,GAC7C,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
package/dist/assemble.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as fsPromises from 'node:fs/promises';
|
|
2
|
+
import { collectPackageLocations } from './collect-package-locations.js';
|
|
3
|
+
import { FileCopier } from './file-copier.js';
|
|
4
|
+
import { ImportRewriter } from './import-rewriter.js';
|
|
5
|
+
import { resolveVersion } from './resolve-version.js';
|
|
6
|
+
import { rewritePackageJson } from './rewrite-package-json.js';
|
|
7
|
+
export async function assemble(closure, monorepoRoot, outputDir, versionSpecifier) {
|
|
8
|
+
const locations = await collectPackageLocations(closure, monorepoRoot);
|
|
9
|
+
const packageMap = new Map(locations.map((at) => [at.name, at]));
|
|
10
|
+
await fsPromises.mkdir(outputDir, { recursive: true });
|
|
11
|
+
const [newVersion] = await Promise.all([
|
|
12
|
+
versionSpecifier ? await resolveVersion(closure.subjectPackageName, versionSpecifier) : Promise.resolve(undefined),
|
|
13
|
+
(async () => {
|
|
14
|
+
const copiedFiles = await new FileCopier(packageMap, outputDir).copy();
|
|
15
|
+
await new ImportRewriter(packageMap, outputDir).rewriteAll(copiedFiles);
|
|
16
|
+
})(),
|
|
17
|
+
]);
|
|
18
|
+
// This must happen after file copying completes (otherwise the rewritten package.json could be overwritten)
|
|
19
|
+
rewritePackageJson(closure, newVersion, outputDir);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=assemble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assemble.js","sourceRoot":"","sources":["../src/assemble.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAG9D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAuB,EACvB,YAAoB,EACpB,SAAiB,EACjB,gBAA8C;IAE9C,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IACtE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAU,CAAC,CAAC,CAAA;IAEzE,MAAM,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACtD,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrC,gBAAgB,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QAClH,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,WAAW,GAAG,MAAM,IAAI,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;YACtE,MAAM,IAAI,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;QACzE,CAAC,CAAC,EAAE;KACL,CAAC,CAAA;IACF,4GAA4G;IAC5G,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;AACpD,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { PackageLocation } from './package-map.js';
|
|
2
|
+
import type { PackageClosure } from './package-closure.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves an import specifier to a file path using Node.js resolution semantics.
|
|
5
|
+
* Handles both bare imports (subpath='') and subpath imports (subpath='utils/helper').
|
|
6
|
+
*/
|
|
7
|
+
export declare function resolveImport(location: PackageLocation, subpath: string): string;
|
|
8
|
+
export declare function collectPackageLocations(closure: PackageClosure, monorepoRoot: string): Promise<{
|
|
9
|
+
name: string;
|
|
10
|
+
packageDir: string;
|
|
11
|
+
outputPrefix: string;
|
|
12
|
+
filesToCopy: string[];
|
|
13
|
+
packageJson: {
|
|
14
|
+
[x: string]: unknown;
|
|
15
|
+
name: string;
|
|
16
|
+
version?: string | undefined;
|
|
17
|
+
main?: string | undefined;
|
|
18
|
+
source?: string | undefined;
|
|
19
|
+
types?: string | undefined;
|
|
20
|
+
dependencies?: Partial<Record<string, string>> | undefined;
|
|
21
|
+
devDependencies?: Partial<Record<string, string>> | undefined;
|
|
22
|
+
peerDependencies?: Partial<Record<string, string>> | undefined;
|
|
23
|
+
description?: string | undefined;
|
|
24
|
+
keywords?: string[] | undefined;
|
|
25
|
+
author?: string | {
|
|
26
|
+
name: string;
|
|
27
|
+
email?: string | undefined;
|
|
28
|
+
} | undefined;
|
|
29
|
+
license?: string | undefined;
|
|
30
|
+
repository?: string | {
|
|
31
|
+
type: string;
|
|
32
|
+
url: string;
|
|
33
|
+
} | undefined;
|
|
34
|
+
homepage?: string | undefined;
|
|
35
|
+
bugs?: string | {
|
|
36
|
+
url?: string | undefined;
|
|
37
|
+
email?: string | undefined;
|
|
38
|
+
} | undefined;
|
|
39
|
+
engines?: Partial<Record<string, string>> | undefined;
|
|
40
|
+
bin?: string | Partial<Record<string, string>> | undefined;
|
|
41
|
+
type?: "module" | "commonjs" | undefined;
|
|
42
|
+
workspaces?: string[] | {
|
|
43
|
+
packages: string[];
|
|
44
|
+
} | undefined;
|
|
45
|
+
files?: string[] | undefined;
|
|
46
|
+
};
|
|
47
|
+
}[]>;
|
|
48
|
+
//# sourceMappingURL=collect-package-locations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-package-locations.d.ts","sourceRoot":"","sources":["../src/collect-package-locations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAI1D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAyBhF;AAkBD,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAU1F"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import * as ResolveExports from 'resolve.exports';
|
|
3
|
+
import { getFilesToPack } from './get-files-to-pack.js';
|
|
4
|
+
/**
|
|
5
|
+
* Resolves an import specifier to a file path using Node.js resolution semantics.
|
|
6
|
+
* Handles both bare imports (subpath='') and subpath imports (subpath='utils/helper').
|
|
7
|
+
*/
|
|
8
|
+
export function resolveImport(location, subpath) {
|
|
9
|
+
const entry = subpath === '' ? '.' : `./${subpath}`;
|
|
10
|
+
// Try exports field resolution (resolve.exports only handles the exports field, not main)
|
|
11
|
+
const resolved = ResolveExports.resolve(location.packageJson, entry);
|
|
12
|
+
if (resolved) {
|
|
13
|
+
// The exports field can map to an array of fallback paths. Node.js tries them in order and uses
|
|
14
|
+
// the first "processable" path (e.g., skips unsupported protocols), but does NOT fall back if the
|
|
15
|
+
// file is missing. Picking the first entry matches Node.js behavior.
|
|
16
|
+
// See: https://nodejs.org/api/packages.html#package-entry-points
|
|
17
|
+
const resolvedPath = Array.isArray(resolved) ? resolved[0] : resolved;
|
|
18
|
+
if (resolvedPath !== undefined) {
|
|
19
|
+
// The resolved path starts with './', remove it
|
|
20
|
+
const cleanPath = resolvedPath.startsWith('./') ? resolvedPath.slice(2) : resolvedPath;
|
|
21
|
+
return path.join(location.outputPrefix, cleanPath);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// No exports field or no matching export
|
|
25
|
+
if (subpath === '') {
|
|
26
|
+
// Bare import (e.g., import ... from '@myorg/pkg'): use main field, then index.js (Node.js default)
|
|
27
|
+
return path.join(location.outputPrefix, location.packageJson.main ?? 'index.js');
|
|
28
|
+
}
|
|
29
|
+
// Subpath import (e.g., import ... from '@myorg/pkg/utils/helper'): subpath relative to package root
|
|
30
|
+
return path.join(location.outputPrefix, `${subpath}.js`);
|
|
31
|
+
}
|
|
32
|
+
async function createPackageLocation(pkg, outputPrefix) {
|
|
33
|
+
const filesToCopy = await getFilesToPack(pkg.path);
|
|
34
|
+
return {
|
|
35
|
+
name: pkg.name,
|
|
36
|
+
packageDir: pkg.path,
|
|
37
|
+
outputPrefix,
|
|
38
|
+
filesToCopy,
|
|
39
|
+
packageJson: pkg.packageJson,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function computeDepOutputPrefix(dep, monorepoRoot) {
|
|
43
|
+
return path.join('deps', path.relative(monorepoRoot, dep.path));
|
|
44
|
+
}
|
|
45
|
+
export async function collectPackageLocations(closure, monorepoRoot) {
|
|
46
|
+
// TODO(imaman): use promises()
|
|
47
|
+
return Promise.all(closure.members.map((dep) => createPackageLocation(dep, dep.name === closure.subjectPackageName ? '' : computeDepOutputPrefix(dep, monorepoRoot))));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=collect-package-locations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-package-locations.js","sourceRoot":"","sources":["../src/collect-package-locations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,cAAc,MAAM,iBAAiB,CAAA;AAIjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAyB,EAAE,OAAe;IACtE,MAAM,KAAK,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAA;IAEnD,0FAA0F;IAC1F,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IACpE,IAAI,QAAQ,EAAE,CAAC;QACb,gGAAgG;QAChG,kGAAkG;QAClG,qEAAqE;QACrE,iEAAiE;QACjE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;QACrE,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,gDAAgD;YAChD,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAA;YACtF,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,oGAAoG;QACpG,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,UAAU,CAAC,CAAA;IAClF,CAAC;IACD,qGAAqG;IACrG,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,OAAO,KAAK,CAAC,CAAA;AAC1D,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,GAAoB,EAAE,YAAoB;IAC7E,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAElD,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU,EAAE,GAAG,CAAC,IAAI;QACpB,YAAY;QACZ,WAAW;QACX,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAoB,EAAE,YAAoB;IACxE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAuB,EAAE,YAAoB;IACzF,+BAA+B;IAC/B,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1B,qBAAqB,CACnB,GAAG,EACH,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,GAAG,EAAE,YAAY,CAAC,CACzF,CACF,CACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compute-package-closure.d.ts","sourceRoot":"","sources":["../src/compute-package-closure.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAwC5G"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { discoverMonorepoPackages } from './monorepo.js';
|
|
2
|
-
export async function
|
|
2
|
+
export async function computePackageClosure(sourceDir, monorepoRoot) {
|
|
3
3
|
const allRepoPackages = await discoverMonorepoPackages(monorepoRoot);
|
|
4
|
-
const
|
|
5
|
-
if (!
|
|
4
|
+
const subjectPackage = [...allRepoPackages.values()].find((at) => at.path === sourceDir);
|
|
5
|
+
if (!subjectPackage) {
|
|
6
6
|
throw new Error(`Could not find a monorepo package at ${sourceDir}`);
|
|
7
7
|
}
|
|
8
8
|
const allThirdPartyDeps = {};
|
|
@@ -23,16 +23,17 @@ export async function buildDependencyGraph(sourceDir, monorepoRoot) {
|
|
|
23
23
|
}
|
|
24
24
|
else {
|
|
25
25
|
if (!(depName in allThirdPartyDeps)) {
|
|
26
|
+
// TODO(imaman): validate consistency of versions
|
|
26
27
|
allThirdPartyDeps[depName] = depVersion;
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
|
-
collectDeps(
|
|
32
|
+
collectDeps(subjectPackage);
|
|
32
33
|
return {
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
subjectPackageName: subjectPackage.name,
|
|
35
|
+
members: [...visited.values()],
|
|
35
36
|
allThirdPartyDeps,
|
|
36
37
|
};
|
|
37
38
|
}
|
|
38
|
-
//# sourceMappingURL=
|
|
39
|
+
//# sourceMappingURL=compute-package-closure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compute-package-closure.js","sourceRoot":"","sources":["../src/compute-package-closure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAGxD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAiB,EAAE,YAAoB;IACjF,MAAM,eAAe,GAAG,MAAM,wBAAwB,CAAC,YAAY,CAAC,CAAA;IACpE,MAAM,cAAc,GAAG,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IACxF,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,iBAAiB,GAAoC,EAAE,CAAA;IAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAA;IAElD,SAAS,WAAW,CAAC,GAAoB;QACvC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAM;QACR,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAE1B,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;YACvF,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YACjE,CAAC;YACD,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC/C,IAAI,UAAU,EAAE,CAAC;gBACf,oBAAoB;gBACpB,WAAW,CAAC,UAAU,CAAC,CAAA;YACzB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,CAAC,OAAO,IAAI,iBAAiB,CAAC,EAAE,CAAC;oBACpC,iDAAiD;oBACjD,iBAAiB,CAAC,OAAO,CAAC,GAAG,UAAU,CAAA;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW,CAAC,cAAc,CAAC,CAAA;IAE3B,OAAO;QACL,kBAAkB,EAAE,cAAc,CAAC,IAAI;QACvC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9B,iBAAiB;KAClB,CAAA;AACH,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import type { PackageMap } from './package-map.js';
|
|
2
|
-
export declare class
|
|
2
|
+
export declare class FileCopier {
|
|
3
3
|
private packageMap;
|
|
4
4
|
private outputDir;
|
|
5
5
|
constructor(packageMap: PackageMap, outputDir: string);
|
|
6
6
|
copy(): Promise<string[]>;
|
|
7
7
|
private collectCopyOperations;
|
|
8
|
-
private copyDir;
|
|
9
8
|
}
|
|
10
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=file-copier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-copier.d.ts","sourceRoot":"","sources":["../src/file-copier.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAOlD,qBAAa,UAAU;IAEnB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,SAAS;gBADT,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM;IAGrB,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAkB/B,OAAO,CAAC,qBAAqB;CAc9B"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as fsPromises from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
export class FileCopier {
|
|
4
|
+
packageMap;
|
|
5
|
+
outputDir;
|
|
6
|
+
constructor(packageMap, outputDir) {
|
|
7
|
+
this.packageMap = packageMap;
|
|
8
|
+
this.outputDir = outputDir;
|
|
9
|
+
}
|
|
10
|
+
async copy() {
|
|
11
|
+
const operations = this.collectCopyOperations();
|
|
12
|
+
// Phase 1: Collect and create unique directories
|
|
13
|
+
const directories = new Set(operations.map((op) => path.dirname(op.destination)));
|
|
14
|
+
for (const dir of directories) {
|
|
15
|
+
await fsPromises.mkdir(dir, { recursive: true });
|
|
16
|
+
}
|
|
17
|
+
// Phase 2: Copy all files
|
|
18
|
+
const copiedFiles = [];
|
|
19
|
+
for (const op of operations) {
|
|
20
|
+
await fsPromises.copyFile(op.source, op.destination);
|
|
21
|
+
copiedFiles.push(op.destination);
|
|
22
|
+
}
|
|
23
|
+
return copiedFiles;
|
|
24
|
+
}
|
|
25
|
+
collectCopyOperations() {
|
|
26
|
+
const operations = [];
|
|
27
|
+
for (const location of this.packageMap.values()) {
|
|
28
|
+
for (const filePath of location.filesToCopy) {
|
|
29
|
+
operations.push({
|
|
30
|
+
source: path.join(location.packageDir, filePath),
|
|
31
|
+
destination: path.join(this.outputDir, location.outputPrefix, filePath),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return operations;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=file-copier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-copier.js","sourceRoot":"","sources":["../src/file-copier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAQjC,MAAM,OAAO,UAAU;IAEX;IACA;IAFV,YACU,UAAsB,EACtB,SAAiB;QADjB,eAAU,GAAV,UAAU,CAAY;QACtB,cAAS,GAAT,SAAS,CAAQ;IACxB,CAAC;IAEJ,KAAK,CAAC,IAAI;QACR,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAE/C,iDAAiD;QACjD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QACjF,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAClD,CAAC;QAED,0BAA0B;QAC1B,MAAM,WAAW,GAAa,EAAE,CAAA;QAChC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,CAAA;YACpD,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;QAClC,CAAC;QACD,OAAO,WAAW,CAAA;IACpB,CAAC;IAEO,qBAAqB;QAC3B,MAAM,UAAU,GAAoB,EAAE,CAAA;QAEtC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC5C,UAAU,CAAC,IAAI,CAAC;oBACd,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;oBAChD,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;iBACxE,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the list of files that npm would include in a package tarball.
|
|
3
|
+
* Uses `npm pack --dry-run --json` to get npm's exact file selection.
|
|
4
|
+
*
|
|
5
|
+
* @param packageDir - Absolute path to the package directory
|
|
6
|
+
* @returns Array of relative file paths that npm would include
|
|
7
|
+
* @example getFilesToPack("/home/user/my-package") => ["dist/index.js", "README.md", "package.json"]
|
|
8
|
+
*/
|
|
9
|
+
export declare function getFilesToPack(packageDir: string): Promise<string[]>;
|
|
10
|
+
//# sourceMappingURL=get-files-to-pack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-files-to-pack.d.ts","sourceRoot":"","sources":["../src/get-files-to-pack.ts"],"names":[],"mappings":"AAsBA;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyB1E"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { exec } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
const execAsync = promisify(exec);
|
|
5
|
+
const NpmPackFile = z.object({
|
|
6
|
+
path: z.string(),
|
|
7
|
+
});
|
|
8
|
+
const NpmPackResult = z.object({
|
|
9
|
+
files: z.array(NpmPackFile),
|
|
10
|
+
});
|
|
11
|
+
const NpmPackOutput = z.array(NpmPackResult);
|
|
12
|
+
const NpmPackError = z.object({
|
|
13
|
+
error: z.object({
|
|
14
|
+
summary: z.string(),
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* Gets the list of files that npm would include in a package tarball.
|
|
19
|
+
* Uses `npm pack --dry-run --json` to get npm's exact file selection.
|
|
20
|
+
*
|
|
21
|
+
* @param packageDir - Absolute path to the package directory
|
|
22
|
+
* @returns Array of relative file paths that npm would include
|
|
23
|
+
* @example getFilesToPack("/home/user/my-package") => ["dist/index.js", "README.md", "package.json"]
|
|
24
|
+
*/
|
|
25
|
+
export async function getFilesToPack(packageDir) {
|
|
26
|
+
const { stdout } = await execAsync('npm pack --dry-run --json', {
|
|
27
|
+
cwd: packageDir,
|
|
28
|
+
encoding: 'utf-8',
|
|
29
|
+
});
|
|
30
|
+
const json = JSON.parse(stdout);
|
|
31
|
+
// Check if npm returned an error
|
|
32
|
+
const errorResult = NpmPackError.safeParse(json);
|
|
33
|
+
if (errorResult.success) {
|
|
34
|
+
throw new Error(`npm pack failed: ${errorResult.data.error.summary}`);
|
|
35
|
+
}
|
|
36
|
+
const parsed = NpmPackOutput.safeParse(json);
|
|
37
|
+
if (!parsed.success) {
|
|
38
|
+
throw new Error(`Failed to parse npm pack output: ${parsed.error.message}`);
|
|
39
|
+
}
|
|
40
|
+
const packOutput = parsed.data[0];
|
|
41
|
+
if (packOutput === undefined) {
|
|
42
|
+
throw new Error('npm pack returned empty output');
|
|
43
|
+
}
|
|
44
|
+
return packOutput.files.map((f) => f.path);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=get-files-to-pack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-files-to-pack.js","sourceRoot":"","sources":["../src/get-files-to-pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;AAEjC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAA;AAEF,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;CAC5B,CAAC,CAAA;AAEF,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;AAE5C,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC;CACH,CAAC,CAAA;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB;IACrD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,2BAA2B,EAAE;QAC9D,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAA;IAEF,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAExC,iCAAiC;IACjC,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAChD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,oBAAoB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACvE,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAC5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-rewriter.d.ts","sourceRoot":"","sources":["../src/import-rewriter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"import-rewriter.d.ts","sourceRoot":"","sources":["../src/import-rewriter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGlD,qBAAa,cAAc;IAEvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,SAAS;gBADT,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM;IAGrB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAOlC,WAAW;IAqDzB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,mBAAmB;CAQ5B"}
|
package/dist/import-rewriter.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as path from 'node:path';
|
|
2
2
|
import { Project, SyntaxKind } from 'ts-morph';
|
|
3
|
+
import { resolveImport } from './collect-package-locations.js';
|
|
3
4
|
export class ImportRewriter {
|
|
4
5
|
packageMap;
|
|
5
6
|
outputDir;
|
|
@@ -66,9 +67,7 @@ export class ImportRewriter {
|
|
|
66
67
|
if (!importeeLocation) {
|
|
67
68
|
return undefined;
|
|
68
69
|
}
|
|
69
|
-
|
|
70
|
-
// Non-empty subpath means subpath import (e.g., '@myorg/utils/foo' -> 'dist/foo')
|
|
71
|
-
const pathAtImportee = subPath === '' ? importeeLocation.outputEntryPoint : importeeLocation.resolveSubpath(subPath);
|
|
70
|
+
const pathAtImportee = resolveImport(importeeLocation, subPath);
|
|
72
71
|
return this.computeRelativePath(pathToImporter, pathAtImportee);
|
|
73
72
|
}
|
|
74
73
|
extractPackageName(specifier) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-rewriter.js","sourceRoot":"","sources":["../src/import-rewriter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"import-rewriter.js","sourceRoot":"","sources":["../src/import-rewriter.ts"],"names":[],"mappings":"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"}
|
package/dist/monocrate-cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import { monocrate } from './monocrate.js';
|
|
|
3
3
|
const command = defineCommand({
|
|
4
4
|
meta: {
|
|
5
5
|
name: 'monocrate',
|
|
6
|
-
description: '
|
|
6
|
+
description: 'Assemble and optionally publish a monorepo package to npm',
|
|
7
7
|
},
|
|
8
8
|
args: {
|
|
9
9
|
source: {
|
|
@@ -30,7 +30,7 @@ const command = defineCommand({
|
|
|
30
30
|
async run({ args }) {
|
|
31
31
|
const outputDir = args.output || undefined;
|
|
32
32
|
const actualOutputDir = await monocrate({
|
|
33
|
-
|
|
33
|
+
pathToSubjectPackage: args.source,
|
|
34
34
|
...(outputDir ? { outputDir } : {}),
|
|
35
35
|
monorepoRoot: args.root,
|
|
36
36
|
publishToVersion: args.publish,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monocrate-cli.js","sourceRoot":"","sources":["../src/monocrate-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,GAAG,aAAa,CAAC;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"monocrate-cli.js","sourceRoot":"","sources":["../src/monocrate-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,OAAO,GAAG,aAAa,CAAC;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,2DAA2D;KACzE;IACD,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE,IAAI;SACf;QACD,MAAM,EAAE;YACN,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,wEAAwE;YACrF,QAAQ,EAAE,KAAK;SAChB;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0DAA0D;YACvE,KAAK,EAAE,GAAG;SACX;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gFAAgF;YAC7F,KAAK,EAAE,GAAG;SACX;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,IAAI,SAAS,CAAA;QAC1C,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC;YACtC,oBAAoB,EAAE,IAAI,CAAC,MAAM;YACjC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,YAAY,EAAE,IAAI,CAAC,IAAI;YACvB,gBAAgB,EAAE,IAAI,CAAC,OAAO;YAC9B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;SACnB,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAC9B,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/monocrate.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export interface MonocrateOptions {
|
|
2
2
|
/**
|
|
3
|
-
* Path to the package directory to
|
|
3
|
+
* Path to the package directory to assemble.
|
|
4
4
|
* Can be absolute or relative. Relative paths are resolved from the cwd option.
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
pathToSubjectPackage: string;
|
|
7
7
|
/**
|
|
8
|
-
* Path to the output directory where the
|
|
8
|
+
* Path to the output directory where the assembly will be written.
|
|
9
9
|
* Can be absolute or relative. Relative paths are resolved from the cwd option.
|
|
10
10
|
* If not specified, a dedicated temp directory is created under the system temp directory.
|
|
11
11
|
*/
|
|
@@ -17,9 +17,9 @@ export interface MonocrateOptions {
|
|
|
17
17
|
*/
|
|
18
18
|
monorepoRoot?: string;
|
|
19
19
|
/**
|
|
20
|
-
* Publish the
|
|
20
|
+
* Publish the assembly to npm after building.
|
|
21
21
|
* Accepts either an explicit semver version (e.g., "1.2.3") or an increment keyword ("patch", "minor", "major").
|
|
22
|
-
* When specified, the
|
|
22
|
+
* When specified, the assembly is published to npm with the resolved version.
|
|
23
23
|
* If not specified, no publishing occurs.
|
|
24
24
|
*/
|
|
25
25
|
publishToVersion?: string;
|
|
@@ -29,10 +29,10 @@ export interface MonocrateOptions {
|
|
|
29
29
|
cwd: string;
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
33
|
-
* @param options - Configuration options for the
|
|
34
|
-
* @returns The output directory path where the
|
|
35
|
-
* @throws Error if
|
|
32
|
+
* Assembles a monorepo package and its in-repo dependencies for npm publishing.
|
|
33
|
+
* @param options - Configuration options for the assembly process
|
|
34
|
+
* @returns The output directory path where the assembly was created
|
|
35
|
+
* @throws Error if assembly or publishing fails
|
|
36
36
|
*/
|
|
37
37
|
export declare function monocrate(options: MonocrateOptions): Promise<string>;
|
|
38
38
|
//# sourceMappingURL=monocrate.d.ts.map
|
package/dist/monocrate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monocrate.d.ts","sourceRoot":"","sources":["../src/monocrate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"monocrate.d.ts","sourceRoot":"","sources":["../src/monocrate.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAA;IAC5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B1E"}
|
package/dist/monocrate.js
CHANGED
|
@@ -1,36 +1,16 @@
|
|
|
1
|
-
import { spawnSync } from 'node:child_process';
|
|
2
1
|
import * as fs from 'node:fs/promises';
|
|
3
2
|
import * as os from 'node:os';
|
|
4
3
|
import * as path from 'node:path';
|
|
5
|
-
import { z } from 'zod';
|
|
6
4
|
import { findMonorepoRoot } from './monorepo.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
const VersionSpecifier = z.union([
|
|
12
|
-
z.literal('patch'),
|
|
13
|
-
z.literal('minor'),
|
|
14
|
-
z.literal('major'),
|
|
15
|
-
z.string().regex(explicitVersionRegex, 'Must be x.y.z format'),
|
|
16
|
-
]);
|
|
17
|
-
function isExplicitVersion(value) {
|
|
18
|
-
return explicitVersionRegex.test(value);
|
|
19
|
-
}
|
|
20
|
-
function getCurrentPublishedVersion(packageName) {
|
|
21
|
-
const result = spawnSync('npm', ['view', packageName, 'version'], {
|
|
22
|
-
encoding: 'utf-8',
|
|
23
|
-
});
|
|
24
|
-
if (result.status !== 0 || !result.stdout.trim()) {
|
|
25
|
-
return '0.0.0';
|
|
26
|
-
}
|
|
27
|
-
return result.stdout.trim();
|
|
28
|
-
}
|
|
5
|
+
import { computePackageClosure } from './compute-package-closure.js';
|
|
6
|
+
import { assemble } from './assemble.js';
|
|
7
|
+
import { publish } from './publish.js';
|
|
8
|
+
import { parseVersionSpecifier } from './version-specifier.js';
|
|
29
9
|
/**
|
|
30
|
-
*
|
|
31
|
-
* @param options - Configuration options for the
|
|
32
|
-
* @returns The output directory path where the
|
|
33
|
-
* @throws Error if
|
|
10
|
+
* Assembles a monorepo package and its in-repo dependencies for npm publishing.
|
|
11
|
+
* @param options - Configuration options for the assembly process
|
|
12
|
+
* @returns The output directory path where the assembly was created
|
|
13
|
+
* @throws Error if assembly or publishing fails
|
|
34
14
|
*/
|
|
35
15
|
export async function monocrate(options) {
|
|
36
16
|
// Resolve and validate cwd first, then use it to resolve all other paths
|
|
@@ -42,47 +22,17 @@ export async function monocrate(options) {
|
|
|
42
22
|
if (!cwdExists) {
|
|
43
23
|
throw new Error(`cwd does not exist: ${cwd}`);
|
|
44
24
|
}
|
|
45
|
-
const sourceDir = path.resolve(cwd, options.
|
|
25
|
+
const sourceDir = path.resolve(cwd, options.pathToSubjectPackage);
|
|
46
26
|
const monorepoRoot = options.monorepoRoot ? path.resolve(cwd, options.monorepoRoot) : findMonorepoRoot(sourceDir);
|
|
47
27
|
// Validate publish argument before any side effects
|
|
48
|
-
|
|
49
|
-
if (options.publishToVersion !== undefined) {
|
|
50
|
-
const parseResult = VersionSpecifier.safeParse(options.publishToVersion);
|
|
51
|
-
if (!parseResult.success) {
|
|
52
|
-
throw new Error(`Invalid publish value: "${options.publishToVersion}". Expected "patch", "minor", "major" or an explicit version such as "1.2.3"`);
|
|
53
|
-
}
|
|
54
|
-
versionSpecifier = parseResult.data;
|
|
55
|
-
}
|
|
28
|
+
const versionSpecifier = parseVersionSpecifier(options.publishToVersion);
|
|
56
29
|
const outputDir = options.outputDir
|
|
57
30
|
? path.resolve(cwd, options.outputDir)
|
|
58
31
|
: await fs.mkdtemp(path.join(os.tmpdir(), 'monocrate-'));
|
|
59
|
-
const
|
|
60
|
-
await
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
await writePackageJson(packageJson, outputDir);
|
|
64
|
-
return outputDir;
|
|
65
|
-
}
|
|
66
|
-
// Publishing flow
|
|
67
|
-
const packageName = graph.packageToBundle.packageJson.name;
|
|
68
|
-
if (isExplicitVersion(versionSpecifier)) {
|
|
69
|
-
await writePackageJson({ ...packageJson, version: versionSpecifier }, outputDir);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
const currentVersion = getCurrentPublishedVersion(packageName);
|
|
73
|
-
await writePackageJson({ ...packageJson, version: currentVersion }, outputDir);
|
|
74
|
-
// --no-git-tag-version: bump version in package.json only, without creating a git tag (we're in a temp directory, not a git repo)
|
|
75
|
-
const npmVersionResult = spawnSync('npm', ['version', versionSpecifier, '--no-git-tag-version'], {
|
|
76
|
-
cwd: outputDir,
|
|
77
|
-
stdio: 'inherit',
|
|
78
|
-
});
|
|
79
|
-
if (npmVersionResult.status !== 0) {
|
|
80
|
-
throw new Error(`npm version failed with exit code ${String(npmVersionResult.status ?? 1)}`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
const npmPublishResult = spawnSync('npm', ['publish'], { cwd: outputDir, stdio: 'inherit' });
|
|
84
|
-
if (npmPublishResult.status !== 0) {
|
|
85
|
-
throw new Error(`npm publish failed with exit code ${String(npmPublishResult.status ?? 1)}`);
|
|
32
|
+
const closure = await computePackageClosure(sourceDir, monorepoRoot);
|
|
33
|
+
await assemble(closure, monorepoRoot, outputDir, versionSpecifier);
|
|
34
|
+
if (versionSpecifier) {
|
|
35
|
+
publish(outputDir);
|
|
86
36
|
}
|
|
87
37
|
return outputDir;
|
|
88
38
|
}
|
package/dist/monocrate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monocrate.js","sourceRoot":"","sources":["../src/monocrate.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"monocrate.js","sourceRoot":"","sources":["../src/monocrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAiC9D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAyB;IACvD,yEAAyE;IACzE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACrC,MAAM,SAAS,GAAG,MAAM,EAAE;SACvB,IAAI,CAAC,GAAG,CAAC;SACT,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;IACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACjE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAEjH,oDAAoD;IACpD,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAExE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS;QACjC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC;QACtC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAA;IAE1D,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IACpE,MAAM,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;IAElE,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,SAAS,CAAC,CAAA;IACpB,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MonorepoPackage } from './monorepo.js';
|
|
2
|
+
/**
|
|
3
|
+
* The transitive closure of packages needed to publish a monorepo package. Computed by traversing dependencies
|
|
4
|
+
* starting from a subject package.
|
|
5
|
+
*/
|
|
6
|
+
export interface PackageClosure {
|
|
7
|
+
/** The name of package we care about (the root of the closure). */
|
|
8
|
+
subjectPackageName: string;
|
|
9
|
+
/** The subject package all in-repo dependencies (direct or indirect dependencies). */
|
|
10
|
+
members: MonorepoPackage[];
|
|
11
|
+
/** Merged third-party dependencies from all packages in the closure. */
|
|
12
|
+
allThirdPartyDeps: Partial<Record<string, string>>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=package-closure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-closure.d.ts","sourceRoot":"","sources":["../src/package-closure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,kBAAkB,EAAE,MAAM,CAAA;IAC1B,sFAAsF;IACtF,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,wEAAwE;IACxE,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-closure.js","sourceRoot":"","sources":["../src/package-closure.ts"],"names":[],"mappings":""}
|
package/dist/package-json.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export declare const PackageJson: z.ZodObject<{
|
|
|
33
33
|
workspaces: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
|
|
34
34
|
packages: z.ZodArray<z.ZodString>;
|
|
35
35
|
}, z.core.$strip>]>>;
|
|
36
|
+
files: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
36
37
|
}, z.core.$loose>;
|
|
37
38
|
export type PackageJson = z.infer<typeof PackageJson>;
|
|
38
39
|
//# sourceMappingURL=package-json.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../src/package-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../src/package-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBd,CAAA;AAEV,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA"}
|
package/dist/package-json.js
CHANGED
|
@@ -20,6 +20,7 @@ export const PackageJson = z
|
|
|
20
20
|
bin: z.union([z.string(), z.partialRecord(z.string(), z.string())]).optional(),
|
|
21
21
|
type: z.enum(['module', 'commonjs']).optional(),
|
|
22
22
|
workspaces: z.union([z.array(z.string()), z.object({ packages: z.array(z.string()) })]).optional(),
|
|
23
|
+
files: z.array(z.string()).optional(),
|
|
23
24
|
})
|
|
24
25
|
.loose();
|
|
25
26
|
//# sourceMappingURL=package-json.js.map
|